<ruleset name="MediaWiki">
<rule ref="./vendor/mediawiki/mediawiki-codesniffer/MediaWiki">
<exclude name="Generic.ControlStructures.InlineControlStructure" />
- <exclude name="MediaWiki.Commenting.FunctionAnnotations.UnrecognizedAnnotation" />
<exclude name="MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected" />
<exclude name="MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic" />
<exclude name="MediaWiki.Commenting.FunctionComment.MissingParamTag" />
<exclude name="MediaWiki.Commenting.FunctionComment.MissingReturn" />
<exclude name="MediaWiki.Commenting.FunctionComment.ExtraParamComment" />
<exclude name="MediaWiki.Commenting.FunctionComment.WrongStyle" />
- <exclude name="MediaWiki.Commenting.PhpunitAnnotations.NotClassTrait" />
<exclude name="MediaWiki.Commenting.IllegalSingleLineComment.IllegalSingleLineCommentStart" />
<exclude name="MediaWiki.Commenting.IllegalSingleLineComment.IllegalSingleLineCommentEnd" />
<exclude name="MediaWiki.ControlStructures.AssignmentInControlStructures.AssignmentInControlStructures" />
(e.g. MediaWiki:Common.js), CSS or JSON was separated from 'editinterface'
and is available under 'editsitejs'/'editsitecss'/'editsitejson'. Having
'editinterface' is still necessary to edit such pages.
+* $wgMultiContentRevisionSchemaMigrationStage now defaults to writing both the
+ old and the new schema, but reading the new schema, so Multi-Content Revisions
+ (MCR) are now functional per default. The new default value of the setting is
+ SCHEMA_COMPAT_WRITE_BOTH | SCHEMA_COMPAT_READ_NEW.
==== Removed configuration ====
* $wgEnableAPI and $wgEnableWriteAPI – These settings, deprecated in 1.31,
* ChangesListSpecialPage->getCustomFilters()
* ChangesListSpecialPage->getFilterGroupDefinitionFromLegacyCustomFilters()
* ChangesListSpecialPage::customFilters
+* The global function wfUseMW, deprecated since 1.26, has now been removed. Use
+ the "requires" property of static extension registration instead.
=== Deprecations in 1.32 ===
* HTMLForm::setSubmitProgressive() is deprecated. No need to call it. Submit
'help', 'help-message', 'help-messages' instead.
* (T197179) HTMLFormField::getNotices() is now deprecated.
* The jquery.localize module is now deprecated. Use jquery.i18n instead.
+* The SecondaryDataUpdates hook was deprecated in favor of RevisionDataUpdates,
+ or overriding ContentHandler::getSecondaryDataUpdates (T194038).
+* The WikiPageDeletionUpdates hook was deprecated in favor of
+ PageDeletionDataUpdates, or overriding ContentHandler::getDeletionDataUpdates
+ (T194038).
+* Content::getSecondaryDataUpdates has been deprecated in favor of
+ ContentHandler::getSecondaryDataUpdates() for overriding by extensions
+ (T194038).
+ Application logic should call WikiPage::doSecondaryDataUpdates() (T194037).
+* Content::getDeletionUpdates has been deprecated in favor of
+ ContentHandler::getDeletionUpdates() for overriding by extensions (T194038).
+ Application logic should call WikiPage::doSecondaryDataUpdates() (T194037).
=== Other changes in 1.32 ===
* (T198811) The following tables have had their UNIQUE indexes turned into
`'help-inline' => false`.
* The archive table's ar_rev_id field is now unique.
* Special:BotPasswords now requires reauthentication.
+* (T174023) Multi-Content Revision (MCR) capabilities were introduced into the
+ storage layer and have basic support for display. No user interface exists
+ yet for creating or managing content in slots beides the main slot. See
+ <https://www.mediawiki.org/wiki/Multi-Content_Revisions> for more
+ information.
* …
== Compatibility ==
'MediaWiki\\ProcOpenError' => __DIR__ . '/includes/exception/ProcOpenError.php',
'MediaWiki\\Revision\\RenderedRevision' => __DIR__ . '/includes/Revision/RenderedRevision.php',
'MediaWiki\\Revision\\RevisionRenderer' => __DIR__ . '/includes/Revision/RevisionRenderer.php',
+ 'MediaWiki\\Revision\\SlotRenderingProvider' => __DIR__ . '/includes/Revision/SlotRenderingProvider.php',
'MediaWiki\\Search\\ParserOutputSearchDataExtractor' => __DIR__ . '/includes/search/ParserOutputSearchDataExtractor.php',
'MediaWiki\\ShellDisabledError' => __DIR__ . '/includes/exception/ShellDisabledError.php',
'MediaWiki\\Site\\MediaWikiPageNameNormalizer' => __DIR__ . '/includes/site/MediaWikiPageNameNormalizer.php',
"jakub-onderka/php-parallel-lint": "0.9.2",
"jetbrains/phpstorm-stubs": "dev-master#38ff1a581b297f7901e961b8c923862ea80c3b96",
"justinrainbow/json-schema": "~5.2",
- "mediawiki/mediawiki-codesniffer": "21.0.0",
+ "mediawiki/mediawiki-codesniffer": "22.0.0",
"monolog/monolog": "~1.22.1",
"nikic/php-parser": "3.1.3",
"seld/jsonlint": "1.7.1",
+++ /dev/null
-design.txt
-
-This is a brief overview of the new design.
-
-More thorough and up-to-date information is available on the documentation
-wiki at https://www.mediawiki.org/
-
-Primary classes:
-
- User
- Encapsulates the state of the user viewing/using the site. Can be queried
- for things like the user's settings, name, etc. Handles the details of
- getting and saving to the "user" table of the database, and dealing with
- sessions and cookies.
-
- OutputPage
- Encapsulates the entire HTML page that will be sent in response to any
- server request. It is used by calling its functions to add text, headers,
- etc., in any order, and then calling output() to send it all. It could be
- easily changed to send incrementally if that becomes useful, but I prefer
- the flexibility. This should also do the output encoding. The system
- allocates a global one in $wgOut.
-
- Title
- Represents the title of an article, and does all the work of translating
- among various forms such as plain text, URL, database key, etc. For
- convenience, and for historical reasons, it also represents a few features
- of articles that don't involve their text, such as access rights.
- See also title.txt.
-
- Article
- Encapsulates access to the "page" table of the database. The object
- represents a an article, and maintains state such as text (in Wikitext
- format), flags, etc.
-
- Revision
- Encapsulates individual page revision data and access to the
- revision/text/blobs storage system. Higher-level code should never touch
- text storage directly; this class mediates it.
-
- Skin
- Encapsulates a "look and feel" for the wiki. All of the functions that
- render HTML, and make choices about how to render it, are here, and are
- called from various other places when needed (most notably,
- OutputPage::addWikiText()). The StandardSkin object is a complete
- implementation, and is meant to be subclassed with other skins that may
- override some of its functions. The User object contains a reference to a
- skin (according to that user's preference), and so rather than having a
- global skin object we just rely on the global User and get the skin with
- $wgUser->getSkin().
- See also skin.txt.
-
- Language
- Represents the language used for incidental text, and also has some
- character encoding functions and other locale stuff. The current user
- interface language is instantiated as $wgLang, and the local content
- language as $wgContLang; be sure to use the *correct* language object
- depending upon the circumstances.
- See also language.txt.
-
- Parser
- Class used to transform wikitext to html.
-
- LinkCache
- Keeps information on existence of articles. See linkcache.txt.
-
-Naming/coding conventions:
-
- These are meant to be descriptive, not dictatorial; I won't presume to tell
- you how to program, I'm just describing the methods I chose to use for myself.
- If you do choose to follow these guidelines, it will probably be easier for
- you to collaborate with others on the project, but if you want to contribute
- without bothering, by all means do so (and don't be surprised if I reformat
- your code).
-
- - I have the code indented with tabs to save file size and so that users can
- set their tab stops to any depth they like. I use 4-space tab stops, which
- work well. I also use K&R brace matching style. I know that's a religious
- issue for some, so if you want to use a style that puts opening braces on
- the next line, that's OK too, but please don't use a style where closing
- braces don't align with either the opening brace on its own line or the
- statement that opened the block--that's confusing as hell.
-
- - Certain functions and class members are marked with /* private */, rather
- than being marked as such. This is a hold-over from PHP 4, which didn't
- support proper visibilities. You should not access things marked in this
- manner outside the class/inheritance line as this code is subjected to be
- updated in a manner that enforces this at some time in the near future, and
- things will break. New code should use the standard method of setting
- visibilities as normal.
-
- - Globals are particularly evil in PHP; it sets a lot of them automatically
- from cookies, query strings, and such, leading to namespace conflicts; when
- a variable name is used in a function, it is silently declared as a new
- local masking the global, so you'll get weird error because you forgot the
- global declaration; lack of static class member variables means you have to
- use globals for them, etc. Evil, evil.
-
- I think I've managed to pare down the number of globals we use to a scant
- few dozen or so, and I've prefixed them all with "wg" so you can spot errors
- better (odds are, if you see a "wg" variable being used in a function that
- doesn't declare it global, that's probably an error).
-
- Other conventions: Top-level functions are wfFuncname(), names of session
- variables are wsName, cookies wcName, and form field values wpName ("p" for
- "POST").
(Used to be called $baseRevId.)
$undidRevId: the rev ID (or 0) this edit undid
+'PageDeletionDataUpdates': Called when constructing a list of DeferrableUpdate to be
+executed when a page is deleted.
+$title The Title of the page being deleted.
+$revision A RevisionRecord representing the page's current revision at the time of deletion.
+&$updates A list of DeferrableUpdate that can be manipulated by the hook handler.
+
'PageHistoryBeforeList': When a history page list is about to be constructed.
&$article: the article that the history is loading for
$context: RequestContext object
added to any module.
&$ResourceLoader: object
+'RevisionDataUpdates': Called when constructing a list of DeferrableUpdate to be
+executed to record secondary data about a revision.
+$title The Title of the page the revision belongs to
+$renderedRevision a RenderedRevision object representing the new revision and providing access
+ to the RevisionRecord as well as ParserOutput of that revision.
+&$updates A list of DeferrableUpdate that can be manipulated by the hook handler.
+
'RevisionRecordInserted': Called after a revision is inserted into the database.
$revisionRecord: the RevisionRecord that has just been inserted.
Note that lists should be in the format name => object and the names in both
lists should be distinct.
-'SecondaryDataUpdates': Allows modification of the list of DataUpdates to
-perform when page content is modified. Currently called by
-AbstractContent::getSecondaryDataUpdates.
+'SecondaryDataUpdates': DEPRECATED! Use RevisionDataUpdates or override
+ContentHandler::getSecondaryDataUpdates instead.
+Allows modification of the list of DataUpdates to perform when page content is modified.
$title: Title of the page that is being edited.
$oldContent: Content object representing the page's content before the edit.
$recursive: bool indicating whether DataUpdates should trigger recursive
&$opts: Options to use for the query
&$join: Join conditions
-'WikiPageDeletionUpdates': manipulate the list of DeferrableUpdates to be
-applied when a page is deleted. Called in WikiPage::getDeletionUpdates(). Note
-that updates specific to a content model should be provided by the respective
-Content's getDeletionUpdates() method.
+'WikiPageDeletionUpdates': DEPRECATED! Use PageDeletionDataUpdates or
+override ContentHandler::getDeletionDataUpdates instead.
+Manipulates the list of DeferrableUpdates to be applied when a page is deleted.
$page: the WikiPage
$content: the Content to generate updates for, or null in case the page revision
could not be loaded. The delete will succeed despite this.
'MediaWiki\\Auth\\' => __DIR__ . '/auth/',
'MediaWiki\\Edit\\' => __DIR__ . '/edit/',
'MediaWiki\\EditPage\\' => __DIR__ . '/editpage/',
- 'MediaWiki\\Linker\\' => __DIR__ .'/linker/',
- 'MediaWiki\\Preferences\\' => __DIR__ .'/preferences/',
- 'MediaWiki\\Services\\' => __DIR__ .'/services/',
- 'MediaWiki\\Session\\' => __DIR__ .'/session/',
- 'MediaWiki\\Shell\\' => __DIR__ .'/shell/',
- 'MediaWiki\\Sparql\\' => __DIR__ .'/sparql/',
- 'MediaWiki\\Storage\\' => __DIR__ .'/Storage/',
- 'MediaWiki\\Tidy\\' => __DIR__ .'/tidy/',
+ 'MediaWiki\\Linker\\' => __DIR__ . '/linker/',
+ 'MediaWiki\\Preferences\\' => __DIR__ . '/preferences/',
+ 'MediaWiki\\Services\\' => __DIR__ . '/services/',
+ 'MediaWiki\\Session\\' => __DIR__ . '/session/',
+ 'MediaWiki\\Shell\\' => __DIR__ . '/shell/',
+ 'MediaWiki\\Sparql\\' => __DIR__ . '/sparql/',
+ 'MediaWiki\\Storage\\' => __DIR__ . '/Storage/',
+ 'MediaWiki\\Tidy\\' => __DIR__ . '/tidy/',
];
}
}
// is if an extension hook aborted from inside ArticleSave.
// Render the status object into $this->hookError
// FIXME this sucks, we should just use the Status object throughout
- $this->hookError = '<div class="error">' ."\n" . $status->getWikiText() .
+ $this->hookError = '<div class="error">' . "\n" . $status->getWikiText() .
'</div>';
return true;
}
}
}
-/**
- * This function works like "use VERSION" in Perl except it checks the version
- * of MediaWiki, the program will die with a backtrace if the current version
- * of MediaWiki is less than the version provided.
- *
- * This is useful for extensions which due to their nature are not kept in sync
- * with releases
- *
- * Note: Due to the behavior of PHP's version_compare() which is used in this
- * function, if you want to allow the 'wmf' development versions add a 'c' (or
- * any single letter other than 'a', 'b' or 'p') as a post-fix to your
- * targeted version number. For example if you wanted to allow any variation
- * of 1.22 use `wfUseMW( '1.22c' )`. Using an 'a' or 'b' instead of 'c' will
- * not result in the same comparison due to the internal logic of
- * version_compare().
- *
- * @see perldoc -f use
- *
- * @deprecated since 1.26, use the "requires" property of extension.json
- * @param string|int|float $req_ver The version to check, can be a string, an integer, or a float
- * @throws MWException
- */
-function wfUseMW( $req_ver ) {
- global $wgVersion;
-
- wfDeprecated( __FUNCTION__, '1.26' );
-
- if ( version_compare( $wgVersion, (string)$req_ver, '<' ) ) {
- throw new MWException( "MediaWiki $req_ver required--this is only $wgVersion" );
- }
-}
-
/**
* Return the final portion of a pathname.
* Reimplemented because PHP5's "basename()" is buggy with multibyte text.
*
* @since 1.32
*/
-class RenderedRevision {
+class RenderedRevision implements SlotRenderingProvider {
/**
* @var Title
--- /dev/null
+<?php
+/**
+ * Created by PhpStorm.
+ * User: daki
+ * Date: 05.09.18
+ * Time: 16:08
+ */
+namespace MediaWiki\Revision;
+
+use MediaWiki\Storage\SuppressedDataException;
+use ParserOutput;
+
+/**
+ * A lazy provider of ParserOutput objects for a revision's individual slots.
+ *
+ * @since 1.32
+ */
+interface SlotRenderingProvider {
+
+ /**
+ * @param string $role
+ * @param array $hints Hints given as an associative array. Known keys:
+ * - 'generate-html' => bool: Whether the caller is interested in output HTML (as opposed
+ * to just meta-data). Default is to generate HTML.
+ *
+ * @throws SuppressedDataException if the content is not accessible for the audience
+ * specified in the constructor.
+ * @return ParserOutput
+ */
+ public function getSlotParserOutput( $role, array $hints = [] );
+
+}
use Content;
use ContentHandler;
use DataUpdate;
+use DeferrableUpdate;
use DeferredUpdates;
use Hooks;
use IDBAccessObject;
use InvalidArgumentException;
use JobQueueGroup;
use Language;
+use LinksDeletionUpdate;
use LinksUpdate;
use LogicException;
use MediaWiki\Edit\PreparedEdit;
*
* Contains the following fields:
* - oldRevision (RevisionRecord|null): the revision that was current before the change
- * associated with this update. Might not be set, use getOldRevision() instead of direct
- * access.
+ * associated with this update. Might not be set, use getParentRevision().
* - oldId (int|null): the id of the above revision. 0 if there is no such revision (the change
* was about creating a new page); null if not known (that should not happen).
* - oldIsRedirect (bool|null): whether the page was a redirect before the change. Lazy-loaded,
*/
private $slotsUpdate = null;
+ /**
+ * @var RevisionRecord|null
+ */
+ private $parentRevision = null;
+
/**
* @var RevisionRecord|null
*/
}
/**
- * Returns the revision that was current before the edit. This would be null if the edit
- * created the page, or the revision's parent for a regular edit, or the revision itself
- * for a null-edit.
- * Only defined after calling grabCurrentRevision() or prepareContent() or prepareUpdate()!
+ * Returns the parent revision of the new revision wrapped by this update.
+ * If the update is a null-edit, this will return the parent of the current (and new) revision.
+ * This will return null if the revision wrapped by this update created the page.
+ * Only defined after calling prepareContent() or prepareUpdate()!
*
- * @return RevisionRecord|null the revision that was current before the edit, or null if
- * the edit created the page.
+ * @return RevisionRecord|null the parent revision of the new revision, or null if
+ * the update created the page.
*/
- private function getOldRevision() {
- $this->assertHasPageState( __METHOD__ );
+ private function getParentRevision() {
+ $this->assertPrepared( __METHOD__ );
- // If 'oldRevision' is not set, load it!
- // Useful if $this->oldPageState is initialized by prepareUpdate.
- if ( !array_key_exists( 'oldRevision', $this->pageState ) ) {
- /** @var int $oldId */
- $oldId = $this->pageState['oldId'];
- $flags = $this->useMaster() ? RevisionStore::READ_LATEST : 0;
- $this->pageState['oldRevision'] = $oldId
- ? $this->revisionStore->getRevisionById( $oldId, $flags )
- : null;
+ if ( $this->parentRevision ) {
+ return $this->parentRevision;
}
- return $this->pageState['oldRevision'];
+ if ( !$this->pageState['oldId'] ) {
+ // If there was no current revision, there is no parent revision,
+ // since the page didn't exist.
+ return null;
+ }
+
+ $oldId = $this->revision->getParentId();
+ $flags = $this->useMaster() ? RevisionStore::READ_LATEST : 0;
+ $this->parentRevision = $oldId
+ ? $this->revisionStore->getRevisionById( $oldId, $flags )
+ : null;
+
+ return $this->parentRevision;
}
/**
* @note After prepareUpdate() was called, grabCurrentRevision() will throw an exception
* to avoid confusion, since the page's current revision is then the new revision after
* the edit, which was presumably passed to prepareUpdate() as the $revision parameter.
- * Use getOldRevision() instead to access the revision that used to be current before the
- * edit.
+ * Use getParentRevision() instead to access the revision that is the parent of the
+ * new revision.
*
* @return RevisionRecord|null the page's current revision, or null if the page does not
* yet exist.
// prepareUpdate() is redundant for null-edits
$this->doTransition( 'has-revision' );
+ } else {
+ $this->parentRevision = $parentRevision;
}
}
$this->assertPrepared( __METHOD__ );
if ( !$this->slotsUpdate ) {
- $old = $this->getOldRevision();
+ $old = $this->getParentRevision();
$this->slotsUpdate = RevisionSlotsUpdate::newFromRevisionSlots(
$this->revision->getSlots(),
$old ? $old->getSlots() : null
} else {
throw new LogicException(
'Trying to re-use DerivedPageDataUpdater with revision '
- .$revision->getId()
+ . $revision->getId()
. ', but it\'s already bound to revision '
. $this->revision->getId()
);
if ( !$this->user->equals( $user ) ) {
throw new LogicException(
'The Revision provided has a mismatching actor: expected '
- .$this->user->getName()
+ . $this->user->getName()
. ', got '
. $user->getName()
);
/**
* @param bool $recursive
*
- * @return DataUpdate[]
+ * @return DeferrableUpdate[]
*/
public function getSecondaryDataUpdates( $recursive = false ) {
- // TODO: MCR: getSecondaryDataUpdates() needs a complete overhaul to avoid DataUpdates
- // from different slots overwriting each other in the database. Plan:
- // * replace direct calls to Content::getSecondaryDataUpdates() with calls to this method
- // * Construct LinksUpdate here, on the combined ParserOutput, instead of in AbstractContent
- // for each slot.
- // * Pass $slot into getSecondaryDataUpdates() - probably be introducing a new duplicate
- // version of this function in ContentHandler.
- // * The new method gets the PreparedEdit, but no $recursive flag (that's for LinksUpdate)
- // * Hack: call both the old and the new getSecondaryDataUpdates method here; Pass
- // the per-slot ParserOutput to the old method, for B/C.
- // * Hack: If there is more than one slot, filter LinksUpdate from the DataUpdates
- // returned by getSecondaryDataUpdates, and use a LinksUpdated for the combined output
- // instead.
- // * Call the SecondaryDataUpdates hook here (or kill it - its signature doesn't make sense)
-
- $content = $this->getSlots()->getContent( 'main' );
-
- // NOTE: $output is the combined output, to be shown in the default view.
+ if ( $this->isContentDeleted() ) {
+ // This shouldn't happen, since the current content is always public,
+ // and DataUpates are only needed for current content.
+ return [];
+ }
+
$output = $this->getCanonicalParserOutput();
- $updates = $content->getSecondaryDataUpdates(
- $this->getTitle(), null, $recursive, $output
+ // Construct a LinksUpdate for the combined canonical output.
+ $linksUpdate = new LinksUpdate(
+ $this->getTitle(),
+ $output,
+ $recursive
);
- return $updates;
+ $allUpdates = [ $linksUpdate ];
+
+ // NOTE: Run updates for all slots, not just the modified slots! Otherwise,
+ // info for an inherited slot may end up being removed. This is also needed
+ // to ensure that purges are effective.
+ $renderedRevision = $this->getRenderedRevision();
+ foreach ( $this->getSlots()->getSlotRoles() as $role ) {
+ $slot = $this->getRawSlot( $role );
+ $content = $slot->getContent();
+ $handler = $content->getContentHandler();
+
+ $updates = $handler->getSecondaryDataUpdates(
+ $this->getTitle(),
+ $content,
+ $role,
+ $renderedRevision
+ );
+ $allUpdates = array_merge( $allUpdates, $updates );
+
+ // TODO: remove B/C hack in 1.32!
+ // NOTE: we assume that the combined output contains all relevant meta-data for
+ // all slots!
+ $legacyUpdates = $content->getSecondaryDataUpdates(
+ $this->getTitle(),
+ null,
+ $recursive,
+ $output
+ );
+
+ // HACK: filter out redundant and incomplete LinksUpdates
+ $legacyUpdates = array_filter( $legacyUpdates, function ( $update ) {
+ return !( $update instanceof LinksUpdate );
+ } );
+
+ $allUpdates = array_merge( $allUpdates, $legacyUpdates );
+ }
+
+ // XXX: if a slot was removed by an earlier edit, but deletion updates failed to run at
+ // that time, we don't know for which slots to run deletion updates when purging a page.
+ // We'd have to examine the entire history of the page to determine that. Perhaps there
+ // could be a "try extra hard" mode for that case that would run a DB query to find all
+ // roles/models ever used on the page. On the other hand, removing slots should be quite
+ // rare, so perhaps this isn't worth the trouble.
+
+ // TODO: consolidate with similar logic in WikiPage::getDeletionUpdates()
+ $wikiPage = $this->getWikiPage();
+ $parentRevision = $this->getParentRevision();
+ foreach ( $this->getRemovedSlotRoles() as $role ) {
+ // HACK: we should get the content model of the removed slot from a SlotRoleHandler!
+ // For now, find the slot in the parent revision - if the slot was removed, it should
+ // always exist in the parent revision.
+ $parentSlot = $parentRevision->getSlot( $role, RevisionRecord::RAW );
+ $content = $parentSlot->getContent();
+ $handler = $content->getContentHandler();
+
+ $updates = $handler->getDeletionUpdates(
+ $this->getTitle(),
+ $role
+ );
+ $allUpdates = array_merge( $allUpdates, $updates );
+
+ // TODO: remove B/C hack in 1.32!
+ $legacyUpdates = $content->getDeletionUpdates( $wikiPage );
+
+ // HACK: filter out redundant and incomplete LinksDeletionUpdate
+ $legacyUpdates = array_filter( $legacyUpdates, function ( $update ) {
+ return !( $update instanceof LinksDeletionUpdate );
+ } );
+
+ $allUpdates = array_merge( $allUpdates, $legacyUpdates );
+ }
+
+ // TODO: hard deprecate SecondaryDataUpdates in favor of RevisionDataUpdates in 1.33!
+ Hooks::run(
+ 'RevisionDataUpdates',
+ [ $this->getTitle(), $renderedRevision, &$allUpdates ]
+ );
+
+ return $allUpdates;
}
/**
WikiPage::onArticleEdit( $title, $legacyRevision, $this->getTouchedSlotRoles() );
}
- $oldRevision = $this->getOldRevision();
+ $oldRevision = $this->getParentRevision();
$oldLegacyRevision = $oldRevision ? new Revision( $oldRevision ) : null;
// TODO: In the wiring, register a listener for this on the new PageEventEmitter
}
foreach ( $updates as $update ) {
- $update->setCause( $causeAction, $causeAgent );
+ if ( $update instanceof DataUpdate ) {
+ $update->setCause( $causeAction, $causeAgent );
+ }
if ( $update instanceof LinksUpdate ) {
$update->setRevision( $legacyRevision );
$update->setTriggeringUser( $triggeringUser );
$slot = $rev->getSlot( $role, RevisionRecord::RAW );
Assert::postcondition(
$slot->getContent() !== null,
- $role . ' slot must have content'
+ $role . ' slot must have content'
);
Assert::postcondition(
$slot->hasRevision(),
- $role . ' slot must have a revision associated'
+ $role . ' slot must have a revision associated'
);
}
if ( $nsText === false ) {
// See T165149. Awkward, but better than erroneously linking to the main namespace.
$nsText = MediaWikiServices::getInstance()->getContentLanguage()->
- getNsText( NS_SPECIAL ) . ":Badtitle/NS{$this->mNamespace}";
+ getNsText( NS_SPECIAL ) . ":Badtitle/NS{$this->mNamespace}";
}
$p .= $nsText . ':';
* @return string
*/
public function getFullRequestURL() {
- return wfGetServerUrl( PROTO_CURRENT ) . $this->getRequestURL();
+ return wfGetServerUrl( PROTO_CURRENT ) . $this->getRequestURL();
}
/**
);
$de->showDiff( '', '' );
}
- return;
}
protected function getDescription() {
if ( !is_null( $params[$param] ) ) {
$p = $this->getModulePrefix();
$this->dieWithError(
- [ 'apierror-invalidparammix-cannotusewith', $p.$param, "{$p}user" ],
+ [ 'apierror-invalidparammix-cannotusewith', $p . $param, "{$p}user" ],
'invalidparammix'
);
}
if ( !is_null( $params[$param] ) ) {
$p = $this->getModulePrefix();
$this->dieWithError(
- [ 'apierror-invalidparammix-mustusewith', $p.$param, "{$p}user" ],
+ [ 'apierror-invalidparammix-mustusewith', $p . $param, "{$p}user" ],
'invalidparammix'
);
}
}
if ( $this->params['testactions'] ) {
- $limit = $this->getMain()->canApiHighLimits() ? self::LIMIT_SML1 : self::LIMIT_SML2;
+ $limit = $this->getMain()->canApiHighLimits() ? self::LIMIT_SML2 : self::LIMIT_SML1;
if ( $this->countTestedActions >= $limit ) {
return null; // force a continuation
}
"apihelp-compare-param-fromid": "رقم الصفحة الأول للمقارنة.",
"apihelp-compare-param-fromrev": "أول مراجعة للمقارنة.",
"apihelp-compare-param-frompst": "قم بإجراء تحويل ما قبل الحفظ على <var>fromtext-{slot}</var>.",
+ "apihelp-compare-param-fromslots": "تجاوز محتوى المراجعة المحددة بواسطة <var>fromtitle</var> أو <var>fromid</var> أو <var>fromrev</var>.\n\nيحدد هذا الوسيط الفتحات المراد تعديلها، استخدم <var>fromtext-{slot}</var> و<var>fromcontentmodel-{slot}</var> و<var>fromcontentformat-{slot}</var> لتحديد محتوى لكل فتحة.",
+ "apihelp-compare-param-fromtext-{slot}": "نص الفتحة المحددة، إذا تم حذفها، تتم إزالة الفتحة من المراجعة.",
+ "apihelp-compare-param-fromsection-{slot}": "عندما يكون <var>fromtext-{slot}</var> هو محتوى قسم واحد، فهذا هو رقم القسم، سيتم دمجه في المراجعة المحددة بواسطة <var>fromtitle</var> أو <var>fromid</var> أو <var>fromrev</var> كما لو كانت لتعديل القسم.",
+ "apihelp-compare-param-fromcontentmodel-{slot}": "نموذج محتوى <var>fromtext-{slot}</var>، إذا لم يتم توفيره، فسيتم تخمينه استنادا إلى الوسائط الأخرى.",
+ "apihelp-compare-param-fromcontentformat-{slot}": "تنسيق تسلسل محتوى <var>fromtext-{slot}</var>.",
"apihelp-compare-param-fromtext": "حدد <kbd>fromslots=main</kbd> واستخدم <var>fromtext-main</var> كبديل.",
"apihelp-compare-param-fromcontentmodel": "حدد <kbd>fromslots=main</kbd> واستخدم <var>fromcontentmodel-main</var> كبديل.",
"apihelp-compare-param-fromcontentformat": "حدد <kbd>fromslots=main</kbd> واستخدم <var>fromcontentformat-main</var> كبديل.",
"apihelp-compare-param-torev": "المراجعة الثانية للمقارنة.",
"apihelp-compare-param-torelative": "استخدم مراجعة متعلقة بالمراجعة المحددة من <var>fromtitle</var> أو <var>fromid</var> أو <var>fromrev</var>، سيتم تجاهل جميع خيارات 'إلى' الأخرى.",
"apihelp-compare-param-topst": "قم بإجراء تحويل ما قبل الحفظ على <var>totext</var>.",
+ "apihelp-compare-param-toslots": "تجاوز محتوى المراجعة المحددة بواسطة <var>totitle</var> أو <var>toid</var> أو <var>torev</var>.\n\nيحدد هذا الوسيط الفتحات المراد تعديلها، استخدم <var>totext-{slot}</var> و<var>tocontentmodel-{slot}</var> و<var>tocontentformat-{slot}</var> لتحديد محتوى لكل فتحة.",
+ "apihelp-compare-param-totext-{slot}": "نص الفتحة المحددة، إذا تم حذفه، تتم إزالة الفتحة من المراجعة.",
+ "apihelp-compare-param-tosection-{slot}": "عندما يكون <var>totext-{slot}</var> هو محتوى قسم واحد، فهذا هو رقم القسم، سيتم دمجه في المراجعة المحددة بواسطة <var>totitle</var> أو <var>toid</var> أو <var>torev</var> كما لو كانت لتعديل القسم.",
+ "apihelp-compare-param-tocontentmodel-{slot}": "نموذج محتوى <var>totext-{slot}</var>، إذا لم يتم توفيره، فسيتم تخمينه استنادا إلى الوسائط الأخرى.",
+ "apihelp-compare-param-tocontentformat-{slot}": "تنسيق تسلسل محتوى <var>totext-{slot}</var>.",
"apihelp-compare-param-totext": "حدد <kbd>toslots=main</kbd> واستخدم <var>totext-main</var> كبديل.",
"apihelp-compare-param-tocontentmodel": "حدد <kbd>toslots=main</kbd> واستخدم <var>tocontentmodel-main</var> كبديل.",
"apihelp-compare-param-tocontentformat": "حدد <kbd>toslots=main</kbd> واستخدم <var>tocontentformat-main</var> كبديل.",
"apihelp-compare-paramvalue-prop-comment": "التعليق على المراجعات 'من' و'إلى'.",
"apihelp-compare-paramvalue-prop-parsedcomment": "التعليق المحلل على المراجعات 'من' و'إلى'.",
"apihelp-compare-paramvalue-prop-size": "حجم المراجعات 'من' و'إلى'.",
+ "apihelp-compare-param-slots": "إرجاع فرق فردي لهذه الفتحات، بدلا من فرق واحد مشترك لجميع فتحات.",
"apihelp-compare-example-1": "إنشاء فرق بين المراجعة 1 و2.",
"apihelp-createaccount-summary": "انشاء حساب مستخدم جديد",
"apihelp-createaccount-param-preservestate": "إذا تم عرض <kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd> بشكل صحيح لـ<samp>hasprimarypreservedstate</samp>، فقد تم تعليم طلبات <samp>primary-required</samp> لكي يجب حذفها، إذا عرضت قيمة غير فارغة لـ<samp>preservedusername</samp> فيجب استخدام اسم المستخدم هذا للوسيط <var>username</var>.",
"apihelp-query+revisions+base-paramvalue-prop-tags": "وسوم للمراجعة.",
"apihelp-query+revisions+base-paramvalue-prop-roles": "أدرج أدوار فتحة المحتوى الموجودة في المراجعة.",
"apihelp-query+revisions+base-paramvalue-prop-parsetree": "استخدم <kbd>[[Special:ApiHelp/expandtemplates|action=expandtemplates]]</kbd> أو <kbd>[[Special:ApiHelp/parse|action=parse]]</kbd> بدلا من ذلك، شجرة تحليل XML لمحتوى المراجعة (تتطلب نموذج المحتوى <code>$1</code>).",
+ "apihelp-query+revisions+base-param-slots": "أي الفتحات المراجعة لتعيد البيانات، عندما يتم تضمين الخصائص ذات الصلة بالفتحات في <var>$1props</var>، إذا تم حذفها، فسيتم إرجاع البيانات من فتحة <kbd>main</kbd> بتنسيق متوافق مع الإصدارات السابقة.",
"apihelp-query+revisions+base-param-limit": "الحد من عدد المراجعات التي سيتم إرجاعها.",
"apihelp-query+revisions+base-param-expandtemplates": "استخدم <kbd>[[Special:ApiHelp/expandtemplates|action=expandtemplates]]</kbd> بدلا من ذلك، قم بتوسيع القوالب في محتوى المراجعة (يتطلب $1prop=content).",
"apihelp-query+revisions+base-param-generatexml": "استخدم <kbd>[[Special:ApiHelp/expandtemplates|action=expandtemplates]]</kbd> أو <kbd>[[Special:ApiHelp/parse|action=parse]]</kbd> بدلا من ذلك، قم بتوليد شجرة تحليل XML لمحتوى المراجعة (تتطلب $1prop=content).",
"apihelp-json-param-callback": "إذا تم تحديده، فسيقوم بإخراج الإخراج في استدعاء دالة معينة، للسلامة; سيتم تقييد جميع البيانات الخاصة بالمستخدم.",
"apihelp-json-param-utf8": "إذا تم تحديده، يقوم بترميز معظم (وليس كل) الأحرف غير ASCII كـUTF-8 بدلا من استبدالها بتسلسلات الهروب السداسية العشرية، افتراضي عندما لا يكون <var>formatversion</var> <kbd>1</kbd>.",
"apihelp-json-param-ascii": "إذا تم تحديده، يشفر كل غير ASCII باستخدام تسلسلات الهروب السداسية العشرية، افتراضي عندما يكون <var>formatversion</var> <kbd>1</kbd>.",
+ "apihelp-json-param-formatversion": "تنسيق الإخراج: \n;1:تنسيق متوافق مع الإصدارات السابقة (مصفوفات منطقية بتنسيق XML، ومفاتيح <samp>*</samp> لعقد المحتوى، وما إلى ذلك).\n;2:التنسيق الحديث التجريبي، التفاصيل قد تتغير!\n;الأحدث: استخدم أحدث تنسيق (حاليا <kbd>2</kbd>)، قد يتغير دون سابق إنذار.",
"apihelp-jsonfm-summary": "بيانات الإخراج بتنسيق JSON (الطباعة بـHTML).",
"apihelp-none-summary": "عدم إخراج أي شيء.",
"apihelp-php-summary": "بيانات الإخراج بتنسيق PHP المتسلسل.",
+ "apihelp-php-param-formatversion": "تنسيق الإخراج: \n;1:تنسيق متوافق مع الإصدارات السابقة (مصفوفات منطقية بتنسيق XML، ومفاتيح <samp>*</samp> لعقد المحتوى، وما إلى ذلك).\n;2:التنسيق الحديث التجريبي، التفاصيل قد تتغير!\n;الأحدث: استخدم أحدث تنسيق (حاليا <kbd>2</kbd>)، قد يتغير دون سابق إنذار.",
"apihelp-phpfm-summary": "بيانات الإخراج بتنسيق JSON (الطباعة بـHTML).",
"apihelp-rawfm-summary": "بيانات الإخراج، بما في ذلك عناصر تصحيح الأخطاء، بتنسيق JSON (الطباعة بـHTML).",
"apihelp-xml-summary": "بيانات الإخراج بتنسيق XML.",
"apierror-changeauth-norequest": "فشل في إنشاء طلب التغيير.",
"apierror-chunk-too-small": "الحد الأدنى لحجم القطعة هو $1 {{PLURAL:$1|بايت}} للقطع غير النهائية.",
"apierror-cidrtoobroad": "لا يُقبَل مدى $1 CIDR أكبر من /$2.",
+ "apierror-compare-maintextrequired": "الوسيط <var>$1text-main</var> مطلوب عندما يكون <var>$1slots</var> يحتوي على <kbd>main</kbd> (لا يمكن حذف الفتحة الرئيسية).",
"apierror-compare-no-title": "لا يمكن الحفظ المسبق للحفظ بدون عنوان; حاول تحديد <var>fromtitle</var> أو <var>totitle</var>.",
"apierror-compare-nosuchfromsection": "لا يوجد قسم $1 في المحتوى 'من'.",
"apierror-compare-nosuchtosection": "لا يوجد قسم $1 في المحتوى 'إلى'.",
+ "apierror-compare-nofromrevision": "ليس 'من' مراجعة، حدد <var>fromrev</var> أو <var>fromtitle</var> أو <var>fromid</var>.",
+ "apierror-compare-notext": "لا يمكن استخدام الوسيط <var>$1</var> بدون <var>$2</var>.",
+ "apierror-compare-notorevision": "ليس 'إلى' مراجعة، حدد <var>torev</var> أو <var>totitle</var> أو <var>toid</var>.",
"apierror-compare-relative-to-nothing": "لا توجد مراجعة 'من' لـ<var>torelative</var> لتكون نسبة.",
"apierror-contentserializationexception": "فشل تسلسل المحتوى: $1",
"apierror-contenttoobig": "يتجاوز المحتوى الذي أدخلته حد حجم المقالة البالغ $1 {{PLURAL:$1|كيلوبايت}}.",
"apierror-mimesearchdisabled": "تم تعطيل بحث MIME في وضع Miser.",
"apierror-missingcontent-pageid": "محتوى مفقود لمعرف الصفحة $1.",
"apierror-missingcontent-revid": "محتوى مفقود لمعرف المراجعة $1.",
+ "apierror-missingcontent-revid-role": "محتوى مفقود لمعرف المراجعة $1 للدور $2.",
"apierror-missingparam-at-least-one-of": "مطلوب {{PLURAL:$2|الوسيط|واحد على الأقل من الوسائط}} $1.",
"apierror-missingparam-one-of": "مطلوب {{PLURAL:$2|الوسيط|واحد على الأقل من الوسائط}} $1.",
"apierror-missingparam": "يجب تعيين الوسيط <var>$1</var>.",
"apiwarn-deprecation-login-botpw": "تم إيقاف تسجيل الدخول إلى الحساب الرئيسي عبر <kbd>action=login</kbd> وقد يتوقف عن العمل دون سابق إنذار، لمتابعة تسجيل الدخول باستخدام <kbd>action=login</kbd>; راجع [[Special:BotPasswords]]، لمتابعة استخدام تسجيل الدخول إلى الحساب الرئيسي بأمان; راجع <kbd>action=clientlogin</kbd>.",
"apiwarn-deprecation-login-nobotpw": "تم إيقاف تسجيل الدخول إلى الحساب الرئيسي عبر <kbd>action=login</kbd>، وقد يتوقف عن العمل دون سابق إنذار، لتسجيل الدخول بأمان; راجع <kbd>action=clientlogin</kbd>.",
"apiwarn-deprecation-login-token": "تم إيقاف عمل رمز مميز عبر <kbd>action=login</kbd> ;استخدم <kbd>action=query&meta=tokens&type=login</kbd> بدلا من ذلك.",
+ "apiwarn-deprecation-missingparam": "نظرا لعدم تحديد <var>$1</var>; تم استخدام تنسيق قديم للإخراج، تم إيقاف هذا التنسيق، وسيتم دائما استخدام التنسيق الجديد في المستقبل.",
"apiwarn-deprecation-parameter": "تم إيقاف الوسيط <var>$1</var>.",
"apiwarn-deprecation-parse-headitems": "تم إيقاف <kbd>prop=headitems</kbd> منذ ميدياويكي 1.28; استخدم <kbd>prop=headhtml</kbd> عند إنشاء مستندات HTML جديدة، أو <kbd>prop=modules|jsconfigvars</kbd> عند تحديث مستند من جانب العميل.",
"apiwarn-deprecation-purge-get": "تم إيقاف استخدام <kbd>action=purge</kbd> عبر GET; استخدم POST بدلا من ذلك.",
"apiwarn-parse-nocontentmodel": "لم يتم إعطاء <var>title</var> أو <var>contentmodel</var>، على افتراض $1.",
"apiwarn-parse-revidwithouttext": "تم استخدام <var>revid</var> بدون <var>text</var>، وتم طلب خصائص الصفحة المحللة، هل تقصد استخدام <var>oldid</var> بدلا من <var>revid</var>؟",
"apiwarn-parse-titlewithouttext": "تم استخدام <var>title</var> بدون <var>text</var>، وتم طلب خصائص الصفحة المحللة، هل تقصد استخدام <var>page</var> بدلا من <var>title</var>؟",
+ "apiwarn-redirectsandrevids": "لا يمكن استخدام دقة تحويلة مع الوسيط <var>revids</var>، أية تحويلات لنقطة <var>revids</var> لم يتم حلها.",
"apiwarn-tokennotallowed": "الإجراء \"$1\" غير مسموح به للمستخدم الحالي.",
"apiwarn-tokens-origin": "قد لا يتم الحصول على الرموز عند عدم تطبيق السياسة الأصلية.",
"apiwarn-truncatedresult": "تم اقتطاع هذه النتيجة لأنها قد تكون أكبر من حد الـ$1 بايت.",
"apihelp-clearhasmsg-example-1": "Fjern <code>hasmsg</code>-flagget for aktuell bruker.",
"apihelp-clientlogin-summary": "Logg inn på wikien med den interaktive flyten.",
"apihelp-clientlogin-example-login": "Start prosessen med å logge inn til wikien som bruker <kbd>Example</kbd> med passord <kbd>ExamplePassword</kbd>.",
- "apihelp-clientlogin-example-login2": "Fortsett å logge inn etter en <samp>UI</samp>-respons for tofaktor-autentisering, ved å oppgi en <var>OATHToken</var> på <kbd>987654</kbd>.",
+ "apihelp-clientlogin-example-login2": "Fortsett å logge inn etter en <samp>UI</samp>-respons for totrinns pålogging, ved å oppgi en <var>OATHToken</var> på <kbd>987654</kbd>.",
"apihelp-compare-summary": "Hent forskjellen mellom to sider.",
"apihelp-compare-extended-description": "Et revisjonsnummer, en sidetittel eller en side-ID for både «fra» og «til» må sendes.",
"apihelp-compare-param-fromtitle": "Første tittel å sammenligne.",
"apihelp-options-example-complex": "重置所有偏好設定,然後再設定 <kbd>skin</kbd> 與 <kbd>nickname</kbd>。",
"apihelp-paraminfo-summary": "獲得有關 API 模組的資訊。",
"apihelp-paraminfo-param-helpformat": "說明字串的格式。",
+ "apihelp-paraminfo-param-formatmodules": "格式模組名稱清單(<var>format</var> 參數的值)。請改用 <var>$1modules</var> 。",
"apihelp-paraminfo-example-1": "顯示 <kbd>[[Special:ApiHelp/parse|action=parse]]</kbd>、<kbd>[[Special:ApiHelp/jsonfm|format=jsonfm]]</kbd>、<kbd>[[Special:ApiHelp/query+allpages|action=query&list=allpages]]</kbd>、和 <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd> 的資訊。",
"apihelp-paraminfo-example-2": "顯示 <kbd>[[Special:ApiHelp/query|action=query]]</kbd> 所有子模組的資訊。",
"apihelp-parse-summary": "解析內容併回傳解析器輸出。",
"apihelp-query+allimages-param-to": "要停止列舉的圖片標題。僅能與 $1sort=name 一起使用。",
"apihelp-query+allimages-param-start": "要開始列舉的時間戳記。僅能與 $1sort=timestamp 一起使用。",
"apihelp-query+allimages-param-end": "要停止列舉的時間戳記。僅能與 $1sort=timestamp 一起使用。",
+ "apihelp-query+allimages-param-prefix": "搜尋所有以此值為開頭的圖片。僅能與 $1sort=name 一起使用。",
"apihelp-query+allimages-param-minsize": "限制圖片至少要有這樣多的位元組。",
"apihelp-query+allimages-param-maxsize": "限制圖片最多只能這樣多的位元組。",
"apihelp-query+allimages-param-sha1": "圖片的 SHA1 雜湊值。覆蓋 $1sha1base36。",
"apihelp-query+allusers-example-Y": "列出以<kbd>Y</kbd>開頭的使用者。",
"apihelp-query+authmanagerinfo-summary": "取得目前身分核對狀態的資訊。",
"apihelp-query+backlinks-summary": "找出連結至指定頁面的所有頁面。",
+ "apihelp-query+backlinks-param-title": "要搜尋的標題。不能與 <var>$1pageid</var> 一起使用。",
"apihelp-query+backlinks-param-pageid": "要搜尋的頁面 ID。不能與 <var>$1title</var> 一起使用。",
"apihelp-query+backlinks-param-namespace": "要列舉的命名空間。",
"apihelp-query+backlinks-param-dir": "列出時所採用的方向。",
"apihelp-query+blocks-paramvalue-prop-userid": "添加已封鎖使用者的使用者 ID。",
"apihelp-query+blocks-paramvalue-prop-by": "添加進行封鎖中的使用者之使用者名稱。",
"apihelp-query+blocks-paramvalue-prop-byid": "添加進行封鎖中的使用者之使用者 ID。",
+ "apihelp-query+blocks-paramvalue-prop-timestamp": "添加當封鎖生效的時間戳記。",
+ "apihelp-query+blocks-paramvalue-prop-expiry": "添加當封鎖到期的時間戳記。",
"apihelp-query+blocks-paramvalue-prop-reason": "添加封鎖的原因。",
"apihelp-query+blocks-example-simple": "列出封鎖。",
"apihelp-query+blocks-example-users": "列出使用者 <kbd>Alice</kbd> 與 <kbd>Bob</kbd> 的封鎖。",
"apihelp-query+categorymembers-paramvalue-prop-timestamp": "添加在頁面有被包含時的時間戳記。",
"apihelp-query+categorymembers-param-limit": "回傳的頁面數量上限。",
"apihelp-query+categorymembers-param-sort": "作為排序順序的屬性。",
+ "apihelp-query+categorymembers-param-start": "起始列出的時間戳記。僅能與 <kbd>$1sort=timestamp</kbd> 一起使用。",
+ "apihelp-query+categorymembers-param-end": "結束列出的時間戳記。僅能與 <kbd>$1sort=timestamp</kbd> 一起使用。",
"apihelp-query+categorymembers-param-startsortkey": "請改用 $1starthexsortkey。",
"apihelp-query+categorymembers-param-endsortkey": "請改用 $1endhexsortkey。",
"apihelp-query+categorymembers-example-simple": "取得在 <kbd>Category:Physics</kbd> 裡前 10 項的頁面。",
"apihelp-query+logevents-paramvalue-prop-userid": "添加承擔日誌事件的使用者 ID。",
"apihelp-query+logevents-paramvalue-prop-timestamp": "添加日誌事件的時間戳記。",
"apihelp-query+logevents-paramvalue-prop-comment": "添加日誌事件的註釋。",
+ "apihelp-query+logevents-paramvalue-prop-parsedcomment": "添加日誌事件的解析註釋。",
"apihelp-query+logevents-paramvalue-prop-details": "列出日誌事件的額外詳細資訊。",
"apihelp-query+logevents-paramvalue-prop-tags": "列出日誌事件的標籤。",
"apihelp-query+logevents-param-type": "篩選僅為此類型的日誌項目。",
"apihelp-query+logevents-param-tag": "僅列出以此標籤所標記的事件項目。",
"apihelp-query+logevents-param-limit": "要回傳的事件項目總數。",
"apihelp-query+logevents-example-simple": "列出近期日誌事件。",
+ "apihelp-query+pagepropnames-summary": "列出所有在 wiki 使用的頁面屬性名稱。",
"apihelp-query+pagepropnames-param-limit": "回傳的名稱數量上限。",
"apihelp-query+pagepropnames-example-simple": "取得前 10 個屬性名稱。",
"apihelp-query+pageprops-example-simple": "取得頁面 <kbd>Main Page</kbd> 與 <kbd>MediaWiki</kbd> 的屬性。",
"apihelp-query+prefixsearch-param-limit": "回傳的結果數量上限。",
"apihelp-query+prefixsearch-param-offset": "要略過的結果數量。",
"apihelp-query+prefixsearch-example-simple": "搜尋開頭為 <kbd>meaning</kbd> 的頁面標題。",
+ "apihelp-query+prefixsearch-param-profile": "搜尋要使用的配置。",
"apihelp-query+protectedtitles-param-namespace": "僅列出這些命名空間的標題。",
"apihelp-query+protectedtitles-param-level": "僅列出具有這些保護層級的標題。",
"apihelp-query+protectedtitles-param-limit": "要回傳的頁面總數。",
"apihelp-query+protectedtitles-param-prop": "要取得的屬性。",
+ "apihelp-query+protectedtitles-paramvalue-prop-user": "添加做出添加保護操作的使用者。",
+ "apihelp-query+protectedtitles-paramvalue-prop-userid": "添加做出添加保護操作的使用者 ID。",
+ "apihelp-query+protectedtitles-paramvalue-prop-comment": "添加保護的註釋。",
+ "apihelp-query+protectedtitles-paramvalue-prop-parsedcomment": "添加保護的解析註釋。",
"apihelp-query+protectedtitles-paramvalue-prop-level": "添加保護層級。",
"apihelp-query+protectedtitles-example-simple": "列出已保護的標題。",
+ "apihelp-query+querypage-summary": "取得透過特殊頁面 QueryPage-based 所提供的清單。",
"apihelp-query+querypage-param-page": "特殊頁面的名稱。註:區分大小寫。",
"apihelp-query+querypage-param-limit": "回傳的結果數量。",
+ "apihelp-query+querypage-example-ancientpages": "回傳來自 [[Special:Ancientpages]] 的結果。",
"apihelp-query+random-summary": "取得隨機頁面集合",
"apihelp-query+random-param-namespace": "僅回傳在這些命名空間的頁面。",
"apihelp-query+random-param-redirect": "請改用 <kbd>$1filterredir=redirects</kbd>。",
"apihelp-query+recentchanges-param-excludeuser": "不要列出由該使用者作出的更改。",
"apihelp-query+recentchanges-param-tag": "僅列出以此標籤所標記的更改。",
"apihelp-query+recentchanges-param-prop": "包含的額外資訊部份:",
+ "apihelp-query+recentchanges-paramvalue-prop-comment": "添加編輯的註釋。",
+ "apihelp-query+recentchanges-paramvalue-prop-parsedcomment": "添加編輯的解析註釋。",
"apihelp-query+recentchanges-paramvalue-prop-flags": "添加編輯的標籤。",
"apihelp-query+recentchanges-paramvalue-prop-timestamp": "添加編輯的時間戳記。",
"apihelp-query+recentchanges-paramvalue-prop-title": "添加編輯的頁面標題。",
"apihelp-query+revisions-example-first5-user": "取得 <kbd>Main Page</kbd> 裡由使用者 <kbd>MediaWiki default</kbd> 所做出的最早前 5 筆修訂。",
"apihelp-query+revisions+base-paramvalue-prop-ids": "修訂 ID。",
"apihelp-query+revisions+base-paramvalue-prop-flags": "修訂標籤(小修改)。",
+ "apihelp-query+revisions+base-paramvalue-prop-timestamp": "修訂的時間戳記。",
"apihelp-query+revisions+base-paramvalue-prop-user": "做出修訂的使用者。",
+ "apihelp-query+revisions+base-paramvalue-prop-userid": "修訂創建者的使用者 ID",
"apihelp-query+revisions+base-paramvalue-prop-size": "修訂的長度(位元組)。",
+ "apihelp-query+revisions+base-paramvalue-prop-sha1": "修訂的 SHA-1(base 16)。",
"apihelp-query+revisions+base-paramvalue-prop-tags": "修訂標籤。",
"apihelp-query+revisions+base-param-limit": "限制所回傳的修訂數量。",
"apihelp-query+search-summary": "執行全文搜尋。",
"apihelp-query+search-param-limit": "要回傳的頁面總數。",
"apihelp-query+search-param-interwiki": "若可用的話,在搜尋裡包含跨 wiki 結果。",
"apihelp-query+search-param-backend": "是否搜尋使用的後端,若否則為預設。",
+ "apihelp-query+search-param-sort": "設定回傳結果的排序。",
"apihelp-query+search-example-simple": "搜尋 <kbd>meaning</kbd>。",
"apihelp-query+search-example-text": "搜尋 <kbd>meaning</kbd> 的文字。",
"apihelp-query+siteinfo-summary": "回傳有關站台的一般資訊。",
"apihelp-query+siteinfo-param-prop": "要取得的資訊:",
"apihelp-query+siteinfo-paramvalue-prop-general": "全面系統資訊。",
"apihelp-query+siteinfo-paramvalue-prop-specialpagealiases": "特殊頁面別名清單。",
+ "apihelp-query+siteinfo-param-showalldb": "列出所有資料庫伺服器,不是只有最延遲的那台。",
"apihelp-query+siteinfo-param-numberingroup": "列出在使用者群組裡的使用者數目。",
+ "apihelp-query+siteinfo-param-inlanguagecode": "用於本地化語言的語言代碼(盡可能)與外觀名稱。",
"apihelp-query+siteinfo-example-simple": "索取站台資訊。",
"apihelp-query+siteinfo-example-interwiki": "索取本地端跨 wiki 前綴的清單。",
"apihelp-query+siteinfo-example-replag": "檢查目前的響應延遲。",
"apihelp-query+usercontribs-paramvalue-prop-title": "添加標題與頁面的命名空間 ID。",
"apihelp-query+usercontribs-paramvalue-prop-timestamp": "添加編輯的時間戳記。",
"apihelp-query+usercontribs-paramvalue-prop-comment": "添加編輯的註釋。",
- "apihelp-query+usercontribs-paramvalue-prop-parsedcomment": "添加編輯的已解析註解。",
+ "apihelp-query+usercontribs-paramvalue-prop-parsedcomment": "添加編輯的解析註釋。",
"apihelp-query+usercontribs-paramvalue-prop-size": "添加編輯的新大小。",
"apihelp-query+usercontribs-paramvalue-prop-flags": "添加編輯的標籤。",
"apihelp-query+usercontribs-paramvalue-prop-patrolled": "標記已巡查編輯。",
"apihelp-query+usercontribs-paramvalue-prop-autopatrolled": "標記自動巡查編輯。",
"apihelp-query+usercontribs-paramvalue-prop-tags": "列出編輯的標籤。",
+ "apihelp-query+usercontribs-param-tag": "僅列出以此標籤所標記的修訂。",
+ "apihelp-query+usercontribs-param-toponly": "僅列出最新修訂的更改。",
"apihelp-query+usercontribs-example-user": "顯示使用者 <kbd>Example</kbd> 的貢獻。",
+ "apihelp-query+usercontribs-example-ipprefix": "顯示所有來自於前綴為 <kbd>192.0.2.</kbd> 的 IP 地址貢獻。",
"apihelp-query+userinfo-summary": "取得目前使用者的資訊。",
"apihelp-query+userinfo-param-prop": "要包含的資訊部份:",
"apihelp-query+userinfo-paramvalue-prop-groups": "列出目前使用者所隸屬的所有群組。",
"apihelp-query+users-paramvalue-prop-rights": "列出各使用者所擁有的權限。",
"apihelp-query+users-paramvalue-prop-editcount": "添加使用者的編輯數。",
"apihelp-query+users-paramvalue-prop-registration": "添加使用者的註冊時間戳記。",
+ "apihelp-query+users-param-users": "要獲取的使用者清單。",
+ "apihelp-query+users-param-userids": "要獲取的使用者 ID 清單。",
+ "apihelp-query+users-param-token": "請改用 <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>。",
"apihelp-query+watchlist-param-start": "起始列舉的時間戳記。",
"apihelp-query+watchlist-param-end": "結束列舉的時間戳記。",
"apihelp-query+watchlist-param-user": "此列出由該使用者作出的更改。",
"apihelp-query+watchlist-paramvalue-prop-flags": "添加編輯的標籤。",
"apihelp-query+watchlist-paramvalue-prop-user": "添加有做出編輯的使用者。",
"apihelp-query+watchlist-paramvalue-prop-userid": "添加有做出編輯的使用者 ID。",
+ "apihelp-query+watchlist-paramvalue-prop-comment": "添加編輯的註釋。",
+ "apihelp-query+watchlist-paramvalue-prop-parsedcomment": "添加編輯的解析註釋。",
+ "apihelp-query+watchlist-paramvalue-prop-timestamp": "添加編輯的時間戳記。",
"apihelp-query+watchlist-paramvalue-prop-tags": "列出項目的標籤。",
"apihelp-query+watchlist-param-type": "要顯示的更改類型:",
"apihelp-query+watchlist-paramvalue-type-edit": "一般頁面編輯。",
"apihelp-revisiondelete-param-hide": "各修訂所要隱藏的內容。",
"apihelp-revisiondelete-param-show": "各修訂所要取消隱藏的內容。",
"apihelp-revisiondelete-param-reason": "刪除或取消刪除的原因。",
+ "apihelp-revisiondelete-param-tags": "在刪除日誌裡套用到項目的標籤。",
"apihelp-rollback-summary": "撤修頁面的最後一次編輯。",
+ "apihelp-rollback-param-tags": "套用到回退的標籤。",
+ "apihelp-rollback-param-summary": "自定義編輯摘要。若為空,則使用預設摘要。",
+ "apihelp-rollback-param-watchlist": "無條件使用設置將頁面加入或移除目前使用者的監視清單或者是不更改監視清單。",
"apihelp-setnotificationtimestamp-param-entirewatchlist": "在所有已監視頁面運作。",
+ "apihelp-setnotificationtimestamp-example-page": "重新設定用於 <kbd>Main page</kbd> 的通知狀態。",
+ "apihelp-setnotificationtimestamp-example-allpages": "重新設定在 <kbd>{{ns:user}}</kbd> 命名空間裡頁面的通知狀態。",
"apihelp-setpagelanguage-summary": "更改頁面的語言。",
+ "apihelp-setpagelanguage-extended-description-disabled": "您不被允許在此 wiki 上變更頁面的語言。\n\n請啟用 <var>[[mw:Special:MyLanguage/Manual:$wgPageLanguageUseDB|$wgPageLanguageUseDB]]</var> 來進行此操作。",
"apihelp-setpagelanguage-param-reason": "變更的原因。",
"apihelp-setpagelanguage-example-language": "更改 <kbd>Main Page</kbd> 的語言成巴斯克語。",
"apihelp-stashedit-summary": "在分享快取裡預備編輯。",
"apihelp-tokens-summary": "取得資料修改動作的密鑰。",
"apihelp-tokens-extended-description": "此模組已因支援 [[Special:ApiHelp/query+tokens|action=query&meta=tokens]] 而停用。",
"apihelp-unblock-summary": "解除封鎖一位使用者。",
+ "apihelp-unblock-param-user": "要封鎖的使用者名稱、IP 位址或 IP 範圍。不能與 <var>$1id</var> 或 <var>$1userid</var> 一起使用",
+ "apihelp-unblock-param-userid": "要封鎖的使用者 ID。不可與 <var>$1id</var> 或 <var>$1user</var> 一同使用。",
"apihelp-unblock-param-reason": "解除封鎖的原因。",
"apihelp-unblock-param-tags": "在封鎖日誌裡更改套用到項目的標籤。",
"apihelp-unblock-example-id": "解除封銷 ID #<kbd>105</kbd>。",
+ "apihelp-undelete-summary": "恢復已刪除頁面的修訂。",
"apihelp-undelete-param-title": "要恢復的頁面標題。",
"apihelp-undelete-param-reason": "還原的原因。",
"apihelp-undelete-param-tags": "在刪除日誌裡更改套用到項目的標籤。",
"apihelp-undelete-example-page": "取消刪除頁面 <kbd>Main Page</kbd>。",
"apihelp-undelete-example-revisions": "取消刪除 <kbd>Main Page</kbd> 的兩筆修訂。",
"apihelp-unlinkaccount-summary": "移除目前使用者所連結到的第三方帳號。",
+ "apihelp-upload-summary": "上傳檔案,或取得等待上傳的狀態。",
"apihelp-upload-param-filename": "目標檔案名稱。",
"apihelp-upload-param-comment": "上傳註釋。如果 <var>$1text</var> 未指定的話,也會作為新檔案用的初始頁面文字。",
"apihelp-upload-param-text": "用於新檔案的初始頁面文字。",
"api-format-prettyprint-header-hyperlinked": "這是$1格式的HTML實現。HTML對除錯很有用,但不適合應用程式使用。\n\n指定<var>format</var>參數以更改輸出格式。要查看$1格式的非HTML實現,設置[$3 <kbd>format=$2</kbd>]。\n\n參見[[mw:API|完整文件]],或[[Special:ApiHelp/main|API幫助]]以獲取更多信息。",
"api-format-prettyprint-status": "此回應將會傳回HTTP狀態$1 $2。",
"api-login-fail-badsessionprovider": "當使用$1無法登入。",
+ "api-login-fail-sameorigin": "當未套用相同原有方針時無法登入。",
"api-pageset-param-titles": "要使用的標題清單。",
"api-pageset-param-pageids": "要使用的頁面 ID 清單。",
"api-pageset-param-revids": "要使用的修訂 ID 清單。",
"api-help-param-upload": "必須使用 multipart/form-data 以檔案上傳的方式傳送。",
"api-help-param-multi-separate": "將幾個值以 <kbd>|</kbd> 或 [[Special:ApiHelp/main#main/datatypes|alternative]] 分隔。",
"api-help-param-multi-max": "上限值為 {{PLURAL:$1|$1}} (機器人為 {{PLURAL:$2|$2}})。",
+ "api-help-param-multi-max-simple": "值的最大數量為 {{PLURAL:$1|$1}}。",
"api-help-param-multi-all": "要指定所有值,請使用<kbd>$1</kbd>。",
"api-help-param-default": "預設值:$1",
"api-help-param-default-empty": "預設值:<span class=\"apihelp-empty\">(空)</span>",
"api-help-authmanagerhelper-returnurl": "為第三方身份驗證流程傳回URL,必須為絕對值。需要此值或<var>$1continue</var>兩者之一。\n\n在接收<samp>REDIRECT</samp>回應時,一般狀況下您將打開瀏覽器或網站瀏覽功能到特定的<samp>redirecttarget</samp> URL以進行第三方身份驗證流程。當它完成時,第三方會將瀏覽器或網站瀏覽功能送至此URL。您應當提取任何來自URL的查詢或POST參數,並將之作為<var>$1continue</var>請求傳遞至此API模組。",
"api-help-authmanagerhelper-continue": "此請求是在先前的<samp>UI</samp>或<samp>REDIRECT</samp>回應之後的後續動作。必須為此值或<var>$1returnurl</var>。",
"api-help-authmanagerhelper-additional-params": "此模組允許額外參數,取決於可用的身份驗證請求。使用<kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd>与<kbd>amirequestsfor=$1</kbd>(或之前來自此模組的回應,如果合適)以決定可用請求及其使用的欄位。",
+ "apierror-appendnotsupported": "無法附加到使用內容模組 $1 的頁面。",
"apierror-articleexists": "您所嘗試建立的條目剛剛已被創建。",
+ "apierror-assertbotfailed": "斷言使用者擁有的 <code>bot</code> 權限失效。",
+ "apierror-assertnameduserfailed": "斷言使用者「$1」出錯。",
+ "apierror-assertuserfailed": "斷言使用者已登入失敗。",
"apierror-autoblocked": "您的 IP 位址已經被自動封鎖,因為它曾經被一名已封鎖的使用者使用過。",
"apierror-badgenerator-notgenerator": "模組 <kbd>$1</kbd> 不能作為產生器。",
"apierror-badgenerator-unknown": "未知的 <kbd>generator=$1</kbd>。",
"apierror-contentserializationexception": "內容序列化失敗:$1",
"apierror-copyuploadbadurl": "不允許從此 URL 來上傳。",
"apierror-csp-report": "處理 CSP 報告時錯誤:$1。",
+ "apierror-emptypage": "不允許建立空白的新頁面。",
"apierror-filedoesnotexist": "檔案不存在。",
"apierror-filenopath": "無法取得本地端檔案路徑。",
"apierror-filetypecannotberotated": "無法旋轉的檔案類型。",
"apierror-imageusage-badtitle": "<kbd>$1</kbd>的標題必須是檔案。",
"apierror-import-unknownerror": "未知的匯入錯誤:$1",
"apierror-invalidcategory": "您所輸入的分類名稱無效。",
+ "apierror-invalidlang": "用於參數 <var>$1</var> 的語言代碼無效。",
+ "apierror-invalidoldimage": "<var>oldimage</var> 參數含有無效格式。",
+ "apierror-invalidparammix-cannotusewith": "參數 <kbd>$1</kbd> 不能與 <kbd>$2</kbd> 一起使用。",
+ "apierror-invalidparammix-mustusewith": "<kbd>$1</kbd> 參數僅能與 <kbd>$2</kbd> 一起使用。",
"apierror-invalidparammix": "{{PLURAL:$2|參數}} $1 不能一起使用。",
"apierror-invalidsha1base36hash": "所提供的 SHA1Base36 雜湊無效。",
"apierror-invalidsha1hash": "所提供的 SHA1 雜湊無效。",
"apierror-invalidtitle": "錯誤標題「$1」。",
+ "apierror-invalidurlparam": "<var>$1urlparam</var> 的值無效(<kbd>$2=$3</kbd>)。",
"apierror-invaliduser": "無效的使用者名稱「$1」。",
"apierror-invaliduserid": "使用者 ID <var>$1</var> 無效。",
+ "apierror-maxbytes": "參數 <var>$1</var> 不能大於 $2 {{PLURAL:$2|位元組|位元組}}",
+ "apierror-maxchars": "參數 <var>$1</var> 不能多於 $2 個{{PLURAL:$2|字元|字元}}",
+ "apierror-maxlag-generic": "正等待資料庫伺服器:已延遲 $1 {{PLURAL:$1|秒|秒}}。",
+ "apierror-maxlag": "正等待$2:已延遲 $1 {{PLURAL:$1|秒|秒}}。",
+ "apierror-mimesearchdisabled": "MIME 搜尋在 Miser 模式裡被停用。",
"apierror-missingcontent-pageid": "遺失頁面 ID 為 $1 的內容。",
"apierror-missingcontent-revid": "遺失修訂 ID 為 $1 的內容。",
+ "apierror-missingparam-one-of": "{{PLURAL:$2|參數|參數其一}} $1 為必要。",
"apierror-missingparam": "<var>$1</var>參數必須被設定。",
"apierror-missingrev-pageid": "沒有頁面 ID 為 $1 的目前修訂。",
"apierror-missingrev-title": "沒有標題為$1的目前修訂。",
"apierror-missingtitle": "您所指定的頁面不存在。",
"apierror-missingtitle-byname": "頁面$1不存在。",
+ "apierror-moduledisabled": "模組 <kbd>$1</kbd> 已停用。",
"apierror-mustbeloggedin-changeauth": "必須登入,才能變更身分核對資取。",
"apierror-mustbeloggedin-generic": "您必須登入。",
"apierror-mustbeloggedin-linkaccounts": "您必須登入到連結帳號。",
* made to replace information about the old content with information about
* the new content.
*
- * This default implementation calls
- * $this->getParserOutput( $content, $title, null, null, false ),
- * and then calls getSecondaryDataUpdates( $title, $recursive ) on the
- * resulting ParserOutput object.
- *
- * Subclasses may implement this to determine the necessary updates more
- * efficiently, or make use of information about the old content.
+ * @deprecated since 1.32, call and override
+ * ContentHandler::getSecondaryDataUpdates instead.
*
* @note Implementations should call the SecondaryDataUpdates hook, like
* AbstractContent does.
* the current state of the database.
*
* @since 1.21
+ * @deprecated since 1.32, call and override
+ * ContentHandler::getDeletionUpdates instead.
*
- * @param WikiPage $page The deleted page
+ * @param WikiPage $page The page the content was deleted from.
* @param ParserOutput|null $parserOutput Optional parser output object
* for efficient access to meta-information about the content object.
* Provide if you have one handy.
use Wikimedia\Assert\Assert;
use MediaWiki\Logger\LoggerFactory;
use MediaWiki\MediaWikiServices;
+use MediaWiki\Revision\SlotRenderingProvider;
use MediaWiki\Search\ParserOutputSearchDataExtractor;
/**
return $parserOutput;
}
+ /**
+ * Returns a list of DeferrableUpdate objects for recording information about the
+ * given Content in some secondary data store.
+ *
+ * Application logic should not call this method directly. Instead, it should call
+ * DerivedPageDataUpdater::getSecondaryDataUpdates().
+ *
+ * @note Implementations must not return a LinksUpdate instance. Instead, a LinksUpdate
+ * is created by the calling code in DerivedPageDataUpdater, on the combined ParserOutput
+ * of all slots, not for each slot individually. This is in contrast to the old
+ * getSecondaryDataUpdates method defined by AbstractContent, which returned a LinksUpdate.
+ *
+ * @note Implementations should not call $content->getParserOutput, they should call
+ * $slotOutput->getSlotRendering( $role, false ) instead if they need to access a ParserOutput
+ * of $content. This allows existing ParserOutput objects to be re-used, while avoiding
+ * creating a ParserOutput when none is needed.
+ *
+ * @param Title $title The title of the page to supply the updates for
+ * @param Content $content The content to generate data updates for.
+ * @param string $role The role (slot) in which the content is being used. Which updates
+ * are performed should generally not depend on the role the content has, but the
+ * DeferrableUpdates themselves may need to know the role, to track to which slot the
+ * data refers, and to avoid overwriting data of the same kind from another slot.
+ * @param SlotRenderingProvider $slotOutput A provider that can be used to gain access to
+ * a ParserOutput of $content by calling $slotOutput->getSlotParserOutput( $role, false ).
+ * @return DeferrableUpdate[] A list of DeferrableUpdate objects for putting information
+ * about this content object somewhere. The default implementation returns an empty
+ * array.
+ * @since 1.32
+ */
+ public function getSecondaryDataUpdates(
+ Title $title,
+ Content $content,
+ $role,
+ SlotRenderingProvider $slotOutput
+ ) {
+ return [];
+ }
+
+ /**
+ * Returns a list of DeferrableUpdate objects for removing information about content
+ * in some secondary data store. This is used when a page is deleted, and also when
+ * a slot is removed from a page.
+ *
+ * Application logic should not call this method directly. Instead, it should call
+ * WikiPage::getSecondaryDataUpdates().
+ *
+ * @note Implementations must not return a LinksDeletionUpdate instance. Instead, a
+ * LinksDeletionUpdate is created by the calling code in WikiPage.
+ * This is in contrast to the old getDeletionUpdates method defined by AbstractContent,
+ * which returned a LinksUpdate.
+ *
+ * @note Implementations should not rely on the page's current content, but rather the current
+ * state of the secondary data store.
+ *
+ * @param Title $title The title of the page to supply the updates for
+ * @param string $role The role (slot) in which the content is being used. Which updates
+ * are performed should generally not depend on the role the content has, but the
+ * DeferrableUpdates themselves may need to know the role, to track to which slot the
+ * data refers, and to avoid overwriting data of the same kind from another slot.
+ *
+ * @return DeferrableUpdate[] A list of DeferrableUpdate objects for putting information
+ * about this content object somewhere. The default implementation returns an empty
+ * array.
+ *
+ * @since 1.32
+ */
+ public function getDeletionUpdates( Title $title, $role ) {
+ return [];
+ }
+
}
* @param int $num
*/
public function setPerRow( $num ) {
- return;
}
}
"config-db-password": "Password d'u database:",
"config-db-port": "Porte d'u database:",
"config-db-schema": "Scheme pe MediaUicchi:",
- "config-type-mysql": "MySQL (o combatibbile)",
+ "config-type-mysql": "MariaDFB, MySQL, o combatibbile",
"config-type-postgres": "PostgreSQL",
"config-type-sqlite": "SQLite",
"config-type-oracle": "Oracle",
"config-type-mssql": "Microsoft SQL Server",
- "config-header-mysql": "'Mbostaziune de MySQL",
+ "config-header-mysql": "'Mbostaziune de MariaDB/MySQL",
"config-header-postgres": "'Mbostaziune de PostgreSQL",
"config-header-sqlite": "'Mbostaziune de SQLite",
"config-header-oracle": "'Mbostaziune de Oracle",
"config-header-mssql": "'Mbostaziune de Microsoft SQL Server",
"config-invalid-db-type": "Tipe de database invalide.",
- "config-mysql-innodb": "InnoDB",
+ "config-mysql-innodb": "InnoDB (conzigliate)",
"config-mysql-myisam": "MyISAM",
"config-ns-generic": "Proggette",
"config-admin-email": "Indirizze e-mail:",
if ( $flags & self::QOS_ATOMIC ) {
$dbw->endAtomic( $method );
}
-
- return;
}
/**
unset( $req['query']['oldid'] );
}
} elseif ( $reqType === 'transform' ) {
- $req['url'] .= 'transform/'. $parts[3] . '/to/' . $parts[5];
+ $req['url'] .= 'transform/' . $parts[3] . '/to/' . $parts[5];
// the title
if ( isset( $parts[6] ) ) {
$req['url'] .= '/' . $parts[6];
// Make a regex out of the source data to match it to an array of color
// spaces in a case-insensitive way
- $colorSpaceRegex = '/'.preg_quote( $data[0], '/' ).'/i';
+ $colorSpaceRegex = '/' . preg_quote( $data[0], '/' ) . '/i';
if ( empty( preg_grep( $colorSpaceRegex, $colorSpaces ) ) ) {
// We can't establish that this file matches the color space, don't process it
return false;
}
- $profileRegex = '/'.preg_quote( $data[1], '/' ).'/i';
+ $profileRegex = '/' . preg_quote( $data[1], '/' ) . '/i';
if ( empty( preg_grep( $profileRegex, $oldProfileStrings ) ) ) {
// We can't establish that this file has the expected ICC profile, don't process it
return false;
if ( $this->mRevision !== null ) {
// Revision title doesn't match the page title given?
if ( $this->mPage->getId() != $this->mRevision->getPage() ) {
- $function = get_class( $this->mPage ). '::newFromID';
+ $function = get_class( $this->mPage ) . '::newFromID';
$this->mPage = $function( $this->mRevision->getPage() );
}
}
// Note that the ArticleViewHeader hook is allowed to set $outputDone to a
// ParserOutput instance.
$pOutput = ( $outputDone instanceof ParserOutput )
+ // phpcs:ignore MediaWiki.Usage.NestedInlineTernary.UnparenthesizedTernary -- FIXME T203805
? $outputDone // object fetched by hook
: $this->mParserOutput ?: null; // ParserOutput or null, avoid false
* Call to WikiPage function for backwards compatibility.
* @see WikiPage::doDeleteUpdates
*/
- public function doDeleteUpdates( $id, Content $content = null ) {
- return $this->mPage->doDeleteUpdates( $id, $content );
+ public function doDeleteUpdates(
+ $id,
+ Content $content = null,
+ $revision = null,
+ User $user = null
+ ) {
+ $this->mPage->doDeleteUpdates( $id, $content, $revision, $user );
}
/**
} else {
$row .=
'<td dir="' . MediaWikiServices::getInstance()->getContentLanguage()->getDir() .
- '">' . Linker::formatComment( $description, $this->title ) . '</td>';
+ '">' . Linker::formatComment( $description, $this->title ) . '</td>';
}
$rowClass = null;
use MediaWiki\Storage\RevisionRecord;
use MediaWiki\Storage\RevisionSlotsUpdate;
use MediaWiki\Storage\RevisionStore;
+use MediaWiki\Storage\SlotRecord;
use Wikimedia\Assert\Assert;
use Wikimedia\Rdbms\FakeResultWrapper;
use Wikimedia\Rdbms\IDatabase;
* Do some database updates after deletion
*
* @param int $id The page_id value of the page being deleted
- * @param Content|null $content Optional page content to be used when determining
+ * @param Content|null $content Page content to be used when determining
* the required updates. This may be needed because $this->getContent()
* may already return null when the page proper was deleted.
- * @param Revision|null $revision The latest page revision
+ * @param RevisionRecord|Revision|null $revision The current page revision at the time of
+ * deletion, used when determining the required updates. This may be needed because
+ * $this->getRevision() may already return null when the page proper was deleted.
* @param User|null $user The user that caused the deletion
*/
public function doDeleteUpdates(
$id, Content $content = null, Revision $revision = null, User $user = null
) {
+ if ( $id !== $this->getId() ) {
+ throw new InvalidArgumentException( 'Mismatching page ID' );
+ }
+
try {
$countable = $this->isCountable();
} catch ( Exception $ex ) {
) );
// Delete pagelinks, update secondary indexes, etc
- $updates = $this->getDeletionUpdates( $content );
+ $updates = $this->getDeletionUpdates(
+ $revision ? $revision->getRevisionRecord() : $content
+ );
foreach ( $updates as $update ) {
DeferredUpdates::addUpdate( $update );
}
* updates should remove any information about this page from secondary data
* stores such as links tables.
*
- * @param Content|null $content Optional Content object for determining the
- * necessary updates.
+ * @param RevisionRecord|Content|null $rev The revision being deleted. Also accepts a Content
+ * object for backwards compatibility.
* @return DeferrableUpdate[]
*/
- public function getDeletionUpdates( Content $content = null ) {
- if ( !$content ) {
- // load content object, which may be used to determine the necessary updates.
- // XXX: the content may not be needed to determine the updates.
+ public function getDeletionUpdates( $rev = null ) {
+ if ( !$rev ) {
+ wfDeprecated( __METHOD__ . ' without a RevisionRecord', '1.32' );
+
try {
- $content = $this->getContent( Revision::RAW );
+ $rev = $this->getRevisionRecord();
} catch ( Exception $ex ) {
// If we can't load the content, something is wrong. Perhaps that's why
// the user is trying to delete the page, so let's not fail in that case.
// Note that doDeleteArticleReal() will already have logged an issue with
// loading the content.
+ wfDebug( __METHOD__ . ' failed to load current revision of page ' . $this->getId() );
}
}
- if ( !$content ) {
- $updates = [];
+ if ( !$rev ) {
+ $slotContent = [];
+ } elseif ( $rev instanceof Content ) {
+ wfDeprecated( __METHOD__ . ' with a Content object instead of a RevisionRecord', '1.32' );
+
+ $slotContent = [ 'main' => $rev ];
} else {
- $updates = $content->getDeletionUpdates( $this );
+ $slotContent = array_map( function ( SlotRecord $slot ) {
+ return $slot->getContent( Revision::RAW );
+ }, $rev->getSlots()->getSlots() );
}
- Hooks::run( 'WikiPageDeletionUpdates', [ $this, $content, &$updates ] );
- return $updates;
+ $allUpdates = [ new LinksDeletionUpdate( $this ) ];
+
+ // NOTE: once Content::getDeletionUpdates() is removed, we only need to content
+ // model here, not the content object!
+ // TODO: consolidate with similar logic in DerivedPageDataUpdater::getSecondaryDataUpdates()
+ /** @var Content $content */
+ foreach ( $slotContent as $role => $content ) {
+ $handler = $content->getContentHandler();
+
+ $updates = $handler->getDeletionUpdates(
+ $this->getTitle(),
+ $role
+ );
+ $allUpdates = array_merge( $allUpdates, $updates );
+
+ // TODO: remove B/C hack in 1.32!
+ $legacyUpdates = $content->getDeletionUpdates( $this );
+
+ // HACK: filter out redundant and incomplete LinksDeletionUpdate
+ $legacyUpdates = array_filter( $legacyUpdates, function ( $update ) {
+ return !( $update instanceof LinksDeletionUpdate );
+ } );
+
+ $allUpdates = array_merge( $allUpdates, $legacyUpdates );
+ }
+
+ Hooks::run( 'PageDeletionDataUpdates', [ $this->getTitle(), $rev, &$allUpdates ] );
+
+ // TODO: hard deprecate old hook in 1.33
+ Hooks::run( 'WikiPageDeletionUpdates', [ $this, $content, &$allUpdates ] );
+ return $allUpdates;
}
/**
} elseif ( is_array( $contextNode ) ) {
// Node descriptor array
if ( count( $contextNode ) !== 2 ) {
- throw new MWException( __METHOD__.
+ throw new MWException( __METHOD__ .
': found an array where a node descriptor should be' );
}
list( $contextName, $contextChildren ) = $contextNode;
$class = self::class;
}
} else {
- throw new MWException( __METHOD__.': invalid node descriptor' );
+ throw new MWException( __METHOD__ . ': invalid node descriptor' );
}
return new $class( $store, $index );
}
public function __construct( array $store, $index ) {
$descriptor = $store[$index];
if ( $descriptor[PPNode_Hash_Tree::NAME][0] !== '@' ) {
- throw new MWException( __METHOD__.': invalid name in attribute descriptor' );
+ throw new MWException( __METHOD__ . ': invalid name in attribute descriptor' );
}
$this->name = substr( $descriptor[PPNode_Hash_Tree::NAME], 1 );
$this->value = $descriptor[PPNode_Hash_Tree::CHILDREN][0];
if ( self::inDebugMode() ) {
$scripts = new XmlJsCode( "function ( $, jQuery, require, module ) {\n{$scripts->value}\n}" );
} else {
- $scripts = new XmlJsCode( 'function($,jQuery,require,module){'. $scripts->value . '}' );
+ $scripts = new XmlJsCode( 'function($,jQuery,require,module){' . $scripts->value . '}' );
}
} elseif ( !is_string( $scripts ) && !is_array( $scripts ) ) {
throw new MWException( 'Invalid scripts error. Array of URLs or string of code expected.' );
}
// Because PHP can't have floats as array keys
- uksort( $logosPerDppx, function ( $a , $b ) {
+ uksort( $logosPerDppx, function ( $a, $b ) {
$a = floatval( $a );
$b = floatval( $b );
// Sort from smallest to largest (e.g. 1x, 1.5x, 2x)
if ( !$signupendMsg->isDisabled() ) {
$usingHTTPS = $this->getRequest()->getProtocol() === 'https';
$signupendText = ( $usingHTTPS && !$signupendHttpsMsg->isBlank() )
- ? $signupendHttpsMsg ->parse() : $signupendMsg->parse();
+ ? $signupendHttpsMsg->parse() : $signupendMsg->parse();
$fieldDefinitions['signupend'] = [
'type' => 'info',
'raw' => true,
/**
* Handle Special:Redirect/user/xxxx (by redirecting to User:YYYY)
*
- * @return string|null Url to redirect to, or null if $mValue is invalid.
+ * @return Status A good status contains the url to redirect to
*/
function dispatchUser() {
if ( !ctype_digit( $this->mValue ) ) {
- return null;
+ // Message: redirect-not-numeric
+ return Status::newFatal( $this->getMessagePrefix() . '-not-numeric' );
}
$user = User::newFromId( (int)$this->mValue );
$username = $user->getName(); // load User as side-effect
if ( $user->isAnon() ) {
- return null;
+ // Message: redirect-not-exists
+ return Status::newFatal( $this->getMessagePrefix() . '-not-exists' );
}
$userpage = Title::makeTitle( NS_USER, $username );
- return $userpage->getFullURL( '', false, PROTO_CURRENT );
+ return Status::newGood( $userpage->getFullURL( '', false, PROTO_CURRENT ) );
}
/**
* Handle Special:Redirect/file/xxxx
*
- * @return string|null Url to redirect to, or null if $mValue is not found.
+ * @return Status A good status contains the url to redirect to
*/
function dispatchFile() {
- $title = Title::makeTitleSafe( NS_FILE, $this->mValue );
-
- if ( !$title instanceof Title ) {
- return null;
+ try {
+ $title = Title::newFromTextThrow( $this->mValue, NS_FILE );
+ if ( $title && !$title->inNamespace( NS_FILE ) ) {
+ // If the given value contains a namespace enforce file namespace
+ $title = Title::newFromTextThrow( Title::makeName( NS_FILE, $this->mValue ) );
+ }
+ } catch ( MalformedTitleException $e ) {
+ return Status::newFatal( $e->getMessageObject() );
}
$file = wfFindFile( $title );
if ( !$file || !$file->exists() ) {
- return null;
+ // Message: redirect-not-exists
+ return Status::newFatal( $this->getMessagePrefix() . '-not-exists' );
}
// Default behavior: Use the direct link to the file.
$url = $file->getUrl();
}
}
- return $url;
+ return Status::newGood( $url );
}
/**
* Handle Special:Redirect/revision/xxx
* (by redirecting to index.php?oldid=xxx)
*
- * @return string|null Url to redirect to, or null if $mValue is invalid.
+ * @return Status A good status contains the url to redirect to
*/
function dispatchRevision() {
$oldid = $this->mValue;
if ( !ctype_digit( $oldid ) ) {
- return null;
+ // Message: redirect-not-numeric
+ return Status::newFatal( $this->getMessagePrefix() . '-not-numeric' );
}
$oldid = (int)$oldid;
if ( $oldid === 0 ) {
- return null;
+ // Message: redirect-not-exists
+ return Status::newFatal( $this->getMessagePrefix() . '-not-exists' );
}
- return wfAppendQuery( wfScript( 'index' ), [
+ return Status::newGood( wfAppendQuery( wfScript( 'index' ), [
'oldid' => $oldid
- ] );
+ ] ) );
}
/**
* Handle Special:Redirect/page/xxx (by redirecting to index.php?curid=xxx)
*
- * @return string|null Url to redirect to, or null if $mValue is invalid.
+ * @return Status A good status contains the url to redirect to
*/
function dispatchPage() {
$curid = $this->mValue;
if ( !ctype_digit( $curid ) ) {
- return null;
+ // Message: redirect-not-numeric
+ return Status::newFatal( $this->getMessagePrefix() . '-not-numeric' );
}
$curid = (int)$curid;
if ( $curid === 0 ) {
- return null;
+ // Message: redirect-not-exists
+ return Status::newFatal( $this->getMessagePrefix() . '-not-exists' );
}
- return wfAppendQuery( wfScript( 'index' ), [
+ return Status::newGood( wfAppendQuery( wfScript( 'index' ), [
'curid' => $curid
- ] );
+ ] ) );
}
/**
* (by redirecting to index.php?title=Special:Log&logid=xxx)
*
* @since 1.27
- * @return string|null Url to redirect to, or null if $mValue is invalid.
+ * @return Status A good status contains the url to redirect to
*/
function dispatchLog() {
$logid = $this->mValue;
if ( !ctype_digit( $logid ) ) {
- return null;
+ // Message: redirect-not-numeric
+ return Status::newFatal( $this->getMessagePrefix() . '-not-numeric' );
}
$logid = (int)$logid;
if ( $logid === 0 ) {
- return null;
+ // Message: redirect-not-exists
+ return Status::newFatal( $this->getMessagePrefix() . '-not-exists' );
}
$query = [ 'title' => 'Special:Log', 'logid' => $logid ];
- return wfAppendQuery( wfScript( 'index' ), $query );
+ return Status::newGood( wfAppendQuery( wfScript( 'index' ), $query ) );
}
/**
* or do nothing (if $mValue wasn't set) allowing the form to be
* displayed.
*
- * @return bool True if a redirect was successfully handled.
+ * @return Status|bool True if a redirect was successfully handled.
*/
function dispatch() {
// the various namespaces supported by Special:Redirect
switch ( $this->mType ) {
case 'user':
- $url = $this->dispatchUser();
+ $status = $this->dispatchUser();
break;
case 'file':
- $url = $this->dispatchFile();
+ $status = $this->dispatchFile();
break;
case 'revision':
- $url = $this->dispatchRevision();
+ $status = $this->dispatchRevision();
break;
case 'page':
- $url = $this->dispatchPage();
+ $status = $this->dispatchPage();
break;
case 'logid':
- $url = $this->dispatchLog();
+ $status = $this->dispatchLog();
break;
default:
- $url = null;
+ $status = null;
break;
}
- if ( $url ) {
- $this->getOutput()->redirect( $url );
+ if ( $status && $status->isGood() ) {
+ $this->getOutput()->redirect( $status->getValue() );
return true;
}
if ( !is_null( $this->mValue ) ) {
$this->getOutput()->setStatusCode( 404 );
- // Message: redirect-not-exists
- $msg = $this->getMessagePrefix() . '-not-exists';
- return Status::newFatal( $msg );
+ return $status;
}
return false;
'div',
[
'class' =>
- 'oo-ui-widget oo-ui-widget-enabled oo-ui-optionWidget '.
+ 'oo-ui-widget oo-ui-widget-enabled oo-ui-optionWidget ' .
'oo-ui-tabOptionWidget oo-ui-labelElement' .
( $i === 0 ? ' oo-ui-optionWidget-selected' : '' )
],
[ 'class' => 'oo-ui-layout oo-ui-panelLayout oo-ui-indexLayout-tabPanel' ],
Html::rawElement(
'div',
- [ 'class' => 'oo-ui-widget oo-ui-widget-enabled oo-ui-selectWidget '.
+ [ 'class' => 'oo-ui-widget oo-ui-widget-enabled oo-ui-selectWidget ' .
'oo-ui-selectWidget-depressed oo-ui-tabSelectWidget' ],
implode( $fakeTabs )
)
// Should these be merged into the title char list?
$unicodeBlacklist = '/[' .
'\x{0080}-\x{009f}' . # iso-8859-1 control chars
- '\x{00a0}' . # non-breaking space
+ '\x{00a0}' . # non-breaking space
'\x{2000}-\x{200f}' . # various whitespace
'\x{2028}-\x{202f}' . # breaks and control chars
- '\x{3000}' . # ideographic space
+ '\x{3000}' . # ideographic space
'\x{e000}-\x{f8ff}' . # private use
']/u';
if ( preg_match( $unicodeBlacklist, $name ) ) {
"</table>";
}
- return "<li>{$html}</li>";
+ return "<li class='mw-search-result'>{$html}</li>";
}
/**
$text = preg_replace( $pat, $rep, $text );
}
return $text;
- break;
case 'kk-latn':
case 'kk-tr':
foreach ( $this->mCyrl2Latn as $pat => $rep ) {
$text = preg_replace( $pat, $rep, $text );
}
return $text;
- break;
case 'kk-cyrl':
case 'kk-kz':
foreach ( $this->mLatn2Cyrl as $pat => $rep ) {
$text = preg_replace( $pat, $rep, $text );
}
return $text;
- break;
default:
return $text;
}
# load C2L and L2C bidirectional affix mappings
$this->addMappings( $this->prefixMapping,
- $this->Cyrl2LatnPatterns, $this->Latn2CyrlPatterns, false, '/'.self::WB, '/u' );
+ $this->Cyrl2LatnPatterns, $this->Latn2CyrlPatterns, false, '/' . self::WB, '/u' );
$this->addMappings( $this->suffixMapping,
- $this->Cyrl2LatnPatterns, $this->Latn2CyrlPatterns, false, '/', self::WB.'/u' );
+ $this->Cyrl2LatnPatterns, $this->Latn2CyrlPatterns, false, '/', self::WB . '/u' );
# tack on one-way mappings to the ends of the prefix and suffix patterns
$this->Cyrl2LatnPatterns += $this->Cyrl2LatnRegexes;
'му([иэИЭ])' => 'mü$1',
# originally L2C, here swapped
- 'роль$1' => 'rol([^ü]|'.self::WB.')',
- 'усть$1' => 'üst([^ü]|'.self::WB.')',
+ 'роль$1' => 'rol([^ü]|' . self::WB . ')',
+ 'усть$1' => 'üst([^ü]|' . self::WB . ')',
# more prefixes
'ком-кок' => 'köm-kök',
// TODO: refactor upper/lower/first capital whole words without
// regexes into simpler list
- '/'.self::WB.'КъЮШ'.self::WB.'/u' => 'QYŞ',
- '/'.self::WB.'ЮШ'.self::WB.'/u' => 'YŞ',
-
- '/'.self::WB.'кок'.self::WB.'/u' => 'kök',
- '/'.self::WB.'Кок'.self::WB.'/u' => 'Kök',
- '/'.self::WB.'КОК'.self::WB.'/u' => 'KÖK',
- '/'.self::WB.'ком-кок'.self::WB.'/u' => 'köm-kök',
- '/'.self::WB.'Ком-кок'.self::WB.'/u' => 'Köm-kök',
- '/'.self::WB.'КОМ-КОК'.self::WB.'/u' => 'KÖM-KÖK',
-
- '/'.self::WB.'коп'.self::WB.'/u' => 'köp',
- '/'.self::WB.'Коп'.self::WB.'/u' => 'Köp',
- '/'.self::WB.'КОП'.self::WB.'/u' => 'KÖP',
-
- '/'.self::WB.'курк'.self::WB.'/u' => 'kürk',
- '/'.self::WB.'Курк'.self::WB.'/u' => 'Kürk',
- '/'.self::WB.'КУРК'.self::WB.'/u' => 'KÜRK',
-
- '/'.self::WB.'ог'.self::WB.'/u' => 'ög',
- '/'.self::WB.'Ог'.self::WB.'/u' => 'Ög',
- '/'.self::WB.'ОГ'.self::WB.'/u' => 'ÖG',
-
- '/'.self::WB.'юрип'.self::WB.'/u' => 'yürip',
- '/'.self::WB.'Юрип'.self::WB.'/u' => 'Yürip',
- '/'.self::WB.'ЮРИП'.self::WB.'/u' => 'YÜRİP',
-
- '/'.self::WB.'юз'.self::WB.'/u' => 'yüz',
- '/'.self::WB.'Юз'.self::WB.'/u' => 'Yüz',
- '/'.self::WB.'ЮЗ'.self::WB.'/u' => 'YÜZ',
-
- '/'.self::WB.'юк'.self::WB.'/u' => 'yük',
- '/'.self::WB.'Юк'.self::WB.'/u' => 'Yük',
- '/'.self::WB.'ЮК'.self::WB.'/u' => 'YÜK',
-
- '/'.self::WB.'буюп'.self::WB.'/u' => 'büyüp',
- '/'.self::WB.'Буюп'.self::WB.'/u' => 'Büyüp',
- '/'.self::WB.'БУЮП'.self::WB.'/u' => 'BÜYÜP',
-
- '/'.self::WB.'буюк'.self::WB.'/u' => 'büyük',
- '/'.self::WB.'Буюк'.self::WB.'/u' => 'Büyük',
- '/'.self::WB.'БУЮК'.self::WB.'/u' => 'BÜYÜK',
-
- '/'.self::WB.'джонк'.self::WB.'/u' => 'cönk',
- '/'.self::WB.'Джонк'.self::WB.'/u' => 'Cönk',
- '/'.self::WB.'ДЖОНК'.self::WB.'/u' => 'CÖNK',
- '/'.self::WB.'джонкю'.self::WB.'/u' => 'cönkü',
- '/'.self::WB.'Джонкю'.self::WB.'/u' => 'Cönkü',
- '/'.self::WB.'ДЖОНКЮ'.self::WB.'/u' => 'CÖNKÜ',
-
- '/'.self::WB.'куркчи/u' => 'kürkçi',
- '/'.self::WB.'Куркчи/u' => 'Kürkçi',
- '/'.self::WB.'КУРКЧИ/u' => 'KÜRKÇI',
-
- '/'.self::WB.'устке'.self::WB.'/u' => 'üstke',
- '/'.self::WB.'Устке'.self::WB.'/u' => 'Üstke',
- '/'.self::WB.'УСТКЕ'.self::WB.'/u' => 'ÜSTKE',
- '/'.self::WB.'устте'.self::WB.'/u' => 'üstte',
- '/'.self::WB.'Устте'.self::WB.'/u' => 'Üstte',
- '/'.self::WB.'УСТТЕ'.self::WB.'/u' => 'ÜSTTE',
- '/'.self::WB.'усттен'.self::WB.'/u' => 'üstten',
- '/'.self::WB.'Усттен'.self::WB.'/u' => 'Üstten',
- '/'.self::WB.'УСТТЕН'.self::WB.'/u' => 'ÜSTTEN',
+ '/' . self::WB . 'КъЮШ' . self::WB . '/u' => 'QYŞ',
+ '/' . self::WB . 'ЮШ' . self::WB . '/u' => 'YŞ',
+
+ '/' . self::WB . 'кок' . self::WB . '/u' => 'kök',
+ '/' . self::WB . 'Кок' . self::WB . '/u' => 'Kök',
+ '/' . self::WB . 'КОК' . self::WB . '/u' => 'KÖK',
+ '/' . self::WB . 'ком-кок' . self::WB . '/u' => 'köm-kök',
+ '/' . self::WB . 'Ком-кок' . self::WB . '/u' => 'Köm-kök',
+ '/' . self::WB . 'КОМ-КОК' . self::WB . '/u' => 'KÖM-KÖK',
+
+ '/' . self::WB . 'коп' . self::WB . '/u' => 'köp',
+ '/' . self::WB . 'Коп' . self::WB . '/u' => 'Köp',
+ '/' . self::WB . 'КОП' . self::WB . '/u' => 'KÖP',
+
+ '/' . self::WB . 'курк' . self::WB . '/u' => 'kürk',
+ '/' . self::WB . 'Курк' . self::WB . '/u' => 'Kürk',
+ '/' . self::WB . 'КУРК' . self::WB . '/u' => 'KÜRK',
+
+ '/' . self::WB . 'ог' . self::WB . '/u' => 'ög',
+ '/' . self::WB . 'Ог' . self::WB . '/u' => 'Ög',
+ '/' . self::WB . 'ОГ' . self::WB . '/u' => 'ÖG',
+
+ '/' . self::WB . 'юрип' . self::WB . '/u' => 'yürip',
+ '/' . self::WB . 'Юрип' . self::WB . '/u' => 'Yürip',
+ '/' . self::WB . 'ЮРИП' . self::WB . '/u' => 'YÜRİP',
+
+ '/' . self::WB . 'юз' . self::WB . '/u' => 'yüz',
+ '/' . self::WB . 'Юз' . self::WB . '/u' => 'Yüz',
+ '/' . self::WB . 'ЮЗ' . self::WB . '/u' => 'YÜZ',
+
+ '/' . self::WB . 'юк' . self::WB . '/u' => 'yük',
+ '/' . self::WB . 'Юк' . self::WB . '/u' => 'Yük',
+ '/' . self::WB . 'ЮК' . self::WB . '/u' => 'YÜK',
+
+ '/' . self::WB . 'буюп' . self::WB . '/u' => 'büyüp',
+ '/' . self::WB . 'Буюп' . self::WB . '/u' => 'Büyüp',
+ '/' . self::WB . 'БУЮП' . self::WB . '/u' => 'BÜYÜP',
+
+ '/' . self::WB . 'буюк' . self::WB . '/u' => 'büyük',
+ '/' . self::WB . 'Буюк' . self::WB . '/u' => 'Büyük',
+ '/' . self::WB . 'БУЮК' . self::WB . '/u' => 'BÜYÜK',
+
+ '/' . self::WB . 'джонк' . self::WB . '/u' => 'cönk',
+ '/' . self::WB . 'Джонк' . self::WB . '/u' => 'Cönk',
+ '/' . self::WB . 'ДЖОНК' . self::WB . '/u' => 'CÖNK',
+ '/' . self::WB . 'джонкю' . self::WB . '/u' => 'cönkü',
+ '/' . self::WB . 'Джонкю' . self::WB . '/u' => 'Cönkü',
+ '/' . self::WB . 'ДЖОНКЮ' . self::WB . '/u' => 'CÖNKÜ',
+
+ '/' . self::WB . 'куркчи/u' => 'kürkçi',
+ '/' . self::WB . 'Куркчи/u' => 'Kürkçi',
+ '/' . self::WB . 'КУРКЧИ/u' => 'KÜRKÇI',
+
+ '/' . self::WB . 'устке' . self::WB . '/u' => 'üstke',
+ '/' . self::WB . 'Устке' . self::WB . '/u' => 'Üstke',
+ '/' . self::WB . 'УСТКЕ' . self::WB . '/u' => 'ÜSTKE',
+ '/' . self::WB . 'устте' . self::WB . '/u' => 'üstte',
+ '/' . self::WB . 'Устте' . self::WB . '/u' => 'Üstte',
+ '/' . self::WB . 'УСТТЕ' . self::WB . '/u' => 'ÜSTTE',
+ '/' . self::WB . 'усттен' . self::WB . '/u' => 'üstten',
+ '/' . self::WB . 'Усттен' . self::WB . '/u' => 'Üstten',
+ '/' . self::WB . 'УСТТЕН' . self::WB . '/u' => 'ÜSTTEN',
# отдельно стоящие Ё и Я
# stand-alone Ё and Я
- '/'.self::WB.'Я'.self::WB.'/u' => 'Ya',
- '/'.self::WB.'Ё'.self::WB.'/u' => 'Yo',
+ '/' . self::WB . 'Я' . self::WB . '/u' => 'Ya',
+ '/' . self::WB . 'Ё' . self::WB . '/u' => 'Yo',
############################
# относятся к началу слова #
# word prefixes #
############################
- '/'.self::WB.'КъЮШн/u' => 'QYŞn',
- '/'.self::WB.'ЮШн/u' => 'YŞn',
+ '/' . self::WB . 'КъЮШн/u' => 'QYŞn',
+ '/' . self::WB . 'ЮШн/u' => 'YŞn',
# need to convert digraphs (гъ, къ, нъ, дж) now to match patterns
'/гъ/u' => 'ğ',
'/Д[жЖ]/u' => 'C',
# о => ö
- '/'.self::WB.'(['.Crh::C_M_CONS.'])о(['.Crh::C_CONS.'])(['.Crh::C_CONS.'])([еиэюьü])/u'
- => '$1ö$2$3$4',
- '/'.self::WB.'о(['.Crh::C_CONS.'])(['.Crh::C_CONS.'])([еиэюьü])/u' => 'ö$1$2$3',
- '/'.self::WB.'(['.Crh::C_M_CONS.'])О(['.Crh::C_CONS.'])(['.Crh::C_CONS.'])([еиэюьüЕИЭЮЬÜ])/u'
- => '$1Ö$2$3$4',
- '/'.self::WB.'О(['.Crh::C_CONS.'])(['.Crh::C_CONS.'])([еиэюьüЕИЭЮЬÜ])/u' => 'Ö$1$2$3',
-
- '/'.self::WB.'(['.Crh::C_M_CONS.'])о(['.Crh::C_CONS.'])([еиэюьü])/u' => '$1ö$2$3',
- '/'.self::WB.'о(['.Crh::C_CONS.'])([еиэюьü])/u' => 'ö$1$2',
- '/'.self::WB.'(['.Crh::C_M_CONS.'])О(['.Crh::C_CONS.'])([еиэюьüЕИЭЮЬÜ])/u' => '$1Ö$2$3',
- '/'.self::WB.'О(['.Crh::C_CONS.'])([еиэюьüЕИЭЮЬÜ])/u' => 'Ö$1$2',
+ '/' . self::WB . '([' . Crh::C_M_CONS . '])о([' . Crh::C_CONS . '])([' . Crh::C_CONS .
+ '])([еиэюьü])/u' => '$1ö$2$3$4',
+ '/' . self::WB . 'о([' . Crh::C_CONS . '])([' . Crh::C_CONS . '])([еиэюьü])/u' => 'ö$1$2$3',
+ '/' . self::WB . '([' . Crh::C_M_CONS . '])О([' . Crh::C_CONS . '])([' . Crh::C_CONS .
+ '])([еиэюьüЕИЭЮЬÜ])/u' => '$1Ö$2$3$4',
+ '/' . self::WB . 'О([' . Crh::C_CONS . '])([' . Crh::C_CONS . '])([еиэюьüЕИЭЮЬÜ])/u'
+ => 'Ö$1$2$3',
+
+ '/' . self::WB . '([' . Crh::C_M_CONS . '])о([' . Crh::C_CONS . '])([еиэюьü])/u' => '$1ö$2$3',
+ '/' . self::WB . 'о([' . Crh::C_CONS . '])([еиэюьü])/u' => 'ö$1$2',
+ '/' . self::WB . '([' . Crh::C_M_CONS . '])О([' . Crh::C_CONS . '])([еиэюьüЕИЭЮЬÜ])/u'
+ => '$1Ö$2$3',
+ '/' . self::WB . 'О([' . Crh::C_CONS . '])([еиэюьüЕИЭЮЬÜ])/u' => 'Ö$1$2',
# ё => yö
- '/'.self::WB.'ё(['.Crh::C_CONS.'])(['.Crh::C_CONS.'])([ьеюü])/u' => 'yö$1$2$3',
- '/'.self::WB.'Ё(['.Crh::C_CONS_LC.'])(['.Crh::C_CONS_LC.'])([ьеюü])/u' => 'Yö$1$2$3',
- '/'.self::WB.'Ё(['.Crh::C_CONS_UC.'])(['.Crh::C_CONS_UC.'])([ЬЕЮÜ])/u' => 'YÖ$1$2$3',
- '/'.self::WB.'ё(['.Crh::C_CONS.'])([ьеюü])/u' => 'yö$1$2',
- '/'.self::WB.'Ё(['.Crh::C_CONS_LC.'])([ьеюü])/u' => 'Yö$1$2',
- '/'.self::WB.'Ё(['.Crh::C_CONS_UC.'])([ЬЕЮÜ])/u' => 'YÖ$1$2',
+ '/' . self::WB . 'ё([' . Crh::C_CONS . '])([' . Crh::C_CONS . '])([ьеюü])/u' => 'yö$1$2$3',
+ '/' . self::WB . 'Ё([' . Crh::C_CONS_LC . '])([' . Crh::C_CONS_LC . '])([ьеюü])/u' => 'Yö$1$2$3',
+ '/' . self::WB . 'Ё([' . Crh::C_CONS_UC . '])([' . Crh::C_CONS_UC . '])([ЬЕЮÜ])/u' => 'YÖ$1$2$3',
+ '/' . self::WB . 'ё([' . Crh::C_CONS . '])([ьеюü])/u' => 'yö$1$2',
+ '/' . self::WB . 'Ё([' . Crh::C_CONS_LC . '])([ьеюü])/u' => 'Yö$1$2',
+ '/' . self::WB . 'Ё([' . Crh::C_CONS_UC . '])([ЬЕЮÜ])/u' => 'YÖ$1$2',
# у => ü, ую => üyü
- '/'.self::WB.'(['.Crh::C_M_CONS.'])у(['.Crh::C_CONS.'])(['.Crh::C_CONS.'])([еиэюьü])/u'
- => '$1ü$2$3$4',
- '/'.self::WB.'у(['.Crh::C_CONS.'])(['.Crh::C_CONS.'])([еиэюьü])/u' => 'ü$1$2$3',
- '/'.self::WB.'ую(['.Crh::C_CONS.'])(['.Crh::C_CONS.'])([еиэюьü])/u' => 'üyü$1$2$3',
- '/'.self::WB.'(['.Crh::C_M_CONS.'])У(['.Crh::C_CONS.'])(['.Crh::C_CONS.'])([еиэюьüЕИЭЮЬÜ])/u'
- => '$1Ü$2$3$4',
- '/'.self::WB.'У(['.Crh::C_CONS.'])(['.Crh::C_CONS.'])([еиэюьüЕИЭЮЬÜ])/u' => 'Ü$1$2$3',
- '/'.self::WB.'Ую(['.Crh::C_CONS.'])(['.Crh::C_CONS.'])([еиэюьü])/u' => 'Üyü$1$2$3',
- '/'.self::WB.'УЮ(['.Crh::C_CONS.'])(['.Crh::C_CONS.'])([еиэюьü])/u' => 'ÜYÜ$1$2$3',
-
- '/'.self::WB.'(['.Crh::C_M_CONS.'])у(['.Crh::C_CONS.'])([еиэюьü])/u' => '$1ü$2$3',
- '/'.self::WB.'у(['.Crh::C_CONS.'])([еиэюьü])/u' => 'ü$1$2',
- '/'.self::WB.'ую(['.Crh::C_CONS.'])([еиэюьü])/u' => 'üyü$1$2',
- '/'.self::WB.'(['.Crh::C_M_CONS.'])У(['.Crh::C_CONS.'])([еиэюьüЕИЭЮЬÜ])/u' => '$1Ü$2$3',
- '/'.self::WB.'У(['.Crh::C_CONS.'])([еиэюьüЕИЭЮЬÜ])/u' => 'Ü$1$2',
- '/'.self::WB.'Ую(['.Crh::C_CONS.'])([еиэюьü])/u' => 'Üyü$1$2',
- '/'.self::WB.'УЮ(['.Crh::C_CONS.'])([еиэюьü])/u' => 'ÜYÜ$1$2',
+ '/' . self::WB . '([' . Crh::C_M_CONS . '])у([' . Crh::C_CONS . '])([' . Crh::C_CONS .
+ '])([еиэюьü])/u' => '$1ü$2$3$4',
+ '/' . self::WB . 'у([' . Crh::C_CONS . '])([' . Crh::C_CONS . '])([еиэюьü])/u' => 'ü$1$2$3',
+ '/' . self::WB . 'ую([' . Crh::C_CONS . '])([' . Crh::C_CONS . '])([еиэюьü])/u' => 'üyü$1$2$3',
+ '/' . self::WB . '([' . Crh::C_M_CONS . '])У([' . Crh::C_CONS . '])([' . Crh::C_CONS .
+ '])([еиэюьüЕИЭЮЬÜ])/u' => '$1Ü$2$3$4',
+ '/' . self::WB . 'У([' . Crh::C_CONS . '])([' . Crh::C_CONS . '])([еиэюьüЕИЭЮЬÜ])/u'
+ => 'Ü$1$2$3',
+ '/' . self::WB . 'Ую([' . Crh::C_CONS . '])([' . Crh::C_CONS . '])([еиэюьü])/u' => 'Üyü$1$2$3',
+ '/' . self::WB . 'УЮ([' . Crh::C_CONS . '])([' . Crh::C_CONS . '])([еиэюьü])/u' => 'ÜYÜ$1$2$3',
+
+ '/' . self::WB . '([' . Crh::C_M_CONS . '])у([' . Crh::C_CONS . '])([еиэюьü])/u' => '$1ü$2$3',
+ '/' . self::WB . 'у([' . Crh::C_CONS . '])([еиэюьü])/u' => 'ü$1$2',
+ '/' . self::WB . 'ую([' . Crh::C_CONS . '])([еиэюьü])/u' => 'üyü$1$2',
+ '/' . self::WB . '([' . Crh::C_M_CONS . '])У([' . Crh::C_CONS . '])([еиэюьüЕИЭЮЬÜ])/u'
+ => '$1Ü$2$3',
+ '/' . self::WB . 'У([' . Crh::C_CONS . '])([еиэюьüЕИЭЮЬÜ])/u' => 'Ü$1$2',
+ '/' . self::WB . 'Ую([' . Crh::C_CONS . '])([еиэюьü])/u' => 'Üyü$1$2',
+ '/' . self::WB . 'УЮ([' . Crh::C_CONS . '])([еиэюьü])/u' => 'ÜYÜ$1$2',
# ю => yü
- '/'.self::WB.'([аыоуеиёюАЫОУЕИЁЮ]?)ю(['.Crh::C_CONS.'])(['.Crh::C_CONS.'])([ьеюü])/u'
+ '/' . self::WB . '([аыоуеиёюАЫОУЕИЁЮ]?)ю([' . Crh::C_CONS . '])([' . Crh::C_CONS . '])([ьеюü])/u'
=> '$1yü$2$3$4',
- '/'.self::WB.'([АЫОУЕИЁЮ]?)Ю(['.Crh::C_CONS_LC.'])(['.Crh::C_CONS_LC.'])([ьеюü])/u'
+ '/' . self::WB . '([АЫОУЕИЁЮ]?)Ю([' . Crh::C_CONS_LC . '])([' . Crh::C_CONS_LC . '])([ьеюü])/u'
=> '$1Yü$2$3$4',
- '/'.self::WB.'([АЫОУЕИЁЮ]?)Ю(['.Crh::C_CONS_UC.'])(['.Crh::C_CONS_UC.'])([ЬЕЮÜ])/u'
+ '/' . self::WB . '([АЫОУЕИЁЮ]?)Ю([' . Crh::C_CONS_UC . '])([' . Crh::C_CONS_UC . '])([ЬЕЮÜ])/u'
=> '$1YÜ$2$3$4',
- '/'.self::WB.'([аыоуеиёюАЫОУЕИЁЮ]?)ю(['.Crh::C_CONS.'])([ьеюü])/u' => '$1yü$2$3',
- '/'.self::WB.'([АЫОУЕИЁЮ]?)Ю(['.Crh::C_CONS_LC.'])([ьеюü])/u' => '$1Yü$2$3',
- '/'.self::WB.'([АЫОУЕИЁЮ]?)Ю(['.Crh::C_CONS_UC.'])([ЬЕЮÜ])/u' => '$1YÜ$2$3',
+ '/' . self::WB . '([аыоуеиёюАЫОУЕИЁЮ]?)ю([' . Crh::C_CONS . '])([ьеюü])/u' => '$1yü$2$3',
+ '/' . self::WB . '([АЫОУЕИЁЮ]?)Ю([' . Crh::C_CONS_LC . '])([ьеюü])/u' => '$1Yü$2$3',
+ '/' . self::WB . '([АЫОУЕИЁЮ]?)Ю([' . Crh::C_CONS_UC . '])([ЬЕЮÜ])/u' => '$1YÜ$2$3',
# e => ye, я => ya
- '/'.self::WB.'е/u' => 'ye',
- '/'.self::WB.'Е(['.Crh::C_LC.'cğñqöü])/u' => 'Ye$1',
- '/'.self::WB.'Е(['.Crh::C_UC.'CĞÑQÖÜ])/u' => 'YE$1',
- '/'.self::WB.'я/u' => 'ya',
- '/'.self::WB.'Я(['.Crh::C_LC.'cğñqöü])/u' => 'Ya$1',
- '/'.self::WB.'Я(['.Crh::C_UC.'CĞÑQÖÜ])/u' => 'YA$1',
+ '/' . self::WB . 'е/u' => 'ye',
+ '/' . self::WB . 'Е([' . Crh::C_LC . 'cğñqöü])/u' => 'Ye$1',
+ '/' . self::WB . 'Е([' . Crh::C_UC . 'CĞÑQÖÜ])/u' => 'YE$1',
+ '/' . self::WB . 'я/u' => 'ya',
+ '/' . self::WB . 'Я([' . Crh::C_LC . 'cğñqöü])/u' => 'Ya$1',
+ '/' . self::WB . 'Я([' . Crh::C_UC . 'CĞÑQÖÜ])/u' => 'YA$1',
'/([аеёиоуыэюяйьъaeöüАЕЁИОУЫЭЮЯЙЬЪAEÖÜ])е/u' => '$1ye',
- '/([аеёиоуыэюяйьъaeöüАЕЁИОУЫЭЮЯЙЬЪAEÖÜ])Е(['.Crh::C_LC.'cğñqöü])/u' => '$1Ye$2',
- '/([аеёиоуыэюяйьъaeöüАЕЁИОУЫЭЮЯЙЬЪAEÖÜ])Е(['.Crh::C_UC.'CĞÑQÖÜ])/u' => '$1YE$2',
+ '/([аеёиоуыэюяйьъaeöüАЕЁИОУЫЭЮЯЙЬЪAEÖÜ])Е([' . Crh::C_LC . 'cğñqöü])/u' => '$1Ye$2',
+ '/([аеёиоуыэюяйьъaeöüАЕЁИОУЫЭЮЯЙЬЪAEÖÜ])Е([' . Crh::C_UC . 'CĞÑQÖÜ])/u' => '$1YE$2',
'/([аеёиоуыэюяйьъaeöüğqАЕЁИОУЫЭЮЯЙЬЪAEÖÜĞQ])я/u' => '$1ya',
- '/([аеёиоуыэюяйьъaeöüğqАЕЁИОУЫЭЮЯЙЬЪAEÖÜĞQ])Я(['.Crh::C_LC.'cğñqöü])/u' => '$1Ya$2',
- '/([аеёиоуыэюяйьъaeöüğqАЕЁИОУЫЭЮЯЙЬЪAEÖÜĞQ])Я(['.Crh::C_UC.'CĞÑQÖÜ])/u' => '$1YA$2',
+ '/([аеёиоуыэюяйьъaeöüğqАЕЁИОУЫЭЮЯЙЬЪAEÖÜĞQ])Я([' . Crh::C_LC . 'cğñqöü])/u' => '$1Ya$2',
+ '/([аеёиоуыэюяйьъaeöüğqАЕЁИОУЫЭЮЯЙЬЪAEÖÜĞQ])Я([' . Crh::C_UC . 'CĞÑQÖÜ])/u' => '$1YA$2',
###############################
# не зависят от места в слове #
# Ö, Ü 1-й заход: ё, ю после согласных > ö, ü
# Ö, Ü 1st instance: ё, ю after consonants > ö, ü
- '/(['.Crh::C_CONS.'])ю/u' => '$1ü',
- '/(['.Crh::C_CONS.'])Ю/u' => '$1Ü',
- '/(['.Crh::C_CONS.'])ё/u' => '$1ö',
- '/(['.Crh::C_CONS.'])Ё/u' => '$1Ö',
+ '/([' . Crh::C_CONS . '])ю/u' => '$1ü',
+ '/([' . Crh::C_CONS . '])Ю/u' => '$1Ü',
+ '/([' . Crh::C_CONS . '])ё/u' => '$1ö',
+ '/([' . Crh::C_CONS . '])Ё/u' => '$1Ö',
# остальные вхождения о, у, ё, ю
# other occurences of о, у, ё, ю
- '/Ё(['.Crh::C_UC.'CĞÑQÖÜ])/u' => 'YO$1',
- '/Ю(['.Crh::C_UC.'CĞÑQÖÜ])/u' => 'YU$1',
+ '/Ё([' . Crh::C_UC . 'CĞÑQÖÜ])/u' => 'YO$1',
+ '/Ю([' . Crh::C_UC . 'CĞÑQÖÜ])/u' => 'YU$1',
# Ц & Щ
- '/Ц(['.Crh::C_UC.'CĞÑQÖÜ])/u' => 'TS$1',
- '/Щ(['.Crh::C_UC.'CĞÑQÖÜ])/u' => 'ŞÇ$1',
+ '/Ц([' . Crh::C_UC . 'CĞÑQÖÜ])/u' => 'TS$1',
+ '/Щ([' . Crh::C_UC . 'CĞÑQÖÜ])/u' => 'ŞÇ$1',
];
$this->Latn2CyrlRegexes = [
// TODO: refactor upper/lower/first capital whole words without
// regexes into simpler list
- '/'.self::WB.'an'.self::WB.'/u' => 'ань',
- '/'.self::WB.'An'.self::WB.'/u' => 'Ань',
- '/'.self::WB.'AN'.self::WB.'/u' => 'АНЬ',
- '/'.self::WB.'ange'.self::WB.'/u' => 'аньге',
- '/'.self::WB.'Ange'.self::WB.'/u' => 'Аньге',
- '/'.self::WB.'ANGE'.self::WB.'/u' => 'АНЬГЕ',
- '/'.self::WB.'ande'.self::WB.'/u' => 'аньде',
- '/'.self::WB.'Ande'.self::WB.'/u' => 'Аньде',
- '/'.self::WB.'ANDE'.self::WB.'/u' => 'АНЬДЕ',
- '/'.self::WB.'anki'.self::WB.'/u' => 'аньки',
- '/'.self::WB.'Anki'.self::WB.'/u' => 'Аньки',
- '/'.self::WB.'ANKİ'.self::WB.'/u' => 'АНЬКИ',
- '/'.self::WB.'deral'.self::WB.'/u' => 'деръал',
- '/'.self::WB.'Deral'.self::WB.'/u' => 'Деръал',
- '/'.self::WB.'DERAL'.self::WB.'/u' => 'ДЕРЪАЛ',
- '/'.self::WB.'kör'.self::WB.'/u' => 'кёр',
- '/'.self::WB.'Kör'.self::WB.'/u' => 'Кёр',
- '/'.self::WB.'KÖR'.self::WB.'/u' => 'КЁР',
- '/'.self::WB.'mer'.self::WB.'/u' => 'мэр',
- '/'.self::WB.'Mer'.self::WB.'/u' => 'Мэр',
- '/'.self::WB.'MER'.self::WB.'/u' => 'МЭР',
-
- '/'.self::WB.'cönk/u' => 'джонк',
- '/'.self::WB.'Cönk/u' => 'Джонк',
- '/'.self::WB.'CÖNK/u' => 'ДЖОНК',
+ '/' . self::WB . 'an' . self::WB . '/u' => 'ань',
+ '/' . self::WB . 'An' . self::WB . '/u' => 'Ань',
+ '/' . self::WB . 'AN' . self::WB . '/u' => 'АНЬ',
+ '/' . self::WB . 'ange' . self::WB . '/u' => 'аньге',
+ '/' . self::WB . 'Ange' . self::WB . '/u' => 'Аньге',
+ '/' . self::WB . 'ANGE' . self::WB . '/u' => 'АНЬГЕ',
+ '/' . self::WB . 'ande' . self::WB . '/u' => 'аньде',
+ '/' . self::WB . 'Ande' . self::WB . '/u' => 'Аньде',
+ '/' . self::WB . 'ANDE' . self::WB . '/u' => 'АНЬДЕ',
+ '/' . self::WB . 'anki' . self::WB . '/u' => 'аньки',
+ '/' . self::WB . 'Anki' . self::WB . '/u' => 'Аньки',
+ '/' . self::WB . 'ANKİ' . self::WB . '/u' => 'АНЬКИ',
+ '/' . self::WB . 'deral' . self::WB . '/u' => 'деръал',
+ '/' . self::WB . 'Deral' . self::WB . '/u' => 'Деръал',
+ '/' . self::WB . 'DERAL' . self::WB . '/u' => 'ДЕРЪАЛ',
+ '/' . self::WB . 'kör' . self::WB . '/u' => 'кёр',
+ '/' . self::WB . 'Kör' . self::WB . '/u' => 'Кёр',
+ '/' . self::WB . 'KÖR' . self::WB . '/u' => 'КЁР',
+ '/' . self::WB . 'mer' . self::WB . '/u' => 'мэр',
+ '/' . self::WB . 'Mer' . self::WB . '/u' => 'Мэр',
+ '/' . self::WB . 'MER' . self::WB . '/u' => 'МЭР',
+
+ '/' . self::WB . 'cönk/u' => 'джонк',
+ '/' . self::WB . 'Cönk/u' => 'Джонк',
+ '/' . self::WB . 'CÖNK/u' => 'ДЖОНК',
# (y)etsin -> етсин/этсин
# note that target starts with CYRILLIC е/Е!
# буква Ё - первый заход
# расставляем Ь после согласных
- '/'.self::WB.'([yY])ö(['.Crh::L_N_CONS.'])([aAuU'.Crh::L_CONS.']|'.self::WB.')/u' => '$1ö$2ь$3',
- '/'.self::WB.'([yY])Ö(['.Crh::L_N_CONS.'])([aAuU'.Crh::L_CONS.']|'.self::WB.')/u' => '$1Ö$2Ь$3',
- '/'.self::WB.'AQŞ([^AEI]|'.self::WB.')/u' => 'АКъШ$1',
+ '/' . self::WB . '([yY])ö([' . Crh::L_N_CONS . '])([aAuU' . Crh::L_CONS . ']|' . self::WB . ')/u'
+ => '$1ö$2ь$3',
+ '/' . self::WB . '([yY])Ö([' . Crh::L_N_CONS . '])([aAuU' . Crh::L_CONS . ']|' . self::WB . ')/u'
+ => '$1Ö$2Ь$3',
+ '/' . self::WB . 'AQŞ([^AEI]|' . self::WB . ')/u' => 'АКъШ$1',
# буква Ю - первый заход
# расставляем Ь после согласных
- '/'.self::WB.'([yY])ü(['.Crh::L_N_CONS.'])([aAuU'.Crh::L_CONS.']|'.self::WB.')/u' => '$1ü$2ь$3',
- '/'.self::WB.'([yY])Ü(['.Crh::L_N_CONS.'])([aAuU'.Crh::L_CONS.']|'.self::WB.')/u' => '$1Ü$2Ь$3',
-
- '/'.self::WB.'([bcgkpşBCGKPŞ])ö(['.Crh::L_N_CONS.'])(['.Crh::L_CONS.']|'.self::WB.')/u'
- => '$1ö$2ь$3',
- '/'.self::WB.'([bcgkpşBCGKPŞ])Ö(['.Crh::L_N_CONS.'])(['.Crh::L_CONS.']|'.self::WB.')/u'
- => '$1Ö$2Ь$3',
- '/'.self::WB.'([bcgkpşBCGKPŞ])Ö(['.Crh::L_N_CONS.'])(['.Crh::L_CONS.']|'.self::WB.')/u'
- => '$1Ö$2Ь$3',
- '/'.self::WB.'([bcgkpşBCGKPŞ])ü(['.Crh::L_N_CONS.'])(['.Crh::L_CONS.']|'.self::WB.')/u'
+ '/' . self::WB . '([yY])ü([' . Crh::L_N_CONS . '])([aAuU' . Crh::L_CONS . ']|' . self::WB . ')/u'
=> '$1ü$2ь$3',
- '/'.self::WB.'([bcgkpşBCGKPŞ])Ü(['.Crh::L_N_CONS.'])(['.Crh::L_CONS.']|'.self::WB.')/u'
- => '$1Ü$2Ь$3',
- '/'.self::WB.'([bcgkpşBCGKPŞ])Ü(['.Crh::L_N_CONS.'])(['.Crh::L_CONS.']|'.self::WB.')/u'
+ '/' . self::WB . '([yY])Ü([' . Crh::L_N_CONS . '])([aAuU' . Crh::L_CONS . ']|' . self::WB . ')/u'
=> '$1Ü$2Ь$3',
+ '/' . self::WB . '([bcgkpşBCGKPŞ])ö([' . Crh::L_N_CONS . '])([' . Crh::L_CONS . ']|' .
+ self::WB . ')/u' => '$1ö$2ь$3',
+ '/' . self::WB . '([bcgkpşBCGKPŞ])Ö([' . Crh::L_N_CONS . '])([' . Crh::L_CONS . ']|' .
+ self::WB . ')/u' => '$1Ö$2Ь$3',
+ '/' . self::WB . '([bcgkpşBCGKPŞ])Ö([' . Crh::L_N_CONS . '])([' . Crh::L_CONS . ']|' .
+ self::WB . ')/u' => '$1Ö$2Ь$3',
+ '/' . self::WB . '([bcgkpşBCGKPŞ])ü([' . Crh::L_N_CONS . '])([' . Crh::L_CONS . ']|' .
+ self::WB . ')/u' => '$1ü$2ь$3',
+ '/' . self::WB . '([bcgkpşBCGKPŞ])Ü([' . Crh::L_N_CONS . '])([' . Crh::L_CONS . ']|' .
+ self::WB . ')/u' => '$1Ü$2Ь$3',
+ '/' . self::WB . '([bcgkpşBCGKPŞ])Ü([' . Crh::L_N_CONS . '])([' . Crh::L_CONS . ']|' .
+ self::WB . ')/u' => '$1Ü$2Ь$3',
+
# ö и ü в начале слова
# случаи, когда нужен Ь
- '/'.self::WB.'ö(['.Crh::L_N_CONS.'pP])(['.Crh::L_CONS.']|'.self::WB.')/u' => 'ö$1ь$2',
- '/'.self::WB.'Ö(['.Crh::L_N_CONS_LC.'p])(['.Crh::L_CONS.']|'.self::WB.')/u' => 'Ö$1ь$2',
- '/'.self::WB.'Ö(['.Crh::L_N_CONS_UC.'P])(['.Crh::L_CONS.']|'.self::WB.')/u' => 'Ö$1Ь$2',
- '/'.self::WB.'ü(['.Crh::L_N_CONS.'])(['.Crh::L_CONS.']|'.self::WB.')/u' => 'ü$1ь$2',
- '/'.self::WB.'Ü(['.Crh::L_N_CONS_LC.'])(['.Crh::L_CONS.']|'.self::WB.')/u' => 'Ü$1ь$2',
- '/'.self::WB.'Ü(['.Crh::L_N_CONS_UC.'])(['.Crh::L_CONS.']|'.self::WB.')/u' => 'Ü$1Ь$2',
-
- '/ts'.self::WB.'/u' => 'ц',
- '/şç'.self::WB.'/u' => 'щ',
- '/Ş[çÇ]'.self::WB.'/u' => 'Щ',
- '/T[sS]'.self::WB.'/u' => 'Ц',
+ '/' . self::WB . 'ö([' . Crh::L_N_CONS . 'pP])([' . Crh::L_CONS . ']|' . self::WB . ')/u'
+ => 'ö$1ь$2',
+ '/' . self::WB . 'Ö([' . Crh::L_N_CONS_LC . 'p])([' . Crh::L_CONS . ']|' . self::WB . ')/u'
+ => 'Ö$1ь$2',
+ '/' . self::WB . 'Ö([' . Crh::L_N_CONS_UC . 'P])([' . Crh::L_CONS . ']|' . self::WB . ')/u'
+ => 'Ö$1Ь$2',
+ '/' . self::WB . 'ü([' . Crh::L_N_CONS . '])([' . Crh::L_CONS . ']|' . self::WB . ')/u'
+ => 'ü$1ь$2',
+ '/' . self::WB . 'Ü([' . Crh::L_N_CONS_LC . '])([' . Crh::L_CONS . ']|' . self::WB . ')/u'
+ => 'Ü$1ь$2',
+ '/' . self::WB . 'Ü([' . Crh::L_N_CONS_UC . '])([' . Crh::L_CONS . ']|' . self::WB . ')/u'
+ => 'Ü$1Ь$2',
+
+ '/ts' . self::WB . '/u' => 'ц',
+ '/şç' . self::WB . '/u' => 'щ',
+ '/Ş[çÇ]' . self::WB . '/u' => 'Щ',
+ '/T[sS]' . self::WB . '/u' => 'Ц',
# Ь после Л
# add Ь after Л
- '/(['.Crh::L_F.'])l(['.Crh::L_CONS_LC.']|'.self::WB.')/u' => '$1ль$2',
- '/(['.Crh::L_F_UC.'])L(['.Crh::L_CONS.']|'.self::WB.')/u' => '$1ЛЬ$2',
+ '/([' . Crh::L_F . '])l([' . Crh::L_CONS_LC . ']|' . self::WB . ')/u' => '$1ль$2',
+ '/([' . Crh::L_F_UC . '])L([' . Crh::L_CONS . ']|' . self::WB . ')/u' => '$1ЛЬ$2',
# относятся к началу слова
- '/'.self::WB.'ts/u' => 'ц',
- '/'.self::WB.'T[sS]/u' => 'Ц',
+ '/' . self::WB . 'ts/u' => 'ц',
+ '/' . self::WB . 'T[sS]/u' => 'Ц',
- '/'.self::WB.'şç/u' => 'щ',
- '/'.self::WB.'Ş[çÇ]/u' => 'Щ',
+ '/' . self::WB . 'şç/u' => 'щ',
+ '/' . self::WB . 'Ş[çÇ]/u' => 'Щ',
# Э
- '/('.self::WB.'|['.Crh::L_VOW.'аеэяАЕЭЯ])e/u' => '$1э',
- '/('.self::WB.'|['.Crh::L_VOW_UC.'АЕЭЯ])E/u' => '$1Э',
+ '/(' . self::WB . '|[' . Crh::L_VOW . 'аеэяАЕЭЯ])e/u' => '$1э',
+ '/(' . self::WB . '|[' . Crh::L_VOW_UC . 'АЕЭЯ])E/u' => '$1Э',
- '/'.self::WB.'(['.Crh::L_M_CONS.'])ö/u' => '$1о',
- '/'.self::WB.'(['.Crh::L_M_CONS.'])Ö/u' => '$1О',
- '/'.self::WB.'(['.Crh::L_M_CONS.'])ü/u' => '$1у',
- '/'.self::WB.'(['.Crh::L_M_CONS.'])Ü/u' => '$1У',
+ '/' . self::WB . '([' . Crh::L_M_CONS . '])ö/u' => '$1о',
+ '/' . self::WB . '([' . Crh::L_M_CONS . '])Ö/u' => '$1О',
+ '/' . self::WB . '([' . Crh::L_M_CONS . '])ü/u' => '$1у',
+ '/' . self::WB . '([' . Crh::L_M_CONS . '])Ü/u' => '$1У',
- '/'.self::WB.'ö/u' => 'о',
- '/'.self::WB.'Ö/u' => 'О',
- '/'.self::WB.'ü/u' => 'у',
- '/'.self::WB.'Ü/u' => 'У',
+ '/' . self::WB . 'ö/u' => 'о',
+ '/' . self::WB . 'Ö/u' => 'О',
+ '/' . self::WB . 'ü/u' => 'у',
+ '/' . self::WB . 'Ü/u' => 'У',
# некоторые исключения
# some exceptions
'/T[sS][iİ]([^zZñÑ])/u' => 'ЦИ$1',
'/ts([ou])/u' => 'ц$1',
'/T[sS]([oOuU])/u' => 'Ц$1',
- '/ts(['.Crh::L_CONS.'])/u' => 'ц$1',
- '/T[sS](['.Crh::L_CONS.'])/u' => 'Ц$1',
- '/(['.Crh::L_CONS.'])ts/u' => '$1ц',
- '/(['.Crh::L_CONS.'])T[sS]/u' => '$1Ц',
+ '/ts([' . Crh::L_CONS . '])/u' => 'ц$1',
+ '/T[sS]([' . Crh::L_CONS . '])/u' => 'Ц$1',
+ '/([' . Crh::L_CONS . '])ts/u' => '$1ц',
+ '/([' . Crh::L_CONS . '])T[sS]/u' => '$1Ц',
'/tsиал/u' => 'циал',
'/TSИАЛ/u' => 'ЦИАЛ',
'/[ьЬ]([iİ])/u' => '$1',
# ya & ye
- '/(['.Crh::L_CONS.'])ya/u' => '$1ья',
- '/(['.Crh::L_CONS.'])Y[aA]/u' => '$1ЬЯ',
- '/(['.Crh::L_CONS.'])ye/u' => '$1ье',
- '/(['.Crh::L_CONS.'])Y[eE]/u' => '$1ЬЕ',
+ '/([' . Crh::L_CONS . '])ya/u' => '$1ья',
+ '/([' . Crh::L_CONS . '])Y[aA]/u' => '$1ЬЯ',
+ '/([' . Crh::L_CONS . '])ye/u' => '$1ье',
+ '/([' . Crh::L_CONS . '])Y[eE]/u' => '$1ЬЕ',
# расставляем Ь перед Ё
# place Ь in front of Ё
- '/(['.Crh::L_CONS.'])y[oö]/u' => '$1ьё',
- '/(['.Crh::L_CONS.'])Y[oOöÖ]/u' => '$1ЬЁ',
+ '/([' . Crh::L_CONS . '])y[oö]/u' => '$1ьё',
+ '/([' . Crh::L_CONS . '])Y[oOöÖ]/u' => '$1ЬЁ',
# оставшиеся вхождения yo и yö
# remaining occurrences of yo and yö
'/y[oö]/u' => 'ё',
# расставляем Ь перед Ю
# place Ь in front of Ю
- '/(['.Crh::L_CONS.'])y[uü]/u' => '$1ью',
- '/(['.Crh::L_CONS.'])Y[uUüÜ]/u' => '$1ЬЮ',
+ '/([' . Crh::L_CONS . '])y[uü]/u' => '$1ью',
+ '/([' . Crh::L_CONS . '])Y[uUüÜ]/u' => '$1ЬЮ',
# оставшиеся вхождения yu и yü
# remaining occurrences of yu and yü
'/y[uü]/u' => 'ю',
'/[ьЬ]([aA])/u' => '$1',
# дж
- '/C(['.Crh::L_UC.Crh::C_UC.'АЕЁЙОУЭЮЯ])/u' => 'ДЖ$1',
- '/(['.Crh::L_UC.Crh::C_UC.'АЕЁЙОУЭЮЯ])C/u' => '$1ДЖ',
+ '/C([' . Crh::L_UC . Crh::C_UC . 'АЕЁЙОУЭЮЯ])/u' => 'ДЖ$1',
+ '/([' . Crh::L_UC . Crh::C_UC . 'АЕЁЙОУЭЮЯ])C/u' => '$1ДЖ',
# гъ, къ, нъ
- '/Ğ(['.Crh::L_UC.Crh::C_UC.'])/u' => 'ГЪ$1',
- '/(['.Crh::L_UC.Crh::C_UC.'Ъ])Ğ/u' => '$1ГЪ',
+ '/Ğ([' . Crh::L_UC . Crh::C_UC . '])/u' => 'ГЪ$1',
+ '/([' . Crh::L_UC . Crh::C_UC . 'Ъ])Ğ/u' => '$1ГЪ',
- '/Q(['.Crh::L_UC.Crh::C_UC.'])/u' => 'КЪ$1',
- '/(['.Crh::L_UC.Crh::C_UC.'Ъ])Q/u' => '$1КЪ',
+ '/Q([' . Crh::L_UC . Crh::C_UC . '])/u' => 'КЪ$1',
+ '/([' . Crh::L_UC . Crh::C_UC . 'Ъ])Q/u' => '$1КЪ',
- '/Ñ(['.Crh::L_UC.Crh::C_UC.'])/u' => 'НЪ$1',
- '/(['.Crh::L_UC.Crh::C_UC.'Ъ])Ñ/u' => '$1НЪ',
+ '/Ñ([' . Crh::L_UC . Crh::C_UC . '])/u' => 'НЪ$1',
+ '/([' . Crh::L_UC . Crh::C_UC . 'Ъ])Ñ/u' => '$1НЪ',
];
}
"redirect-file": "اسم ملف",
"redirect-logid": "معرف السجل",
"redirect-not-exists": "المطلوب غير موجود",
+ "redirect-not-numeric": "قيمة غير رقمية",
"fileduplicatesearch": "بحث عن ملفات مكررة",
"fileduplicatesearch-summary": "ابحث عن الملفات المكررة بناء على قيم الهاش.",
"fileduplicatesearch-filename": "اسم الملف:",
"customcssprotected": "Nun tienes permisu pa editar esta páxina CSS porque contien preferencies personales d'otru usuariu.",
"customjsonprotected": "Nun tienes permisu pa editar esta páxina JSON porque contien preferencies personales d'otru usuariu.",
"customjsprotected": "Nun tienes permisu pa editar esta páxina de JavaScript porque contien preferencies personales d'otru usuariu.",
- "sitecssprotected": "Nun tienes permisu pa editar esta páxina de CSS porque puede afeutar a tolos visitantes",
- "sitejsonprotected": "Nun tienes permisu pa editar esta páxina en JSON porque puede afeutar a tolos visitantes",
- "sitejsprotected": "Nun tienes permisu para editar esta páxina de JavaScript porque puede afeutar a tolos visitantes",
+ "sitecssprotected": "Nun tienes permisu pa editar esta páxina de CSS porque puede afeutar a tolos visitantes.",
+ "sitejsonprotected": "Nun tienes permisu pa editar esta páxina en JSON porque puede afeutar a tolos visitantes.",
+ "sitejsprotected": "Nun tienes permisu para editar esta páxina de JavaScript porque puede afeutar a tolos visitantes.",
"mycustomcssprotected": "Nun tien permisu pa editar esta páxina CSS.",
"mycustomjsonprotected": "Nun tien permisu pa editar esta páxina JSON.",
"mycustomjsprotected": "Nun tien permisu pa editar esta páxina JavaScript.",
"redirect-file": "Nome del ficheru",
"redirect-logid": "ID del rexistru",
"redirect-not-exists": "Nun s'alcontró'l valor",
+ "redirect-not-numeric": "El valor nun ye un númberu",
"fileduplicatesearch": "Buscar archivos duplicaos",
"fileduplicatesearch-summary": "Busca archivos duplicaos basándose nos sos valores fragmentarios.",
"fileduplicatesearch-filename": "Nome del ficheru:",
"edit-error-long": "Errores:\n\n$1",
"revid": "revisión $1",
"pageid": "ID de páxina $1",
- "interfaceadmin-info": "$1\n\nLos permisos pa editar los ficheros CSS, JS y JSON globales del sitiu fueron apocayá dixebraos del permisu <code>editinterface</code>. Si nun entiendes por qué recibes esti error, por favor llei [[mw:MediaWiki_1.32/interface-admin]].",
+ "interfaceadmin-info": "$1\n\nLos permisos pa editar los ficheros CSS, JS y JSON globales del sitiu dixebráronse apocayá del permisu <code>editinterface</code>. Si nun entiendes por qué recibes esti error, llei [[mw:MediaWiki_1.32/interface-admin]].",
"rawhtml-notallowed": "Les etiquetes <html> nun pueden usase fuera de les páxines normales.",
"gotointerwiki": "Dexando {{SITENAME}}",
"gotointerwiki-invalid": "El títulu especificáu nun ye válidu.",
"backend-fail-synced": "Стан файла «$1» адрозьніваецца ад стану на ўнутраным сэрвэры сховішча",
"backend-fail-connect": "Немагчыма далучыцца да сэрвэра сховішча «$1».",
"backend-fail-internal": "Узьнікла невядомая памылка на сэрвэры сховішча «$1».",
- "backend-fail-contenttype": "Немагчыма вызначыць тып зьместу файла, які мусіць быць захаваны ў «$1».",
+ "backend-fail-contenttype": "Немагчыма вызначыць тып зьместу файлу, які павінен быць захаваны ў «$1».",
"backend-fail-batchsize": "Cховішча атрымала блёк з $1 {{PLURAL:$1|файлавай апэрацыі|файлавых апэрацыяў|файлавых апэрацыяў}}; абмежаваньне складае $2 {{PLURAL:$2|апэрацыю|апэрацыі|апэрацыяў}}.",
"backend-fail-usable": "Не атрымалася прачытаць ці запісаць файл «$1» з-за недастачы правоў ці адсутнасьці дырэкторыяў або кантэйнэраў.",
"filejournal-fail-dbconnect": "Не атрымалася злучыцца з базай зьвестак журнала для сховішча «$1».",
"right-sendemail": "Изпращане на е-писма до другите потребители",
"right-managechangetags": "Създаване и (де)активиране на [[Special:Tags|етикети]]",
"right-applychangetags": "Задаване на [[Special:Tags|етикети]] заедно с направените промени",
- "right-changetags": "Ð\94обавÑ\8fне и пÑ\80емаÑ\85ване на пÑ\80оизволни [[Special:Tags|еÑ\82икеÑ\82и]] в индивидуални редакции и записи в дневници",
- "right-deletechangetags": "Ð\98зÑ\82Ñ\80иване на [[Special:Tags|еÑ\82икеÑ\82и]] оÑ\82 базаÑ\82а на данни",
+ "right-changetags": "Ð\94обавÑ\8fне и пÑ\80емаÑ\85ване на пÑ\80оизволни [[Special:Tags|еÑ\82икеÑ\82и]] на индивидуални редакции и записи в дневници",
+ "right-deletechangetags": "Ð\98зÑ\82Ñ\80иване на [[Special:Tags|еÑ\82икеÑ\82и]] оÑ\82 базаÑ\82а оÑ\82 данни",
"grant-group-page-interaction": "Взаимодействие със страници",
"grant-group-file-interaction": "Взаимодействие с медийни файлове",
"grant-group-watchlist-interaction": "Взаимодействие с вашия списък за наблюдение",
"action-editcontentmodel": "редактиране на модела на съдържанието на страница",
"action-managechangetags": "създаване и (де)активиране на етикети",
"action-applychangetags": "прилагане на етикетите заедно с промените ви",
- "action-changetags": "добавÑ\8fне и пÑ\80емаÑ\85ване на пÑ\80оизволни еÑ\82икеÑ\82и в индивидуални редакции и записи в дневниците",
+ "action-changetags": "добавÑ\8fне и пÑ\80емаÑ\85ване на пÑ\80оизволни еÑ\82икеÑ\82и на индивидуални редакции и записи в дневниците",
"action-deletechangetags": "изтриване на етикети от базата от данни",
"action-purge": "почисти кеша на тази страница",
"nchanges": "$1 {{PLURAL:$1|промяна|промени}}",
"log": "Дневници",
"logeventslist-submit": "Показване",
"logeventslist-more-filters": "Показване на още дневници:",
- "logeventslist-patrol-log": "Ð\94невник на паÑ\82Ñ\80Ñ\83ла",
+ "logeventslist-patrol-log": "Ð\94невник на паÑ\82Ñ\80Ñ\83лиÑ\80анеÑ\82о",
"logeventslist-tag-log": "Дневник на етикетите",
"all-logs-page": "Всички публични дневници",
"alllogstext": "Смесено показване на записи от всички налични дневници в {{SITENAME}}.\nМожете да ограничите прегледа, като изберете вид на дневника, потребителско име или определена страница.",
"logempty": "Дневникът не съдържа записи, отговарящи на избрания критерий.",
- "log-title-wildcard": "Търсене на заглавия, започващи със",
+ "log-title-wildcard": "Търсене на заглавия, започващи със следния текст",
"showhideselectedlogentries": "Промяна на видимостта на избраните записи",
"log-edit-tags": "Редактиране на етикетите на избраните записи в дневника",
"checkbox-select": "Избор: $1",
"email-legend": "Изпращане на електронно писмо до друг потребител на {{SITENAME}}",
"emailfrom": "От:",
"emailto": "До:",
- "emailsubject": "Ð\9eÑ\82ноÑ\81но:",
+ "emailsubject": "Тема:",
"emailmessage": "Съобщение:",
"emailsend": "Изпращане",
"emailccme": "Изпращане на копие на писмото до автора.",
"emailccsubject": "Копие на писмото ви до $1: $2",
"emailsent": "Писмото е изпратено",
- "emailsenttext": "Ð\9fиÑ\81моÑ\82о ви беше изпратено.",
+ "emailsenttext": "Ð\9fиÑ\81моÑ\82о Ð\92и беше изпратено.",
"emailuserfooter": "Това писмо беше изпратено от $1 на {{GENDER:$2|$2}} чрез функцията „{{int:emailuser}}“ на {{SITENAME}}. Ако отговорите на писмото, вашето писмо ще бъде изпратено директно на {{GENDER:$1|първоначалния подател}}, показвайки адреса на ел. Ви поща на получателя.",
"usermessage-summary": "Оставяне на системно съобщение.",
"usermessage-editor": "Системни съобщения",
"watchlist": "Списък за наблюдение",
"mywatchlist": "Списък за наблюдение",
"watchlistfor2": "За $1 $2",
- "nowatchlist": "СпиÑ\81Ñ\8aкÑ\8aÑ\82 ви за наблюдение е празен.",
+ "nowatchlist": "СпиÑ\81Ñ\8aкÑ\8aÑ\82 Ð\92и за наблюдение е празен.",
"watchlistanontext": "За преглеждане и редактиране на списъка за наблюдение се изисква влизане в системата.",
"watchnologin": "Не сте влезли",
"addwatch": "Добавяне към списъка за наблюдение",
"undelete-header": "Прегледайте [[Special:Log/delete|дневника на изтриванията]] за текущо изтритите страници.",
"undelete-search-title": "Търсене на изтрити страници",
"undelete-search-box": "Търсене на изтрити страници",
- "undelete-search-prefix": "Показване на страници, започващи със:",
+ "undelete-search-prefix": "Показване на страници, започващи с:",
"undelete-search-full": "Показване на заглавия на страници, съдържащи:",
"undelete-search-submit": "Търсене",
"undelete-no-results": "Не са намерени страници, отговарящи на търсения критерий.",
"unblock": "Отблокиране на потребител",
"blockip": "Блокиране на {{GENDER:$1|потребител}}",
"blockiptext": "Формулярът по-долу се използва, за да се забрани правото на писане на определен IP-адрес или потребителско име.\nТова трябва да се направи само за предотвратяване прояви на вандализъм\nи в съответствие с [[{{MediaWiki:Policy-url}}|политиката за поведение]].\nНеобходимо е да се посочи и причина за блокирането (например заглавия на страници, станали обект на вандализъм).\nМожете да блокирате диапазон от IP-адреси чрез синтаксиса на [https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR]; максималният позволен диапазон е /$1 за IPv4 и /$2 за IPv6.",
- "ipaddressorusername": "IP-адрес или потребител:",
+ "ipaddressorusername": "IP-адрес или потребителско име:",
"ipbexpiry": "Срок:",
"ipbreason": "Причина:",
"ipbreason-dropdown": "* Общи причини за блокиране\n** Въвеждане на невярна информация\n** Премахване на съдържание от страниците\n** Добавяне на спам/нежелани външни препратки\n** Въвеждане на безсмислици в страниците\n** Заплашително поведение/тормоз\n** Злоупотреба с няколко потребителски сметки\n** Неприемливо потребителско име",
- "ipb-hardblock": "Спиране на възможността влезли потребители да редактират от този IP адрес",
+ "ipb-hardblock": "Спиране на възможността влезли потребители да редактират от този IP-адрес",
"ipbcreateaccount": "Забрана за създаване на потребителски сметки",
"ipbemailban": "Забрана на потребителя да праща е-поща",
"ipbenableautoblock": "Автоматично блокиране на последния IP-адрес, използван от потребителя, както и на всички останали адреси, от които се опита да редактира",
"blockipsuccesstext": "Потребител [[Special:Contributions/$1|$1]] беше блокиран(а).<br />\nМожете да прегледате пълния [[Special:BlockList|списък на блокираните потребители]].",
"ipb-blockingself": "На път сте да блокирате себе си! Наистина ли желаете да извършите това действие?",
"ipb-confirmhideuser": "На път сте да блокирате потребител, който е \"скрит потребител\". Това действие ще заличи потребителското име от всички списъци и дневници. Наистина ли желаете да направите това?",
- "ipb-edit-dropdown": "Ð\9fÑ\80иÑ\87ини за блокиране",
+ "ipb-edit-dropdown": "РедакÑ\82иÑ\80ане на пÑ\80иÑ\87иниÑ\82е за блокиране",
"ipb-unblock-addr": "Отблокиране на $1",
"ipb-unblock": "Отблокиране на потребителско име или IP-адрес",
"ipb-blocklist": "Преглед на текущите блокирания",
"confirm_purge_button": "Добре",
"confirm-purge-top": "Изчистване на складираното копие на страницата?",
"confirm-purge-bottom": "Изчистването на страница опреснява кеша и показва последната ѝ версия.",
- "confirm-watch-button": "Ð\9fоÑ\82вÑ\8aÑ\80ждаване",
- "confirm-watch-top": "Ð\94обавÑ\8fне на Ñ\81Ñ\82Ñ\80аниÑ\86аÑ\82а в Ñ\81пиÑ\81Ñ\8aка ви за наблюдение?",
+ "confirm-watch-button": "Ð\94обÑ\80е",
+ "confirm-watch-top": "Ð\94обавÑ\8fне на Ñ\81Ñ\82Ñ\80аниÑ\86аÑ\82а в Ñ\81пиÑ\81Ñ\8aка Ð\92и за наблюдение?",
"confirm-unwatch-button": "Потвърждаване",
"confirm-unwatch-top": "Премахване на страницата от списъка Ви за наблюдение?",
"confirm-rollback-button": "OK",
"currentrev": "最新版本",
"currentrev-asof": "$1 muōi-muōi siŏh-huôi biĕng-cĭk",
"revisionasof": "$1 gì bēng-buōng",
+ "revision-info": "Găk $1 iù {{GENDER:$6|$2}} có̤ gì biĕng-cĭk $7",
"previousrevision": "← Gá-gô gì bēng-buōng",
"nextrevision": "加新其版本→",
"currentrevisionlink": "最新版本",
"yourrealname": "真實姓名:",
"yourlanguage": "語言:",
"yournick": "新其簽名:",
+ "badsig": "Nguòng-sṳ̄ chiĕng-miàng ô dâng.\nGái káng-lâ HTML biēu-chiĕng.",
"email": "電批",
"prefs-help-email": "電子郵件地址是愛寫就寫其,但是如果汝𣍐記密碼咯,密碼重置其時候需要茲。",
"prefs-help-email-others": "汝也會使選擇讓其他其用戶通過汝其用戶頁面或者討論頁面懸頂其鏈接,使電子郵件來聯繫汝。其他其用戶聯繫汝其辰候,汝其電子郵件地址𣍐顯示出來。",
"boteditletter": "^",
"rc-change-size-new": "Siŭ-gāi ī-hâiu biéng có̤ $1 cê-ciék",
"rc-enhanced-hide": "囥起細節",
+ "rc-old-title": "Kī-tàu hô̤ lā̤ „$1“",
"recentchangeslinked": "相關其改變",
"recentchangeslinked-feed": "相關其改變",
"recentchangeslinked-toolbox": "Sŏng-guăng gì gāi-biéng",
"deletecomment": "原因:",
"rollback": "再修改轉去",
"rollbacklink": "duōng",
+ "rollbacklinkcount": "Huòi-tó̤i $1 huòi biĕng-cĭk",
"rollbackfailed": "轉𣍐去",
"cantrollback": "𣍐使恢復修改;最後其貢獻者是茲蜀頁其唯一其作者。",
"alreadyrolled": "𣍐使回滾最後蜀回[[User:$2|$2]] ([[User talk:$2|討論]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]])其[[:$1]]編輯;\n有其他儂已經編輯過了或者茲蜀頁已經乞回滾過了。\n\n最後蜀回茲蜀頁其修改是[[User:$3|$3]] ([[User talk:$3|討論]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]])改其。",
"tooltip-feed-atom": "Cī-siŏh-hiĕk gì Atom lài-nguòng",
"tooltip-t-contributions": "{{GENDER:$1|茲蜀隻用戶}}其貢獻單單",
"tooltip-t-emailuser": "向{{GENDER:$1|茲蜀隻用戶}}寄電批",
+ "tooltip-t-info": "Cī-siŏh-hiĕk gì gó-sâ̤ séng-sék",
"tooltip-t-upload": "Siông-diòng ùng-giông",
"tooltip-t-specialpages": "Cuòng-buô dĕk-sṳ̀-hiĕk dăng-dăng",
"tooltip-t-print": "Cī-hiĕk â̤ páh-éng gì bēng-buōng",
"watchlisttools-view": "看相關改變",
"watchlisttools-edit": "看共修改監視單",
"watchlisttools-raw": "修改原始監視單",
+ "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|tō̤-lâung]])",
"redirect": "Áng ùng-giông, ê̤ṳng-hô, hiĕk-miêng siŭ-gāi, nĭk-cé ID kó̤ tṳ̀ng-dêng-hióng",
"redirect-submit": "Kó̤",
"redirect-lookup": "Sìng-tō̤:",
"group-autoconfirmed": "Registrerede brugere",
"group-bot": "Robotter",
"group-sysop": "Administratorer",
+ "group-interface-admin": "Grænsesnitadministratorer",
"group-bureaucrat": "Bureaukrater",
"group-suppress": "Undertrykkere",
"group-all": "(alle)",
"recentchanges-page-added-to-category": "[[:$1]] tilføjet til kategori",
"recentchanges-page-added-to-category-bundled": "[[:$1]] tilføjet til kategorien, [[Special:WhatLinksHere/$1|denne side er inkluderet i andre sider]]",
"recentchanges-page-removed-from-category": "[[:$1]] fjernet fra kategori",
+ "autochange-username": "Automatisk MediaWiki-ændring",
"upload": "Læg en fil op",
"uploadbtn": "Læg en fil op",
"reuploaddesc": "Tilbage til formularen til at lægge filer op.",
"uploadstash-bad-path-invalid": "Stien er ugyldig.",
"uploadstash-bad-path-unknown-type": "Ukendt type »$1«.",
"uploadstash-file-not-found-no-object": "Kunne ikke oprette lokalt filobjekt for miniaturebillede.",
+ "uploadstash-file-too-large": "Kan ikke behandle en fil der er større end $1 bytes.",
"uploadstash-not-logged-in": "Ingen bruger er logget ind, filer skal tilhøre brugere.",
"uploadstash-wrong-owner": "Filen ($1) tilhører ikke den nuværende bruger.",
"uploadstash-no-such-key": "Ingen sådan nøgle ($1), kan ikke fjerne.",
"limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|byte|bytes}}",
"limitreport-expansiondepth": "Største udvidelsesdybde",
"limitreport-expensivefunctioncount": "Antal dyre parserfunktioner",
+ "limitreport-unstrip-size-value": "$1/$2 {{PLURAL:$2|byte|bytes}}",
"expandtemplates": "Udfold skabeloner",
"expand_templates_intro": "Denne specialside tager en tekst og udfolder alle benyttede skabeloner rekursivt.\nDen udfolder også understøttede parserfunktioner så som\n<code><nowiki>{{</nowiki>#language:…}}</code> og variabler så som \n<code><nowiki>{{</nowiki>CURRENTDAY}}</code>\nFaktisk udfolder den stort set alt i dobbelte tuborgklammer.",
"expand_templates_title": "Sammenhængstitel, for {{FULLPAGENAME}} osv.:",
"log-action-filter-move": "Flyttetype:",
"log-action-filter-patrol": "Patruljeringstype:",
"log-action-filter-protect": "Beskyttelsestype:",
+ "log-action-filter-rights": "Type af rettighedændring:",
"log-action-filter-all": "Alle",
"log-action-filter-block-block": "Blokering",
"log-action-filter-block-reblock": "Ændring af blokering",
"authform-notoken": "Mangler nøgle",
"authform-wrongtoken": "Forkert nøgle",
"specialpage-securitylevel-not-allowed-title": "Ikke tilladt",
+ "authpage-cannot-login": "Kunne ikke starte login.",
"cannotauth-not-allowed-title": "Adgang nægtet",
"cannotauth-not-allowed": "Du har ikke tilladelse til at bruge denne side",
"removecredentials": "Fjern akkreditiver",
"FriedhelmW",
"J. 'mach' wust",
"Macofe",
- "Marcell0"
+ "Marcell0",
+ "L*E*D"
]
},
"tog-hideminor": "Kleine Änderungen in den «Letzten Änderungen» ausblenden",
"tog-newpageshidepatrolled": "Kontrollierte Seiten bei den «Neuen Seiten» ausblenden",
"tog-usenewrc": "Seitenbezogene Gruppierung in den «Letzten Änderungen» und auf der Beobachtungsliste",
"tog-minordefault": "Eigene Änderungen standardmässig als minim markieren",
+ "tuesday": "Dienstag",
"january": "Januar",
"february": "Februar",
"march": "März",
"searchbutton": "Suche",
"searcharticle": "Gehe",
"printableversion": "Druckbare Version",
+ "permalink": "Permanenter Link",
"edit": "Bearbeiten",
"talkpagelinktext": "Diskussion",
"personaltools": "Meine Werkzeuge",
"talk": "Diskussion",
"views": "Ansichten",
"toolbox": "Werkzeuge",
+ "otherlanguages": "In anderen Sprachen",
+ "lastmodifiedat": "Diese Seite wurde zuletzt am $1 um $2 Uhr bearbeitet.",
"jumpto": "Wechseln zu:",
"jumptonavigation": "Navigation",
"jumptosearch": "Suche",
"aboutsite": "Über {{SITENAME}}",
"aboutpage": "Project:Über_{{SITENAME}}",
+ "currentevents": "Aktuelle Ereignisse",
+ "currentevents-url": "Project:Aktuelle Ereignisse",
"disclaimers": "Impressum",
"disclaimerpage": "Project:Impressum",
+ "mainpage": "Hauptseite",
+ "mainpage-description": "Hauptseite",
+ "portal": "Gemeinschaftsportal",
+ "portal-url": "Project:Gemeinschaftsportal",
"privacy": "Datenschutz",
"privacypage": "Project:Datenschutz",
"badaccess-groups": "Diese Aktion ist auf Benutzer beschränkt, die {{PLURAL:$2|der Gruppe|einer der Gruppen}} «$1» angehören.",
"page-rss-feed": "RSS-Feed für «$1»",
"page-atom-feed": "Atom-Feed für «$1»",
"red-link-title": "$1 (Seite nicht vorhanden)",
+ "nstab-main": "Seite",
+ "mainpage-nstab": "Hauptseite",
"missing-article": "Der Text von «$1» $2 wurde nicht in der Datenbank gefunden.\n\nDie Seite ist möglicherweise gelöscht oder verschoben worden.\n\nFalls dies nicht zutrifft, hast du eventuell einen Fehler in der Software gefunden. Bitte melde dies einem [[Special:ListUsers/sysop|Administrator]] unter Nennung der URL.",
"filecopyerror": "Die Datei «$1» konnte nicht nach «$2» kopiert werden.",
"filerenameerror": "Die Datei «$1» konnte nicht nach «$2» umbenannt werden.",
"mergehistory-autocomment": "«[[:$1]]» vereinigt nach «[[:$2]]»",
"mergehistory-comment": "«[[:$1]]» vereinigt nach «[[:$2]]»: $3",
"history-title": "$1: Versionsgeschichte",
+ "lineno": "Zeile $1:",
"searchresults-title": "Suchergebnisse für «$1»",
"searchmenu-exists": "'''Es gibt eine Seite, die den Namen «[[:$1]]» hat.'''",
"searchmenu-new": "<strong>Erstelle die Seite «[[:$1]]» in diesem Wiki.</strong> {{PLURAL:$2|0=|Siehe auch die über deine Suche gefundene Seite.|Siehe auch die gefundenen Suchergebnisse.}}",
"right-viewmyprivateinfo": "Eigene private Daten ansehen (beispielsweise E-Mail-Adresse, richtiger Name)",
"right-editmyprivateinfo": "Eigene private Daten bearbeiten (beispielsweise E-Mail-Adresse, richtiger Name)",
"right-override-export-depth": "Exportiere Seiten einschliesslich verlinkter Seiten bis zu einer Tiefe von 5",
+ "recentchanges": "Letzte Änderungen",
"recentchanges-label-plusminus": "Die Änderung der Seitengrösse in Bytes",
"rc-change-size-new": "$1 {{PLURAL:$1|Byte|Bytes}} nach der Änderung",
"rc-old-title": "ursprünglich erstellt als «$1»",
"recentchangeslinked-title": "Änderungen an Seiten, die von «$1» verlinkt sind",
+ "upload": "Datei hochladen",
"uploadtext": "Benutze dieses Formular, um neue Dateien hochzuladen.\n\nGehe zu der [[Special:FileList|Liste hochgeladener Dateien]], um vorhandene Dateien zu suchen und anzuzeigen. Siehe auch das [[Special:Log/upload|Datei-]] und [[Special:Log/delete|Lösch-Logbuch]].\n\nUm ein '''Bild''' in einer Seite zu verwenden, nutze einen Link in der folgenden Form:\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Datei.jpg]]</nowiki></code>''' – für ein Vollbild\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Datei.png|200px|thumb|left|Alternativer Text]]</nowiki></code>''' – für ein 200px breites Bild innerhalb einer Box, mit «Alternativer Text» als Bildbeschreibung\n* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:Datei.ogg]]</nowiki></code>''' – für einen direkten Link auf die Datei, ohne Darstellung der Datei",
"illegalfilename": "Der Dateiname «$1» enthält mindestens ein nicht erlaubtes Zeichen. Bitte benenne die Datei um und versuche, sie erneut hochzuladen.",
"filename-toolong": "Dateinamen dürfen nicht grösser als 240 Byte sein.",
"filedelete-success-old": "Von der Datei '''«[[Media:$1|$1]]»''' wurde die Version vom $2, $3 Uhr gelöscht.",
"filedelete-nofile": "'''«$1»''' ist nicht vorhanden.",
"filedelete-nofile-old": "Es gibt von '''«$1»''' keine archivierte Version mit den angegebenen Attributen.",
+ "randompage": "Zufällige Seite",
"randompage-nopages": "Es sind keine Seiten {{PLURAL:$2|im folgenden Namensraum|in den folgenden Namensräumen}} enthalten: «$1»",
"randomredirect-nopages": "Im Namensraum «$1» sind keine Weiterleitungen vorhanden.",
"alllogstext": "Dies ist die kombinierte Anzeige aller in {{SITENAME}} geführten Logbücher.\nDie Ausgabe kann durch die Auswahl des Logbuchtyps, des Benutzers oder des Seitentitels eingeschränkt werden (Gross-/Kleinschreibung muss beachtet werden).",
"undelete-show-file-confirm": "Bist du sicher, dass du eine gelöschte Version der Datei «<nowiki>$1</nowiki>» vom $2, $3 Uhr sehen willst?",
"blanknamespace": "(Seiten)",
"contributions-title": "Benutzerbeiträge von «$1»",
+ "whatlinkshere": "Links auf diese Seite",
"whatlinkshere-title": "Seiten, die auf «$1» verlinken",
"linkshere": "Die folgenden Seiten verlinken auf '''«$2»''':",
"nolinkshere": "Keine Seite verlinkt auf '''«$2»'''.",
"import-error-interwiki": "Die Seite «$1» wurde nicht importiert, da deren Name für externe Links (Interwiki) reserviert ist.",
"import-error-special": "Die Seite «$1» wurde nicht importiert, da sie zu einem besonderen Namensraum gehört, in dem keine Seiten möglich sind.",
"import-error-invalid": "Seite «$1» wurde nicht importiert, da deren Name ungültig ist.",
+ "tooltip-pt-login": "Sich anzumelden wird gerne gesehen, ist jedoch nicht zwingend erforderlich.",
"tooltip-pt-createaccount": "Wir ermutigen dich ein Benutzerkonto zu erstellen und dich anzumelden. Es ist jedoch nicht zwingend erforderlich.",
+ "tooltip-ca-edit": "Diese Seite bearbeiten",
+ "tooltip-ca-history": "Frühere Versionen dieser Seite",
"tooltip-search": "{{SITENAME}} durchsuchen",
"tooltip-search-go": "Gehe zur Seite mit diesem exakten Namen, falls diese existiert.",
"tooltip-search-fulltext": "Durchsuche die Seiten nach diesem Text",
"tooltip-p-logo": "Hauptseite aufsuchen",
+ "tooltip-n-mainpage-description": "Hauptseite besuchen",
+ "tooltip-n-portal": "Über das Projekt, was du tun kannst, wo was zu finden ist",
+ "tooltip-n-currentevents": "Hintergrundinformationen zu aktuellen Ereignissen finden",
"tooltip-n-recentchanges": "Liste der letzten Änderungen in diesem Wiki",
+ "tooltip-n-randompage": "Zufällige Seite aufrufen",
"tooltip-n-help": "Der Platz um herauszufinden",
+ "tooltip-t-whatlinkshere": "Eine Liste aller Seiten, die hierher verlinken",
+ "tooltip-t-recentchangeslinked": "Letzte Änderungen an Seiten, die von hier verlinkt sind",
"tooltip-t-emailuser": "Ein E-Mail an diesen Benutzer senden",
+ "tooltip-t-upload": "Dateien hochladen",
"tooltip-t-specialpages": "Liste aller Spezialseiten",
+ "tooltip-t-print": "Druckansicht dieser Seite",
+ "tooltip-t-permalink": "Dauerhafter Link zu dieser Seitenversion",
"pageinfo-title": "Informationen zu «$1»",
"pageinfo-toolboxlink": "Informationen zur Seite",
"markedaspatrollederror": "Markierung als «kontrolliert» nicht möglich.",
"external_image_whitelist": " #Diese Zeile nicht verändern.<pre>\n#Untenstehend können Fragmente regulärer Ausdrücke (der Teil zwischen den //) eingegeben werden.\n#Diese werden mit den URLs von Bildern aus externen Quellen verglichen.\n#Ein positiver Vergleich führt zur Anzeige des Bildes, andernfalls wird das Bild nur als Link angezeigt.\n#Zeilen, die mit einem # beginnen, werden als Kommentar behandelt.\n#Es wird nicht zwischen Gross- und Kleinschreibung unterschieden.\n\n#Fragmente regulärer Ausdrücke nach dieser Zeile eintragen. Diese Zeile nicht verändern.</pre>",
"feedback-bugornote": "Sofern Du detailliert ein technisches Problem beschreiben möchtest, melde bitte [$1 einen Fehler].\nAnderenfalls kannst du auch das untenstehende einfache Formular nutzen. Dein Kommentar wird, zusammen mit deinem Benutzernamen und der Version des von Dir verwendeten Webbrowsers sowie Betriebssystems, auf der Seite «[$3 $2]» hinzugefügt.",
"feedback-thanks": "Vielen Dank. Deine Rückmeldung wurde auf der Seite «[$2 $1]» gespeichert.",
- "searchsuggest-search": "Suche",
+ "searchsuggest-search": "{{SITENAME}} durchsuchen",
"api-error-unknown-warning": "Unbekannte Warnung: «$1»",
"api-error-unknownerror": "Unbekannter Fehler: «$1»"
}
"redirect-file": "Datei",
"redirect-logid": "Logbucheintrag",
"redirect-not-exists": "Der Wert wurde nicht gefunden",
+ "redirect-not-numeric": "Der Wert ist nicht numerisch",
"fileduplicatesearch": "Dateiduplikatsuche",
"fileduplicatesearch-summary": "Suche nach Dateiduplikaten auf Basis ihres Hashwertes.",
"fileduplicatesearch-filename": "Dateiname:",
"redirect-file": "Filename",
"redirect-logid": "Log ID",
"redirect-not-exists": "Value not found",
+ "redirect-not-numeric": "Value not numeric",
"fileduplicatesearch": "Search for duplicate files",
"fileduplicatesearch-summary": "Search for duplicate files based on hash values.",
"fileduplicatesearch-filename": "Filename:",
"tog-editsectiononrightclick": "Permitir las modificaciones de sección al hacer clic derecho en sus títulos",
"tog-watchcreations": "Añadir a mi lista de seguimiento las páginas que cree y los archivos que suba",
"tog-watchdefault": "Añadir a mi lista de seguimiento las páginas y archivos que edite",
- "tog-watchmoves": "Añadir las páginas y archivos que mueva a mi lista de seguimiento",
+ "tog-watchmoves": "Añadir a mi lista de seguimiento las páginas y archivos que mueva",
"tog-watchdeletion": "Añadir las páginas y archivos que borre a mi lista de seguimiento",
"tog-watchuploads": "Añadir a mi lista de seguimiento los archivos nuevos que suba",
"tog-watchrollback": "Añadir a mi lista de seguimiento las páginas en las que haya realizado una reversión",
"actioncomplete": "Se ha realizado la acción",
"actionfailed": "Ha fallado la acción",
"deletedtext": "«$1» ha sido borrado.\nVéase $2 para un registro de los borrados recientes.",
- "dellogpage": "Registro de borrado",
+ "dellogpage": "Registro de borrados",
"dellogpagetext": "A continuación se muestra una lista de los borrados más recientes.",
"deletionlog": "registro de borrados",
"log-name-create": "Registro de creación de páginas",
"edit-error-long": "Errores:\n\n$1",
"revid": "revisión $1",
"pageid": "ID de página $1",
- "interfaceadmin-info": "$1\n\nLos permisos para editar las páginas de configuración con formato CSS, JS y JSON han sido recientemente segregados del permiso <code>editinterface</code>. Si no comprendes por qué recibes este error, por favor lee [[mw:MediaWiki_1.32/interface-admin]].",
+ "interfaceadmin-info": "$1\n\nLos permisos para editar los archivos con formato CSS, JS y JSON en todo el sitio han sido recientemente separados del permiso <code>editinterface</code>. Si no comprendes por qué recibes este error, por favor lee [[mw:MediaWiki_1.32/interface-admin]].",
"rawhtml-notallowed": "No se pueden emplear las etiquetas <html> si no es en las páginas normales.",
"gotointerwiki": "Salir de {{SITENAME}}",
"gotointerwiki-invalid": "El título especificado no es válido.",
"ns-specialprotected": "Ezin dira {{ns:special}} izen-tarteko orrialdeak editatu.",
"titleprotected": "[[User:$1|$1]]ek izenburu hau sortzea ekidin zuen.\nEmandako arrazoia <em>$2</em> izan zen.",
"filereadonlyerror": "Ezin izan da \"$1\" fitxategia aldatu, \"$2\" fitxategi bilduma irakrutzeko-bakarrik moduan dagoelako.\n\nBlokeoa ezarri zuen sistema administratzaileak honako arrazoia eman zuen: \"$3\".",
+ "invalidtitle": "Balio gabeko izenburua",
"invalidtitle-knownnamespace": "Izenburua gaizki dago \"$2\" izen eremuan eta \"$3\" testuan",
"invalidtitle-unknownnamespace": "Izenburua gaizki dago \"$1\" izen eremuan ezezagunean eta \"$2\" testuan",
"exception-nologin": "Saioa hasi gabe",
"autosumm-blank": "Orritik eduki guztia ezabatuta",
"autosumm-replace": "Orriaren edukiaren ordez, «$1» jarri da",
"autoredircomment": "«[[$1]]» orrira birzuzendua",
- "autosumm-removed-redirect": "[[$1]]-ra birbideraketa ezabatua",
+ "autosumm-removed-redirect": "«[[$1]]» orrira zeraman birbideratzea ezabatu da",
"autosumm-changed-redirect-target": "Birbideraketaren helburua «[[$1]]» orritik «[[$2]]» orrira aldatu da",
"autosumm-new": "Orria sortu da. Edukia: $1",
"autosumm-newblank": "Orrialde zuria sortu da",
"tag-mw-contentmodelchange-description": "Orri baten [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:ChangeContentModel change the content model] aldaketak",
"tag-mw-new-redirect": "Birbideratze berria",
"tag-mw-new-redirect-description": "Birbideratze berri bat sortzen duten aldaketak edo birbidaltzeko orrialdea aldatzen dutenak",
- "tag-mw-removed-redirect": "Birbideraketa ezabatua",
+ "tag-mw-removed-redirect": "Birbideratzea ezabatu da",
"tag-mw-removed-redirect-description": "Existitzen den birbidaltze bati ez birbidaltzeko bihurtzen duten aldaketak",
"tag-mw-changed-redirect-target": "Birbideraketaren helburua aldatu da",
"tag-mw-changed-redirect-target-description": "Birbideraketa baten helburua eraldatzen duten aldaketak",
]
},
"tog-underline": "Soulignman dé lyannaj :",
- "tog-hideminor": "Maské modifikasyon minò andan modifikasyon résant",
- "tog-hidepatrolled": "Maské modifikasyon ki rouli andan modifikasyon résant",
+ "tog-hideminor": "Maské modifikasyon minò-ya annan modifikasyon résan-yan",
+ "tog-hidepatrolled": "Maské modifikasyon-yan ki rouli annan modifikasyon résan-yan",
"tog-newpageshidepatrolled": "Maské paj ki rouli andan lis dé nouvèl paj",
"tog-hidecategorization": "Maské katégorizasyon dé paj",
- "tog-extendwatchlist": "Étann lis di swivi pou afiché tout modifikasyon é pa inikman pli résant",
- "tog-usenewrc": "Groupé chanjman-yan pa paj andan modifikasyon-yan résant ké lis di swivi-a",
+ "tog-extendwatchlist": "Étann lis di swivi pou afiché tout modifikasyon-yan é pa inikman pli résan-yan",
+ "tog-usenewrc": "Groupé chanjman-yan pa paj annan modifikasyon résan-yan é lis di swivi-a",
"tog-numberheadings": "Niméroté otomatikman tit di sèksyon",
"tog-showtoolbar": "Afiché bar di zouti di édisyon",
"tog-editondblclick": "Modifyé paj-ya ké roun doub-klik",
"createacct-benefit-heading": "{{SITENAME}} sa ékri pa dé moun kou zòt.",
"createacct-benefit-body1": "modifikasyon{{PLURAL:$1|}}",
"createacct-benefit-body2": "paj{{PLURAL:$1|}}",
- "createacct-benefit-body3": "{{PLURAL:$1|kontribitò résant}}",
+ "createacct-benefit-body3": "{{PLURAL:$1|kontribitò résan}}",
"badretype": "Mo di pas ki zòt sézi pa ka korèsponn.",
"usernameinprogress": "Oun kréyasyon di kont pou sa non d'itilizatò ja an kour.\nSouplé, pasyanté.",
"userexists": "Non d'itilizatò sézi ja itilizé.\nSouplé, chwézi roun non diféran.",
"histlegend": "Sélèksyon di diff : koché bouton radjo-ya dé vèrsyon à konparé é apiyé asou antré oben asou bouton-an ki anba.<br />\nLéjann : <strong>({{int:cur}})</strong> = diférans ké dannyé vèrsyon-an, <strong>({{int:last}})</strong> = diférans ké vèrsyon présédant-a, <strong>{{int:minoreditletter}}</strong> = modifikasyon minò.",
"history-fieldset-title": "Sasé dé révizyon",
"histfirst": "Pli ansyenn",
- "histlast": "Pli résant",
+ "histlast": "Pli résan-yan",
"history-feed-title": "Listorik dé vèrsyon",
"history-feed-description": "Listorik dé vèrsyon pou sa paj asou wiki-a",
"history-feed-item-nocomment": "$1 à $2",
"action-edit": "modifyé sa paj",
"action-createaccount": "kréyé sa kont itilizatò",
"enhancedrc-history": "listorik",
- "recentchanges": "Modifikasyon résant",
- "recentchanges-legend": "Lòpsyon dé modifikasyon résant",
+ "recentchanges": "Modifikasyon résan",
+ "recentchanges-legend": "Lòpsyon dé modifikasyon résan",
"recentchanges-summary": "Swiv chanjman-yan pli résan wiki asou sa paj.",
"recentchanges-noresult": "Pyès modifikasyon ka korèsponn à sa kritèr asou péryòd endiké.",
"recentchanges-feed-description": "Swivé dannyé modifikasyon-yan di wiki andan sa flux.",
"listusers": "Lis dé itilizatò",
"newpages": "Nouvèl paj",
"move": "Rounonmen",
- "pager-newer-n": "{{PLURAL:$1|1 pli résant|$1}}",
+ "pager-newer-n": "{{PLURAL:$1|1 pli résan|$1}}",
"pager-older-n": "{{PLURAL:$1|1 pli ansyenn|$1}}",
"booksources": "Ouvraj di référans",
"booksources-search-legend": "Sasé parmi dé ouvraj di référans",
"tooltip-n-mainpage-description": "Paj prensipal jénéral",
"tooltip-n-portal": "Apropo di projè, sa ki zòt pouvé fè, koté trouvé enfòrmasyon-yan",
"tooltip-n-currentevents": "Trouvé plis d'enfòrmasyon asou atchwalité an kour",
- "tooltip-n-recentchanges": "Lis di modifikasyon résant asou wiki-a",
+ "tooltip-n-recentchanges": "Lis dé modifikasyon résan asou wiki-a",
"tooltip-n-randompage": "Afiché roun paj an azò",
"tooltip-n-help": "Aksè à lèd",
"tooltip-t-whatlinkshere": "Lis dé paj ki lyannen ki ka pwenté asou sala",
- "tooltip-t-recentchangeslinked": "Lis di modifikasyon résant liyé à sa paj",
+ "tooltip-t-recentchangeslinked": "Lis dé modifikasyon résan ki lyannen ké sa paj",
"tooltip-feed-atom": "Flux Atom pou sa paj",
"tooltip-t-contributions": "Wè lis dé kontribisyon di {{GENDER:$1|sa itilizatò|sa itilizatris}}",
"tooltip-t-emailuser": "Voyé roun kouryé à {{GENDER:$1|sa itilizatò|sa itilizatris}}",
"pageinfo-lasttime": "Dat di dannyé modifikasyon",
"pageinfo-edits": "Nonm total di modifikasyon",
"pageinfo-authors": "Nonm total di otò distenk",
- "pageinfo-recent-edits": "Nonm di modifikasyon résant (annan dannyé $1)",
- "pageinfo-recent-authors": "Nonm di otò distenk résant",
+ "pageinfo-recent-edits": "Nonm di modifikasyon résan (annan dannyé-ya $1)",
+ "pageinfo-recent-authors": "Nonm di lotò distenk résan",
"pageinfo-magic-words": "{{PLURAL:$1|Mo majik}} ($1)",
"pageinfo-hidden-categories": "{{PLURAL:$1|Katégori kaché|}} ($1)",
"pageinfo-templates": "{{PLURAL:$1|Modèl enkli}} ($1)",
"rcfilters-activefilters": "Aktivni filtri",
"rcfilters-activefilters-hide": "Skrij",
"rcfilters-activefilters-show": "Pokaži",
+ "rcfilters-activefilters-hide-tooltip": "Sakrij aktivne filtre",
+ "rcfilters-activefilters-show-tooltip": "Pokaži aktivne filtre",
"rcfilters-advancedfilters": "Napredni filtri",
"rcfilters-limit-title": "Rezultata za prikaz",
"rcfilters-limit-and-date-label": "{{PLURAL:$1|$1 izmjena|$1 izmjene|$1 izmjena}}, $2",
"rcfilters-preference-help": "Vraća natrag stanje prije redizajna sučelja 2017., te svih oruđa dodanih tada i poslije toga.",
"rcfilters-watchlist-preference-label": "Sakrij poboljšanu inačicu popisa praćenja",
"rcfilters-watchlist-preference-help": "Vraća natrag stanje prije redizajna sučelja 2017., te svih oruđa dodanih tada i poslije toga.",
+ "rcfilters-filter-showlinkedfrom-label": "Prikaži promjene na povezanim stranicama",
+ "rcfilters-filter-showlinkedfrom-option-label": "<strong>Stranice na koje se povezuje</strong> izabrana stranica",
+ "rcfilters-filter-showlinkedto-option-label": "<strong>Stranice koje povezuju</strong> na izabranu stranicu",
"rcnotefrom": "Ispod {{PLURAL:$5|je izmjena|su izmjene}} od <strong>$3, $4</strong> (prikazano ih do <strong>$1</strong>).",
"rclistfromreset": "Vrati na zadano izbor datuma",
"rclistfrom": "Prikaži nove promjene počevši od $3 $2",
"right-editusercss": "más felhasználók CSS fájljainak szerkesztése",
"right-edituserjson": "Más felhasználók JSON fájljainak szerkesztése",
"right-edituserjs": "más felhasználók JS fájljainak szerkesztése",
+ "right-editsitecss": "CSS-lapok szerkesztése",
+ "right-editsitejson": "JSON-lapok szerkesztése",
+ "right-editsitejs": "JavaScript-lapok szerkesztése",
"right-editmyusercss": "Saját szerkesztői CSS-fájlok szerkesztése",
"right-editmyuserjson": "Saját szerkesztői JSON-fájlok szerkesztése",
"right-editmyuserjs": "saját szerkesztői JavaScript-fájlok szerkesztése",
"grant-createaccount": "fiókok létrehozása",
"grant-createeditmovepage": "lapok létrehozása, szerkesztése és átnevezése",
"grant-delete": "lapok, lapváltozatok és naplóbejegyzések törlése",
- "grant-editinterface": "MediaWiki-névtér és felhasználói CSS/JSON/JavaScript szerkesztése",
+ "grant-editinterface": "MediaWiki-névtér és JSON-lapok szerkesztése",
"grant-editmycssjs": "Felhasználói CSS-ed/JSON-od/JavaScripted szerkesztése",
"grant-editmyoptions": "felhasználói beállításaid módosítása",
"grant-editmywatchlist": "figyelőlista szerkesztése",
+ "grant-editsiteconfig": "CSS/JS-lapok szerkesztése",
"grant-editpage": "létező lapok szerkesztése",
"grant-editprotected": "védett lapok szerkesztése",
"grant-highvolume": "nagy mennyiségű szerkesztés",
"filehist-filesize": "Fájlméret",
"filehist-comment": "Megjegyzés",
"imagelinks": "Fájlhasználat",
- "linkstoimage": "Az alábbi {{PLURAL:$1|lap hivatkozik|lapok hivatkoznak}} erre a fájlra:",
- "linkstoimage-more": "Több mint $1 oldal hivatkozik erre a fájlra.\nA következő lista csak az {{PLURAL:$1|első linket|első $1 linket}} tartalmazza.\nA teljes lista [[Special:WhatLinksHere/$2|ezen a lapon]] található meg.",
- "nolinkstoimage": "Erre a fájlra nem hivatkozik lap.",
+ "linkstoimage": "Az alábbi {{PLURAL:$1|lap használja|lapok használják}} ezt a fájlt:",
+ "linkstoimage-more": "Több mint $1 oldal használja ezt a fájlt.\nA következő lista csak a fájlt használó {{PLURAL:$1|első|első $1}} lapot mutatja.\nA teljes lista [[Special:WhatLinksHere/$2|ezen a lapon]] található meg.",
+ "nolinkstoimage": "Ezt a fájlt nem használja egyetlen lap sem.",
"morelinkstoimage": "[[Special:WhatLinksHere/$1|További hivatkozások]] megtekintése",
"linkstoimage-redirect": "$1 (fájlátirányítás) $2",
"duplicatesoffile": "A következő {{PLURAL:$1|fájl|$1 fájl}} ennek a fájlnak a duplikátuma ([[Special:FileDuplicateSearch/$2|további részletek]]):",
"confirm-rollback-top": "Visszavonod a változtatásokat?",
"confirm-mcrundo-title": "Egy változtatás visszavonva",
"mcrundofailed": "A visszavonás nem sikerült",
+ "mcrundo-missingparam": "Kötelező paraméterek hiányoznak a kérésből.",
"ellipsis": "…",
"quotation-marks": "„$1”",
"imgmultipageprev": "← előző oldal",
"edit-error-long": "Hibák:\n\n$1",
"revid": "$1 változat",
"pageid": "$1 lapazonosító",
+ "interfaceadmin-info": "$1\n\nA CSS/JS/JSON lapok szerkesztéséhez szükséges jogosultság a közelmúltban elválasztásra került a <code>editinterface</code> jogtól. Amennyiben nem érted, miért látod ezt az üzenetet, [[mw:MediaWiki_1.32/interface-admin|itt tudhatsz meg többet]].",
"rawhtml-notallowed": "<html> címkék nem használhatók normál lapokon kívül.",
"gotointerwiki": "{{SITENAME}} elhagyása",
"gotointerwiki-invalid": "A megadott cím érvénytelen.",
"tooltip-feed-atom": "Այս էջի Ատոմ սնուցումը",
"tooltip-t-contributions": "Դիտել {{GENDER:$1|այս մասնակցի}} ներդրումների ցանկը",
"tooltip-t-emailuser": "Ուղարկել էլ․ նամակ {{GENDER:$1|այս մասնակցին}}",
+ "tooltip-t-info": "Վիճակագրական տվյալներ էջի մասին",
"tooltip-t-upload": "Բեռնել ֆայլեր",
"tooltip-t-specialpages": "Բոլոր սպասարկող էջերի ցանկը",
"tooltip-t-print": "Այս էջի տպելու տարբերակ",
"customcssprotected": "Vu ne es permisita redaktar ita CSS pagino nam ol kontenas personal ajustaji di altra uzero.",
"customjsonprotected": "Vu ne havas permiso por redaktar ica pagino JSON pro ke ol kontenas personal ajustaji di altra uzero.",
"customjsprotected": "Vu ne es permisita redaktar ita JavaScript pagino nam ol kontenas personal ajustaji di altra uzero.",
+ "sitecssprotected": "Vu ne havas permiso pri redaktar ica pagino CSS pro ol povus afektor omna viziteri.",
+ "sitejsonprotected": "Vu ne povas redaktar ica JSON (JavaScript Object Notation), pro ol povas afektar omna viziteri.",
"sitejsprotected": "Vu ne povas redaktar ica JavaScript, pro ol povas afektar omna viziteri.",
"mycustomcssprotected": "Vu ne es permisita redaktar ita CSS pagino.",
"mycustomjsonprotected": "Vu ne es permisita redaktar ita pagino JSON.",
"botpasswords-label-delete": "Efacar",
"botpasswords-label-resetpassword": "Sendez nova pasovorto per e-posto",
"botpasswords-label-grants": "Uzebla grantaji:",
+ "botpasswords-help-grants": "Permisas aceso al yuri quin vua uzero-konto ja havas. Permisar ulo hike furnisos nula altra aceso por altra yuri quin vua konto altramaniere ne havus. Videz la [[Special:ListGrants|tabelo pri permisi]] por plusa informi.",
"botpasswords-label-grants-column": "Permisita",
"botpasswords-bad-appid": "La nomo \"$1\" por la bot-programo esas nevalida.",
"botpasswords-insert-failed": "L'adjunto di nova nomo \"$1\" por la 'bot' faliis. Ka ol ja adjuntesis?",
+ "botpasswords-update-failed": "Ne povis rinomizar la 'bot' nomizita \"$1\". Kad ol efacesis?",
"botpasswords-created-title": "Kreita pasovorto por la 'bot'",
"botpasswords-created-body": "La pasovorto por la 'bot' nomizita \"$1\" del {{GENDER:$2|uzero}} \"$2\" kreesis.",
"botpasswords-updated-title": "La pasovorto dil 'bot' aktualigesis",
"botpasswords-updated-body": "La pasovorto por la 'bot' nomizita \"$1\" del {{GENDER:$2|uzero}} \"$2\" kreesis.",
"botpasswords-deleted-title": "La pasovorto por la 'bot' efacesis",
+ "botpasswords-deleted-body": "La pasovorto por la 'bot' nomizita \"$1\" del {{GENDER:$2|uzero}} \"$2\" kreesis.",
+ "botpasswords-not-exist": "L'uzero \"$1\" ne havas pasovorto nomizita \"$2\" por lua 'bot'.",
+ "botpasswords-needs-reset": "La pasovorto por la 'bot' nomizita \"$1\" dal {{GENDER:$2|uzero}} \"$2\" mustas rikreesar.",
"resetpass_forbidden": "La pasovorti ne povas chanjesar",
"resetpass_forbidden-reason": "Pasovorti ne povas chanjesar: $1",
"resetpass-no-info": "Vu mustas enirar la konto por acesar ita pagino direte.",
"passwordreset": "Sendez nova pasovorto per e-posto",
"passwordreset-text-one": "Garnisez ica formulario por recevar provizora pasovorto per vua e-posto.",
"passwordreset-text-many": "{{PLURAL:$1|Skribez en un ek la texto-buxi por recevar tempala pasovorto per e-posto.}}",
+ "passwordreset-emaildisabled": "La funcioni di e-posto (e-mail) blokusesis en ica Wiki.",
"passwordreset-username": "Uzantonomo:",
"passwordreset-domain": "Interreto-domeno:",
"passwordreset-email": "E-postal adreso:",
"passwordreset-emailtitle": "Detali pri la konto en {{SITENAME}}",
"passwordreset-emailtext-ip": "Ulu (probable vu, de la IP-adresO $1) demandis la remplaso di la pasovorto por {{SITENAME}} ($4). La sequanta {{PLURAL:$3|konto|konti}} esas asociita kun ta adreso di e-posto:\n\n$2\n\nIca tempala {{PLURAL:$3| pasovorto|pasovorti}} perdos la valideso pos {{PLURAL:$5|un dio|$5 dii}}.\nTu mustas facar 'log in' e selektar nova pasovorto nemediate. Se altra persono facis ica demando, o se vu rimemoris l'antea pasovorto e ne pluse bezonas modifikor ol, vu povas ignorar ica mesajo e durar l'uzo dil antea pasovorto.",
+ "passwordreset-emailtext-user": "Ulu (posible vu, de la IP-adreso $1) demandis la remplaso di la pasovorto por {{SITENAME}} ($4). La sequanta {{PLURAL:$3|konto|konti}} esas asociita kun ta adreso di e-posto:\n\n$2\n\nIca tempala {{PLURAL:$3| pasovorto|pasovorti}} perdos la valideso pos {{PLURAL:$5|un dio|$5 dii}}.\nTu mustas facar 'log in' e selektar nova pasovorto nemediate. Se altra persono facis ica demando, o se vu rimemoris l'antea pasovorto e ne pluse bezonas modifikor ol, vu povas ignorar ica mesajo e durar l'uzo dil antea pasovorto.",
"passwordreset-emailelement": "Uzantonomo:\n$1\n\nProvizora pasovorto:\n$2",
"passwordreset-emailsentemail": "Se ica e-posto esas asociita kun vua konto, do la nova pasovorto sendesos a vu per e-posto.",
+ "passwordreset-emailsentusername": "Se ica e-posto esas asociita kun vua konto, do la nova pasovorto sendesos a vu per e-posto.",
"passwordreset-nocaller": "Ula demandero mustas furnisesar",
"passwordreset-nosuchcaller": "La demandero ne existas: $1",
"passwordreset-invalidemail": "Ne-valida e-posto-adreso",
"noarticletext-nopermission": "Til nun ne existas texto en ica pagino.\nVu povas [[Special:Search/{{PAGENAME}}|serchar ica titulo]] en altra pagini, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} serchar en la relata registri], o [{{fullurl:{{FULLPAGENAME}}|action=edit}} redaktar ica pagino]</span>, tamen vu ne havas permiso por krear ica pagino.",
"userpage-userdoesnotexist": "Uzeronomo \"$1\" ne registragesis.\nVoluntez konfirmar se vu volas krear/redaktar ica pagino.",
"userpage-userdoesnotexist-view": "L'uzeronomo \"$1\" ne enrejistresis.",
+ "blocked-notice-logextract": "Ica uzero nun esas blokusita.\nLa lasta protokolo pri blokuso esas videbla adinfre, por refero:",
"clearyourcache": "<strong>Atencez:</strong> Pos registragar, vu probable mustas renovigar la tempala-magazino di vua navigilo por vidar la chanji.\n* <strong>Firefox / Safari:</strong>Tenez <em>Shift</em> kliktante <em>Reload</em>, o presez sive <em>Ctrl-F5</em> sive <em>Ctrl-R</em> (<em>⌘-R</em> ye Mac);\n* <strong>Google Chrome:</strong> Press <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> en komputeri Mac)\n* <strong>Internet Explorer:</strong> Tenez <em>Ctrl</em> kliktante <em>Refresh</em>, o presez <em>Ctrl-F5</em>\n* <strong>Opera:</strong> Irez a <em>Menu → Settings</em> (<em>Opera → Preferences</em> ye komputeri Mac) e pose a <em>Privacy & security → Clear browsing data → Cached images and files</em>.",
+ "usercssyoucanpreview": "<strong>Sugestajo:</strong> Uzez la butono \"{{int:showpreview}}\" por probar vua nova stilo CSS ante konservar ol.",
+ "userjsonyoucanpreview": "<strong>Sugestajo:</strong> Uzes la butono \"{{int:showpreview}}\" por provar vua nova JSON ante konservar ol.",
+ "userjsyoucanpreview": "<strong>Sugestajo:</strong> Uzes la butono \"{{int:showpreview}}\" por probar vua JavaScript ante konservar ol.",
"usercsspreview": "'''Memorez ke vu nur previdas vua uzero-CSS.'''\n'''Ol ne registragesis ankore!'''",
+ "userjsonpreview": "<strong>Memorez ke vu nur previdas vua JSON (JavaScript Object Notation). Ol ankore ne konservesis!</strong>",
"userjspreview": "'''Memorez ke vu nur previdas vua JavaScript di uzero. Ol ne registragesis ankore!'''",
+ "sitecsspreview": "<strong>Memorez ke vu nur previdas vua uzero-CSS. Ol ankore ne konservesis!</strong>",
"updated": "(Aktualigita)",
"note": "'''Noto:'''",
"previewnote": "<strong>Atencez ke ico esas nur prevido.</strong> Ol ne registragesis ankore!",
"autosumm-blank": "Pagino vakuigesis",
"autosumm-replace": "Kontenajo remplasigesis kun '$1'",
"autoredircomment": "Ridirektas a [[$1]]",
+ "autosumm-changed-redirect-target": "Chanjis la ridirektilo de [[$1]] a [[$2]]",
"autosumm-new": "Pagino kreesis kun '$1'",
"autosumm-newblank": "Kreita vakua pagino",
"watchlistedit-normal-title": "Modifikez surveyo-listo",
"Yusuke1109",
"Afaz",
"Oxbqskeptzwizkgdcxakhnrb",
- "Suyama"
+ "Suyama",
+ "고솜"
]
},
"tog-underline": "リンクの下線:",
"logentry-managetags-deactivate": "$1 がタグ \"$4\" の利用者およびボットによる使用を{{GENDER:$2|無効化しました}}。",
"log-name-tag": "タグ記録",
"log-description-tag": "このページには、個々の版または記録項目から、いつ利用者が[[Special:Tags|タグ]]を追加または削除したかが記録されます。編集、削除、または同様の操作の一部として発生したタグ付けは記録には表示されません。",
- "logentry-tag-update-add-revision": "$1 がページ $3 の版 $4 に{{PLURAL:$7|タグ}} $6 を{{GENDER:$2|追加しました}}",
- "logentry-tag-update-add-logentry": "$1 がページ $3 の記録項目 $5 に{{PLURAL:$7|タグ}} $6 を{{GENDER:$2|追加しました}}",
+ "logentry-tag-update-add-revision": "$1 がページ「$3」の版 $4 に{{PLURAL:$7|タグ}} $6 を{{GENDER:$2|追加しました}}",
+ "logentry-tag-update-add-logentry": "$1 がページ「$3」の記録項目 $5 に{{PLURAL:$7|タグ}} $6 を{{GENDER:$2|追加しました}}",
"logentry-tag-update-remove-revision": "$1 がページ $3 の版 $4 から{{PLURAL:$9|タグ}} $8 を{{GENDER:$2|除去しました}}",
- "logentry-tag-update-remove-logentry": "$1 がページ $3 の記録項目 $5 から{{PLURAL:$9|タグ}} $8 を{{GENDER:$2|除去しました}}",
+ "logentry-tag-update-remove-logentry": "$1 がページ「$3」の記録項目 $5 から{{PLURAL:$9|タグ}} $8 を{{GENDER:$2|除去しました}}",
"logentry-tag-update-revision": "$1 がページ「$3」の版 $4 のタグを{{GENDER:$2|更新しました}} ($6 を{{PLURAL:$7|追加}}、$8 を{{PLURAL:$9|削除}})",
"logentry-tag-update-logentry": "$1 がページ「$3」の記録項目 $5 のタグを{{GENDER:$2|更新しました}} ($6 を{{PLURAL:$7|追加}}、$8 を{{PLURAL:$9|削除}})",
"rightsnone": "(なし)",
"edit-error-long": "エラー:\n\n\n\n$1",
"revid": "版 $1",
"pageid": "ページID $1",
- "interfaceadmin-info": "$1\n\nã\82µã\82¤ã\83\88å\85¨ä½\93ã\81®CSS/JavaScriptã\81®ç·¨é\9b\86権é\99\90ã\81¯ã\80\81æ\9c\80è¿\91<code>editinterface</code> 権é\99\90ã\81\8bã\82\89å\88\86é\9b¢ã\81\95ã\82\8cã\81¾ã\81\97ã\81\9fã\80\82ã\81ªã\81\9cã\81\93ã\81®ã\82¨ã\83©ã\83¼ã\81\8c表示ã\81\95ã\82\8cã\82\8bのかわからない場合は、[[mw:MediaWiki_1.32/interface-admin]]をご覧ください。",
+ "interfaceadmin-info": "$1\n\nã\82µã\82¤ã\83\88å\85¨ä½\93ã\81®CSS/JavaScriptã\81®ç·¨é\9b\86権é\99\90ã\81¯ã\80\81æ\9c\80è¿\91<code>editinterface</code> 権é\99\90ã\81\8bã\82\89å\88\86é\9b¢ã\81\95ã\82\8cã\81¾ã\81\97ã\81\9fã\80\82ã\81ªã\81\9cã\81\93ã\81®ã\82¨ã\83©ã\83¼ã\81\8c表示ã\81\95ã\82\8cã\81\9fのかわからない場合は、[[mw:MediaWiki_1.32/interface-admin]]をご覧ください。",
"rawhtml-notallowed": "<html>タグは通常ページ以外では使用できません。",
"gotointerwiki": "{{SITENAME}}を離れる",
"gotointerwiki-invalid": "指定したページは無効です。",
"Rul1902"
]
},
+ "underline-always": "ကိုဲၜၠင်",
+ "underline-never": "ၮင်းဖိုင့်အေႋ",
+ "editfont-serif": "ခေါဟ်ထိင်ႋပါ့ဖောင့်",
"sunday": "အ်ုတုက်",
"monday": "အ်ုစန်",
"tuesday": "အ်ုညာႋ",
"oct": "လာထါင့်ခုက်ဖေါဟ်",
"nov": "လာထါင့်ခုက်ဖါဍောဟ်",
"dec": "လာထင်းကၠံင်",
+ "january-date": "ထါင့်ခုက်ဖေါဟ် $1",
+ "february-date": "ထါင့်ခုက်ဖါဍောဟ် $1",
+ "march-date": "လါသိုင့် $1",
+ "april-date": "လါတါ $1",
+ "may-date": "လါယါ့ $1",
+ "june-date": "လါနုဲး $1",
+ "july-date": "လါၰိုဝ် $1",
+ "august-date": "လါခုဂ် $1",
+ "september-date": "ဆီ့မူႋ $1",
+ "october-date": "က္တုဂ်ဝဝ်ႋ $1",
+ "november-date": "လါၮင့် $1",
+ "december-date": "လါလိင် $1",
+ "period-am": "ကေၯဝ်",
+ "period-pm": "ကေၯး",
"pagecategories": "{{PLURAL:$1|အ်ုဆုဂ်တုဂ်|အ်ုဆုဂ်တုဂ်သယ်}}",
"category_header": "အ်ုဆုဂ် \"$1\" ခဝ့် လိက်မေံလ်ုဖး",
"subcategories": "ကဏ္ဍကါင်ဖါသယ်",
"about": "အ်ုကျံင်",
"newwindow": "(ဝင်းဒိုးသင့်လ်ုၮါင်းဝယ် မ်ုပုဂ်ထုင်း)",
"cancel": "မာလှ်ေအေး",
+ "moredotdotdot": "ၰိုဲမေံၜၠာ်...",
+ "morenotlisted": "စ်ုရင့်ယိုဝ် ဍုဂ်ပါင်အေ့ယာႋ။",
+ "mypage": "လက်မေံသး",
"mytalk": "ဆ်ုခၠါန်ကင်ကာ",
+ "anontalk": "ဆ်ုခၠါင်ကင်ကာ",
"navigation": "ပ်ုယုံ့",
"and": " လ်ု",
+ "faq": "ဆ်ုအင်းစာအးသယ်လ်ုဖး",
+ "actions": "ဆ်ုသုဂ်ကၠယ်လ်ုဖး",
"namespaces": "အ်ုမၠိင်ထိုဝ်",
"variants": "အးမိင်အးစိင်လုက်ဆိင့်",
"navigation-heading": "ၮဲဖၠေမီနူး",
+ "errorpagetitle": "ဆ်ုမး",
"returnto": "$1 အိုဝ် မ်ုက္ဍာထါင်။",
"tagline": "{{SITENAME}} ခဝ့်",
"help": "မာၜိုင်မာဆိုင်",
"search": "အင်းၰူ့",
"searchbutton": "အင်းၰူ့",
+ "go": "လေဝ်",
"searcharticle": "လေဝ်",
"history": "ဃွှာန့်မေင်ႋစိင်",
"history_short": "မေင်ႋစိင်",
+ "history_small": "မေင်ႋစိင်",
+ "updatedmarker": "လေဝ်ယောဝ်ႋဝေ့အ်ုလါင်ခါင့်ခါ့ အင်းတင်ထဝေ့",
"printableversion": "လေဝ်",
"permalink": "ဆ်ုသုဂ်ကၠယ်သီ့",
+ "print": "ထုဂ်ထင်းလိက်",
"view": "မ်ုယောဝ်ႋ",
"view-foreign": "မ်ုယောဝ်ႋ $1 ဝယ်",
"edit": "အင်ႋတင်ႋ",
+ "edit-local": "အှ်လင်ကၠယ် ဆ်ုတုဂ်ကၠယ် မ်ုအင်းတင်လင်",
"create": "ပ္တုံထံင်း",
"create-local": "အှ်လင်ကၠယ် ဆ်ုတုဂ်ကၠယ် မ်ုဆူ့ဍုဂ်လင်",
"delete": "ထုဂ်ဆိင့်",
+ "undelete_short": "{{PLURAL:$1|ဆ်ုအင်းတင်လ်ုၮါင်း|ဆ်ုအင်းတင် $1 ၮါင်းၮှ်}}အိုဝ် လ်ုထုက်ဆိင့်လိုင်ၜး",
+ "viewdeleted_short": "{{PLURAL:$1|ထုဂ်ဆိင့်ခၞိက်ဆ်ုအင်းတင်လ်ုၮါင်း|ထုဂ်ဆိင့်ခၞိက် ဆ်ုအင်းတင် $1 ၮါင်း}}ၮှ် မ်ုယောဝ်ႋ",
+ "protect": "ခ်ုဝုင်ႋလာႋ",
+ "protect_change": "မ်ုအင်းလယ်",
+ "unprotect": "ဝီးၜါ်ထ မ်ုအင်းလယ်",
"newpage": "လိက်မေံသင့်",
"talkpagelinktext": "ဆ်ုခၠါင်ကင်ကာ",
+ "specialpage": "လိက်မေံခေါဟ်",
"personaltools": "ဟ်ုဆ်ုမာ ဆ်ုဖၠင့်",
"talk": "လဝ်ထာင်ကင်ကာ",
"views": "ဟ်ုဍးအ်ုလာၯင်သယ်အး",
"toolbox": "ခြီခြာ့သယ်",
+ "tool-link-userrights": "{{GENDER:$1|ၮင့်ဆါႋ}}ကုံလွာဲသယ်လ်ုဖး မ်ုအင်းလယ်",
+ "tool-link-userrights-readonly": "{{GENDER:$1|ၮင့်ဆါႋ}}ကုံလွာဲသယ်လ်ုဖး မ်ုယောဝ်ႋ",
+ "tool-link-emailuser": "ယိုဝ်{{GENDER:$1|ၮင့်ဆါႋ}}ၮှ် မ်ုသုံ့အီမေံႋ",
+ "imagepage": "မ်ုယောဝ်ႋဖိုင့်လိက်မေံ",
+ "mediawikipage": "မ်ုယောဝ်ႋလိက်မေံဖိုဟ်",
+ "templatepage": "တာင်ႋပ်ုလိတ်သယ် မ်ုယောဝ်ႋ",
+ "viewhelppage": "မ်ုယောဝ်ႋဖိုင့်လိက်မေံ",
+ "categorypage": "အ်ုဆုဂ်တုဂ်လိက်မေံသယ် မ်ုယောဝ်ႋ",
+ "viewtalkpage": "မ်ုယောဝ်ႋ လဝ်ခၠါင်ဆ်ုခၠါင်",
"otherlanguages": "လိက်ဆ်ုခၠါင် အ်ုၯာၯံင်သယ်",
"redirectedfrom": "($1 ခဝ့် ပ်ုယုံ့ထာ့)",
"redirectpagesub": "ထါင်ၮဲအ်ုထိုဝ် လိက်မေံၜၠါ်",
"redirectto": "က္ဍာထိုဝ်ၜုဂ် -",
"lastmodifiedat": "လိက်မေံယိုဝ် $1၊ $2 အ်ုခါ့ ဆ်ုအင်ႋတင်ႋထာ့ဝေ့လှ်။",
+ "viewcount": "လိက်မေံယိုဝ် {{PLURAL:$1|လ်ုၜၠင်|$1 ၜၠင်}} အွးလင်ထ။",
+ "protectedpage": "လိက်မေံဆ်ုဝီးၜါ်",
"jumpto": "မ်ုၯယ့်ထါင်ယိုဝ်",
"jumptonavigation": "ပ်ုယုံ့",
"jumptosearch": "အင်းၯူ့",
"disclaimers": "တင်ဆ်ုခၠါင်",
"disclaimerpage": "Project:ကိုဝ်မိင်ကိုဝ်စိင် ၜးတ်ုဒှ်",
"edithelp": "အင်ႋတင်ႋ ဆ်ုမာၜိုင်",
- "mainpage": "á\80\9cá\80á\80\80á\80ºá\80\99á\80±á\80¶á\80\9aá\80¬á\80·",
+ "mainpage": "á\80\9cá\80á\80\80á\80ºá\80\99á\80±á\80¶á\81\9cá\81 á\80«á\80ºá\80\81á\80±á\80«á\80\9fá\80º",
"mainpage-description": "လက်မေံယာ့",
"portal": "အ်ုထိုဝ်အ်ုမေံလင်ႋ",
"portal-url": "Project:အ်ုထိုဝ်အ်ုမေံလင်ႋ",
"Умар",
"아라",
"Amire80",
- "Stjn"
+ "Stjn",
+ "Raa555"
]
},
"tog-underline": "ЭлячӀунрин кӀаникай цӀар чӀугун",
"file-info-size": "$1 × $2 пикселар, файлдин кьадар: $3, MIME жуьре: $4",
"file-nohires": "Идалайни хъсан ери авайд туш",
"svg-long-desc": "SVG файл, номилдаказ $1 $2 × пикселяр, файлдин кьадар: $3",
- "show-big-image": "ЦÓ\80аÑ\80аÑ\84а Ñ\85вена Ñ\82Ñ\83нвай жеÑ\80гедай",
+ "show-big-image": "Ð\94вÑ\83лдин Ñ\84айл",
"show-big-image-size": "$1 × $2 пиксел",
"bad_image_list": "Формат гьихьтинди хьана кlанда:\n\nCиягьда авай анжах (* лишандихъ галаз эгечIзавай цIарарин) элементар гьисабдиз къачуда.\nЦlарцIе авай сад лагьай элячIун ттун патал къадагъа алай шикилдиз элячIун хьана кlанзава.\nГьар са цlарцIе авай гьар са ахпагьан элячIунар кьетIендинбур хьиз кьабулда, мисал яз, суьрет тваз мумкинвал авай ччинар.",
"metadata": "Метамалуматар",
"protectedtitles-submit": "Rodyti pavadinimus",
"listusers": "Naudotojų sąrašas",
"listusers-editsonly": "Rodyti tik keitimus atlikusius naudotojus",
+ "listusers-temporarygroupsonly": "Rodyti tik laikinųjų vartotojų grupių naudotojus",
"listusers-creationsort": "Rodyti pagal paskyros sukūrimo datą",
"listusers-desc": "Išdėstyti abėcėline tvarka",
"usereditcount": "$1 {{PLURAL:$1|keitimas|keitimai|keitimų}}",
"grouppage-interface-admin": "{{ns:project}}:Администратори на посредникот",
"grouppage-bureaucrat": "{{ns:project}}:Бирократи",
"grouppage-suppress": "{{ns:project}}:Притајување",
- "right-read": "Читање страници",
+ "right-read": "Читање на страници",
"right-edit": "Уредување на страници",
"right-createpage": "Создавање на страници (кои не се разговорни страници)",
"right-createtalk": "Создавање на разговорни страници",
"right-createaccount": "Создавање на нови кориснички сметки",
"right-autocreateaccount": "Автоматска најава со надворешна корисничка сметка",
"right-minoredit": "Означување на уредувањата како ситни",
- "right-move": "Преместување страници",
+ "right-move": "Преместување на страници",
"right-move-subpages": "Преместување на страници со нивните потстраници",
"right-move-rootuserpages": "Преместување на основни кориснички страници",
"right-move-categorypages": "Преместување на категориски страници",
"right-purge": "Бришење од опслужувачки меѓусклад на страницата без барање потврда за тоа",
"right-autoconfirmed": "Без ограничувања на стапки за IP-адреса",
"right-bot": "Третиран како автоматски процес",
- "right-nominornewtalk": "Ситните уредувања да не поттикнуваат потсетник за нова порака",
+ "right-nominornewtalk": "СиÑ\82ниÑ\82е Ñ\83Ñ\80едÑ\83ваÑ\9aа на Ñ\80азговоÑ\80ни Ñ\81Ñ\82Ñ\80аниÑ\86и да не поÑ\82Ñ\82икнÑ\83вааÑ\82 поÑ\82Ñ\81еÑ\82ник за нова поÑ\80ака",
"right-apihighlimits": "Користење на помалку ограничени барања од извршникот",
"right-writeapi": "Можност за запишување во извршникот",
"right-delete": "Бришење страници",
"grant-basic": "Основни права",
"grant-viewdeleted": "Преглед на избришани податотеки и страници",
"grant-viewmywatchlist": "Преглед на вашите набљудувања",
- "grant-viewrestrictedlogs": "Погл. ограничени дневнички ставки",
+ "grant-viewrestrictedlogs": "Преглед на ограничени дневнички ставки",
"newuserlogpage": "Дневник на регистрирања на корисници",
"newuserlogpagetext": "Ова е дневник на регистрирани корисници.",
"rightslog": "Дневник на корисничките права",
"@metadata": {
"authors": [
"Dr Lotus Black",
- "Htawmonzel"
+ "Htawmonzel",
+ "Aue Nai"
]
},
"tog-underline": "လေန် မတာပၞောန်သၟဝ်",
"tog-hideminor": "ပၞုက် အရာမပလေဝ်ဒါန်လဝ် ကိစ္စဟွံဇၞော် နူကဵု ပြဟ်ဟ်ဏအ်",
"tog-hidepatrolled": "ပၞုက် အရာမပလေဝ်ဒါန်လဝ် ကိစ္စဇၞော်ဇၞော် နူကဵု ပြဟ်ဟ်ဏအ်",
"tog-hidecategorization": "ပၞုက် အရာမဖျေဟ်ကဏ္ဍ ကုမုက်လိက်",
+ "tog-showhiddencats": "ထ္ၜးကဆံၚ်မပၞုက်လဝ်",
+ "tog-prefershttps": "လၟိုန်သုၚ်စောဲကေတ် လာၚ်မမၞုံဂီုကၠီု အခိၚ်မလုပ်လံက်အေန်",
+ "underline-always": "လၟိုန်အခါ",
+ "underline-never": "မွဲလှေ်ဟွံမွဲ",
"sunday": "တ္ၚဲအဒိုက်",
"monday": "တ္ၚဲစန်",
"tuesday": "တ္ၚဲအၚာ",
"oct": "အံက်",
"nov": "နဝ်",
"dec": "ဒဳ",
+ "january-date": "ဇန်နဝါရဳ $1",
+ "march-date": "မာတ် $1",
+ "april-date": "ဨပရဳ $1",
+ "may-date": "မေ $1",
+ "june-date": "ဂျေန် $1",
+ "july-date": "ဂျူလာၚ် $1",
+ "august-date": "သြဂုတ် $1",
+ "october-date": "အံက်တိုဘာ $1",
+ "november-date": "နိုဝေန်ဘာ$1",
+ "period-am": "နူဂယး",
+ "period-pm": "သဝ်တ္ၚဲ",
"pagecategories": "{{PLURAL:$1|ကဏ္ဍ|ကဏ္ဍဂမၠိုင်}}",
"category_header": "မုက်လိက်ဂမၠိုင် ပ္ဍဲ ကဏ္ဍ \"$1\"",
"subcategories": "ကဏ္ဍလစှ်ေဂမၠိုင်",
"category-media-header": "မဳဒဳယာ စပ်ကဵု ကဏ္ဍ \"$1\"",
"category-empty": "<em>ကဏ္ဍဏအ် ပြဟ်ဟ်ဏအ် ဟွံမဲ ကု မုက်လိက် ဟွံသေင်မ္ဂး ပရူမွဲမွဲဏီရ</em>",
"hidden-categories": "{{PLURAL:$1|ကဏ္ဍ မပၞုက်|ကဏ္ဍ မပၞုက်ဂမၠိုင်}}",
+ "hidden-category-category": "ကဆံၚ် မပၞုက်လဝ်",
"category-subcat-count": "{{PLURAL:$2|ကဏ္ဍဏအ်ဂှ် ကဏ္ဍလစှ်ေ နွံဆ အတိုင်ဗွဲသၟဝ်ဝွံရ၊၊|ကဏ္ဍဏအ် နွံဆအတိုင် ဗွဲသၟဝ်ဝွံရ၊၊ {{PLURAL:$1|ကဏ္ဍလစှ်ေ|$1 ကဏ္ဍလစှ်ေဂမၠိုင်}}, ပၞောဝ်ကဵု $2 သီုဖအိုတ်}}",
+ "category-subcat-count-limited": "ကဆံၚ်(အဇာ)ဝွံ နွံအတိုၚ်ဗွဲသၟဝ် {{PLURAL:$1|ကဆံၚ်ပါ်|$1ကဆံၚ်ပါ်ဂမၠိုၚ်}}",
"category-article-count": "{{PLURAL:$2|ကဏ္ဍဏအ် နွံဆၜိုတ် အတိုင်ဗွဲသၟဝ်ဏအ်ရ.| ဗွဲသၟဝ်ဏအ်ဂှ် {{PLURAL:$1| ဒှ်လၟိဟ် မုက်လိက်| ဒှ်လၟိဟ် မုက်လိက်ဂမၠိုင် $1 }} စပ် ကုကဏ္ဍဏအ်ရ၊၊ သီုဖအိုတ် နွံ $2}}",
+ "category-article-count-limited": "အတိုၚ်ဗွဲသၟဝ်{{PLURAL:$1|မုက်ဂှ်|$1 မုက်တအ်}} ပ္ဍဲကဆံၚ်မလၟုဟ်.",
"category-file-count": "{{PLURAL:$2|ကဏ္ဍဏအ် နွံဆၜိုတ် ဝှာင်|အတိုင် ဗွဲသၟဝ်ဏအ်ရ {{PLURAL:$1|ဝှာင် ဂှ်|$1 ဝှာင်တအ် ဂှ်}} ပ္ဍဲကဏ္ဍဏအ် သီုဖအိုတ် နွံ $2 ၊၊}}",
"listingcontinuesabbrev": "ဆက်",
"noindex-category": "မုက်လိက် မသက္ကုလိက်",
"subject-preview": "विषयाची झलक:",
"previewerrortext": "आपल्या बदलांची झलक बघण्याचे प्रयत्नादरम्यान त्रुटी उद्भवली.",
"blockedtitle": "हा सदस्य प्रतिबंधित आहे",
- "blockedtext": "'''तुमचे सदस्यनाव अथवा IP पत्ता ब्लॉक केलेला आहे.'''\n\nहा ब्लॉक $1 यांनी केलेला आहे.\nयासाठी ''$2'' हे कारण दिलेले आहे.\n\n* ब्लॉकची सुरूवात: $8\n* ब्लॉकचा शेवट: $6\n* कुणाला ब्लॉक करायचे आहे: $7\n\nतुम्ही ह्या ब्लॉक संदर्भातील चर्चेसाठी $1 अथवा [[{{MediaWiki:Grouppage-sysop}}|प्रबंधकांशी]] संपर्क करू शकता.\nतुम्ही जोवर वैध ई-मेल पत्ता आपल्या [[Special:Preferences|'माझ्या पसंती']] पानावर देत नाही तोवर तुम्ही ’सदस्याला ई-मेल पाठवा’ हा दुवा वापरू शकत नाही. तसेच असे करण्यापासून आपल्याला ब्लॉक केलेले नाही.\nतुमचा सध्याचा IP पत्ता $3 हा आहे, व तुमचा ब्लॉक क्रमांक #$5 हा आहे.\nकृपया या संदर्भातील चर्चेमध्ये वरील सर्व तपशिल उद्घृत करा.",
+ "blockedtext": "<strong>तुमचे सदस्यनाव अथवा IP पत्ता ब्लॉक केलेला आहे.<strong>\n\nहा ब्लॉक $1 यांनी केलेला आहे.\nयासाठी </em>$2</em> हे कारण दिलेले आहे.\n\n* ब्लॉकची सुरूवात: $8\n* ब्लॉकचा शेवट: $6\n* कुणाला ब्लॉक करायचे आहे: $7\n\nतुम्ही ह्या ब्लॉक संदर्भातील चर्चेसाठी $1 अथवा [[{{MediaWiki:Grouppage-sysop}}|प्रबंधकांशी]] संपर्क करू शकता.\nतुम्ही जोवर वैध ई-मेल पत्ता आपल्या [[Special:Preferences|'माझ्या पसंती']] पानावर देत नाही तोवर तुम्ही ’सदस्याला ई-मेल पाठवा’ हा दुवा वापरू शकत नाही. तसेच असे करण्यापासून आपल्याला ब्लॉक केलेले नाही.\nतुमचा सध्याचा IP पत्ता $3 हा आहे, व तुमचा ब्लॉक क्रमांक #$5 हा आहे.\nकृपया या संदर्भातील चर्चेमध्ये वरील सर्व तपशिल उद्घृत करा.",
"autoblockedtext": "तुमचा आंतरजालीय अंकपत्ता आपोआप स्थगित केला आहे कारण तो इतर अशा सदस्याने वापरला, ज्याला $1ने प्रतिबंधित केले.\nआणि दिलेले कारण खालील प्रमाणे आहे\n:''$2''\nब्लॉकची सुरूवात: $8\nब्लॉकचा शेवट: $6\nकुणाला ब्लॉक करायचे आहे: $7\n\nतुम्ही $1शी संपर्क करू शकता किंवा इतर [[{{MediaWiki:Grouppage-sysop}}|प्रबंधकां पैकी]] एकाशी स्थगनाबद्दल चर्चा करू शकता.\n\n[[Special:Preferences|सदस्य पसंतीत]]त शाबीत विपत्र पत्ता नमूद असल्या शिवाय आणि तुम्हाला तो वापरण्या पासून प्रतिबंधित केले असल्यास तुम्ही \"या सदस्यास विपत्र पाठवा\" सुविधा वापरू शकणार नाही.\nतुमचा सध्याचा IP पत्ता $3 हा आहे, व तुमचा ब्लॉक क्रमांक #$5 हा आहे. \nतुमचा स्थगन क्र $5 आहे. कृपया या संदर्भातील चर्चेमध्ये वरील सर्व तपशिल उद्घृत करा.",
"blockednoreason": "कारण दिलेले नाही",
"whitelistedittext": "लेखांचे संपादन करण्यासाठी आधी $1 करा.",
"accmailtext": "[[User talk:$1|$1]] यांसाठी अनियतक्रमाने निर्मित केलेला परवलीचा शब्द $2 यांना पाठवण्यात आला आहे.\n\nया नवीन खात्यासाठीचा परवलीचा शब्द,सनोंद-प्रवेश घेतल्यावर [[Special:ChangePassword|परवलीचा शब्द बदला]] येथे बदलता येईल.",
"newarticle": "(नवीन लेख)",
"newarticletext": "आपण सध्या अस्तित्त्वात नसलेल्या पानाच्या दुव्याचा मागोवा घेत आला आहात.\nहे पान नव्याने तयार करण्यासाठी खालील पेटीत टंकन करणे सुरु करा(अधिक माहितीसाठी [$1 साहाय्य पान] बघा).\n\nजर आपण येथे चुकून आला असाल तर ब्राउझरच्या <strong>परत</strong>(बॅक) कळीवर टिचकी द्या.",
- "anontalkpagetext": "<em>हे चर्चापान अशा अज्ञात सदस्यासाठी आहे, ज्यांनी खाते तयार केलेले नाही किंवा त्याचा वापर करत नाहीत.</em> \nत्यांच्या ओळखीसाठी आम्ही आंतरजाल अंकपत्ता वापरतो आहोत. असा अंकपत्ता बऱ्याच लोकांचा एकच असू शकतो. \nजर आपण अज्ञात सदस्य असाल आणि आपल्याला काही अप्रासंगिक संदेश मिळाला असेल तर कृपया [[Special:CreateAccount| खाते तयार करा]] किंवा [[Special:CreateAccount|सनोंद-प्रवेश करा]] ज्यामुळे, पुढे असे गैरसमज होणार नाहीत.",
+ "anontalkpagetext": "<em>हे चर्चापान अशा अज्ञात सदस्यासाठी आहे, ज्यांनी खाते तयार केलेले नाही किंवा त्याचा वापर करत नाहीत.</em> \nत्यांच्या ओळखीसाठी आम्ही आंतरजाल अंकपत्ता वापरतो आहोत. असा अंकपत्ता बऱ्याच लोकांचा एकच असू शकतो. \nजर आपण अज्ञात सदस्य असाल आणि आपल्याला काही अप्रासंगिक संदेश मिळाला असेल तर कृपया [[Special:CreateAccount| खाते तयार करा]] किंवा [[Special:CreateAccount|सनोंद-प्रवेश करा]] ज्यामुळे, पुढे असे गैरसमज होणार नाहीत.",
"noarticletext": "या लेखात सध्या काहीही मजकूर नाही.\nतुम्ही विकिपीडियावरील इतर लेखांमध्ये या [[Special:Search/{{PAGENAME}}| मथळ्याचा शोध घेऊ शकता]], <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} इतर नोंदी शोधा],\nकिंवा हा लेख [{{fullurl:{{FULLPAGENAME}}|action=edit}}तयार करू शकता]</span>.",
"noarticletext-nopermission": "सध्या या लेखात काहीही मजकूर नाही.\nतुम्ही विकिपीडियावरील इतर लेखांमध्ये [[Special:Search/{{PAGENAME}}| या मथळ्याचा शोध घेऊ शकता]], <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAME}}}}आपण या लेखाच्या इतर नोंदी शोधा]</span>,परंतु, आपणास हा लेख लिहीण्याची परवानगी देण्यात येउ शकत नाही.",
"missing-revision": "\"{{FULLPAGENAME}}\" या लेखाचे #$1 हे संस्करण अस्तित्वात नाही.वगळल्या गेलेल्या लेखपानाच्या जुन्या इतिहास-दुव्याचे अनुसरण केल्यामुळे असे होते.याबाबत विस्तृत माहिती [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} वगळलेल्या नोंदी]येथे बघता येईल.",
"recentchangeslinked-feed": "या पृष्ठासंबंधीचे बदल",
"recentchangeslinked-toolbox": "या पृष्ठासंबंधीचे बदल",
"recentchangeslinked-title": "\"$1\" च्या संदर्भातील बदल",
- "recentchangeslinked-summary": "हे पृष्ठ एखाद्या विशिष्ट पानाशी, (किंवा एखाद्या विशिष्ट वर्गात असणाऱ्या पानांशी), जोडलेल्या पानांवरील बदल दर्शविते.\nआपल्या [[Special:Watchlist|निरीक्षणसूचीत]] ही पाने <strong>ठळक</strong> दिसतील.",
+ "recentchangeslinked-summary": "हे पृष्ठ एखाद्या विशिष्ट पानाशी, (किंवा एखाद्या विशिष्ट वर्गात असणाऱ्या पानांशी), जोडलेल्या पानांवरील बदल दर्शविते.एखाद्या वर्गातील पाने पाहाण्यासाठी तो वर्ग लिहा\nआपल्या [[Special:Watchlist|निरीक्षणसूचीत]] ही पाने <strong>ठळक</strong> दिसतील.",
"recentchangeslinked-page": "पृष्ठ नाव:",
"recentchangeslinked-to": "याऐवजी दिलेल्या पानाला जोडलेल्या पानांवरील बदल दाखवा",
"recentchanges-page-added-to-category": "[[:$1]] हे पान या वर्गास जोडले",
"imagelinks": "संचिका वापर",
"linkstoimage": "खालील {{PLURAL:$1|पान चित्राशी जोडले आहे|$1 पाने चित्रांशी जोडली आहेत}}:",
"linkstoimage-more": "या संचिके ला $1 {{PLURAL:$1|पान जोडले|पाने जोडली}} आहेत.\nखालील यादी या संचिके ला जोडलेल्या {{PLURAL:$1|पहिल्या पानाचा दुवा |पहिल्या $1 पानांचे दुवे }}दर्शविते.\n[[Special:WhatLinksHere/$2|संपुर्ण यादी]] उपलब्ध आहे.",
- "nolinkstoimage": "या चित्राशी जोडलेली पृष्ठे नाही आहेत.",
+ "nolinkstoimage": "या चित्राशी जोडलेली पृष्ठे नाहीत.",
"morelinkstoimage": "या संचिकेचे [[Special:WhatLinksHere/$1|अधिक दुवे]] पहा.",
"linkstoimage-redirect": "$1 (संचिका पुनर्निर्देशन) $2",
"duplicatesoffile": "खालील संचिका या दिलेल्या {{PLURAL:$1|संचिकेची प्रत आहे|$1 संचिकांच्या प्रती आहेत}}. [[Special:FileDuplicateSearch/$2|अधिक माहिती]]",
"loginreqpagetext": "အခြားစာမျက်နှာများကို ကြည့်ရန် $1ရမည်။",
"accmailtitle": "စကားဝှက်ကို ပို့ပြီးပြီ",
"newarticle": "(အသစ်)",
- "newarticletext": "သင်သည် မရှိသေးသော စာမျက်နှာလင့် ကို ရောက်လာခြင်းဖြစ်သည်။\nစာမျက်နှာအသစ်စတင်ရန် အောက်မှ သေတ္တာထဲတွင် စတင်ရိုက်ထည့်ပါ (နောက်ထပ် သတင်းအချက်အလက်များအတွက်[$1 အကူအညီ စာမျက်နှာ]ကို ကြည့်ပါ)။\nမတော်တဆရောက်လာခြင်း ဖြစ်ပါက ဘရောက်ဆာ၏ နောက်ပြန်ပြန်သွားသော <strong>back</strong> ခလုတ်ကို နှိပ်ပါ။",
+ "newarticletext": "သင်သည် မရှိသေးသော စာမျက်နှာလင့် ကို ရောက်လာခြင်းဖြစ်သည်။\nစာမျက်နှာအသစ်စတင်ရန် အောက်မှ သေတ္တာထဲတွင် စတင်ရိုက်ထည့်ပါ (နောက်ထပ် သတင်းအချက်အလက်များအတွက် [$1 အကူအညီ စာမျက်နှာ]ကို ကြည့်ပါ)။\nမတော်တဆရောက်လာခြင်း ဖြစ်ပါက ဘရောက်ဆာ၏ နောက်ပြန်ပြန်သွားသော <strong>back</strong> ခလုတ်ကို နှိပ်ပါ။",
"anontalkpagetext": "----\n<em>ဤသည်မှာ အကောင့်မဖန်တီးသော သို့မဟုတ် အကောင့်မရှိသော အမည်မသိ အသုံးပြုသူတစ်ဦးအတွက် ဆွေးနွေးချက် စာမျက်နှာ ဖြစ်သည်။</em>\nသို့အတွက် ကျွန်ုပ်တို့အနေဖြင့် အိုင်ပီလိပ်စာဂဏန်းကိုသာ သူ/သူမ အားခွဲခြားနိုင်ရန် အသုံးပြုရပါသည်။\nထိုသို့သော အိုင်ပီလိပ်စာများကို အသုံးပြုသူများစွာမှ မျှဝေသုံးစွဲနေနိုင်ပါသည်။\nသင်သည် အမည်မသိ အသုံးပြုသူတစ်ဦးဖြစ်ပြီး မသက်ဆိုင်သော သုံးသပ်ဆွေးနွေးချက်များက သင့်အား အနှောက်အယှက်ဖြစ်စေပါက၊ ကျေးဇူးပြု၍ [[Special:CreateAccount|အကောင့်တစ်ခု ဖန်တီးပါ]] သို့မဟုတ် [[Special:UserLogin|လော့ဂ်အင်ဝင်ရောက်ပြီး]] အခြား အမည်မသိအသုံးပြုသူများနှင့် ရောထွေးနေနိုင်ခြင်းကို ရှောင်ကြဉ်နိုင်ပါသည်။",
"noarticletext": "ဤစာမျက်နှာတွင် ယခုလက်ရှိတွင် မည်သည့်စာသားမှ မရှိပါ။\nသင်သည် အခြားစာမျက်နှာများတွင် [[Special:Search/{{PAGENAME}}|ဤစာမျက်နှာ၏ ခေါင်းစဉ်ကို ရှာနိုင်သည်]]၊ <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ဆက်စပ်ရာ မှတ်တမ်းများကို ရှာနိုင်သည်]၊ သို့မဟုတ် [{{fullurl:{{FULLPAGENAME}}|action=edit}} ဤစာမျက်နှာကို ဖန်တီးနိုင်သည်]</span>။",
"noarticletext-nopermission": "ဤစာမျက်နှာတွင် ယခုလက်ရှိတွင် မည်သည့်စာသားမှ မရှိပါ။\nသင်သည် အခြားစာမျက်နှာများတွင် [[Special:Search/{{PAGENAME}}|ဤစာမျက်နှာ၏ ခေါင်းစဉ်ကို ရှာနိုင်သည်]]၊ သို့မဟုတ် <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ဆက်စပ်ရာ မှတ်တမ်းများကို ရှာနိုင်သည်]</span>။ သို့သော် ဤစာမျက်နှာကို ဖန်တီးရန် သင့်တွင် အခွင့်အရေး မရှိပါ။",
"booksources": "မှီငြမ်း စာအုပ်များ",
"booksources-search-legend": "စာအုပ်ရင်းမြစ်များကို ရှာရန်",
"booksources-search": "ရှာဖွေရန်",
+ "booksources-text": "အောက်ပါတို့သည် အသုံးပြုပြီးသားနှင့် စာအုပ်သစ်များကို ရောင်းချသော အခြားဆိုဒ်လင့်ခ်များစာရင်းဖြစ်သည်၊ သင်ရှာဖွေနေသော စာအုပ်များနှင့်ပတ်သက်သည့် အခြားသတင်းအချက်အလက်လည်း ရှိနိုင်ပါသည်:",
+ "booksources-invalid-isbn": "ပေးထားသော ISBN မှာ ဆီလျော်သည့်ပုံစံ မရှိပါ၊ မူလရင်းမြစ်မှ ကော်ပီကူးခြင်းအမှားများအတွက် စစ်ဆေးကြည့်ပါ။",
"specialloguserlabel": "ဆောင်ရွက်သူ -",
"speciallogtitlelabel": "ရည်ရွယ်ရာ (ခေါင်းစဉ် သို့ {{ns:user}}:အသုံးပြုသူအတွက် အသုံးပြုအမည်):",
"log": "မှတ်တမ်းများ",
"restore-count-files": "{{PLURAL: $1|၁ ဖိုင်|$1 ဖိုင်များ}}",
"logentry-delete-revision": "$3 စာမျက်နှာပေါ်ရှိ {{PLURAL:$5|တည်းဖြတ်မူတစ်ခု|တည်းဖြတ်မူ $5 ခု}}၏ အမြင်ပုံစံကို $1 က {{GENDER:$2|ပြောင်းလဲခဲ့သည်}}: $4",
"revdelete-content-hid": "အကြောင်းအရာ ဝှက်ခြင်း",
+ "revdelete-summary-hid": "တည်းဖြတ်မှုအကျဉ်းချုပ် ဝှက်ထားခြင်း",
+ "revdelete-uname-hid": "အသုံးပြုသူအမည် ဝှက်ခြင်း",
"revdelete-restricted": "အက်ဒမင်များသို့ ကန့်သတ်ချက်များ သက်ရောက်ရန်",
"revdelete-unrestricted": "အက်ဒမင်များအတွက် ကန့်သတ်ချက်များကို ဖယ်ရှားရန်",
"logentry-block-block": "$1 က {{GENDER:$4|$3}} ကို သက်တမ်းကုန်လွန်ချိန် $5 $6 ဖြင့် {{GENDER:$2|ပိတ်ပင်ခဲ့သည်}}",
"authmanager-realname-label": "အမည်ရင်း",
"authmanager-realname-help": "အသုံးပြုသူ၏ အမည်ရင်း",
"authmanager-provider-temporarypassword": "ယာယီစကားဝှက်",
+ "authprovider-resetpass-skip-label": "ကျော်ရန်",
"cannotauth-not-allowed-title": "ခွင့်ပြုချက် ငြင်းပယ်လိုက်သည်",
"cannotauth-not-allowed": "သင်သည် ဤစာမျက်နှာကို အသုံးပြုခွင့်မရှိပါ",
"edit-error-short": "အမှား - $1",
"redirect-file": "Bestandsnaam",
"redirect-logid": "Logboekregel-ID",
"redirect-not-exists": "Waarde niet gevonden",
+ "redirect-not-numeric": "Waarde is geen nummer",
"fileduplicatesearch": "Duplicaatbestanden zoeken",
"fileduplicatesearch-summary": "Duplicaatbestanden zoeken op basis van de hashwaarde.",
"fileduplicatesearch-filename": "Bestandsnaam:",
"edit-error-long": "Fouten:\n\n$1",
"revid": "versie $1",
"pageid": "Pagina-ID $1",
- "interfaceadmin-info": "$1\n\nRechten voor het bewerken van wikibrede CSS/JS/JSON bestanden zijn recentelijk gescheiden van het <code>editinterface</code> recht. Als u niet begrijpt waarom u deze foutmelding te zien krijgt, ga dan naar [[mw:MediaWiki_1.32/interface-admin]].",
+ "interfaceadmin-info": "$1\n\nRechten voor het bewerken van wikibrede CSS/JS/JSON-bestanden zijn recentelijk gescheiden van het <code>editinterface</code> recht. Als u niet begrijpt waarom u deze foutmelding te zien krijgt, ga dan naar [[mw:MediaWiki_1.32/interface-admin]].",
"rawhtml-notallowed": "<html> tags kunnen alleen op normale pagina's geplaatst worden.",
"gotointerwiki": "{{SITENAME}} verlaten",
"gotointerwiki-invalid": "De opgegeven titel is ongeldig.",
"rcfilters-filter-bots-description": "Endringar gjorde med automatiske verktøy.",
"rcfilters-filter-humans-label": "Menneske (ikkje robot)",
"rcfilters-filter-humans-description": "Endringar gjorde av menneske.",
+ "rcfilters-filtergroup-reviewstatus": "Granskingsstode",
+ "rcfilters-filter-reviewstatus-unpatrolled-description": "Endringar som ikkje er manuelt eller automatisk merkte som patruljerte.",
+ "rcfilters-filter-reviewstatus-manual-description": "Endringar som manuelt er merkte som patruljerte.",
+ "rcfilters-filter-reviewstatus-auto-description": "Endringar av vidarekomne brukarar som automatisk får arbeidet sitt merkt som patruljert.",
"rcfilters-filtergroup-significance": "Vekt",
"rcfilters-filter-minor-label": "Småplukk",
"rcfilters-filter-minor-description": "Endringar merkte som småplukk av forfattaren.",
"pageinfo-category-files": "Tal filer",
"markaspatrolleddiff": "Merk som patruljert",
"markaspatrolledtext": "Merk innhaldssida som patruljert",
+ "markaspatrolledtext-file": "Merk filversjonen som patruljert",
"markedaspatrolled": "Merk som patruljert",
"markedaspatrolledtext": "Den valde versjonen av [[:$1]] er vorten merkt som patruljert.",
"rcpatroldisabled": "Siste-endringar-patruljering er deaktivert",
"markedaspatrollederrornotify": "Det gjekk ikkje å merkja endringa som patruljert.",
"patrol-log-page": "Patruljeringslogg",
"patrol-log-header": "Dette er ein logg over patruljerte sideversjonar.",
+ "confirm-markpatrolled-top": "Merk versjon $3 av $2 som patruljert?",
"deletedrevision": "Slett gammal versjon $1",
"filedeleteerror-short": "Feil ved sletting av fila: $1",
"filedeleteerror-long": "Det vart ein feil under filslettinga av:\n\n$1",
"newimages-summary": "Denne spesialsida syner dei sist opplasta filene.",
"newimages-legend": "Filnamn",
"newimages-label": "Filnamn (eller ein del av det):",
+ "newimages-user": "IP-adresse eller brukarnamn",
+ "newimages-newbies": "Berre vis opplastingar frå nye kontoar",
+ "newimages-showbots": "Vis opplastingar av robotar",
+ "newimages-hidepatrolled": "Gøym patruljerte opplastingar",
"noimages": "Her er ingen filer som kan visast.",
"ilsubmit": "Søk",
"bydate": "etter dato",
"mediastatistics-table-extensions": "Mogelege filendingar",
"mediastatistics-table-count": "Tal filer",
"mediastatistics-header-unknown": "Ukjende",
+ "mediastatistics-header-bitmap": "Bitmap-bilete",
+ "mediastatistics-header-drawing": "Teikningar (vektorbilete)",
"mediastatistics-header-audio": "Lyd",
"mediastatistics-header-video": "Videoar",
"mediastatistics-header-multimedia": "Rike media",
"version-skin-colheader-name": "ସ୍କିନ",
"version-ext-colheader-version": "ସଂସ୍କରଣ",
"version-ext-colheader-license": "ଲାଇସେନ୍ସ",
- "version-ext-colheader-description": "ବର୍ଣନା",
+ "version-ext-colheader-description": "ବରà\8dଣà\8dଣନା",
"version-ext-colheader-credits": "ଲେଖକମାନେ",
"version-license-title": "$1 ପାଇଁ ଲାଇସେନ୍ସ",
"version-license-not-found": "ଏହି ଏକ୍ସଟେନସନରେ କୌଣସି ସବିଶେଷ ସୂଚନା ନାହିଁ ।",
"right-suppressionlog": "Podgląd rejestru ukrywania",
"right-block": "Blokowanie użytkownikom możliwości edycji",
"right-blockemail": "Blokowanie użytkownikom możliwości wysyłania wiadomości",
- "right-hideuser": "Blokowanie użytkownika, niewidoczne publicznie",
+ "right-hideuser": "Blokowanie użytkownika i ukrywanie od publiczności",
"right-ipblock-exempt": "Obejście blokad, automatycznych blokad i blokad zakresów adresów IP",
"right-unblockself": "Odblokowanie samego siebie",
"right-protect": "Zmiana poziomu zabezpieczenia i edycja stron zabezpieczonych kaskadowo",
"redirect-file": "Nome do arquivo",
"redirect-logid": "ID de log",
"redirect-not-exists": "Valor não encontrado",
+ "redirect-not-numeric": "Valor não numérico",
"fileduplicatesearch": "Procurar por arquivos duplicados",
"fileduplicatesearch-summary": "Procure por arquivos duplicados tendo por base seu valor \"hash\".",
"fileduplicatesearch-filename": "Nome do arquivo:",
"edit-error-long": "Erros:\n$1",
"revid": "revisão $1",
"pageid": "ID da página $1",
- "interfaceadmin-info": "$1\n\nAs permissões de edição de arquivos CSS/JS/JSON que afetam todo o ''site'' foram recentemente separadas do privilégio <code>editinterface</code>. Se não compreende porque está a receber este erro, consulte [[mw:MediaWiki_1.32/interface-admin]].",
+ "interfaceadmin-info": "$1\n\nAs permissões para edição de arquivos CSS/JS/JSON em todo o site foram separadas recentemente do direito <code>editinterface</code>. Se você não entende porque está recebendo este erro, veja [[mw:MediaWiki_1.32/interface-admin]].",
"rawhtml-notallowed": "As tags <html> não podem ser usadas fora das páginas normais.",
"gotointerwiki": "Saindo {{SITENAME}}",
"gotointerwiki-invalid": "O título especificado é inválido.",
"redirect-file": "Description of lookup type for [[Special:Redirect]].\n{{Identical|Filename}}",
"redirect-logid": "Description of lookup type for [[Special:Redirect]].\n{{Identical|Log ID}}",
"redirect-not-exists": "Used as error message in [[Special:Redirect]]",
+ "redirect-not-numeric": "Used as error message in [[Special:Redirect]]",
"fileduplicatesearch": "Name of special page [[Special:FileDuplicateSearch]].",
"fileduplicatesearch-summary": "Summary of [[Special:FileDuplicateSearch]]",
"fileduplicatesearch-filename": "Input form of [[Special:FileDuplicateSearch]]:\n\n{{Identical|Filename}}",
"permissionserrorstext-withaction": "У вас нет прав на выполнение действия «$2» по {{PLURAL:$1|1=следующей причине|следующим причинам}}:",
"contentmodelediterror": "Вы не можете редактировать эту версию, поскольку модель её содержания — <code>$1</code>, отличающаяся от текущей модели содержания страницы — <code>$2</code>.",
"recreate-moveddeleted-warn": "<strong>Внимание: Вы пытаетесь воссоздать страницу, которая ранее удалялась.</strong>\n\nПроверьте, действительно ли вам нужно воссоздавать эту страницу.\nНиже для справки приведены журналы удаления и переименований этой страницы.",
- "moveddeleted-notice": "ÐÑ\82а Ñ\81Ñ\82Ñ\80аниÑ\86а бÑ\8bла Ñ\83далена.\nÐ\9dиже длÑ\8f Ñ\81пÑ\80авки пÑ\80иведенÑ\8b жÑ\83Ñ\80налÑ\8b Ñ\83далениÑ\8f, заÑ\89иÑ\82Ñ\8b и пеÑ\80емеÑ\89ения для этой страницы.",
- "moveddeleted-notice-recent": "Ð\9a Ñ\81ожалениÑ\8e, Ñ\8dÑ\82а Ñ\81Ñ\82Ñ\80аниÑ\86а бÑ\8bла недавно Ñ\83далена (в Ñ\82еÑ\87ение поÑ\81ледниÑ\85 24 Ñ\87аÑ\81ов).\nÐ\9dиже длÑ\8f Ñ\81пÑ\80авки пÑ\80иведенÑ\8b жÑ\83Ñ\80налÑ\8b Ñ\83далениÑ\8f, заÑ\89иÑ\82Ñ\8b и пеÑ\80емеÑ\89ения для этой страницы.",
+ "moveddeleted-notice": "ÐÑ\82а Ñ\81Ñ\82Ñ\80аниÑ\86а бÑ\8bла Ñ\83далена.\nÐ\9dиже длÑ\8f Ñ\81пÑ\80авки пÑ\80иведенÑ\8b жÑ\83Ñ\80налÑ\8b Ñ\83далениÑ\8f, заÑ\89иÑ\82Ñ\8b и пеÑ\80еименования для этой страницы.",
+ "moveddeleted-notice-recent": "Ð\9a Ñ\81ожалениÑ\8e, Ñ\8dÑ\82а Ñ\81Ñ\82Ñ\80аниÑ\86а бÑ\8bла недавно Ñ\83далена (в Ñ\82еÑ\87ение поÑ\81ледниÑ\85 24 Ñ\87аÑ\81ов).\nÐ\9dиже длÑ\8f Ñ\81пÑ\80авки пÑ\80иведенÑ\8b жÑ\83Ñ\80налÑ\8b Ñ\83далениÑ\8f, заÑ\89иÑ\82Ñ\8b и пеÑ\80еименования для этой страницы.",
"log-fulllog": "Просмотреть журнал целиком",
"edit-hook-aborted": "Правка отменена процедурой-перехватчиком.\nДополнительных разъяснений не приведено.",
"edit-gone-missing": "Невозможно обновить страницу.\nВероятно, она была удалена.",
"redirect-file": "Название файла",
"redirect-logid": "ID журнала",
"redirect-not-exists": "Значение не найдено",
+ "redirect-not-numeric": "Значение не числовое",
"fileduplicatesearch": "Поиск одинаковых файлов",
"fileduplicatesearch-summary": "Поиск одинаковых файлов по хэш-коду.",
"fileduplicatesearch-filename": "Имя файла:",
"right-move": "Переменованя сторінок",
"right-move-subpages": "Переменованя сторінок і їх підсторінок",
"right-move-rootuserpages": "Переменованя корінёвых сторінок хоснователїв",
+ "right-move-categorypages": "Переменованя сторінок катеґорій",
"right-movefile": "Переменовати файлы",
"right-suppressredirect": "Нестворіня напрямлїня про переменоваю сторінкы",
"right-upload": "Наладовованя файлів",
"right-siteadmin": "Замыкана і одомыканя датабазы",
"right-override-export-depth": "Експорт сторінок включаючі звязаны сторінкы з глубков до 5",
"right-sendemail": "Посыланя пошты іншым хоснователям",
+ "right-applychangetags": "Придаваня [[Special:Tags|значок]] до властных змін",
"newuserlogpage": "Лоґ вытварянь хоснователїв",
"newuserlogpagetext": "Тото є список ново реґістрованых хоснователїв.",
"rightslog": "Лоґ хосновательскых прав",
"action-move": "Переменовати тоту сторінку",
"action-move-subpages": "переменованя той сторінкы зо вшыткыма єй підсторінками",
"action-move-rootuserpages": "переменовати корінёвы сторінкы хостователїв",
+ "action-move-categorypages": "переменованя сторінок катеґорій",
"action-movefile": "переменовати тот файл",
"action-upload": "наладовати тот файл",
"action-reupload": "переписати тот екзістуючій файл",
"redirect-file": "Ime datoteke",
"redirect-logid": "ID dnevnika",
"redirect-not-exists": "Vrednosti ni mogoče najti",
+ "redirect-not-numeric": "Vrednost ni številska",
"fileduplicatesearch": "Iskanje podvojenih datotek",
"fileduplicatesearch-summary": "Iskanje podvojenih datotek, ki temelji na podlagi njenih hashvrednosti.",
"fileduplicatesearch-filename": "Ime datoteke:",
"resetpass-no-info": "Морате бити пријављени да бисте приступили овој страници.",
"resetpass-submit-loggedin": "Промени лозинку",
"resetpass-submit-cancel": "Откажи",
- "resetpass-wrong-oldpass": "Неважећа привремена или актуелна лозинка.\nМожда сте већ променили лозинку или сте захтевали нову привремену лозинку.",
+ "resetpass-wrong-oldpass": "Неважећа привремена или тренутна лозинка.\nМожда сте већ променили лозинку или сте захтевали нову привремену лозинку.",
"resetpass-recycled": "Унели сте садашњу лозинку, да бисте променили лозинку морате унети нову.",
"resetpass-temp-emailed": "Пријавили сте се са привременим кодом из имејла.\nДа бисте завршили пријављивање морате поставити нову лозинку овде:",
"resetpass-temp-password": "Привремена лозинка:",
"rev-showdeleted": "прикажи",
"revisiondelete": "Брисање/враћање измена",
"revdelete-nooldid-title": "Неважећа одредишна измена",
- "revdelete-nooldid-text": "Нисте навели одредишну измену на којој треба да се изврши ова функција, та измена не постоји, или покушавате да сакријете актуелну измену.",
+ "revdelete-nooldid-text": "Нисте навели одредишну измену на којој треба да се изврши ова функција, та измена не постоји, или покушавате да сакријете тренутну измену.",
"revdelete-no-file": "Тражена датотека не постоји.",
"revdelete-show-file-confirm": "Јесте ли сигурни да желите да видите избрисану измену датотеке „<nowiki>$1</nowiki>“ од $2; $3?",
"revdelete-show-file-submit": "Да",
"revdel-restore": "промени видљивост",
"pagehist": "Историја странице",
"deletedhist": "Избрисана историја",
- "revdelete-hide-current": "Грешка при сакривању ставке од $1, $2: Ово је актуелна измена.\nНе може да буде сакривена.",
+ "revdelete-hide-current": "Грешка при сакривању ставке од $1, $2: Ово је тренутна измена.\nНе може да буде сакривена.",
"revdelete-show-no-access": "Грешка при приказивању ставке од $1, $2: означена је као „ограничена“.\nНемате приступ до ње.",
"revdelete-modify-no-access": "Грешка при мењању ставке од $1, $2: означена је као „ограничена“.\nНемате приступ до ње.",
"revdelete-modify-missing": "Грешка при мењању ИБ ставке $1: она не постоји у бази података.",
"revdelete-edit-reasonlist": "Уреди разлоге за брисање",
"revdelete-offender": "Аутор измене:",
"suppressionlog": "Дневник сакривања",
- "suppressionlogtext": "Испод се налази списак брисања и блокирања који укључује садржај сакривен од администратора. Погледајте [[Special:BlockList|списак блокирања]] за списак актуелних операција забрана и блокирања.",
+ "suppressionlogtext": "Испод се налази списак брисања и блокирања који укључује садржај сакривен од администратора. Погледајте [[Special:BlockList|списак блокирања]] за списак тренутних операција забрана и блокирања.",
"mergehistory": "Спајање историја странице",
"mergehistory-header": "Ова страница вам омогућава да спојите измене неке изворне странице у нову страницу.\nЗапамтите да ће ова промена оставити непромењен садржај историје странице.",
"mergehistory-box": "Споји измене две странице:",
"uploadstash-file-not-found-not-exists": "Не могу наћи путању или ово није обична датотека.",
"uploadstash-file-too-large": "Не могу послужити датотеку већу од $1 {{PLURAL:$1|бајта|бајтова}}",
"uploadstash-not-logged-in": "Нико није пријављен. Датотеке морају припадати корисницима.",
- "uploadstash-wrong-owner": "Ова датотека ($1) не припада актуелном кориснику.",
+ "uploadstash-wrong-owner": "Ова датотека ($1) не припада тренутном кориснику.",
"uploadstash-no-such-key": "Нема таквог кључа ($1). Не могу уклонити.",
"uploadstash-no-extension": "Додатак је празан.",
"uploadstash-zero-length": "Датотека је празна",
"protect_expiry_old": "Време истека је у прошлости.",
"protect-unchain-permissions": "Откључај даљња подешавања заштите",
"protect-text": "Овде можете да погледате и промените ниво заштите странице <strong>$1</strong>.",
- "protect-locked-blocked": "Не можете да мењате нивое заштите док сте блокирани.\nОво су актуелна подешавања странице '''$1''':",
- "protect-locked-dblock": "Нивои заштите се не могу мењати јер је активна база података закључана.\nОво су актуелна подешавања странице '''$1''':",
- "protect-locked-access": "Ваш налог нема дозволу да мења нивое заштите странице.\nОво су актуелна подешавања странице '''$1''':",
+ "protect-locked-blocked": "Не можете да мењате нивое заштите док сте блокирани.\nОво су тренутна подешавања странице <strong>$1</strong>:",
+ "protect-locked-dblock": "Нивои заштите се не могу мењати јер је активна база података закључана.\nОво су тренутна подешавања странице <strong>$1</strong>:",
+ "protect-locked-access": "Ваш налог нема дозволу да мења нивое заштите странице.\nОво су тренутна подешавања странице <strong>$1</strong>:",
"protect-cascadeon": "Ова страница је тренутно заштићена јер је укључена у {{PLURAL:$1|следећу страницу која има|следеће странице које имају}} укључену преносиву заштиту.\nПромене нивоа заштите ове странице неће да утичу на преносиву заштиту.",
"protect-default": "Допуштено свим корисницима",
"protect-fallback": "Дозвољено само корисницима са дозволом „$1“",
"contribsub2": "За {{GENDER:$3|$1}} ($2)",
"contributions-userdoesnotexist": "Кориснички налог „$1“ није отворен.",
"nocontribs": "Нису пронађене промене које одговарају овим критеријумима.",
- "uctop": "(актуелна)",
+ "uctop": "(тренутна)",
"month": "од месеца (и раније):",
"year": "од године (и раније):",
"date": "Од датума (и раније):",
"markedaspatrolled": "Означено као патролирано",
"markedaspatrolledtext": "Изабрана измена странице [[:$1]] означена је као патролирана.",
"rcpatroldisabled": "Патролирање скорашњих измена је онемогућено",
- "rcpatroldisabledtext": "Могућност патролирања скорашњих измена је актуелно онемогућена.",
+ "rcpatroldisabledtext": "Могућност патролирања скорашњих измена је тренутно онемогућена.",
"markedaspatrollederror": "Не могу да означим као патролирано.",
"markedaspatrollederrortext": "Морате навести измену да бисте је означили као патролирану.",
"markedaspatrollederror-noautopatrol": "Не можете да означите своје промене као патролиране.",
"redirect-file": "Назив датотеке",
"redirect-logid": "ID дневника",
"redirect-not-exists": "Вредност није пронађена",
+ "redirect-not-numeric": "Вредност није нумеричка",
"fileduplicatesearch": "Претрага дупликата датотека",
"fileduplicatesearch-summary": "Претрага дуплираних датотека према хеш вредности.",
"fileduplicatesearch-filename": "Назив датотеке:",
"resetpass-no-info": "Morate biti prijavljeni da biste pristupili ovoj stranici.",
"resetpass-submit-loggedin": "Promeni lozinku",
"resetpass-submit-cancel": "Otkaži",
- "resetpass-wrong-oldpass": "Nevažeća privremena ili aktuelna lozinka.\nMožda ste već promenili lozinku ili ste zahtevali novu privremenu lozinku.",
+ "resetpass-wrong-oldpass": "Nevažeća privremena ili trenutna lozinka.\nMožda ste već promenili lozinku ili ste zahtevali novu privremenu lozinku.",
"resetpass-recycled": "Uneli ste sadašnju lozinku, da biste promenili lozinku morate uneti novu.",
"resetpass-temp-emailed": "Prijavili ste se sa privremenim kodom iz imejla.\nDa biste završili prijavljivanje morate postaviti novu lozinku ovde:",
"resetpass-temp-password": "Privremena lozinka:",
"rev-showdeleted": "prikaži",
"revisiondelete": "Brisanje/vraćanje izmena",
"revdelete-nooldid-title": "Nevažeća odredišna izmena",
- "revdelete-nooldid-text": "Niste naveli odredišnu izmenu na kojoj treba da se izvrši ova funkcija, ta izmena ne postoji, ili pokušavate da sakrijete aktuelnu izmenu.",
+ "revdelete-nooldid-text": "Niste naveli odredišnu izmenu na kojoj treba da se izvrši ova funkcija, ta izmena ne postoji, ili pokušavate da sakrijete trenutnu izmenu.",
"revdelete-no-file": "Tražena datoteka ne postoji.",
"revdelete-show-file-confirm": "Jeste li sigurni da želite da vidite izbrisanu izmenu datoteke „<nowiki>$1</nowiki>“ od $2; $3?",
"revdelete-show-file-submit": "Da",
"revdel-restore": "promeni vidljivost",
"pagehist": "Istorija stranice",
"deletedhist": "Izbrisana istorija",
- "revdelete-hide-current": "Greška pri sakrivanju stavke od $1, $2: Ovo je aktuelna izmena.\nNe može da bude sakrivena.",
+ "revdelete-hide-current": "Greška pri sakrivanju stavke od $1, $2: Ovo je trenutna izmena.\nNe može da bude sakrivena.",
"revdelete-show-no-access": "Greška pri prikazivanju stavke od $1, $2: označena je kao „ograničena“.\nNemate pristup do nje.",
"revdelete-modify-no-access": "Greška pri menjanju stavke od $1, $2: označena je kao „ograničena“.\nNemate pristup do nje.",
"revdelete-modify-missing": "Greška pri menjanju IB stavke $1: ona ne postoji u bazi podataka.",
"revdelete-edit-reasonlist": "Uredi razloge za brisanje",
"revdelete-offender": "Autor izmene:",
"suppressionlog": "Evidencija sakrivanja",
- "suppressionlogtext": "Ispod se nalazi spisak brisanja i blokiranja koji uključuje sadržaj sakriven od administratora. Pogledajte [[Special:BlockList|spisak blokiranja]] za spisak aktuelnih operacija zabrana i blokiranja.",
+ "suppressionlogtext": "Ispod se nalazi spisak brisanja i blokiranja koji uključuje sadržaj sakriven od administratora. Pogledajte [[Special:BlockList|spisak blokiranja]] za spisak trenutnih operacija zabrana i blokiranja.",
"mergehistory": "Spajanje istorija stranice",
"mergehistory-header": "Ova stranica vam omogućava da spojite izmene neke izvorne stranice u novu stranicu.\nZapamtite da će ova promena ostaviti nepromenjen sadržaj istorije stranice.",
"mergehistory-box": "Spoji izmene dve stranice:",
"right-undelete": "vraćanje izbrisanih stranica",
"right-suppressrevision": "pregledanje, skrivanje i vraćanje određenih izmena stranica od svih korisnika",
"right-viewsuppressed": "pregledanje izmena skrivenih od svih korisnika",
- "right-suppressionlog": "pregledanje privatnih evidencija",
+ "right-suppressionlog": "pregledanje privatnih dnevnika",
"right-block": "blokiranje daljih izmena drugih korisnika",
"right-blockemail": "blokiranje korisnika da šalju imejl",
"right-hideuser": "blokiranje korisničkog imena i njegovo sakrivanje od javnosti",
"newuserlogpage": "Evidencija novih korisnika",
"newuserlogpagetext": "Ovo je dnevnik o registraciji novih korisnika.",
"rightslog": "Evidencija korisničkih prava",
- "rightslogtext": "Ovo je evidencija promena korisničkih prava.",
+ "rightslogtext": "Ovo je dnevnik promena korisničkih prava.",
"action-read": "čitate ovu stranicu",
"action-edit": "uređujete ovu stranicu",
"action-createpage": "napravite ovu stranicu",
"uploadstash-file-not-found-not-exists": "Ne mogu naći putanju ili ovo nije obična datoteka.",
"uploadstash-file-too-large": "Ne mogu poslužiti datoteku veću od $1 {{PLURAL:$1|bajta|bajtova}}",
"uploadstash-not-logged-in": "Niko nije prijavljen. Datoteke moraju pripadati korisnicima.",
- "uploadstash-wrong-owner": "Ova datoteka ($1) ne pripada aktuelnom korisniku.",
+ "uploadstash-wrong-owner": "Ova datoteka ($1) ne pripada trenutnom korisniku.",
"uploadstash-no-such-key": "Nema takvog ključa ($1). Ne mogu ukloniti.",
"uploadstash-no-extension": "Dodatak je prazan.",
"uploadstash-zero-length": "Datoteka je prazna",
"protect_expiry_old": "Vreme isteka je u prošlosti.",
"protect-unchain-permissions": "Otključaj daljnja podešavanja zaštite",
"protect-text": "Ovde možete da pogledate i promenite nivo zaštite stranice <strong>$1</strong>.",
- "protect-locked-blocked": "Ne možete da menjate nivoe zaštite dok ste blokirani.\nOvo su aktuelna podešavanja stranice '''$1''':",
- "protect-locked-dblock": "Nivoi zaštite se ne mogu menjati jer je aktivna baza podataka zaključana.\nOvo su aktuelna podešavanja stranice '''$1''':",
- "protect-locked-access": "Vaš nalog nema dozvolu da menja nivoe zaštite stranice.\nOvo su aktuelna podešavanja stranice '''$1''':",
+ "protect-locked-blocked": "Ne možete da menjate nivoe zaštite dok ste blokirani.\nOvo su trenutna podešavanja stranice '''$1''':",
+ "protect-locked-dblock": "Nivoi zaštite se ne mogu menjati jer je aktivna baza podataka zaključana.\nOvo su trenutna podešavanja stranice '''$1''':",
+ "protect-locked-access": "Vaš nalog nema dozvolu da menja nivoe zaštite stranice.\nOvo su trenutna podešavanja stranice '''$1''':",
"protect-cascadeon": "Ova stranica je trenutno zaštićena jer je uključena u {{PLURAL:$1|sledeću stranicu koja ima|sledeće stranice koje imaju}} uključenu prenosivu zaštitu.\nPromene nivoa zaštite ove stranice neće da utiču na prenosivu zaštitu.",
"protect-default": "Dopušteno svim korisnicima",
"protect-fallback": "Dozvoljeno samo korisnicima sa dozvolom „$1“",