From: IAlex Date: Wed, 17 Oct 2012 16:16:23 +0000 (+0000) Subject: Merge "Added docu headers to content(handler) files" X-Git-Tag: 1.31.0-rc.0~21985 X-Git-Url: https://git.cyclocoop.org/%27.WWW_URL.%27admin/?a=commitdiff_plain;h=a1f1af711939946187ba645d15c2ce8e17a5a0da;hp=506456c138007c81c2e10f035d4e6193066bad31;p=lhc%2Fweb%2Fwiklou.git Merge "Added docu headers to content(handler) files" --- diff --git a/includes/AutoLoader.php b/includes/AutoLoader.php index 182104d358..1cf66348d6 100644 --- a/includes/AutoLoader.php +++ b/includes/AutoLoader.php @@ -294,14 +294,14 @@ $wgAutoloadLocalClasses = array( 'AbstractContent' => 'includes/content/AbstractContent.php', 'ContentHandler' => 'includes/content/ContentHandler.php', 'Content' => 'includes/content/Content.php', - 'CssContentHandler' => 'includes/content/ContentHandler.php', + 'CssContentHandler' => 'includes/content/CssContentHandler.php', 'CssContent' => 'includes/content/CssContent.php', - 'JavaScriptContentHandler' => 'includes/content/ContentHandler.php', + 'JavaScriptContentHandler' => 'includes/content/JavaScriptContentHandler.php', 'JavaScriptContent' => 'includes/content/JavaScriptContent.php', 'MessageContent' => 'includes/content/MessageContent.php', - 'TextContentHandler' => 'includes/content/ContentHandler.php', + 'TextContentHandler' => 'includes/content/TextContentHandler.php', 'TextContent' => 'includes/content/TextContent.php', - 'WikitextContentHandler' => 'includes/content/ContentHandler.php', + 'WikitextContentHandler' => 'includes/content/WikitextContentHandler.php', 'WikitextContent' => 'includes/content/WikitextContent.php', # includes/actions diff --git a/includes/Collation.php b/includes/Collation.php index 8554c2b047..3cc7902855 100644 --- a/includes/Collation.php +++ b/includes/Collation.php @@ -335,8 +335,12 @@ class IcuCollation extends Collation { * sorts before all items. */ function findLowerBound( $valueCallback, $valueCount, $comparisonCallback, $target ) { + if ( $valueCount === 0 ) { + return false; + } + $min = 0; - $max = $valueCount - 1; + $max = $valueCount; do { $mid = $min + ( ( $max - $min ) >> 1 ); $item = call_user_func( $valueCallback, $mid ); @@ -351,12 +355,15 @@ class IcuCollation extends Collation { } } while ( $min < $max - 1 ); - if ( $min == 0 && $max == 0 && $comparison > 0 ) { - // Before the first item - return false; - } else { - return $min; + if ( $min == 0 ) { + $item = call_user_func( $valueCallback, $min ); + $comparison = call_user_func( $comparisonCallback, $target, $item ); + if ( $comparison < 0 ) { + // Before the first item + return false; + } } + return $min; } static function isCjk( $codepoint ) { diff --git a/includes/Wiki.php b/includes/Wiki.php index ed02a3dab7..7a6b37d9fd 100644 --- a/includes/Wiki.php +++ b/includes/Wiki.php @@ -178,7 +178,7 @@ class MediaWiki { wfProfileIn( __METHOD__ ); $request = $this->context->getRequest(); - $title = $this->context->getTitle(); + $requestTitle = $title = $this->context->getTitle(); $output = $this->context->getOutput(); $user = $this->context->getUser(); @@ -302,7 +302,7 @@ class MediaWiki { global $wgArticle; $wgArticle = new DeprecatedGlobal( 'wgArticle', $article, '1.18' ); - $this->performAction( $article ); + $this->performAction( $article, $requestTitle ); } elseif ( is_string( $article ) ) { $output->redirect( $article ); } else { @@ -396,8 +396,9 @@ class MediaWiki { * Perform one of the "standard" actions * * @param $page Page + * @param $requestTitle The original title, before any redirects were applied */ - private function performAction( Page $page ) { + private function performAction( Page $page, Title $requestTitle ) { global $wgUseSquid, $wgSquidMaxage; wfProfileIn( __METHOD__ ); @@ -420,7 +421,7 @@ class MediaWiki { if ( $action instanceof Action ) { # Let Squid cache things if we can purge them. if ( $wgUseSquid && - in_array( $request->getFullRequestURL(), $title->getSquidURLs() ) + in_array( $request->getFullRequestURL(), $requestTitle->getSquidURLs() ) ) { $output->setSquidMaxage( $wgSquidMaxage ); } diff --git a/includes/api/ApiQueryORM.php b/includes/api/ApiQueryORM.php index 82c5c7b7e1..3b18d8a92d 100644 --- a/includes/api/ApiQueryORM.php +++ b/includes/api/ApiQueryORM.php @@ -18,7 +18,7 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * http://www.gnu.org/copyleft/gpl.html * - * @since 1.20 + * @since 1.21 * * @file * @ingroup API @@ -31,7 +31,7 @@ abstract class ApiQueryORM extends ApiQueryBase { /** * Returns an instance of the IORMTable table being queried. * - * @since 1.20 + * @since 1.21 * * @return IORMTable */ @@ -43,7 +43,7 @@ abstract class ApiQueryORM extends ApiQueryBase { * This is used to appropriately name elements in XML. * Deriving classes typically override this method. * - * @since 1.20 + * @since 1.21 * * @return string */ @@ -57,7 +57,7 @@ abstract class ApiQueryORM extends ApiQueryBase { * This is used to appropriately name nodes in the output. * Deriving classes typically override this method. * - * @since 1.20 + * @since 1.21 * * @return string */ @@ -68,7 +68,7 @@ abstract class ApiQueryORM extends ApiQueryBase { /** * Returns the path to where the items results should be added in the result. * - * @since 1.20 + * @since 1.21 * * @return null|string|array */ @@ -80,7 +80,7 @@ abstract class ApiQueryORM extends ApiQueryBase { * Get the parameters, find out what the conditions for the query are, * run it, and add the results. * - * @since 1.20 + * @since 1.21 */ public function execute() { $params = $this->getParams(); @@ -97,7 +97,7 @@ abstract class ApiQueryORM extends ApiQueryBase { * Get the request parameters, handle the * value for the props param * and remove all params set to null (ie those that are not actually provided). * - * @since 1.20 + * @since 1.21 * * @return array */ @@ -115,7 +115,7 @@ abstract class ApiQueryORM extends ApiQueryBase { * regular parameters, together with limit, props, continue, * and possibly others which we need to get rid off. * - * @since 1.20 + * @since 1.21 * * @param array $params * @@ -137,7 +137,7 @@ abstract class ApiQueryORM extends ApiQueryBase { /** * Get the actual results. * - * @since 1.20 + * @since 1.21 * * @param array $params * @param array $conditions @@ -159,7 +159,7 @@ abstract class ApiQueryORM extends ApiQueryBase { /** * Serialize the results and add them to the result object. * - * @since 1.20 + * @since 1.21 * * @param array $params * @param ORMResult $results @@ -186,7 +186,7 @@ abstract class ApiQueryORM extends ApiQueryBase { /** * Formats a row to it's desired output format. * - * @since 1.20 + * @since 1.21 * * @param IORMRow $result * @param array $params @@ -200,7 +200,7 @@ abstract class ApiQueryORM extends ApiQueryBase { /** * Set the tag names for formats such as XML. * - * @since 1.20 + * @since 1.21 * * @param array $serializedResults */ @@ -211,7 +211,7 @@ abstract class ApiQueryORM extends ApiQueryBase { /** * Add the serialized results to the result object. * - * @since 1.20 + * @since 1.21 * * @param array $serializedResults */ diff --git a/includes/cache/SquidUpdate.php b/includes/cache/SquidUpdate.php index a4b2002fe5..6b48fa4d14 100644 --- a/includes/cache/SquidUpdate.php +++ b/includes/cache/SquidUpdate.php @@ -129,6 +129,8 @@ class SquidUpdate { return; } + wfDebug( "Squid purge: " . implode( ' ', $urlArr ) . "\n" ); + if ( $wgHTCPMulticastRouting ) { SquidUpdate::HTCPPurge( $urlArr ); } diff --git a/includes/content/AbstractContent.php b/includes/content/AbstractContent.php index 1a730bc47e..495711ab05 100644 --- a/includes/content/AbstractContent.php +++ b/includes/content/AbstractContent.php @@ -31,19 +31,25 @@ abstract class AbstractContent implements Content { * Name of the content model this Content object represents. * Use with CONTENT_MODEL_XXX constants * + * @since 1.21 + * * @var string $model_id */ protected $model_id; /** - * @param String $model_id + * @param string|null $modelId + * + * @since 1.21 */ - public function __construct( $model_id = null ) { - $this->model_id = $model_id; + public function __construct( $modelId = null ) { + $this->model_id = $modelId; } /** - * @see Content::getModel() + * @see Content::getModel + * + * @since 1.21 */ public function getModel() { return $this->model_id; @@ -53,41 +59,57 @@ abstract class AbstractContent implements Content { * Throws an MWException if $model_id is not the id of the content model * supported by this Content object. * - * @param $model_id int the model to check + * @since 1.21 + * + * @param string $modelId The model to check * * @throws MWException */ - protected function checkModelID( $model_id ) { - if ( $model_id !== $this->model_id ) { - throw new MWException( "Bad content model: " . + protected function checkModelID( $modelId ) { + if ( $modelId !== $this->model_id ) { + throw new MWException( + "Bad content model: " . "expected {$this->model_id} " . - "but got $model_id." ); + "but got $modelId." + ); } } /** - * @see Content::getContentHandler() + * @see Content::getContentHandler + * + * @since 1.21 */ public function getContentHandler() { return ContentHandler::getForContent( $this ); } /** - * @see Content::getDefaultFormat() + * @see Content::getDefaultFormat + * + * @since 1.21 */ public function getDefaultFormat() { return $this->getContentHandler()->getDefaultFormat(); } /** - * @see Content::getSupportedFormats() + * @see Content::getSupportedFormats + * + * @since 1.21 */ public function getSupportedFormats() { return $this->getContentHandler()->getSupportedFormats(); } /** - * @see Content::isSupportedFormat() + * @see Content::isSupportedFormat + * + * @param string $format + * + * @since 1.21 + * + * @return boolean */ public function isSupportedFormat( $format ) { if ( !$format ) { @@ -98,42 +120,66 @@ abstract class AbstractContent implements Content { } /** - * Throws an MWException if $this->isSupportedFormat( $format ) doesn't + * Throws an MWException if $this->isSupportedFormat( $format ) does not * return true. * - * @param $format + * @since 1.21 + * + * @param string $format * @throws MWException */ protected function checkFormat( $format ) { if ( !$this->isSupportedFormat( $format ) ) { - throw new MWException( "Format $format is not supported for content model " . - $this->getModel() ); + throw new MWException( + "Format $format is not supported for content model " . + $this->getModel() + ); } } /** * @see Content::serialize + * + * @param string|null $format + * + * @since 1.21 + * + * @return string */ public function serialize( $format = null ) { return $this->getContentHandler()->serializeContent( $this, $format ); } /** - * @see Content::isEmpty() + * @see Content::isEmpty + * + * @since 1.21 + * + * @return boolean */ public function isEmpty() { return $this->getSize() === 0; } /** - * @see Content::isValid() + * @see Content::isValid + * + * @since 1.21 + * + * @return boolean */ public function isValid() { return true; } /** - * @see Content::equals() + * @see Content::equals + * + * @since 1.21 + * + * @param Content|null $that + * + * @return boolean */ public function equals( Content $that = null ) { if ( is_null( $that ) ) { @@ -193,7 +239,9 @@ abstract class AbstractContent implements Content { /** - * @see Content::getRedirectChain() + * @see Content::getRedirectChain + * + * @since 1.21 */ public function getRedirectChain() { global $wgMaxRedirects; @@ -225,15 +273,19 @@ abstract class AbstractContent implements Content { } /** - * @see Content::getRedirectTarget() + * @see Content::getRedirectTarget + * + * @since 1.21 */ public function getRedirectTarget() { return null; } /** - * @see Content::getUltimateRedirectTarget() + * @see Content::getUltimateRedirectTarget * @note: migrated here from Title::newFromRedirectRecurse + * + * @since 1.21 */ public function getUltimateRedirectTarget() { $titles = $this->getRedirectChain(); @@ -241,7 +293,7 @@ abstract class AbstractContent implements Content { } /** - * @see Content::isRedirect() + * @see Content::isRedirect * * @since 1.21 * @@ -252,10 +304,12 @@ abstract class AbstractContent implements Content { } /** - * @see Content::updateRedirect() + * @see Content::updateRedirect * * This default implementation always returns $this. * + * @param Title $target + * * @since 1.21 * * @return Content $this @@ -265,42 +319,54 @@ abstract class AbstractContent implements Content { } /** - * @see Content::getSection() + * @see Content::getSection + * + * @since 1.21 */ public function getSection( $sectionId ) { return null; } /** - * @see Content::replaceSection() + * @see Content::replaceSection + * + * @since 1.21 */ public function replaceSection( $section, Content $with, $sectionTitle = '' ) { return null; } /** - * @see Content::preSaveTransform() + * @see Content::preSaveTransform + * + * @since 1.21 */ public function preSaveTransform( Title $title, User $user, ParserOptions $popts ) { return $this; } /** - * @see Content::addSectionHeader() + * @see Content::addSectionHeader + * + * @since 1.21 */ public function addSectionHeader( $header ) { return $this; } /** - * @see Content::preloadTransform() + * @see Content::preloadTransform + * + * @since 1.21 */ public function preloadTransform( Title $title, ParserOptions $popts ) { return $this; } /** - * @see Content::prepareSave() + * @see Content::prepareSave + * + * @since 1.21 */ public function prepareSave( WikiPage $page, $flags, $baseRevId, User $user ) { if ( $this->isValid() ) { @@ -311,7 +377,7 @@ abstract class AbstractContent implements Content { } /** - * @see Content::getDeletionUpdates() + * @see Content::getDeletionUpdates * * @since 1.21 * @@ -332,10 +398,12 @@ abstract class AbstractContent implements Content { } /** - * @see Content::matchMagicWord() - * * This default implementation always returns false. Subclasses may override this to supply matching logic. * + * @see Content::matchMagicWord + * + * @since 1.21 + * * @param MagicWord $word * * @return bool @@ -343,4 +411,4 @@ abstract class AbstractContent implements Content { public function matchMagicWord( MagicWord $word ) { return false; } -} \ No newline at end of file +} diff --git a/includes/content/Content.php b/includes/content/Content.php index 3ef73db6ac..d830dc7dc2 100644 --- a/includes/content/Content.php +++ b/includes/content/Content.php @@ -37,7 +37,7 @@ interface Content { * @todo: test that this actually works * @todo: make sure this also works with LuceneSearch / WikiSearch */ - public function getTextForSearchIndex( ); + public function getTextForSearchIndex(); /** * @since 1.21 @@ -51,7 +51,7 @@ interface Content { * @TODO: used in WikiPage and MessageCache to get message text. Not so * nice. What should we use instead?! */ - public function getWikitextForTransclusion( ); + public function getWikitextForTransclusion(); /** * Returns a textual representation of the content suitable for use in edit @@ -59,10 +59,10 @@ interface Content { * * @since 1.21 * - * @param $maxlength int Maximum length of the summary text - * @return The summary text + * @param $maxLength int Maximum length of the summary text + * @return string The summary text */ - public function getTextForSummary( $maxlength = 250 ); + public function getTextForSummary( $maxLength = 250 ); /** * Returns native representation of the data. Interpretation depends on @@ -76,14 +76,14 @@ interface Content { * * @NOTE: Caller must be aware of content model! */ - public function getNativeData( ); + public function getNativeData(); /** * Returns the content's nominal size in bogo-bytes. * * @return int */ - public function getSize( ); + public function getSize(); /** * Returns the ID of the content model used by this Content object. @@ -438,6 +438,8 @@ interface Content { * Note that this method is called before any update to the page table is performed. This means that * $page may not yet know a page ID. * + * @since 1.21 + * * @param WikiPage $page The page to be saved. * @param int $flags bitfield for use with EDIT_XXX constants, see WikiPage::doEditContent() * @param int $baseRevId the ID of the current revision @@ -472,6 +474,8 @@ interface Content { /** * Returns true if this Content object matches the given magic word. * + * @since 1.21 + * * @param MagicWord $word the magic word to match * * @return bool whether this Content object matches the given magic word. @@ -483,4 +487,4 @@ interface Content { # [11:59] Hooks are ugly; make CodeHighlighter interface and a # config to set the class which handles syntax highlighting # [12:00] And default it to a DummyHighlighter -} \ No newline at end of file +} diff --git a/includes/content/ContentHandler.php b/includes/content/ContentHandler.php index 84800e3161..3b3f990777 100644 --- a/includes/content/ContentHandler.php +++ b/includes/content/ContentHandler.php @@ -1101,239 +1101,3 @@ abstract class ContentHandler { } } -/** - * @since 1.21 - */ -class TextContentHandler extends ContentHandler { - - public function __construct( $modelId = CONTENT_MODEL_TEXT, $formats = array( CONTENT_FORMAT_TEXT ) ) { - parent::__construct( $modelId, $formats ); - } - - /** - * Returns the content's text as-is. - * - * @param $content Content - * @param $format string|null - * @return mixed - */ - public function serializeContent( Content $content, $format = null ) { - $this->checkFormat( $format ); - return $content->getNativeData(); - } - - /** - * Attempts to merge differences between three versions. Returns a new - * Content object for a clean merge and false for failure or a conflict. - * - * All three Content objects passed as parameters must have the same - * content model. - * - * This text-based implementation uses wfMerge(). - * - * @param $oldContent \Content|string String - * @param $myContent \Content|string String - * @param $yourContent \Content|string String - * - * @return Content|Bool - */ - public function merge3( Content $oldContent, Content $myContent, Content $yourContent ) { - $this->checkModelID( $oldContent->getModel() ); - $this->checkModelID( $myContent->getModel() ); - $this->checkModelID( $yourContent->getModel() ); - - $format = $this->getDefaultFormat(); - - $old = $this->serializeContent( $oldContent, $format ); - $mine = $this->serializeContent( $myContent, $format ); - $yours = $this->serializeContent( $yourContent, $format ); - - $ok = wfMerge( $old, $mine, $yours, $result ); - - if ( !$ok ) { - return false; - } - - if ( !$result ) { - return $this->makeEmptyContent(); - } - - $mergedContent = $this->unserializeContent( $result, $format ); - return $mergedContent; - } - - /** - * Unserializes a Content object of the type supported by this ContentHandler. - * - * @since 1.21 - * - * @param $text string serialized form of the content - * @param $format null|String the format used for serialization - * - * @return Content the TextContent object wrapping $text - */ - public function unserializeContent( $text, $format = null ) { - $this->checkFormat( $format ); - - return new TextContent( $text ); - } - - /** - * Creates an empty TextContent object. - * - * @since 1.21 - * - * @return Content - */ - public function makeEmptyContent() { - return new TextContent( '' ); - } -} - -/** - * @since 1.21 - */ -class WikitextContentHandler extends TextContentHandler { - - public function __construct( $modelId = CONTENT_MODEL_WIKITEXT ) { - parent::__construct( $modelId, array( CONTENT_FORMAT_WIKITEXT ) ); - } - - public function unserializeContent( $text, $format = null ) { - $this->checkFormat( $format ); - - return new WikitextContent( $text ); - } - - /** - * @see ContentHandler::makeEmptyContent - * - * @return Content - */ - public function makeEmptyContent() { - return new WikitextContent( '' ); - } - - - /** - * Returns a WikitextContent object representing a redirect to the given destination page. - * - * @see ContentHandler::makeRedirectContent - * - * @param Title $destination the page to redirect to. - * - * @return Content - */ - public function makeRedirectContent( Title $destination ) { - $mwRedir = MagicWord::get( 'redirect' ); - $redirectText = $mwRedir->getSynonym( 0 ) . ' [[' . $destination->getPrefixedText() . "]]\n"; - - return new WikitextContent( $redirectText ); - } - - /** - * Returns true because wikitext supports sections. - * - * @return boolean whether sections are supported. - */ - public function supportsSections() { - return true; - } - - /** - * Returns true, because wikitext supports caching using the - * ParserCache mechanism. - * - * @since 1.21 - * @return bool - */ - public function isParserCacheSupported() { - return true; - } -} - -# XXX: make ScriptContentHandler base class, do highlighting stuff there? - -/** - * @since 1.21 - */ -class JavaScriptContentHandler extends TextContentHandler { - - public function __construct( $modelId = CONTENT_MODEL_JAVASCRIPT ) { - parent::__construct( $modelId, array( CONTENT_FORMAT_JAVASCRIPT ) ); - } - - public function unserializeContent( $text, $format = null ) { - $this->checkFormat( $format ); - - return new JavaScriptContent( $text ); - } - - public function makeEmptyContent() { - return new JavaScriptContent( '' ); - } - - /** - * Returns the english language, because JS is english, and should be handled as such. - * - * @return Language wfGetLangObj( 'en' ) - * - * @see ContentHandler::getPageLanguage() - */ - public function getPageLanguage( Title $title, Content $content = null ) { - return wfGetLangObj( 'en' ); - } - - /** - * Returns the english language, because CSS is english, and should be handled as such. - * - * @return Language wfGetLangObj( 'en' ) - * - * @see ContentHandler::getPageViewLanguage() - */ - public function getPageViewLanguage( Title $title, Content $content = null ) { - return wfGetLangObj( 'en' ); - } -} - -/** - * @since 1.21 - */ -class CssContentHandler extends TextContentHandler { - - public function __construct( $modelId = CONTENT_MODEL_CSS ) { - parent::__construct( $modelId, array( CONTENT_FORMAT_CSS ) ); - } - - public function unserializeContent( $text, $format = null ) { - $this->checkFormat( $format ); - - return new CssContent( $text ); - } - - public function makeEmptyContent() { - return new CssContent( '' ); - } - - /** - * Returns the english language, because CSS is english, and should be handled as such. - * - * @return Language wfGetLangObj( 'en' ) - * - * @see ContentHandler::getPageLanguage() - */ - public function getPageLanguage( Title $title, Content $content = null ) { - return wfGetLangObj( 'en' ); - } - - /** - * Returns the english language, because CSS is english, and should be handled as such. - * - * @return Language wfGetLangObj( 'en' ) - * - * @see ContentHandler::getPageViewLanguage() - */ - public function getPageViewLanguage( Title $title, Content $content = null ) { - return wfGetLangObj( 'en' ); - } -} diff --git a/includes/content/CssContentHandler.php b/includes/content/CssContentHandler.php new file mode 100644 index 0000000000..e2199c41b2 --- /dev/null +++ b/includes/content/CssContentHandler.php @@ -0,0 +1,43 @@ +checkFormat( $format ); + + return new CssContent( $text ); + } + + public function makeEmptyContent() { + return new CssContent( '' ); + } + + /** + * Returns the english language, because CSS is english, and should be handled as such. + * + * @return Language wfGetLangObj( 'en' ) + * + * @see ContentHandler::getPageLanguage() + */ + public function getPageLanguage( Title $title, Content $content = null ) { + return wfGetLangObj( 'en' ); + } + + /** + * Returns the english language, because CSS is english, and should be handled as such. + * + * @return Language wfGetLangObj( 'en' ) + * + * @see ContentHandler::getPageViewLanguage() + */ + public function getPageViewLanguage( Title $title, Content $content = null ) { + return wfGetLangObj( 'en' ); + } +} \ No newline at end of file diff --git a/includes/content/JavaScriptContentHandler.php b/includes/content/JavaScriptContentHandler.php new file mode 100644 index 0000000000..8b080bf5c8 --- /dev/null +++ b/includes/content/JavaScriptContentHandler.php @@ -0,0 +1,45 @@ +checkFormat( $format ); + + return new JavaScriptContent( $text ); + } + + public function makeEmptyContent() { + return new JavaScriptContent( '' ); + } + + /** + * Returns the english language, because JS is english, and should be handled as such. + * + * @return Language wfGetLangObj( 'en' ) + * + * @see ContentHandler::getPageLanguage() + */ + public function getPageLanguage( Title $title, Content $content = null ) { + return wfGetLangObj( 'en' ); + } + + /** + * Returns the english language, because CSS is english, and should be handled as such. + * + * @return Language wfGetLangObj( 'en' ) + * + * @see ContentHandler::getPageViewLanguage() + */ + public function getPageViewLanguage( Title $title, Content $content = null ) { + return wfGetLangObj( 'en' ); + } +} \ No newline at end of file diff --git a/includes/content/TextContentHandler.php b/includes/content/TextContentHandler.php new file mode 100644 index 0000000000..9dff67edd4 --- /dev/null +++ b/includes/content/TextContentHandler.php @@ -0,0 +1,90 @@ +checkFormat( $format ); + return $content->getNativeData(); + } + + /** + * Attempts to merge differences between three versions. Returns a new + * Content object for a clean merge and false for failure or a conflict. + * + * All three Content objects passed as parameters must have the same + * content model. + * + * This text-based implementation uses wfMerge(). + * + * @param $oldContent \Content|string String + * @param $myContent \Content|string String + * @param $yourContent \Content|string String + * + * @return Content|Bool + */ + public function merge3( Content $oldContent, Content $myContent, Content $yourContent ) { + $this->checkModelID( $oldContent->getModel() ); + $this->checkModelID( $myContent->getModel() ); + $this->checkModelID( $yourContent->getModel() ); + + $format = $this->getDefaultFormat(); + + $old = $this->serializeContent( $oldContent, $format ); + $mine = $this->serializeContent( $myContent, $format ); + $yours = $this->serializeContent( $yourContent, $format ); + + $ok = wfMerge( $old, $mine, $yours, $result ); + + if ( !$ok ) { + return false; + } + + if ( !$result ) { + return $this->makeEmptyContent(); + } + + $mergedContent = $this->unserializeContent( $result, $format ); + return $mergedContent; + } + + /** + * Unserializes a Content object of the type supported by this ContentHandler. + * + * @since 1.21 + * + * @param $text string serialized form of the content + * @param $format null|String the format used for serialization + * + * @return Content the TextContent object wrapping $text + */ + public function unserializeContent( $text, $format = null ) { + $this->checkFormat( $format ); + + return new TextContent( $text ); + } + + /** + * Creates an empty TextContent object. + * + * @since 1.21 + * + * @return Content + */ + public function makeEmptyContent() { + return new TextContent( '' ); + } +} \ No newline at end of file diff --git a/includes/content/WikitextContentHandler.php b/includes/content/WikitextContentHandler.php new file mode 100644 index 0000000000..c6ac2ba879 --- /dev/null +++ b/includes/content/WikitextContentHandler.php @@ -0,0 +1,63 @@ +checkFormat( $format ); + + return new WikitextContent( $text ); + } + + /** + * @see ContentHandler::makeEmptyContent + * + * @return Content + */ + public function makeEmptyContent() { + return new WikitextContent( '' ); + } + + + /** + * Returns a WikitextContent object representing a redirect to the given destination page. + * + * @see ContentHandler::makeRedirectContent + * + * @param Title $destination the page to redirect to. + * + * @return Content + */ + public function makeRedirectContent( Title $destination ) { + $mwRedir = MagicWord::get( 'redirect' ); + $redirectText = $mwRedir->getSynonym( 0 ) . ' [[' . $destination->getPrefixedText() . "]]\n"; + + return new WikitextContent( $redirectText ); + } + + /** + * Returns true because wikitext supports sections. + * + * @return boolean whether sections are supported. + */ + public function supportsSections() { + return true; + } + + /** + * Returns true, because wikitext supports caching using the + * ParserCache mechanism. + * + * @since 1.21 + * @return bool + */ + public function isParserCacheSupported() { + return true; + } +} \ No newline at end of file diff --git a/includes/db/Database.php b/includes/db/Database.php index a942afe065..48aac9dbd8 100644 --- a/includes/db/Database.php +++ b/includes/db/Database.php @@ -2992,6 +2992,12 @@ abstract class DatabaseBase implements DatabaseType { } elseif( $this->mTrxAutomatic ) { wfWarn( "$fname: Explicit commit of implicit transaction. Something may be out of sync!" ); } + } else { + if ( !$this->mTrxLevel ) { + return; // nothing to do + } elseif( !$this->mTrxAutomatic ) { + wfWarn( "$fname: Flushing an explicit transaction, getting out of sync!" ); + } } $this->doCommit( $fname ); diff --git a/includes/filebackend/TempFSFile.php b/includes/filebackend/TempFSFile.php index 2e45093513..11e125c11f 100644 --- a/includes/filebackend/TempFSFile.php +++ b/includes/filebackend/TempFSFile.php @@ -82,7 +82,7 @@ class TempFSFile extends FSFile { * Clean up the temporary file only after an object goes out of scope * * @param $object Object - * @return void + * @return TempFSFile This object */ public function bind( $object ) { if ( is_object( $object ) ) { @@ -92,24 +92,27 @@ class TempFSFile extends FSFile { } $object->tempFSFileReferences[] = $this; } + return $this; } /** * Set flag to not clean up after the temporary file * - * @return void + * @return TempFSFile This object */ public function preserve() { $this->canDelete = false; + return $this; } /** * Set flag clean up after the temporary file * - * @return void + * @return TempFSFile This object */ public function autocollect() { $this->canDelete = true; + return $this; } /** diff --git a/includes/job/Job.php b/includes/job/Job.php index d11446e02f..0d2803e1bf 100644 --- a/includes/job/Job.php +++ b/includes/job/Job.php @@ -23,7 +23,7 @@ /** * Class to both describe a background job and handle jobs. - * This queue aspects of this class are now deprecated. + * The queue aspects of this class are now deprecated. * * @ingroup JobQueue */ @@ -80,7 +80,7 @@ abstract class Job { * removed later on, when the first one is popped. * * @param $jobs array of Job objects - * @deprecated 1.20 + * @deprecated 1.21 */ public static function batchInsert( $jobs ) { return JobQueueGroup::singleton()->push( $jobs ); @@ -94,12 +94,36 @@ abstract class Job { * large batches of jobs can cause slave lag. * * @param $jobs array of Job objects - * @deprecated 1.20 + * @deprecated 1.21 */ public static function safeBatchInsert( $jobs ) { return JobQueueGroup::singleton()->push( $jobs, JobQueue::QoS_Atomic ); } + /** + * Pop a job of a certain type. This tries less hard than pop() to + * actually find a job; it may be adversely affected by concurrent job + * runners. + * + * @param $type string + * @return Job + * @deprecated 1.21 + */ + public static function pop_type( $type ) { + return JobQueueGroup::singleton()->get( $type )->pop(); + } + + /** + * Pop a job off the front of the queue. + * This is subject to $wgJobTypesExcludedFromDefaultQueue. + * + * @return Job or false if there's no jobs + * @deprecated 1.21 + */ + public static function pop() { + return JobQueueGroup::singleton()->pop(); + } + /*------------------------------------------------------------------------- * Non-static functions *------------------------------------------------------------------------*/ @@ -157,7 +181,7 @@ abstract class Job { /** * Insert a single job into the queue. * @return bool true on success - * @deprecated 1.20 + * @deprecated 1.21 */ public function insert() { return JobQueueGroup::singleton()->push( $this ); diff --git a/includes/specials/SpecialUndelete.php b/includes/specials/SpecialUndelete.php index 036b867153..4c38a781ba 100644 --- a/includes/specials/SpecialUndelete.php +++ b/includes/specials/SpecialUndelete.php @@ -121,7 +121,7 @@ class PageArchive { * @return ResultWrapper */ function listRevisions() { - global $wgContentHandlerNoDB; + global $wgContentHandlerUseDB; $dbr = wfGetDB( DB_SLAVE ); @@ -130,7 +130,7 @@ class PageArchive { 'ar_comment', 'ar_len', 'ar_deleted', 'ar_rev_id', 'ar_sha1', ); - if ( !$wgContentHandlerNoDB ) { + if ( $wgContentHandlerUseDB ) { $fields[] = 'ar_content_format'; $fields[] = 'ar_content_model'; } @@ -194,7 +194,7 @@ class PageArchive { * @return Revision */ function getRevision( $timestamp ) { - global $wgContentHandlerNoDB; + global $wgContentHandlerUseDB; $dbr = wfGetDB( DB_SLAVE ); @@ -213,7 +213,7 @@ class PageArchive { 'ar_sha1', ); - if ( !$wgContentHandlerNoDB ) { + if ( $wgContentHandlerUseDB ) { $fields[] = 'ar_content_format'; $fields[] = 'ar_content_model'; } @@ -435,7 +435,7 @@ class PageArchive { * @return Status, containing the number of revisions restored on success */ private function undeleteRevisions( $timestamps, $unsuppress = false, $comment = '' ) { - global $wgContentHandlerNoDB; + global $wgContentHandlerUseDB; if ( wfReadOnly() ) { throw new ReadOnlyError(); @@ -510,7 +510,7 @@ class PageArchive { 'ar_len', 'ar_sha1'); - if ( !$wgContentHandlerNoDB ) { + if ( $wgContentHandlerUseDB ) { $fields[] = 'ar_content_format'; $fields[] = 'ar_content_model'; } diff --git a/languages/messages/MessagesBa.php b/languages/messages/MessagesBa.php index 264029b1d4..80c8530518 100644 --- a/languages/messages/MessagesBa.php +++ b/languages/messages/MessagesBa.php @@ -866,7 +866,7 @@ $3 белдергән сәбәп: ''$2''", 'currentrev' => 'Ағымдағы версия', 'currentrev-asof' => '$1, ағымдағы версия', 'revisionasof' => '$1 версияһы', -'revision-info' => 'Версия: $1; $2', +'revision-info' => '
Хәҙер һеҙ был биттең иҫке, $2 тарафынан $1 һаҡланған версияһын ҡарайһығыҙ. Уның [{{fullurl:{{FULLPAGENAME}}}} ағымдағы версиянан] айырмаһы булыуы мөмкин.
', 'previousrevision' => '← Алдағы', 'nextrevision' => 'Киләһе →', 'currentrevisionlink' => 'Ағымдағы версия', diff --git a/languages/messages/MessagesCs.php b/languages/messages/MessagesCs.php index b270e9d2ed..913a3d8ef8 100644 --- a/languages/messages/MessagesCs.php +++ b/languages/messages/MessagesCs.php @@ -2028,7 +2028,7 @@ Možná spíše chcete upravit [$2 tamější stránku s popisem souboru].', 'shared-repo-from' => 'z {{grammar:2sg|$1}}', 'shared-repo' => 'sdíleného úložiÅ¡tě', 'filepage.css' => '/* Zde uvedené CSS se vkládá na stránky s popisem souboru, včetně cizích klientských wiki */', -'upload-disallowed-here' => 'Tento soubor bohužel nemůžete přepsat.', +'upload-disallowed-here' => 'Tento soubor nemůžete přepsat.', # File reversion 'filerevert' => 'Vrátit zpět $1', diff --git a/languages/messages/MessagesEs.php b/languages/messages/MessagesEs.php index 3ab7afec2e..615ab4421a 100644 --- a/languages/messages/MessagesEs.php +++ b/languages/messages/MessagesEs.php @@ -2054,7 +2054,7 @@ Tal vez desee editar la descripción de su [$2 página de descripción del archi 'shared-repo-from' => 'de $1', 'shared-repo' => 'un repositorio compartido', 'filepage.css' => '/* Los estilos CSS colocados aquí se incluirán en las páginas de descripción de archivos, incluso en los wikis externos que incluyan estas páginas */', -'upload-disallowed-here' => 'Lamentablemente no puedes sobrescribir esta imagen.', +'upload-disallowed-here' => 'No puedes sobrescribir este archivo.', # File reversion 'filerevert' => 'Revertir $1', @@ -3161,6 +3161,7 @@ Esto podría estar causado por un enlace a un sitio externo incluido en la lista # Info page 'pageinfo-title' => 'Información para «$1»', +'pageinfo-not-current' => 'Únicamente se puede mostrar la información para la revisión actual.', 'pageinfo-header-basic' => 'Información básica', 'pageinfo-header-edits' => 'Historial de ediciones', 'pageinfo-header-restrictions' => 'Protección de página', diff --git a/languages/messages/MessagesFa.php b/languages/messages/MessagesFa.php index 62d2d7626b..fe2203f49e 100644 --- a/languages/messages/MessagesFa.php +++ b/languages/messages/MessagesFa.php @@ -2143,7 +2143,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization را ببینید.', 'shared-repo-from' => 'از $1', 'shared-repo' => 'یک مخزن مشترک', 'shared-repo-name-wikimediacommons' => 'ویکی‌انبار', -'upload-disallowed-here' => 'متاسفانه شما نمی توانید این نگاره را بازنویس کنید.', +'upload-disallowed-here' => 'متاسفانه شما نمی توانید این پرونده را بازنویس کنید.', # File reversion 'filerevert' => 'واگردانی $1', @@ -2693,7 +2693,7 @@ $NEWPAGE 'undeletedrevisions-files' => '$1 نسخه و $2 پرونده احیا {{PLURAL:$1|شد|شدند}}.', 'undeletedfiles' => '$1 پرونده احیا {{PLURAL:$1|شد|شدند}}.', 'cannotundelete' => 'احیا ناموفق بود؛ -ممکن است کس دیگری پیشتر این صفحه را احیا کرده باشد.', +$1', 'undeletedpage' => "'''$1 احیا شد''' برای دیدن سیاههٔ حذف‌ها و احیاهای اخیر به [[Special:Log/delete|سیاههٔ حذف]] رجوع کنید.", diff --git a/languages/messages/MessagesFit.php b/languages/messages/MessagesFit.php index a20078a554..5f838b8073 100644 --- a/languages/messages/MessagesFit.php +++ b/languages/messages/MessagesFit.php @@ -44,7 +44,7 @@ $messages = array( 'tog-shownumberswatching' => 'Näytä kuinka moni käyttäjä valvoo sivua', 'tog-oldsig' => 'Nykynen allekirjotus', 'tog-fancysig' => 'Mookkaamaton allekirjotus ilman auttomaattista linkkiä', -'tog-externaleditor' => 'Käytä ekterniä tekstiedituuria stantartina. Vain kokenheile käyttäjile, vaatii taattorin asetuksitten muuttamista. Käytä eksterniä tekstiedituuria oletuksena. Vain kokeneille käyttäjille, vaatii selaimen asetusten muuttamista. ([[//www.mediawiki.org/wiki/Manual:External_editors Ohje])', +'tog-externaleditor' => 'Käytä ekterniä tekstiedituuria stantartina. Vain kokenheile käyttäjile, vaatii taattorin asetuksitten muuttamista. Käytä eksterniä tekstiedituuria oletuksena. Vain kokeneille käyttäjille, vaatii selaimen asetusten muuttamista. ([//www.mediawiki.org/wiki/Manual:External_editors Ohje])', # Dates 'sunday' => 'pyhä', @@ -120,7 +120,6 @@ $messages = array( # Cologne Blue skin 'qbedit' => 'Mookkaa', 'qbpageoptions' => 'Tämä sivu', -'qbpageinfo' => 'Sisältö', 'qbmyoptions' => 'Minun inställninkit', 'qbspecialpages' => 'Spesiaali sivut', 'faq' => 'Useasti kysytyt kysymykset', diff --git a/languages/messages/MessagesFr.php b/languages/messages/MessagesFr.php index 1b7f29f267..33a24d28bd 100644 --- a/languages/messages/MessagesFr.php +++ b/languages/messages/MessagesFr.php @@ -785,7 +785,7 @@ Notez que certaines pages peuvent être encore affichées comme si vous étiez t Votre compte a été créé. N’oubliez pas de personnaliser vos [[Special:Preferences|préférences sur {{SITENAME}}]].', -'yourname' => 'Nom d’utilisateur :', +'yourname' => 'Nom d’utilisateur :', 'yourpassword' => 'Mot de passe :', 'yourpasswordagain' => 'Confirmez le mot de passe :', 'remembermypassword' => 'Me reconnecter automatiquement aux prochaines visites avec ce navigateur (au maximum $1 {{PLURAL:$1|jour|jours}})', @@ -2049,7 +2049,7 @@ Vous voulez peut-être modifier la description sur sa [$2 page de description].' 'shared-repo' => 'un dépôt partagé', 'shared-repo-name-wikimediacommons' => 'Wikimédia Commons', 'filepage.css' => '/* Les styles CSS placés ici sont inclus dans la page de description du fichier, également incluse sur les clients wikis étrangers */', -'upload-disallowed-here' => 'Malheureusement, vous ne peut pas remplacer cette image.', +'upload-disallowed-here' => 'Vous ne pouvez pas remplacer ce fichier.', # File reversion 'filerevert' => 'Rétablir $1', @@ -2349,7 +2349,7 @@ L’adresse électronique que vous avez indiquée dans [[Special:Preferences|vos 'nowikiemailtext' => 'Cet utilisateur a choisi de ne pas recevoir de courriel de la part d’autres utilisateurs.', 'emailnotarget' => "Nom d'utilisateur du destinataire inexistant ou invalide.", 'emailtarget' => "Entrez le nom d'utilisateur du destinataire", -'emailusername' => "Nom de l'utilisateur :", +'emailusername' => 'Nom d’utilisateur :', 'emailusernamesubmit' => 'Soumettre', 'email-legend' => 'Envoyer un courriel à un autre utilisateur de {{SITENAME}}', 'emailfrom' => 'De :', diff --git a/languages/messages/MessagesGl.php b/languages/messages/MessagesGl.php index 35b09ce3f4..20098972a6 100644 --- a/languages/messages/MessagesGl.php +++ b/languages/messages/MessagesGl.php @@ -1942,7 +1942,7 @@ Poida que queira editar a descrición da [$2 páxina de descrición do ficheiro] 'shared-repo-from' => 'de $1', 'shared-repo' => 'repositorio compartido', 'filepage.css' => '/** O CSS que se coloque aquí será incluído na páxina de descrición do ficheiro, así como nos wikis de clientes estranxeiros */', -'upload-disallowed-here' => 'Por desgraza, non pode sobrescribir esta imaxe.', +'upload-disallowed-here' => 'Non pode sobrescribir este ficheiro.', # File reversion 'filerevert' => 'Reverter $1', diff --git a/languages/messages/MessagesKa.php b/languages/messages/MessagesKa.php index 7f2fd4aa21..12356df2ed 100644 --- a/languages/messages/MessagesKa.php +++ b/languages/messages/MessagesKa.php @@ -326,7 +326,7 @@ $messages = array( 'vector-action-protect' => 'დაცვა', 'vector-action-undelete' => 'აღდგენა', 'vector-action-unprotect' => 'დაცვის დონის შეცვლა', -'vector-simplesearch-preference' => 'ძებნის გაფართოებული მინიშნებების ჩართვა (მხოლოდ ვექტორული იერსახისთვის)', +'vector-simplesearch-preference' => 'ძებნის გაფართოებული ველის ჩართვა (მხოლოდ ვექტორული იერსახისთვის)', 'vector-view-create' => 'შექმნა', 'vector-view-edit' => 'რედაქტირება', 'vector-view-history' => 'ისტორია', @@ -955,6 +955,9 @@ $2 'edit-already-exists' => 'ახალი გვერდის შექმნა არ მოხერხდა. ის უკვე არსებობს.', 'defaultmessagetext' => 'შეტყობინების სტანდარტული ტექსტი', +'content-failed-to-parse' => '$2-ის შინაარსი არ შეესაბამება $1-ის ტიპს: $3.', +'invalid-content-data' => 'დაუშვებელი მონაცემები', +'content-not-allowed-here' => '„$1“-ის შინაარსი დაუშვებელია [[$2]] გვერდზე', # Content models 'content-model-wikitext' => 'ვიკიტექსტი', @@ -1858,7 +1861,7 @@ $1', 'shared-repo-from' => ' $1-დან', 'shared-repo' => 'საერთო საცავიდან', 'shared-repo-name-wikimediacommons' => 'ვიკისაწყობი', -'upload-disallowed-here' => 'სამწუხაროდ, თქვენ არ შეგიძლიათ ამ სურათზე გადაწერა.', +'upload-disallowed-here' => 'თქვენ არ შეგიძლიათ ამ ფაილზე გადაწერა.', # File reversion 'filerevert' => 'დააბრუნე $1', @@ -2702,6 +2705,7 @@ $1', 'immobile-target-namespace-iw' => 'ინტერვიკის ბმული შეუძლებელია გამოყენებული იქნას გადარქმევისთვის.', 'immobile-source-page' => 'ამ გვეერდის გადატანა შეუძლებელია.', 'immobile-target-page' => 'შეუძლებელია მოცემულ სახელზე გადატანა.', +'bad-target-model' => 'შეუძლებელია $1-ის გარდაქმნა $2-ზე: მონაცემების შეუსაბამო მოდელი.', 'imagenocrossnamespace' => 'შეუძლებელია ფაილს მიეცეს სახელი სახელთა სხვა სივრციდან', 'nonfile-cannot-move-to-file' => 'შეუძლებელია არაფაილების გადატანა ფაილის სახელთა სივრცეში', 'imagetypemismatch' => 'ფაილს ახალი გაფართოება არ შეესაბამება მის ტიპს', @@ -2949,6 +2953,7 @@ $1', # Info page 'pageinfo-title' => 'ინფორმაცია „$1“-თვის', +'pageinfo-not-current' => 'მონაცემები წარმოდგენილია მხოლოდ მიმდინარე რედაქტირებისათვის.', 'pageinfo-header-basic' => 'საბაზისო ინფორმაცია', 'pageinfo-header-edits' => 'რედაქტირების ისტორია', 'pageinfo-header-restrictions' => 'გვერდის დაცვა', @@ -3604,6 +3609,7 @@ $5 # Scary transclusion 'scarytranscludedisabled' => '[«Interwiki transcluding» გათიშულია]', 'scarytranscludefailed' => '[$1-თან დაკავშირების შეცდომა]', +'scarytranscludefailed-httpstatus' => '[ვერ მოხერხდა თარგის ჩატვირთვა $1-თვის: HTTP $2]', 'scarytranscludetoolong' => '[URL ძალიან გრძელია]', # Delete conflict diff --git a/languages/messages/MessagesKab.php b/languages/messages/MessagesKab.php index 8e4225f953..e58b455650 100644 --- a/languages/messages/MessagesKab.php +++ b/languages/messages/MessagesKab.php @@ -1394,6 +1394,8 @@ iwakken ad tazneḍ afaylu.', 'upload_directory_missing' => 'Akaram n taktert n ufaylu ($1) ulac-it dÉ£a ur d-yesnulfa ara sÉ£ur aqeddac web.', 'upload_directory_read_only' => 'Weserver/serveur Web ur yezmir ara ad yaru deg ($1).', 'uploaderror' => 'Agul deg usekcam', +'upload-recreate-warning' => "'''Ɣur-wet : Afaylu s isem agi yetwekkes naÉ£ yetembiwel.''' +AÉ£mis n tukksiwin d win n ittembiwilen n usebter agi beqqeḍen d-agi i tilÉ£a :", 'uploadtext' => "Sseqdec tiferkit agi iwakken ad ktereḍ ifuyla É£ef uqeddac. Iwakken ad ẓṛeḍ naÉ£ ad nadiḍ tugniwin i ktren uqbel, ẓeṛ [[Special:FileList|umuÉ£ n tugniwin]]. Taktert tella daÉ£en deg [[Special:Log/upload|aÉ£mis n taktert n ifuyla]], dÉ£a inuzal deg [[Special:Log/delete|aÉ£mis n inuzal]]. @@ -1424,6 +1426,10 @@ Akken ad tessekcmeḍ afaylu deg usebter, seqdec azay am wagi 'filetype-mime-mismatch' => 'AsiÉ£zef n ufaylu « .$1 » ur yesɛa ara tuqqna s tawsit MIME id n-ufa deg ufaylu ($2).', 'filetype-badmime' => 'Ur tettalaseḍ ara ad tazneḍ ufayluwen n anaw n MIME "$1".', 'filetype-bad-ie-mime' => 'Afaylu ur yezmer ara ad yetwekter acku yetwaf am « $1 » sÉ£ur Internet Explorer. Tawsit agi d tazanbagt acku d tamihawt.', +'filetype-unwanted-type' => "'''« .$1 »''' d amasal n ufaylu azanbag. +Ilaq ad seqdeceḍ {{PLURAL:$3|amasal|imusal}} $2.", +'filetype-banned-type' => "''' « .$1 » '''mačči d {{PLURAL:$4|amasal yesɛan turagt|imusal yesɛan turagt}}. +{{PLURAL:$3|Amasal yesɛan turagt d-wagi :|Imusal yesɛan turagt d-wigi :}} $2.", 'filetype-missing' => 'Afaylu ur yesɛi ara taseggiwit (am ".jpg").', 'empty-file' => 'Afaylu id cegɛeḍ d-ilem.', 'file-too-large' => 'Afaylu id cegɛed d-ameqqṛan aá¹­as.', @@ -1442,6 +1448,9 @@ Akken ad tessekcmeḍ afaylu deg usebter, seqdec azay am wagi 'windows-nonascii-filename' => 'Wiki agi ur yebra ara isemawen n ifuyla s isekkilen usligen.', 'fileexists' => 'Afaylu s yisem-agi yewǧed yagi, ssenqed [[:$1]] ma telliḍ mačči meḍmun akken a t-tbeddleḍ. [[$1|thumb]]', +'filepageexists' => 'Asebter n uglam i ufaylu agi yesnulfad yakan d-agi [[:$1]], maca ulac asebter s isem agi. +Agzul ad efkeḍ tura ur d yettban ara É£ef asebter n uglam. +Ma tebÉ£iḍ ad yeban, ilaq ad beddeleḍ s awfus asebter. [[$1|thumb]]', 'fileexists-extension' => 'Afaylu s yisem yecban wagi yella : [[$2|thumb]] * Isem n ufaylu i tezneḍ: [[:$1]] * Isem n ufaylu i yellan: [[:$2]] @@ -1459,6 +1468,7 @@ Ma tebÉ£iḍ ad azeneḍ afaylu inek/inem, ilaq ad uÉ£aleḍ ar deffir dÉ£a ad a Ma tebÉ£iḍ ad azeneḍ afaylu inek/inem, ilaq ad uÉ£aleḍ ar deffir dÉ£a ad as efkeḍ isem amaynut. [[File:$1|thumb|center|$1]]', 'file-exists-duplicate' => 'Afaylu agi d-asleg n {{PLURAL:$1|ufaylu agi|ifuyla agi}} :', +'file-deleted-duplicate' => 'Afaylu am wagi ([[:$1]]) yetwekkes yakan. Ilaq ad selkeneḍ aÉ£mis n tukksiwin n ufaylu agi uqbel atid ktereḍ tikkelt nniḍen.', 'uploadwarning' => 'AÉ£tal deg wazan n ufayluwen', 'uploadwarning-text' => 'Beddel aglam n ufaylu dÉ£a ɛreḍ tikkelt nniḍen', 'savefile' => 'Smekti afaylu', @@ -1482,6 +1492,8 @@ Azdam n ifuyla Java ur yesɛa ara turagt, acku zemren ad zizdewen ikyafen n taÉ£ 'upload-options' => 'Tixtiṛiyin n taktert ifuyla', 'watchthisupload' => 'Ɛass asebter agi', 'filewasdeleted' => 'Afaylu s yisem-agi yettwazen umbeɛd yettumḥa. Ssenqed $1 qbel ad tazniḍ tikelt nniḍen.', +'filename-bad-prefix' => "Isem n ufaylu yezwer s '''« $1 »''', wagi d isem i sedgeren s uwurman sÉ£ur timsakenwin tumḍinin. +Xteṛ isem n ufaylu agelmaw.", 'upload-success-subj' => 'Azen yekfa', 'upload-success-msg' => 'Taktert inek/inem seg [$2] yesmures. Af-it d-agi : [[:{{ns:file}}:$1]]', 'upload-failure-subj' => 'Ugur n taktert', @@ -1547,18 +1559,29 @@ Ma yella daÉ£en anezri, ilaq ad meslaye ḍ s [[Special:ListUsers/sysop|unedbal 'lockmanager-fail-svr-release' => 'Ulamek an bru izekṛunen É£ef uqeddac $1.', # ZipDirectoryReader +'zip-file-open-error' => 'Yella agul mi d neldi afaylu i senqeden ifuyla zip.', 'zip-wrong-format' => 'Afaylu agi mačči d afaylu n weÉ£baṛ ZIP.', +'zip-bad' => 'Afaylu agi d afaylu n weÉ£baṛ ameggafsu naÉ£ ur nezmer ara an É£aṛ deg-es. +Ur nezmer ara aten selken i taÉ£ellist.', +'zip-unsupported' => 'Afaylu agi d afaylu n weÉ£baṛ i seqdacen tiÉ£ariwin ur yeḥemmel ara MediaWiki. +TaÉ£ellist ines ur tezmer ara at illi teseklen.', # Special:UploadStash 'uploadstash' => 'Tazarkatut n taktert', +'uploadstash-summary' => 'Asebter agi yetefk addaf i ifuyla yekteren (naÉ£ yesɛan taktert tanazzalt), maca mazal i beqqeḍen deg wiki. Ifuyla agi mazal id banen, ḥaca i useqdac i tni kteren.', 'uploadstash-clear' => 'Sfeḍ ifuyla deg tazarkatut', 'uploadstash-nofiles' => 'Ur tesɛiḍ ara ifuyla deg tazarkatut n taktert', +'uploadstash-badtoken' => 'Aselkem n tigawt agi yexseṛ, ahat acku tilÉ£a inek/inem n usulu gweḍent ar tasewti nsent. Ɛreḍ tikkelt nniḍen.', 'uploadstash-errclear' => 'Asfeḍ n ifuyla yefkad taruẓi', 'uploadstash-refresh' => 'Mucceḍ umuÉ£ n ifuyla', 'invalid-chunk-offset' => 'Tiggit n iÉ£il ur teÉ£bel ara', # img_auth script messages 'img-auth-accessdenied' => 'Addaf yugwi', +'img-auth-nopathinfo' => 'Yexus BATH_INFU. +Aqeddac inek/inem ur yeseÉ£wer ara iwakken ad i ɛeddi talÉ£ut agi. +Ahat i lḥu s CGI dÉ£a ur s-yezmer ara i img_auth. +Ẓeṛ https://www.mediawiki.org/wiki/Manual:Image_Authorization.', 'img-auth-notindir' => 'Abrid yesuteren mačči d akaram n taktert yellan deg tawila.', 'img-auth-badtitle' => 'Ulamek an ssali azwel i É£belen seg « $1 ».', 'img-auth-nologinnWL' => 'Ur teqqneḍ ara dÉ£a « $1 » ur yella ara deg umuÉ£ amellal.', @@ -1566,6 +1589,9 @@ Ma yella daÉ£en anezri, ilaq ad meslaye ḍ s [[Special:ListUsers/sysop|unedbal 'img-auth-isdir' => 'Tɛerdeḍ ad ldiḍ akaram « $1 ». Tzemreḍ kan ad ldiḍ ifuyla.', 'img-auth-streaming' => 'TaÉ£uri tamaÉ£lalt n « $1 ».', +'img-auth-public' => 'TasÉ£ent n img_auth.php tella i ubeqqeḍ n ifuyla n yiwen wiki uslig. +Wiki agi yesÉ£wer am wiki azayez. +I taÉ£ellist tameqqṛant, img_auth.php yensa.', 'img-auth-noread' => 'Aseqdac ur yesɛa ara azref deg taÉ£uri É£ef « $1 ».', 'img-auth-bad-query-string' => 'URL tesɛa azrar n tuttra ur i É£belen ara.', @@ -1593,6 +1619,8 @@ Tzemreḍ kan ad ldiḍ ifuyla.', 'upload_source_file' => ' (afaylu deg uselkim inek)', # Special:ListFiles +'listfiles-summary' => 'Asebter agi uslig i εemmed ad yefk umu n akkw ifuyla i kteren. +Ma aseqdac as yernu tastayt, ala ifuyla s lqem taneggarut id yekter aseqdac nni ad beqqeḍen.', 'listfiles_search_for' => 'Nadi É£ef yisem n tugna:', 'imgfile' => 'afaylu', 'listfiles' => 'UmuÉ£ n tugniwin', @@ -1644,7 +1672,7 @@ Ahat tebÉ£iḍ ad beddeleḍ aglam is É£ef [$2 asebter is n uglam].', 'uploadnewversion-linktext' => 'tazneḍ tasiwelt tamaynut n ufaylu-yagi', 'shared-repo-from' => 'seg : $1', 'shared-repo' => 'azadur azduklan', -'upload-disallowed-here' => 'Ur tzemreḍ ara ad semselsiḍ tugna agi.', +'upload-disallowed-here' => 'Ur tzemreḍ ara ad semselsiḍ afaylu agi.', # File reversion 'filerevert' => 'Erred $1', @@ -1700,6 +1728,7 @@ Ur tettuḍ ara ad selkeneḍ ma ur llan ara izdayen nniḍen É£er tilÉ£atin uqb # Random redirect 'randomredirect' => 'Asemmimeḍ menwala', +'randomredirect-nopages' => 'Ulac asebter n alsanamad deg tallunt n isemawen « $1 ».', # Statistics 'statistics' => 'Tisnaddanin', diff --git a/languages/messages/MessagesKo.php b/languages/messages/MessagesKo.php index 70a50812b2..5d4e370ce7 100644 --- a/languages/messages/MessagesKo.php +++ b/languages/messages/MessagesKo.php @@ -521,7 +521,7 @@ $messages = array( 'searcharticle' => '가기', 'history' => '문서 역사', 'history_short' => '역사', -'updatedmarker' => '마지막으로 읽은 뒤 바뀌었음', +'updatedmarker' => '마지막으로 방문한 뒤 바뀜', 'printableversion' => '인쇄용 문서', 'permalink' => '고유링크', 'print' => '인쇄', @@ -2075,7 +2075,7 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.', 'shared-repo' => '공용 저장소', 'shared-repo-name-wikimediacommons' => '위키미디어 공용', 'filepage.css' => '/* 이 CSS 설정은 파일 설명 문서에 포함되며, 또한 해외 클라이언트 위키에 포함됩니다 */', -'upload-disallowed-here' => '죄송하지만 이 그림을 덮어 쓸 수 없습니다.', +'upload-disallowed-here' => '이 파일을 덮어쓸 수 없습니다.', # File reversion 'filerevert' => '$1 되돌리기', diff --git a/languages/messages/MessagesLus.php b/languages/messages/MessagesLus.php index df75921dad..c431b99afc 100644 --- a/languages/messages/MessagesLus.php +++ b/languages/messages/MessagesLus.php @@ -156,7 +156,6 @@ $messages = array( 'qbbrowse' => 'Fangvêl rawh', 'qbedit' => 'SiamÅ£hatna', 'qbpageoptions' => 'He phêk hi', -'qbpageinfo' => 'Thukhawchang', 'qbmyoptions' => 'Ka phêkte', 'qbspecialpages' => 'Phêk vohbîkte', 'faq' => 'Zawhzin', @@ -1151,7 +1150,7 @@ Hmangtu azira i thliarhran erawh chuan a hmangtuina a hlankai hnuhnüng ber taks Ahnuaih hian {{PLURAL:$1|zawmtu hmasa ber|zawmtu hmasa $1-te}} kan rawn tlar chhuak e. Zawmtu zawng zawng [[Special:WhatLinksHere/$2|tlarchhuahna hetah hian a awm]] e.', 'nolinkstoimage' => 'He taksa zawmtu/hmanna phêk pakhat mah a awm lo.', -'morelinkstoimage' => 'Hemi taksa zawmpui dang [[Special:WhatLinksHere/$1|enna}}.', +'morelinkstoimage' => 'Hemi taksa zawmpui dang [[Special:WhatLinksHere/$1|enna]].', 'linkstoimage-redirect' => '$1 (taksa hruailuhna) $2', 'duplicatesoffile' => 'A hnuaia taksa{{PLURAL:$1||te}} khu hë taksa nihpui{{PLURAL:$1||te}} a{{PLURAL:$1||n}} ni ([[Special:FileDuplicateSearch/$2|chanchin kimchang]]):', 'sharedupload' => 'Hë taksa hi $1-a mi a ni a, hna-hmachhawp dangin a hmang vè mai thei.', diff --git a/languages/messages/MessagesMk.php b/languages/messages/MessagesMk.php index 232f5e3b61..84ad3e8bf9 100644 --- a/languages/messages/MessagesMk.php +++ b/languages/messages/MessagesMk.php @@ -565,7 +565,7 @@ $messages = array( 'lastmodifiedat' => 'Оваа страница последен пат е изменета на $1 во $2 ч.', 'viewcount' => 'Оваа страница била посетена {{PLURAL:$1|еднаш|$1 пати}}.', 'protectedpage' => 'Заштитена страница', -'jumpto' => 'Скокни на:', +'jumpto' => 'Прејди на:', 'jumptonavigation' => 'содржини', 'jumptosearch' => 'барај', 'view-pool-error' => 'За жал во моментов опслужувачите се преоптоварени. @@ -2072,7 +2072,7 @@ $1', 'shared-repo' => 'заедничко складиште', 'shared-repo-name-wikimediacommons' => 'Заедничката Ризница', 'filepage.css' => '/* Тука поставените каскадни стилски страници (CSS) се вклучени во страницата за опис на податотеката, како и на клиентските викија */', -'upload-disallowed-here' => 'Нажалост, не можете да ја замените сликава со нова.', +'upload-disallowed-here' => 'Нажалост, не можете да презапишете врз сликава.', # File reversion 'filerevert' => 'Врати $1', diff --git a/languages/messages/MessagesMl.php b/languages/messages/MessagesMl.php index 0e72fb4c49..4e9231da5c 100644 --- a/languages/messages/MessagesMl.php +++ b/languages/messages/MessagesMl.php @@ -1984,7 +1984,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization കാണുക.', 'shared-repo' => 'ഒരു പങ്കുവെക്കപ്പെട്ട സംഭരണി', 'shared-repo-name-wikimediacommons' => 'വിക്കിമീഡിയ കോമൺസ്', 'filepage.css' => '/* ഇവിടെ നൽകുന്ന സി.എസ്.എസ്. പ്രമാണ വിവരണ താളുകളിൽ ഉൾപ്പെടുത്തപ്പെടുന്നതായിരിക്കും, ബാഹ്യ ക്ലൈന്റ് വിക്കികളിലും അത് ലഭ്യമായിരിക്കും */', -'upload-disallowed-here' => 'നിർഭാഗ്യവശാൽ ഈ ചിത്രത്തിനു മുകളിൽ മറ്റൊരു ചിത്രം ചേർക്കാൻ താങ്കൾക്ക് കഴിയില്ല.', +'upload-disallowed-here' => 'ഈ പ്രമാണത്തിനു മുകളിൽ മറ്റൊരു പ്രമാണം ചേർക്കാൻ താങ്കൾക്ക് കഴിയില്ല.', # File reversion 'filerevert' => '$1 തിരസ്ക്കരിക്കുക', @@ -3087,6 +3087,7 @@ $1', # Info page 'pageinfo-title' => '"$1" എന്ന താളിന്റെ വിവരങ്ങൾ', +'pageinfo-not-current' => 'ഇപ്പോഴത്തെ നാൾപ്പതിപ്പിൽ മാത്രമേ വിവരങ്ങൾ പ്രദർശിപ്പിക്കപ്പെടാനിടയുള്ളു.', 'pageinfo-header-basic' => 'അടിസ്ഥാനവിവരങ്ങൾ', 'pageinfo-header-edits' => 'തിരുത്തൽചരിത്രം', 'pageinfo-header-restrictions' => 'സംരക്ഷണം', diff --git a/languages/messages/MessagesNn.php b/languages/messages/MessagesNn.php index c7c2f2e2b0..5953c780b1 100644 --- a/languages/messages/MessagesNn.php +++ b/languages/messages/MessagesNn.php @@ -1791,11 +1791,13 @@ $1', 'upload-too-many-redirects' => 'URL-en inneheldt for mange omdirigeringar', 'upload-unknown-size' => 'Ukjend storleik', 'upload-http-error' => 'Ein HTTP-feil oppstod: $1', +'upload-copy-upload-invalid-domain' => 'Kopiopplastingar er ikkje tilgjengelege frÃ¥ dette domenet.', # File backend 'backend-fail-stream' => 'Kunne ikkje strøyma fila «$1».', 'backend-fail-backup' => 'Kunne ikkje tryggingskopiera fila «$1».', 'backend-fail-notexists' => 'Fila $1 finst ikkje.', +'backend-fail-hashes' => 'Kunne ikkje henta filnummer for samanlikning.', 'backend-fail-notsame' => 'Ein ikkje-identisk fil finst alt pÃ¥ «$1».', 'backend-fail-invalidpath' => '$1 er ikkje ein gyldig lagringsstig.', 'backend-fail-delete' => 'Kunne ikkje sletta fila «$1».', @@ -1809,6 +1811,14 @@ $1', 'backend-fail-read' => 'Kunne ikkje lesa fila «$1».', 'backend-fail-create' => 'Kunne ikkje oppretta fila «$1».', 'backend-fail-maxsize' => 'Kunne ikkje skriva fila «$1» av di ho er større enn {{PLURAL:$2|éin byte|$2 byte}}.', +'backend-fail-readonly' => "Largingsbaksystemet «$1» er for tida skriveverna. Oppgjeven grunn er: «''$2''»", +'backend-fail-synced' => 'Fila «$1» er i ei inkonsistent stode i dei interne lagringsbaksystema', +'backend-fail-connect' => 'Kunne ikkje kopla til filbaksystemet «$1».', +'backend-fail-internal' => 'Ein ukjend feil oppstod i lagringsbaksystemet «$1».', + +# File journal errors +'filejournal-fail-dbconnect' => 'Kunne ikkje kopla til journaldatabasen for lagringsbaksystemet «$1».', +'filejournal-fail-dbquery' => 'Kunne ikkje oppdatera journaldatabasen for lagringsbaksystemet «$1».', # Lock manager 'lockmanager-notlocked' => 'Kunne ikkje lÃ¥sa opp «$1» av di han ikkje er lÃ¥st', @@ -2442,7 +2452,8 @@ Innhaldet i dei sletta versjonane er berre tilgjengeleg for administratorar.', 'undeletedrevisions' => '{{PLURAL:$1|Éin versjon|$1 versjonar}} attoppretta.', 'undeletedrevisions-files' => '{{PLURAL:$1|Éin versjon|$1 versjonar}} og {{PLURAL:$2|éi fil|$2 filer}} er attoppretta', 'undeletedfiles' => '{{PLURAL:$1|Éi fil|$1 filer}} er attoppretta', -'cannotundelete' => 'Feil ved attoppretting, andre kan allereie ha attoppretta sida.', +'cannotundelete' => 'Attopprettinga gjekk ikkje: +$1', 'undeletedpage' => "'''$1 er attoppretta''' SjÃ¥ [[Special:Log/delete|sletteloggen]] for eit oversyn over sider som nyleg er sletta eller attoppretta.", @@ -3535,6 +3546,30 @@ Dersom dette *ikkje* er deg, følg denne lenkja for avbryte stadfestinga av e-po $5 +Denne stadfestingskoden vert forelda $4.', +'confirmemail_body_changed' => 'Nokon, truleg deg, frÃ¥ IP-adressa $1, har endra e-postadressa til kontoen «$2» pÃ¥ {{SITENAME}} til denne e-postadressa. + +For Ã¥ stadfesta at denne kontoen faktisk høyrer til deg, og for Ã¥ slÃ¥ pÃ¥ +funksjonar knytte til e-post pÃ¥ {{SITENAME}}, opna denne lenkja i nettlesaren din: + +$3 + +Om brukarkontoen *ikkje* høyrer til deg, fylg denne lenkja for Ã¥ bryta av stadfestinga av e-postadressa: + +$5 + +Denne stadfestingskoden vert forelda $4.', +'confirmemail_body_set' => 'Nokon, truleg deg, frÃ¥ IP-adressa $1, har sett e-postadressa til kontoen «$2» pÃ¥ {{SITENAME}} til denne e-postadressa. + +For Ã¥ stadfesta at denne kontoen faktisk høyrer til deg, og for Ã¥ slÃ¥ pÃ¥ +funksjonar knytte til e-post pÃ¥ {{SITENAME}}, opna denne lenkja i nettlesaren din: + +$3 + +Om brukarkontoen *ikkje* høyrer til deg, fylg denne lenkja for Ã¥ bryta av stadfestinga av e-postadressa: + +$5 + Denne stadfestingskoden vert forelda $4.', 'confirmemail_invalidated' => 'Stadfestinga av e-postadresse er avbrote', 'invalidateemail' => 'Avbryt stadfestinga av e-postadressa', diff --git a/languages/messages/MessagesOr.php b/languages/messages/MessagesOr.php index 3b5988268f..73d6a4d4e7 100644 --- a/languages/messages/MessagesOr.php +++ b/languages/messages/MessagesOr.php @@ -3014,7 +3014,7 @@ MediaWiki ବ୍ୟବହାର କରି [[Special:Import|ପୃଷ୍ଠା 'pageinfo-article-id' => 'ପୃଷ୍ଠା ଆଇଡ଼ି', 'pageinfo-views' => 'ଦେଖଣା ସଂଖ୍ୟା', 'pageinfo-watchers' => 'ଦେଖଣାହାରି ସଂଖ୍ୟା', -'pageinfo-edits' => 'ସମ୍ପାଦନା ସଂଖ୍ୟା:', +'pageinfo-edits' => 'ସମ୍ପାଦନା ସଂଖ୍ୟା', 'pageinfo-authors' => 'ନିଆରା ଲେଖକଙ୍କ ସଂଖ୍ୟା', # Patrolling diff --git a/languages/messages/MessagesPms.php b/languages/messages/MessagesPms.php index 02a6979a05..eff5085017 100644 --- a/languages/messages/MessagesPms.php +++ b/languages/messages/MessagesPms.php @@ -3167,8 +3167,8 @@ J'àutri a saran stërmà coma stàndard. 'exif-exposureprogram-2' => 'Programa normal', 'exif-exposureprogram-3' => 'Priorità ëd temp', 'exif-exposureprogram-4' => 'Priorità ëd diaframa', -'exif-exposureprogram-5' => "Programa creativ (coregiù për avej pì ëd profondità 'd camp)", -'exif-exposureprogram-6' => "Programa d'assion (coregiù për avej ël temp pì curt che as peul)", +'exif-exposureprogram-5' => "Programa creativ (coregiù për avèj pì ëd profondità 'd camp)", +'exif-exposureprogram-6' => "Programa d'assion (coregiù për avèj ël temp pì curt che as peul)", 'exif-exposureprogram-7' => 'Programa ritrat (për fotografìe pijaite da davsin, con lë sfond fòra feu)', 'exif-exposureprogram-8' => 'Panorama (sogèt lontan e con lë sfond a feu)', diff --git a/languages/messages/MessagesPt_br.php b/languages/messages/MessagesPt_br.php index 5493d5ea60..8f7cf3667f 100644 --- a/languages/messages/MessagesPt_br.php +++ b/languages/messages/MessagesPt_br.php @@ -970,7 +970,7 @@ Você pode [[Special:Search/{{PAGENAME}}|pesquisar pelo título desta página]] ou [{{fullurl:{{FULLPAGENAME}}|action=edit}} criar esta página].', 'noarticletext-nopermission' => 'No momento, não há conteúdo nesta página Você pode [[Special:Search/{{PAGENAME}}|pesquisar pelo título desta página]] em outras páginas, -ou [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} buscar por registros relacionados] .', +ou [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} buscar por registros relacionados] . Note que, no entanto, você não tem permissão para criar esta página.', 'missing-revision' => 'A revisão #$1 da página denominada "{{PAGENAME}}" não existe. Isto é geralmente causado por seguir um link de histórico desatualizado para uma página que foi eliminada. diff --git a/languages/messages/MessagesRu.php b/languages/messages/MessagesRu.php index fb1e5a1b6c..ae6f418cff 100644 --- a/languages/messages/MessagesRu.php +++ b/languages/messages/MessagesRu.php @@ -62,6 +62,7 @@ * @author Sagan * @author Shirayuki * @author Sk + * @author Spider * @author TarzanASG * @author Temuri rajavi * @author Vago @@ -552,7 +553,7 @@ $messages = array( 'vector-action-protect' => 'Защитить', 'vector-action-undelete' => 'Восстановить', 'vector-action-unprotect' => 'Изменить защиту', -'vector-simplesearch-preference' => 'Включить расширенные поисковые подсказки (только для оформления «Векторное»)', +'vector-simplesearch-preference' => 'Включить упрощённую строку поиска (только для оформления «Векторное»)', 'vector-view-create' => 'Создание', 'vector-view-edit' => 'Правка', 'vector-view-history' => 'История', @@ -1180,6 +1181,15 @@ $2 'edit-already-exists' => 'Невозможно создать новую страницу. Она уже существует.', 'defaultmessagetext' => 'Текст по умолчанию', +'content-failed-to-parse' => 'Содержимое $2 не соответствует типу $1: $3.', +'invalid-content-data' => 'Недопустимые данные', +'content-not-allowed-here' => 'Содержимое "$1" недопустимо на странице [[$2]]', + +# Content models +'content-model-wikitext' => 'викитекст', +'content-model-text' => 'обычный текст', +'content-model-javascript' => 'JavaScript', +'content-model-css' => 'CSS', # Parser/template warnings 'expensive-parserfunction-warning' => 'Внимание. Эта страница содержит слишком много вызовов ресурсоёмких функций. @@ -2088,7 +2098,7 @@ $1', 'shared-repo-from' => 'из $1', 'shared-repo' => 'общего хранилища', 'shared-repo-name-wikimediacommons' => 'Викисклада', -'upload-disallowed-here' => 'К сожалению, вы не можете перезаписать это изображение.', +'upload-disallowed-here' => 'Вы не можете перезаписать этот файл.', # File reversion 'filerevert' => 'Возврат к старой версии $1', @@ -2632,7 +2642,8 @@ $UNWATCHURL 'undeletedrevisions' => '$1 {{PLURAL:$1|изменение|изменения|изменений}} восстановлено', 'undeletedrevisions-files' => '$1 {{PLURAL:$1|версия|версии|версий}} и $2 {{PLURAL:$2|файл|файла|файлов}} восстановлено', 'undeletedfiles' => '$1 {{PLURAL:$1|файл восстановлен|файла восстановлено|файлов восстановлено}}', -'cannotundelete' => 'Ошибка восстановления. Возможно, кто-то другой уже восстановил страницу.', +'cannotundelete' => 'Ошибка восстановления: +$1', 'undeletedpage' => "'''Страница «$1» была восстановлена.''' Для просмотра списка последних удалений и восстановлений см. [[Special:Log/delete|журнал удалений]].", @@ -2936,6 +2947,7 @@ $1', 'immobile-target-namespace-iw' => 'Ссылка интервики не может быть использована для переименования.', 'immobile-source-page' => 'Эту страницу нельзя переименовать.', 'immobile-target-page' => 'Нельзя присвоить странице это имя.', +'bad-target-model' => 'Невозможно преобразовать $1 в $2: несовместимые модели данных.', 'imagenocrossnamespace' => 'Невозможно дать файлу имя из другого пространства имён', 'nonfile-cannot-move-to-file' => 'Невозможно переименовывать страницы в файлы', 'imagetypemismatch' => 'Новое расширение файла не соответствует его типу', @@ -3200,6 +3212,7 @@ The wiki server can't provide data in a format your client can read.", # Info page 'pageinfo-title' => 'Сведения по «$1»', +'pageinfo-not-current' => 'Данные предоставляются только для текущей правки.', 'pageinfo-header-basic' => 'Основные сведения', 'pageinfo-header-edits' => 'История изменений', 'pageinfo-header-restrictions' => 'Защита страницы', @@ -3228,6 +3241,7 @@ The wiki server can't provide data in a format your client can read.", 'pageinfo-magic-words' => '{{PLURAL:$1|Магическое слово|Магические слова}} ($1)', 'pageinfo-hidden-categories' => '{{PLURAL:$1|Скрытая категория|Скрытых категорий}} ($1)', 'pageinfo-templates' => '{{PLURAL:$1|Шаблон|Шаблонов}} ($1)', +'pageinfo-toolboxlink' => 'Сведения о странице', # Skin names 'skinname-standard' => 'Классическое', @@ -3822,6 +3836,7 @@ $5 # Scary transclusion 'scarytranscludedisabled' => '[Интервики-включение отключено]', 'scarytranscludefailed' => '[Ошибка обращения к шаблону $1]', +'scarytranscludefailed-httpstatus' => '[Не удалось загрузить шаблон для $1: HTTP $2]', 'scarytranscludetoolong' => '[Слишком длинный URL]', # Delete conflict diff --git a/languages/messages/MessagesSat.php b/languages/messages/MessagesSat.php index dd50025abc..5c89ca8007 100644 --- a/languages/messages/MessagesSat.php +++ b/languages/messages/MessagesSat.php @@ -163,7 +163,6 @@ $messages = array( 'qbbrowse' => 'Sendra', 'qbedit' => 'Tońge', 'qbpageoptions' => 'Noa sakam', -'qbpageinfo' => 'Sakam reaḱ thuti', 'qbmyoptions' => 'In̕anḱ sakamko', 'qbspecialpages' => 'Asokay teaḱ sakamko', 'faq' => 'Baḍae kupuliko', @@ -650,7 +649,7 @@ Onate noa ạrgumená¹­kodo bạgi giḍi hoena.", 'last' => 'Laha renaḱ', 'page_first' => 'Pahilaḱ', 'page_last' => 'Mucạt́aḱ', -'histlegend' => "Farak bachao: oka nãwã aroeko tulạoem menet́kan, onako cinhạ em kate boloḱ se latar baá¹­on linmẽ.
+'histlegend' => "Farak bachao: oka nãwã aroeko tulạoem menet́kan, onako cinhạ em kate boloḱ se latar baṭon linmẽ.
Unuduḱ: '''({{int:cur}})''' = nahaḱ nãwã aroeko saõte tulạo, '''({{int:last}})''' = laha reaḱ nãwã aroe sãote tulạo, '''{{int:minoreditletter}}''' = huḍiń sompadon.", 'history-fieldset-title' => 'Sendray jaṛ', 'history-show-deleted' => 'khạli get giḍiyaḱ koge', diff --git a/languages/messages/MessagesSl.php b/languages/messages/MessagesSl.php index 85b9a5724b..909beacb37 100644 --- a/languages/messages/MessagesSl.php +++ b/languages/messages/MessagesSl.php @@ -1903,7 +1903,7 @@ Morda želite urediti njeno opisno stran na tamkajšnji [$2 opisni strani datote 'shared-repo-from' => 'iz $1', 'shared-repo' => 'skupno skladišče', 'shared-repo-name-wikimediacommons' => 'Wikimedijina Zbirka', -'upload-disallowed-here' => 'Slike žal ne morete prepisati.', +'upload-disallowed-here' => 'Datoteke žal ne morete prepisati.', # File reversion 'filerevert' => 'Vrni $1', diff --git a/languages/messages/MessagesVot.php b/languages/messages/MessagesVot.php index e607908e10..89fda5b2df 100644 --- a/languages/messages/MessagesVot.php +++ b/languages/messages/MessagesVot.php @@ -423,7 +423,7 @@ Proovvi lizät etsün alkuu ''all:'', nii ettsü etsib kõikkõõ sisältoo (taa # Groups 'group-user' => 'Сäüttijäd', 'group-sysop' => 'Praviťeľad', -'group-all' => '{kõik)', +'group-all' => '(kõik)', 'group-user-member' => 'cäüttijä', diff --git a/languages/messages/MessagesWar.php b/languages/messages/MessagesWar.php index a4bf0520ab..9395cbd9d1 100644 --- a/languages/messages/MessagesWar.php +++ b/languages/messages/MessagesWar.php @@ -527,6 +527,7 @@ Alayon pagutro pagbutang.', 'newpassword' => 'Bag-o nga tigaman-pagsulod:', 'retypenew' => 'Utroha pagbutang an bag-o nga tigaman-pagsulod:', 'resetpass_forbidden' => 'Diri mababalyoan an mga tigaman-pagsulod', +'resetpass-no-info' => 'Kinahanglan mo paglog-in para direkta ka makasakob dinhi nga pakli.', 'resetpass-submit-loggedin' => 'Igbal-iw an tigaman-pagsulod', 'resetpass-submit-cancel' => 'Pasagdi', 'resetpass-temp-password' => 'Temporaryo nga tigaman-pagsakob:', @@ -534,6 +535,7 @@ Alayon pagutro pagbutang.', # Special:PasswordReset 'passwordreset-username' => 'Agnay hiton gumaramit:', 'passwordreset-domain' => 'Dominyo:', +'passwordreset-capture' => 'Kikitaon mo an resulta nga e-mail?', 'passwordreset-email' => 'E-mail adres:', 'passwordreset-emailtitle' => 'Mga detalye han akawnt ha {{SITENAME}}', 'passwordreset-emailelement' => 'Agnay han gumaramit: $1 @@ -608,6 +610,7 @@ o [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 'note' => "'''Pahibaro:'''", 'previewnote' => "'''Hinumdumi nga pahiuna-nga-paggawas pa la ini.''' ¡Waray pa katipig an imo mga ginbag-o!", +'continue-editing' => 'Padayon pagliwat', 'editing' => 'Ginliliwat an $1', 'creating' => 'Ginhihimo an $1', 'editingsection' => 'Ginliliwat an $1 (bahin)', @@ -825,6 +828,7 @@ Ginpapasabot nga an sulod han mga panudlok han {{SITENAME}} in bangin daan an.', 'timezoneregion-pacific' => 'Kalawdan Pasipiko', 'prefs-searchoptions' => 'Pamilnga', 'prefs-namespaces' => "Ngaran-lat'ang", +'default' => 'aada-nga-daan', 'prefs-files' => 'Mga paypay', 'youremail' => 'E-mail:', 'username' => 'Agnay hiton gumaramit:', @@ -864,6 +868,8 @@ An imo e-mail address in diri makikit-an kun an iba nga mga gumaramit in makonta 'userrights-user-editname' => 'Igbutang an agnay han gumaramit:', 'editusergroup' => 'Igliwat han mga hugpo han gumaramit', 'editinguser' => "Igliliwat an mga katungod han gumaramit han gumaramit '''[[Gumaramit:$1|$1]]''' $2", +'userrights-editusergroup' => 'Igliwat an mga hugpo hin gumaramit', +'saveusergroups' => 'Igtipig an mga hugpo han gumaramit', 'userrights-groupsmember' => 'Api han:', 'userrights-reason' => 'Katadungan:', 'userrights-no-interwiki' => ' @@ -926,6 +932,9 @@ Diri ka gintutugotan pagliwat han mga katungod han gumaramit ha iba nga mga wiki 'action-createpage' => 'pahimo hin mga pakli', 'action-minoredit' => 'butanga hin tigaman hinin nga pagliwat komo gutiay', 'action-move' => 'balhina ini nga pakli', +'action-movefile' => 'igbalhin ini nga paypay', +'action-upload' => 'igkarga-pasaka ini nga paypay', +'action-reupload' => 'igsapaw ini nga aanhi nga paypay', 'action-delete' => 'paraa ini nga pakli', 'action-deleterevision' => 'igpara ini nga pagbag-o', @@ -974,6 +983,7 @@ Mga pakli ha [[Special:Watchlist|imo angay timan-an]] in naka-'''bold'''.", # Upload 'upload' => 'Pagkarga hin file', 'uploadbtn' => 'Igkarga an file', +'uploadnologin' => 'Diri nakalog-in', 'upload-recreate-warning' => "'''Pahimatngon: An fayl nga may-ada hiton nga ngaran in ginpara o ginbalhin.''' An taramdan han pagpara ngan pagbalhin para hini nga pakli in ginhahatag para han imo kamurayaw:", diff --git a/tests/phpunit/includes/RevisionStorageTest.php b/tests/phpunit/includes/RevisionStorageTest.php index e06de7c52b..8d2a7bde44 100644 --- a/tests/phpunit/includes/RevisionStorageTest.php +++ b/tests/phpunit/includes/RevisionStorageTest.php @@ -83,8 +83,20 @@ class RevisionStorageTest extends MediaWikiTestCase { } protected function createPage( $page, $text, $model = null ) { - if ( is_string( $page ) ) $page = Title::newFromText( $page ); - if ( $page instanceof Title ) $page = new WikiPage( $page ); + if ( is_string( $page ) ) { + if ( !preg_match( '/:/', $page ) && + ( $model === null || $model === CONTENT_MODEL_WIKITEXT ) ) { + + $ns = $this->getDefaultWikitextNS(); + $page = MWNamespace::getCanonicalName( $ns ) . ':' . $page; + } + + $page = Title::newFromText( $page ); + } + + if ( $page instanceof Title ) { + $page = new WikiPage( $page ); + } if ( $page->exists() ) { $page->doDeleteArticle( "done" ); @@ -223,8 +235,6 @@ class RevisionStorageTest extends MediaWikiTestCase { 'missing rev_content_model in list of fields'); $this->assertTrue( in_array( 'rev_content_format', $fields ), 'missing rev_content_format in list of fields'); - } else { - $this->markTestSkipped( '$wgContentHandlerUseDB is disabled' ); } } @@ -440,11 +450,14 @@ class RevisionStorageTest extends MediaWikiTestCase { $userB = \User::createNew( $userB->getName() ); } + $ns = $this->getDefaultWikitextNS(); + $dbw = wfGetDB( DB_MASTER ); $revisions = array(); // create revisions ----------------------------- - $page = WikiPage::factory( Title::newFromText( 'RevisionStorageTest_testUserWasLastToEdit' ) ); + $page = WikiPage::factory( Title::newFromText( + 'RevisionStorageTest_testUserWasLastToEdit', $ns ) ); # zero $revisions[0] = new Revision( array( diff --git a/tests/phpunit/includes/RevisionStorageTest_ContentHandlerUseDB.php b/tests/phpunit/includes/RevisionStorageTest_ContentHandlerUseDB.php index 3dfaa8de3f..c372c3eab4 100644 --- a/tests/phpunit/includes/RevisionStorageTest_ContentHandlerUseDB.php +++ b/tests/phpunit/includes/RevisionStorageTest_ContentHandlerUseDB.php @@ -43,8 +43,7 @@ class RevisionTest_ContentHandlerUseDB extends RevisionStorageTest { /** * @covers Revision::selectFields */ - public function testSelectFields() - { + public function testSelectFields() { $fields = Revision::selectFields(); $this->assertTrue( in_array( 'rev_id', $fields ), 'missing rev_id in list of fields'); @@ -59,26 +58,38 @@ class RevisionTest_ContentHandlerUseDB extends RevisionStorageTest { /** * @covers Revision::getContentModel */ - public function testGetContentModel() - { - $orig = $this->makeRevision( array( 'text' => 'hello hello.', 'content_model' => CONTENT_MODEL_JAVASCRIPT ) ); - $rev = Revision::newFromId( $orig->getId() ); - - //NOTE: database fields for the content_model are disabled, so the model name is not retained. - // We expect to get the default here instead of what was suppleid when creating the revision. - $this->assertEquals( CONTENT_MODEL_WIKITEXT, $rev->getContentModel() ); + public function testGetContentModel() { + try { + $this->makeRevision( array( 'text' => 'hello hello.', + 'content_model' => CONTENT_MODEL_JAVASCRIPT ) ); + + $this->fail( "Creating JavaScript content on a wikitext page should fail with " + . "\$wgContentHandlerUseDB disabled" ); + } catch ( MWException $ex ) { + $this->assertTrue( true ); // ok + } } /** * @covers Revision::getContentFormat */ - public function testGetContentFormat() - { - $orig = $this->makeRevision( array( 'text' => 'hello hello.', 'content_model' => CONTENT_MODEL_JAVASCRIPT, 'content_format' => 'text/javascript' ) ); - $rev = Revision::newFromId( $orig->getId() ); - - $this->assertEquals( CONTENT_FORMAT_WIKITEXT, $rev->getContentFormat() ); + public function testGetContentFormat() { + try { + //@todo: change this to test failure on using a non-standard (but supported) format + // for a content model supported in the given location. As of 1.21, there are + // no alternative formats for any of the standard content models that could be + // used for this though. + + $this->makeRevision( array( 'text' => 'hello hello.', + 'content_model' => CONTENT_MODEL_JAVASCRIPT, + 'content_format' => 'text/javascript' ) ); + + $this->fail( "Creating JavaScript content on a wikitext page should fail with " + . "\$wgContentHandlerUseDB disabled" ); + } catch ( MWException $ex ) { + $this->assertTrue( true ); // ok + } } }