From: jenkins-bot Date: Wed, 19 Sep 2018 19:08:40 +0000 (+0000) Subject: Merge "mw.jqueryMsg: Add tests for non-string parameters to functions that expect... X-Git-Tag: 1.34.0-rc.0~4054 X-Git-Url: http://git.cyclocoop.org/%7B%24admin_url%7Dmes_infos.php?a=commitdiff_plain;h=216c7d838012c52961c955f40a93af8a4087e68f;hp=76e72fd4c4262e71b7dc927cb07bf4957cc78554;p=lhc%2Fweb%2Fwiklou.git Merge "mw.jqueryMsg: Add tests for non-string parameters to functions that expect strings" --- diff --git a/.eslintrc.json b/.eslintrc.json index 4630e071e5..c0767517ea 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -8,8 +8,6 @@ "module": false, "mw": false, "$": false, - "mediaWiki": false, - "jQuery": false, "OO": false }, "rules": { diff --git a/.phpcs.xml b/.phpcs.xml index bd0ab82da3..2bce5b2a59 100644 --- a/.phpcs.xml +++ b/.phpcs.xml @@ -2,14 +2,12 @@ - - diff --git a/RELEASE-NOTES-1.32 b/RELEASE-NOTES-1.32 index 0dca8f13d5..5954b872a7 100644 --- a/RELEASE-NOTES-1.32 +++ b/RELEASE-NOTES-1.32 @@ -36,6 +36,10 @@ production. (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, @@ -97,7 +101,7 @@ production. * … ==== Changed external libraries ==== -* Updated qunitjs from 2.4.0 to 2.6.0. +* Updated qunitjs from 2.4.0 to 2.6.2. * Updated wikimedia/scoped-callback from 1.0.0 to 2.0.0. ** ScopedCallback objects can no longer be serialized. * Updated wikimedia/wrappedstring from 2.3.0 to 3.0.1. @@ -114,6 +118,7 @@ production. === Bug fixes in 1.32 === * SpecialPage::execute() will now only call checkLoginSecurityLevel() if getLoginSecurityLevel() returns non-false. +* (T43720, T46197) Improved page display title handling for category pages === Action API changes in 1.32 === * Added templated parameters. @@ -287,6 +292,25 @@ because of Phabricator reports. instead. * MediaWiki no longer supports a StartProfiler.php file. Define $wgProfiler via LocalSettings.php instead. +* The mw.loader.addSource() is now considered a private method, and no longer + supports the `id, url` signature. Use the `Object` parameter instead. +* The backwards-compatibility code in HTMLForm to add a drop-down control to an + option that is not set to be a drop-down if the "mw-chosen" class is present, + is now removed. +* Several collations were removed. They were workarounds for bugs in the ICU + library and they are no longer needed (as of ICU 57.1): + * 'uppercase-se' (NorthernSamiUppercaseCollation) - use 'uca-se' instead + * 'xx-uca-et' (CollationEt) - use 'uca-et' instead + * 'xx-uca-fa' (CollationFa) - use 'uca-fa' instead +* The hooks 'SpecialRecentChangesFilters' & 'SpecialWatchlistFilters' deprecated + in 1.23 were removed. Instead, use 'ChangesListSpecialPageStructuredFilters'. + The ChangesListSpecialPage code for these legacy hooks, and their use in + SpecialRecentchanges.php and SpecialWatchlist, was also removed: + * 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 @@ -299,7 +323,6 @@ because of Phabricator reports. * Overriding SearchEngine::{searchText,searchTitle,searchArchiveTitle} in extending classes is deprecated. Extend related doSearch* methods instead. -* CollationFa has been removed completely as it's not needed anymore * The following 'mediawiki.api' plugin modules were merged into mediawiki.api and deprecated: mediawiki.api.category, mediawiki.api.edit, mediawiki.api.login, mediawiki.api.options, mediawiki.api.parse, @@ -410,6 +433,18 @@ because of Phabricator reports. '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 @@ -420,6 +455,11 @@ because of Phabricator reports. `'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 + for more + information. * … == Compatibility == diff --git a/autoload.php b/autoload.php index dc9461edc7..67285d0a89 100644 --- a/autoload.php +++ b/autoload.php @@ -285,7 +285,6 @@ $wgAutoloadLocalClasses = [ 'CodeContentHandler' => __DIR__ . '/includes/content/CodeContentHandler.php', 'Collation' => __DIR__ . '/includes/collation/Collation.php', 'CollationCkb' => __DIR__ . '/includes/collation/CollationCkb.php', - 'CollationEt' => __DIR__ . '/includes/collation/CollationEt.php', 'CommandLineInc' => __DIR__ . '/maintenance/commandLine.inc', 'CommandLineInstaller' => __DIR__ . '/maintenance/install.php', 'CommentStore' => __DIR__ . '/includes/CommentStore.php', @@ -898,6 +897,7 @@ $wgAutoloadLocalClasses = [ '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', diff --git a/composer.json b/composer.json index c55c27e8a5..e99fe8193f 100644 --- a/composer.json +++ b/composer.json @@ -25,7 +25,7 @@ "ext-mbstring": "*", "ext-xml": "*", "liuggio/statsd-php-client": "1.0.18", - "oojs/oojs-ui": "0.28.1", + "oojs/oojs-ui": "0.28.2", "oyejorge/less.php": "1.7.0.14", "pear/mail": "1.4.1", "pear/mail_mime": "1.10.2", @@ -48,7 +48,7 @@ "wikimedia/running-stat": "1.2.1", "wikimedia/scoped-callback": "2.0.0", "wikimedia/utfnormal": "2.0.0", - "wikimedia/timestamp": "2.1.0", + "wikimedia/timestamp": "2.1.1", "wikimedia/wait-condition-loop": "1.0.1", "wikimedia/wrappedstring": "3.0.1", "wikimedia/xmp-reader": "0.6.0", @@ -62,7 +62,7 @@ "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", diff --git a/docs/design.txt b/docs/design.txt deleted file mode 100644 index 5c04addef3..0000000000 --- a/docs/design.txt +++ /dev/null @@ -1,106 +0,0 @@ -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"). diff --git a/docs/hooks.txt b/docs/hooks.txt index 436131cdd8..82238142b0 100644 --- a/docs/hooks.txt +++ b/docs/hooks.txt @@ -624,8 +624,8 @@ a chance to hide their (unrelated) log entries. AND in the final query) $logTypes: Array of log types being queried -'ArticleAfterFetchContentObject': After fetching content of an article from the -database. +'ArticleAfterFetchContentObject': DEPRECATED since 1.32, use ArticleRevisionViewCustom +to control output. After fetching content of an article from the database. &$article: the article (object) being loaded from the database &$content: the content of the article, as a Content object @@ -640,12 +640,21 @@ this to change the content in this area or how it is loaded. $diffEngine: the DifferenceEngine $output: the OutputPage object -'ArticleContentViewCustom': Allows to output the text of the article in a -different format than wikitext. Note that it is preferable to implement proper -handing for a custom data type using the ContentHandler facility. +'ArticleRevisionViewCustom': Allows custom rendering of an article's content. +Note that it is preferable to implement proper handing for a custom data type using +the ContentHandler facility. +$revision: content of the page, as a RevisionRecord object, or null if the revision + could not be loaded. May also be a fake that wraps content supplied by an extension. +$title: title of the page +$oldid: the requested revision id, or 0 for the currrent revision. +$output: a ParserOutput object + +'ArticleContentViewCustom': DEPRECATED since 1.32, use ArticleRevisionViewCustom instead, +or provide an appropriate ContentHandler. Allows to output the text of the article in a +different format than wikitext. $content: content of the page, as a Content object $title: title of the page -$output: reference to $wgOut +$output: a ParserOutput object 'ArticleDelete': Before an article is deleted. &$wikiPage: the WikiPage (object) being deleted @@ -775,8 +784,8 @@ $article: the article $article: Article object $patrolFooterShown: boolean whether patrol footer is shown -'ArticleViewHeader': Before the parser cache is about to be tried for article -viewing. +'ArticleViewHeader': Control article output. Called before the parser cache is about +to be tried for article viewing. &$article: the article &$pcache: whether to try the parser cache or not &$outputDone: whether the output for this page finished or not. Set to @@ -2537,6 +2546,12 @@ $originalRevId: if the edit restores or repeats an earlier revision (such as a (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 @@ -2910,6 +2925,13 @@ called after the addition of 'qunit' and MediaWiki testing resources. 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. @@ -2969,9 +2991,9 @@ result augmentors. 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 @@ -3311,14 +3333,6 @@ use this to change some selection criteria or substitute a different title. &$title: If the hook returns false, a Title object to use instead of the result from the normal query -'SpecialRecentChangesFilters': DEPRECATED since 1.23! Use -ChangesListSpecialPageStructuredFilters instead. -Called after building form options at RecentChanges. -$special: the special page object -&$filters: associative array of filter definitions. The keys are the HTML - name/URL parameters. Each key maps to an associative array with a 'msg' - (message key) and a 'default' value. - 'SpecialRecentChangesPanel': Called when building form options in SpecialRecentChanges. &$extraOpts: array of added items, to which can be added @@ -3433,14 +3447,6 @@ Special:Upload. $wgVersion: Current $wgVersion for you to use &$versionUrl: Raw url to link to (eg: release notes) -'SpecialWatchlistFilters': DEPRECATED since 1.23! Use -ChangesListSpecialPageStructuredFilters instead. -Called after building form options at Watchlist. -$special: the special page object -&$filters: associative array of filter definitions. The keys are the HTML - name/URL parameters. Each key maps to an associative array with a 'msg' - (message key) and a 'default' value. - 'SpecialWatchlistGetNonRevisionTypes': Called when building sql query for SpecialWatchlist. Allows extensions to register custom values they have inserted to rc_type so they can be returned as part of the watchlist. @@ -4045,10 +4051,9 @@ dumps. One, and only one hook should set this, and return false. &$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. diff --git a/includes/AutoLoader.php b/includes/AutoLoader.php index c9932d68a4..5482f6a4e3 100644 --- a/includes/AutoLoader.php +++ b/includes/AutoLoader.php @@ -132,14 +132,14 @@ class AutoLoader { '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/', ]; } } diff --git a/includes/CategoryViewer.php b/includes/CategoryViewer.php index 46a1473a91..a07e1b4775 100644 --- a/includes/CategoryViewer.php +++ b/includes/CategoryViewer.php @@ -424,7 +424,7 @@ class CategoryViewer extends ContextSource { * @return string */ function getPagesSection() { - $ti = wfEscapeWikiText( $this->title->getText() ); + $name = $this->getOutput()->getUnprefixedDisplayTitle(); # Don't show articles section if there are none. $r = ''; @@ -440,7 +440,7 @@ class CategoryViewer extends ContextSource { if ( $rescnt > 0 ) { $r = "
\n"; - $r .= '

' . $this->msg( 'category_header', $ti )->parse() . "

\n"; + $r .= '

' . $this->msg( 'category_header' )->rawParams( $name )->parse() . "

\n"; $r .= $countmsg; $r .= $this->getSectionPagingLinks( 'page' ); $r .= $this->formatList( $this->articles, $this->articles_start_char ); @@ -454,6 +454,7 @@ class CategoryViewer extends ContextSource { * @return string */ function getImageSection() { + $name = $this->getOutput()->getUnprefixedDisplayTitle(); $r = ''; $rescnt = $this->showGallery ? $this->gallery->count() : count( $this->imgsNoGallery ); $dbcnt = $this->cat->getFileCount(); @@ -463,10 +464,7 @@ class CategoryViewer extends ContextSource { if ( $rescnt > 0 ) { $r .= "
\n"; $r .= '

' . - $this->msg( - 'category-media-header', - wfEscapeWikiText( $this->title->getText() ) - )->text() . + $this->msg( 'category-media-header' )->rawParams( $name )->parse() . "

\n"; $r .= $countmsg; $r .= $this->getSectionPagingLinks( 'file' ); diff --git a/includes/DefaultSettings.php b/includes/DefaultSettings.php index 761e92830f..ab67225ca5 100644 --- a/includes/DefaultSettings.php +++ b/includes/DefaultSettings.php @@ -3288,7 +3288,7 @@ $wgUseMediaWikiUIEverywhere = false; * * @since 1.32 */ -$wgOOUIPreferences = false; +$wgOOUIPreferences = true; /** * Whether to label the store-to-database-and-show-to-others button in the editor @@ -4833,7 +4833,7 @@ $wgReservedUsernames = [ 'Maintenance script', // Maintenance scripts which perform editing, image import script 'Template namespace initialisation script', // Used in 1.2->1.3 upgrade 'ScriptImporter', // Default user name used by maintenance/importSiteScripts.php - 'Unknown user', // Used in WikiImporter when importing revisions with no author + 'Unknown user', // Used in WikiImporter and RevisionStore for revisions with no author 'msg:double-redirect-fixer', // Automatic double redirect fix 'msg:usermessage-editor', // Default user for leaving user messages 'msg:proxyblocker', // For $wgProxyList and Special:Blockme (removed in 1.22) @@ -7359,7 +7359,7 @@ $wgExtensionMessagesFiles = []; * @code * $wgMessagesDirs['Example'] = [ * __DIR__ . '/lib/ve/i18n', - * __DIR__ . '/lib/oojs-ui/i18n', + * __DIR__ . '/lib/ooui/i18n', * __DIR__ . '/i18n', * ] * @endcode @@ -8998,7 +8998,7 @@ $wgCommentTableSchemaMigrationStage = MIGRATION_OLD; * @since 1.32 * @var int An appropriate combination of SCHEMA_COMPAT_XXX flags. */ -$wgMultiContentRevisionSchemaMigrationStage = SCHEMA_COMPAT_WRITE_BOTH | SCHEMA_COMPAT_READ_OLD; +$wgMultiContentRevisionSchemaMigrationStage = SCHEMA_COMPAT_WRITE_BOTH | SCHEMA_COMPAT_READ_NEW; /** * Actor table schema migration stage. diff --git a/includes/EditPage.php b/includes/EditPage.php index d8903c399f..f1f0572bac 100644 --- a/includes/EditPage.php +++ b/includes/EditPage.php @@ -1689,7 +1689,7 @@ class EditPage { // 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 = '
' ."\n" . $status->getWikiText() . + $this->hookError = '
' . "\n" . $status->getWikiText() . '
'; return true; } @@ -2490,6 +2490,8 @@ ERROR; $displayTitle = isset( $this->mParserOutput ) ? $this->mParserOutput->getDisplayTitle() : false; if ( $displayTitle === false ) { $displayTitle = $contextTitle->getPrefixedText(); + } else { + $out->setDisplayTitle( $displayTitle ); } $out->setPageTitle( $this->context->msg( $msg, $displayTitle ) ); diff --git a/includes/GlobalFunctions.php b/includes/GlobalFunctions.php index 4f121107e2..336cb89e99 100644 --- a/includes/GlobalFunctions.php +++ b/includes/GlobalFunctions.php @@ -2503,38 +2503,6 @@ function wfUsePHP( $req_ver ) { } } -/** - * 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. diff --git a/includes/LinkFilter.php b/includes/LinkFilter.php index 17b4d56635..3b03f87976 100644 --- a/includes/LinkFilter.php +++ b/includes/LinkFilter.php @@ -65,7 +65,7 @@ class LinkFilter { * @return string Regex pattern, for preg_match() */ private static function makeRegex( $filterEntry, $protocol ) { - $regex = '!' . preg_quote( $protocol ); + $regex = '!' . preg_quote( $protocol, '!' ); if ( substr( $filterEntry, 0, 2 ) == '*.' ) { $regex .= '(?:[A-Za-z0-9.-]+\.|)'; $filterEntry = substr( $filterEntry, 2 ); diff --git a/includes/OutputPage.php b/includes/OutputPage.php index 4f12e0cfd0..99a4c2b895 100644 --- a/includes/OutputPage.php +++ b/includes/OutputPage.php @@ -58,6 +58,15 @@ class OutputPage extends ContextSource { * @var string The contents of

*/ private $mPageTitle = ''; + /** + * @var string The displayed title of the page. Different from page title + * if overridden by display title magic word or hooks. Can contain safe + * HTML. Different from page title which may contain messages such as + * "Editing X" which is displayed in h1. This can be used for other places + * where the page name is referred on the page. + */ + private $displayTitle; + /** * @var string Contains all of the "" content. Should be private we * got set/get accessors and the append() method. @@ -964,6 +973,48 @@ class OutputPage extends ContextSource { return $this->mPageTitle; } + /** + * Same as page title but only contains name of the page, not any other text. + * + * @since 1.32 + * @param string $html Page title text. + * @see OutputPage::setPageTitle + */ + public function setDisplayTitle( $html ) { + $this->displayTitle = $html; + } + + /** + * Returns page display title. + * + * Performs some normalization, but this not as strict the magic word. + * + * @since 1.32 + * @return string HTML + */ + public function getDisplayTitle() { + $html = $this->displayTitle; + if ( $html === null ) { + $html = $this->getTitle()->getPrefixedText(); + } + + return Sanitizer::normalizeCharReferences( Sanitizer::removeHTMLtags( $html ) ); + } + + /** + * Returns page display title without namespace prefix if possible. + * + * @since 1.32 + * @return string HTML + */ + public function getUnprefixedDisplayTitle() { + $text = $this->getDisplayTitle(); + $nsPrefix = $this->getTitle()->getNsText() . ':'; + $prefix = preg_quote( $nsPrefix, '/' ); + + return preg_replace( "/^$prefix/i", '', $text ); + } + /** * Set the Title object to use * diff --git a/includes/Revision.php b/includes/Revision.php index 6d684a8052..1e35ddaeaf 100644 --- a/includes/Revision.php +++ b/includes/Revision.php @@ -350,6 +350,7 @@ class Revision implements IDBAccessObject { */ public static function selectFields() { global $wgContentHandlerUseDB, $wgActorTableSchemaMigrationStage; + global $wgMultiContentRevisionSchemaMigrationStage; if ( $wgActorTableSchemaMigrationStage > MIGRATION_WRITE_BOTH ) { // If code is using this instead of self::getQueryInfo(), there's a @@ -361,6 +362,18 @@ class Revision implements IDBAccessObject { ); } + if ( !( $wgMultiContentRevisionSchemaMigrationStage & SCHEMA_COMPAT_WRITE_OLD ) ) { + // If code is using this instead of self::getQueryInfo(), there's a + // decent chance it's going to try to directly access + // $row->rev_text_id or $row->rev_content_model and we can't give it + // useful values here once those aren't being written anymore, + // and may not exist at all. + throw new BadMethodCallException( + 'Cannot use ' . __METHOD__ . ' when $wgMultiContentRevisionSchemaMigrationStage ' + . 'does not have SCHEMA_COMPAT_WRITE_OLD set.' + ); + } + wfDeprecated( __METHOD__, '1.31' ); $fields = [ @@ -396,6 +409,7 @@ class Revision implements IDBAccessObject { */ public static function selectArchiveFields() { global $wgContentHandlerUseDB, $wgActorTableSchemaMigrationStage; + global $wgMultiContentRevisionSchemaMigrationStage; if ( $wgActorTableSchemaMigrationStage > MIGRATION_WRITE_BOTH ) { // If code is using this instead of self::getQueryInfo(), there's a @@ -407,6 +421,18 @@ class Revision implements IDBAccessObject { ); } + if ( !( $wgMultiContentRevisionSchemaMigrationStage & SCHEMA_COMPAT_WRITE_OLD ) ) { + // If code is using this instead of self::getQueryInfo(), there's a + // decent chance it's going to try to directly access + // $row->ar_text_id or $row->ar_content_model and we can't give it + // useful values here once those aren't being written anymore, + // and may not exist at all. + throw new BadMethodCallException( + 'Cannot use ' . __METHOD__ . ' when $wgMultiContentRevisionSchemaMigrationStage ' + . 'does not have SCHEMA_COMPAT_WRITE_OLD set.' + ); + } + wfDeprecated( __METHOD__, '1.31' ); $fields = [ diff --git a/includes/Revision/RenderedRevision.php b/includes/Revision/RenderedRevision.php index 0c052d1b46..fa16c61304 100644 --- a/includes/Revision/RenderedRevision.php +++ b/includes/Revision/RenderedRevision.php @@ -42,7 +42,7 @@ use Wikimedia\Assert\Assert; * * @since 1.32 */ -class RenderedRevision { +class RenderedRevision implements SlotRenderingProvider { /** * @var Title @@ -95,7 +95,11 @@ class RenderedRevision { * but should use a RevisionRenderer instead. * * @param Title $title - * @param RevisionRecord $revision + * @param RevisionRecord $revision The revision to render. The content for rendering will be + * taken from this RevisionRecord. However, if the RevisionRecord is not complete + * according isReadyForInsertion(), but a revision ID is known, the parser may load + * the revision from the database if it needs revision meta data to handle magic + * words like {{REVISIONUSER}}. * @param ParserOptions $options * @param callable $combineOutput Callback for combining slot output into revision output. * Signature: function ( RenderedRevision $this ): ParserOutput. @@ -287,19 +291,50 @@ class RenderedRevision { private function setRevisionInternal( RevisionRecord $revision ) { $this->revision = $revision; - // Make sure the parser uses the correct Revision object - $title = $this->title; - $oldCallback = $this->options->getCurrentRevisionCallback(); - $this->options->setCurrentRevisionCallback( - function ( Title $parserTitle, $parser = false ) use ( $title, $oldCallback ) { - if ( $parserTitle->equals( $title ) ) { - $legacyRevision = new Revision( $this->revision ); - return $legacyRevision; - } else { - return call_user_func( $oldCallback, $parserTitle, $parser ); + // Force the parser to use $this->revision to resolve magic words like {{REVISIONUSER}} + // if the revision is either known to be complete, or it doesn't have a revision ID set. + // If it's incomplete and we have a revision ID, the parser can do better by loading + // the revision from the database if needed to handle a magic word. + // + // The following considerations inform the logic described above: + // + // 1) If we have a saved revision already loaded, we want the parser to use it, instead of + // loading it again. + // + // 2) If the revision is a fake that wraps some kind of synthetic content, such as an + // error message from Article, it should be used directly and things like {{REVISIONUSER}} + // should not expected to work, since there may not even be an actual revision to + // refer to. + // + // 3) If the revision is a fake constructed around a Title, a Content object, and + // a revision ID, to provide backwards compatibility to code that has access to those + // but not to a complete RevisionRecord for rendering, then we want the Parser to + // load the actual revision from the database when it encounters a magic word like + // {{REVISIONUSER}}, but we don't want to load that revision ahead of time just in case. + // + // 4) Previewing an edit to a template should use the submitted unsaved + // MutableRevisionRecord for self-transclusions in the template's documentation (see T7278). + // That revision would be complete except for the ID field. + // + // 5) Pre-save transform would provide a RevisionRecord that has all meta-data but is + // incomplete due to not yet having content set. However, since it doesn't have a revision + // ID either, the below code would still force it to be used, allowing + // {{subst::REVISIONUSER}} to function as expected. + + if ( $this->revision->isReadyForInsertion() || !$this->revision->getId() ) { + $title = $this->title; + $oldCallback = $this->options->getCurrentRevisionCallback(); + $this->options->setCurrentRevisionCallback( + function ( Title $parserTitle, $parser = false ) use ( $title, $oldCallback ) { + if ( $title->equals( $parserTitle ) ) { + $legacyRevision = new Revision( $this->revision ); + return $legacyRevision; + } else { + return call_user_func( $oldCallback, $parserTitle, $parser ); + } } - } - ); + ); + } } /** diff --git a/includes/Revision/SlotRenderingProvider.php b/includes/Revision/SlotRenderingProvider.php new file mode 100644 index 0000000000..740f0f2c9f --- /dev/null +++ b/includes/Revision/SlotRenderingProvider.php @@ -0,0 +1,32 @@ + 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 = [] ); + +} diff --git a/includes/Storage/DerivedPageDataUpdater.php b/includes/Storage/DerivedPageDataUpdater.php index 99c31b2d69..e34e406f1d 100644 --- a/includes/Storage/DerivedPageDataUpdater.php +++ b/includes/Storage/DerivedPageDataUpdater.php @@ -27,12 +27,14 @@ use CategoryMembershipChangeJob; 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; @@ -165,8 +167,7 @@ class DerivedPageDataUpdater implements IDBAccessObject { * * 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, @@ -183,6 +184,11 @@ class DerivedPageDataUpdater implements IDBAccessObject { */ private $slotsUpdate = null; + /** + * @var RevisionRecord|null + */ + private $parentRevision = null; + /** * @var RevisionRecord|null */ @@ -456,29 +462,34 @@ class DerivedPageDataUpdater implements IDBAccessObject { } /** - * 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; } /** @@ -495,8 +506,8 @@ class DerivedPageDataUpdater implements IDBAccessObject { * @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. @@ -834,6 +845,8 @@ class DerivedPageDataUpdater implements IDBAccessObject { // prepareUpdate() is redundant for null-edits $this->doTransition( 'has-revision' ); + } else { + $this->parentRevision = $parentRevision; } } @@ -969,7 +982,7 @@ class DerivedPageDataUpdater implements IDBAccessObject { $this->assertPrepared( __METHOD__ ); if ( !$this->slotsUpdate ) { - $old = $this->getOldRevision(); + $old = $this->getParentRevision(); $this->slotsUpdate = RevisionSlotsUpdate::newFromRevisionSlots( $this->revision->getSlots(), $old ? $old->getSlots() : null @@ -1077,7 +1090,7 @@ class DerivedPageDataUpdater implements IDBAccessObject { } 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() ); @@ -1138,7 +1151,7 @@ class DerivedPageDataUpdater implements IDBAccessObject { 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() ); @@ -1252,34 +1265,103 @@ class DerivedPageDataUpdater implements IDBAccessObject { /** * @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; } /** @@ -1425,7 +1507,7 @@ class DerivedPageDataUpdater implements IDBAccessObject { 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 @@ -1484,7 +1566,9 @@ class DerivedPageDataUpdater implements IDBAccessObject { } 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 ); diff --git a/includes/Storage/RevisionArchiveRecord.php b/includes/Storage/RevisionArchiveRecord.php index 213ee3cd1b..173da51907 100644 --- a/includes/Storage/RevisionArchiveRecord.php +++ b/includes/Storage/RevisionArchiveRecord.php @@ -167,4 +167,13 @@ class RevisionArchiveRecord extends RevisionRecord { return parent::getTimestamp(); } + /** + * @see RevisionStore::isComplete + * + * @return bool always true. + */ + public function isReadyForInsertion() { + return true; + } + } diff --git a/includes/Storage/RevisionRecord.php b/includes/Storage/RevisionRecord.php index 17c56ea0ea..8c31a3caf7 100644 --- a/includes/Storage/RevisionRecord.php +++ b/includes/Storage/RevisionRecord.php @@ -532,4 +532,29 @@ abstract class RevisionRecord { } } + /** + * Returns whether this RevisionRecord is ready for insertion, that is, whether it contains all + * information needed to save it to the database. This should trivially be true for + * RevisionRecords loaded from the database. + * + * Note that this may return true even if getId() or getPage() return null or 0, since these + * are generally assigned while the revision is saved to the database, and may not be available + * before. + * + * @return bool + */ + public function isReadyForInsertion() { + // NOTE: don't check getSize() and getSha1(), since that may cause the full content to + // be loaded in order to calculate the values. Just assume these methods will not return + // null if mSlots is not empty. + + // NOTE: getId() and getPageId() may return null before a revision is saved, so don't + //check them. + + return $this->getTimestamp() !== null + && $this->getComment( self::RAW ) !== null + && $this->getUser( self::RAW ) !== null + && $this->mSlots->getSlotRoles() !== []; + } + } diff --git a/includes/Storage/RevisionStore.php b/includes/Storage/RevisionStore.php index d219267298..61b428f13c 100644 --- a/includes/Storage/RevisionStore.php +++ b/includes/Storage/RevisionStore.php @@ -466,6 +466,12 @@ class RevisionStore $this->failOnNull( $user->getId(), 'user field' ); $this->failOnEmpty( $user->getName(), 'user_text field' ); + if ( !$rev->isReadyForInsertion() ) { + // This is here for future-proofing. At the time this check being added, it + // was redundant to the individual checks above. + throw new IncompleteRevisionException( 'Revision is incomplete' ); + } + // TODO: we shouldn't need an actual Title here. $title = Title::newFromLinkTarget( $rev->getPageAsLinkTarget() ); $pageId = $this->failOnEmpty( $rev->getPageId(), 'rev_page field' ); // check this early @@ -519,11 +525,11 @@ class RevisionStore $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' ); } @@ -566,9 +572,14 @@ class RevisionStore foreach ( $slotRoles as $role ) { $slot = $rev->getSlot( $role, RevisionRecord::RAW ); - if ( $slot->hasRevision() ) { - // If the SlotRecord already has a revision ID set, this means it already exists - // in the database, and should already belong to the current revision. + // If the SlotRecord already has a revision ID set, this means it already exists + // in the database, and should already belong to the current revision. + // However, a slot may already have a revision, but no content ID, if the slot + // is emulated based on the archive table, because we are in SCHEMA_COMPAT_READ_OLD + // mode, and the respective archive row was not yet migrated to the new schema. + // In that case, a new slot row (and content row) must be inserted even during + // undeletion. + if ( $slot->hasRevision() && $slot->hasContentId() ) { // TODO: properly abort transaction if the assertion fails! Assert::parameter( $slot->getRevision() === $revisionId, @@ -612,6 +623,8 @@ class RevisionStore * @param IDatabase $dbw * @param int $revisionId * @param string &$blobAddress (may change!) + * + * @return int the text row id */ private function updateRevisionTextId( IDatabase $dbw, $revisionId, &$blobAddress ) { $textId = $this->blobStore->getTextIdFromAddress( $blobAddress ); @@ -631,6 +644,8 @@ class RevisionStore [ 'rev_id' => $revisionId ], __METHOD__ ); + + return $textId; } /** @@ -654,11 +669,16 @@ class RevisionStore $blobAddress = $this->storeContentBlob( $protoSlot, $title, $blobHints ); } + $contentId = null; + // Write the main slot's text ID to the revision table for backwards compatibility if ( $protoSlot->getRole() === 'main' && $this->hasMcrSchemaFlags( SCHEMA_COMPAT_WRITE_OLD ) ) { - $this->updateRevisionTextId( $dbw, $revisionId, $blobAddress ); + // If SCHEMA_COMPAT_WRITE_NEW is also set, the fake content ID is overwritten + // with the real content ID below. + $textId = $this->updateRevisionTextId( $dbw, $revisionId, $blobAddress ); + $contentId = $this->emulateContentId( $textId ); } if ( $this->hasMcrSchemaFlags( SCHEMA_COMPAT_WRITE_NEW ) ) { @@ -669,8 +689,6 @@ class RevisionStore } $this->insertSlotRowOn( $protoSlot, $dbw, $revisionId, $contentId ); - } else { - $contentId = null; } $savedSlot = SlotRecord::newSaved( @@ -1194,6 +1212,7 @@ class RevisionStore $mainSlotRow->role_name = 'main'; $mainSlotRow->model_name = null; $mainSlotRow->slot_revision_id = null; + $mainSlotRow->slot_content_id = null; $mainSlotRow->content_address = null; $content = null; @@ -1244,6 +1263,12 @@ class RevisionStore $mainSlotRow->format_name = isset( $row->rev_content_format ) ? strval( $row->rev_content_format ) : null; + + if ( isset( $row->rev_text_id ) && intval( $row->rev_text_id ) > 0 ) { + // Overwritten below for SCHEMA_COMPAT_WRITE_NEW + $mainSlotRow->slot_content_id + = $this->emulateContentId( intval( $row->rev_text_id ) ); + } } elseif ( is_array( $row ) ) { $mainSlotRow->slot_revision_id = isset( $row['id'] ) ? intval( $row['id'] ) : null; @@ -1283,6 +1308,12 @@ class RevisionStore $mainSlotRow->format_name = $handler->getDefaultFormat(); } } + + if ( isset( $row['text_id'] ) && intval( $row['text_id'] ) > 0 ) { + // Overwritten below for SCHEMA_COMPAT_WRITE_NEW + $mainSlotRow->slot_content_id + = $this->emulateContentId( intval( $row['text_id'] ) ); + } } else { throw new MWException( 'Revision constructor passed invalid row format.' ); } @@ -1320,18 +1351,38 @@ class RevisionStore }; } - // NOTE: this callback will be looped through RevisionSlot::newInherited(), allowing - // the inherited slot to have the same content_id as the original slot. In that case, - // $slot will be the inherited slot, while $mainSlotRow still refers to the original slot. - $mainSlotRow->slot_content_id = - function ( SlotRecord $slot ) use ( $queryFlags, $mainSlotRow ) { - $db = $this->getDBConnectionRefForQueryFlags( $queryFlags ); - return $this->findSlotContentId( $db, $mainSlotRow->slot_revision_id, 'main' ); - }; + if ( $this->hasMcrSchemaFlags( SCHEMA_COMPAT_WRITE_NEW ) ) { + // NOTE: this callback will be looped through RevisionSlot::newInherited(), allowing + // the inherited slot to have the same content_id as the original slot. In that case, + // $slot will be the inherited slot, while $mainSlotRow still refers to the original slot. + $mainSlotRow->slot_content_id = + function ( SlotRecord $slot ) use ( $queryFlags, $mainSlotRow ) { + $db = $this->getDBConnectionRefForQueryFlags( $queryFlags ); + return $this->findSlotContentId( $db, $mainSlotRow->slot_revision_id, 'main' ); + }; + } return new SlotRecord( $mainSlotRow, $content ); } + /** + * Provides a content ID to use with emulated SlotRecords in SCHEMA_COMPAT_OLD mode, + * based on the revision's text ID (rev_text_id or ar_text_id, respectively). + * Note that in SCHEMA_COMPAT_WRITE_BOTH, a callback to findSlotContentId() should be used + * instead, since in that mode, some revision rows may already have a real content ID, + * while other's don't - and for the ones that don't, we should indicate that it + * is missing and cause SlotRecords::hasContentId() to return false. + * + * @param int $textId + * @return int The emulated content ID + */ + private function emulateContentId( $textId ) { + // Return a negative number to ensure the ID is distinct from any real content IDs + // that will be assigned in SCHEMA_COMPAT_WRITE_NEW mode and read in SCHEMA_COMPAT_READ_NEW + // mode. + return -$textId; + } + /** * Loads a Content object based on a slot row. * @@ -1660,8 +1711,8 @@ class RevisionStore $row->ar_actor ?? null ); } catch ( InvalidArgumentException $ex ) { - wfWarn( __METHOD__ . ': ' . $ex->getMessage() ); - $user = new UserIdentityValue( 0, '', 0 ); + wfWarn( __METHOD__ . ': ' . $title->getPrefixedDBkey() . ': ' . $ex->getMessage() ); + $user = new UserIdentityValue( 0, 'Unknown user', 0 ); } $db = $this->getDBConnectionRefForQueryFlags( $queryFlags ); @@ -1708,8 +1759,8 @@ class RevisionStore $row->rev_actor ?? null ); } catch ( InvalidArgumentException $ex ) { - wfWarn( __METHOD__ . ': ' . $ex->getMessage() ); - $user = new UserIdentityValue( 0, '', 0 ); + wfWarn( __METHOD__ . ': ' . $title->getPrefixedDBkey() . ': ' . $ex->getMessage() ); + $user = new UserIdentityValue( 0, 'Unknown user', 0 ); } $db = $this->getDBConnectionRefForQueryFlags( $queryFlags ); diff --git a/includes/Storage/RevisionStoreRecord.php b/includes/Storage/RevisionStoreRecord.php index d092f22ed9..6148c44366 100644 --- a/includes/Storage/RevisionStoreRecord.php +++ b/includes/Storage/RevisionStoreRecord.php @@ -207,4 +207,13 @@ class RevisionStoreRecord extends RevisionRecord { return parent::getTimestamp(); } + /** + * @see RevisionStore::isComplete + * + * @return bool always true. + */ + public function isReadyForInsertion() { + return true; + } + } diff --git a/includes/Storage/SlotRecord.php b/includes/Storage/SlotRecord.php index dff4b031d4..c7eb735db3 100644 --- a/includes/Storage/SlotRecord.php +++ b/includes/Storage/SlotRecord.php @@ -451,6 +451,16 @@ class SlotRecord { * content has been stored in the content table. While building a new revision, * SlotRecords will not have an ID associated. * + * Also, during schema migration, hasContentId() may return false when encountering an + * un-migrated database entry in SCHEMA_COMPAT_WRITE_BOTH mode. + * It will however always return true for saved revisions on SCHEMA_COMPAT_READ_NEW mode, + * or without SCHEMA_COMPAT_WRITE_NEW mode. In the latter case, an emulated content ID + * is used, derived from the revision's text ID. + * + * Note that hasContentId() returning false while hasRevision() returns true always + * indicates an unmigrated row in SCHEMA_COMPAT_WRITE_BOTH mode, as described above. + * For an unsaved slot, both these methods would return false. + * * @since 1.32 * * @return bool @@ -494,6 +504,9 @@ class SlotRecord { * This information should be irrelevant to application logic, it is here to allow * the construction of a full row for the revision table. * + * Note that this method may return an emulated value during schema migration in + * SCHEMA_COMPAT_WRITE_OLD mode. See RevisionStore::emulateContentId for more information. + * * @return int */ public function getContentId() { diff --git a/includes/Title.php b/includes/Title.php index ca62e0e0de..bbc1d63145 100644 --- a/includes/Title.php +++ b/includes/Title.php @@ -1665,7 +1665,7 @@ class Title implements LinkTarget { 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 . ':'; diff --git a/includes/WebRequest.php b/includes/WebRequest.php index 327dd54c0d..ed10615b0c 100644 --- a/includes/WebRequest.php +++ b/includes/WebRequest.php @@ -856,7 +856,7 @@ class WebRequest { * @return string */ public function getFullRequestURL() { - return wfGetServerUrl( PROTO_CURRENT ) . $this->getRequestURL(); + return wfGetServerUrl( PROTO_CURRENT ) . $this->getRequestURL(); } /** diff --git a/includes/actions/RollbackAction.php b/includes/actions/RollbackAction.php index 9d336e4613..dc7b00ea41 100644 --- a/includes/actions/RollbackAction.php +++ b/includes/actions/RollbackAction.php @@ -151,7 +151,6 @@ class RollbackAction extends FormlessAction { ); $de->showDiff( '', '' ); } - return; } protected function getDescription() { diff --git a/includes/api/ApiQueryAllDeletedRevisions.php b/includes/api/ApiQueryAllDeletedRevisions.php index 830df59351..bae68855f9 100644 --- a/includes/api/ApiQueryAllDeletedRevisions.php +++ b/includes/api/ApiQueryAllDeletedRevisions.php @@ -76,7 +76,7 @@ class ApiQueryAllDeletedRevisions extends ApiQueryRevisionsBase { 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' ); } @@ -86,7 +86,7 @@ class ApiQueryAllDeletedRevisions extends ApiQueryRevisionsBase { 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' ); } diff --git a/includes/api/ApiQueryInfo.php b/includes/api/ApiQueryInfo.php index 0cf6b04c82..3b7b00de80 100644 --- a/includes/api/ApiQueryInfo.php +++ b/includes/api/ApiQueryInfo.php @@ -522,7 +522,7 @@ class ApiQueryInfo extends ApiQueryBase { } 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 } diff --git a/includes/api/i18n/ar.json b/includes/api/i18n/ar.json index a1740a969b..d6af2f16b2 100644 --- a/includes/api/i18n/ar.json +++ b/includes/api/i18n/ar.json @@ -64,19 +64,29 @@ "apihelp-compare-param-fromtitle": "العنوان الأول للمقارنة.", "apihelp-compare-param-fromid": "رقم الصفحة الأول للمقارنة.", "apihelp-compare-param-fromrev": "أول مراجعة للمقارنة.", - "apihelp-compare-param-frompst": "قم بإجراء تحويل ما قبل الحفظ على fromtext.", - "apihelp-compare-param-fromtext": "استخدم هذا النص بدلا من محتوى المراجعة المحدد بواسطة fromtitle، fromid أو fromrev.", - "apihelp-compare-param-fromcontentmodel": "نموذج محتوى fromtext، إذا لم يتم توفيره، فسيتم تخمينه استنادا إلى الوسائط الأخرى.", - "apihelp-compare-param-fromcontentformat": "تنسيق محتوى تسلسل fromtext.", + "apihelp-compare-param-frompst": "قم بإجراء تحويل ما قبل الحفظ على fromtext-{slot}.", + "apihelp-compare-param-fromslots": "تجاوز محتوى المراجعة المحددة بواسطة fromtitle أو fromid أو fromrev.\n\nيحدد هذا الوسيط الفتحات المراد تعديلها، استخدم fromtext-{slot} وfromcontentmodel-{slot} وfromcontentformat-{slot} لتحديد محتوى لكل فتحة.", + "apihelp-compare-param-fromtext-{slot}": "نص الفتحة المحددة، إذا تم حذفها، تتم إزالة الفتحة من المراجعة.", + "apihelp-compare-param-fromsection-{slot}": "عندما يكون fromtext-{slot} هو محتوى قسم واحد، فهذا هو رقم القسم، سيتم دمجه في المراجعة المحددة بواسطة fromtitle أو fromid أو fromrev كما لو كانت لتعديل القسم.", + "apihelp-compare-param-fromcontentmodel-{slot}": "نموذج محتوى fromtext-{slot}، إذا لم يتم توفيره، فسيتم تخمينه استنادا إلى الوسائط الأخرى.", + "apihelp-compare-param-fromcontentformat-{slot}": "تنسيق تسلسل محتوى fromtext-{slot}.", + "apihelp-compare-param-fromtext": "حدد fromslots=main واستخدم fromtext-main كبديل.", + "apihelp-compare-param-fromcontentmodel": "حدد fromslots=main واستخدم fromcontentmodel-main كبديل.", + "apihelp-compare-param-fromcontentformat": "حدد fromslots=main واستخدم fromcontentformat-main كبديل.", "apihelp-compare-param-fromsection": "استخدم فقط القسم المحدد في المحتوى 'من' المحدد.", "apihelp-compare-param-totitle": "العنوان الثاني للمقارنة.", "apihelp-compare-param-toid": "رقم الصفحة الثاني للمقارنة.", "apihelp-compare-param-torev": "المراجعة الثانية للمقارنة.", "apihelp-compare-param-torelative": "استخدم مراجعة متعلقة بالمراجعة المحددة من fromtitle أو fromid أو fromrev، سيتم تجاهل جميع خيارات 'إلى' الأخرى.", "apihelp-compare-param-topst": "قم بإجراء تحويل ما قبل الحفظ على totext.", - "apihelp-compare-param-totext": "استخدم هذا النص بدلا من محتوى المراجعة المحدد بواسطة totitle أو toid أو torev.", - "apihelp-compare-param-tocontentmodel": "نموذج محتوى totext، إذا لم يتم توفيره، فسيتم تخمينه استنادا إلى الوسائط الأخرى.", - "apihelp-compare-param-tocontentformat": "تنسيق محتوى تسلسل totext.", + "apihelp-compare-param-toslots": "تجاوز محتوى المراجعة المحددة بواسطة totitle أو toid أو torev.\n\nيحدد هذا الوسيط الفتحات المراد تعديلها، استخدم totext-{slot} وtocontentmodel-{slot} وtocontentformat-{slot} لتحديد محتوى لكل فتحة.", + "apihelp-compare-param-totext-{slot}": "نص الفتحة المحددة، إذا تم حذفه، تتم إزالة الفتحة من المراجعة.", + "apihelp-compare-param-tosection-{slot}": "عندما يكون totext-{slot} هو محتوى قسم واحد، فهذا هو رقم القسم، سيتم دمجه في المراجعة المحددة بواسطة totitle أو toid أو torev كما لو كانت لتعديل القسم.", + "apihelp-compare-param-tocontentmodel-{slot}": "نموذج محتوى totext-{slot}، إذا لم يتم توفيره، فسيتم تخمينه استنادا إلى الوسائط الأخرى.", + "apihelp-compare-param-tocontentformat-{slot}": "تنسيق تسلسل محتوى totext-{slot}.", + "apihelp-compare-param-totext": "حدد toslots=main واستخدم totext-main كبديل.", + "apihelp-compare-param-tocontentmodel": "حدد toslots=main واستخدم tocontentmodel-main كبديل.", + "apihelp-compare-param-tocontentformat": "حدد toslots=main واستخدم tocontentformat-main كبديل.", "apihelp-compare-param-tosection": "استخدم فقط القسم المحدد في المحتوى 'إلى' المحدد.", "apihelp-compare-param-prop": "أية قطعة من المعلومات للحصول عليها.", "apihelp-compare-paramvalue-prop-diff": "HTML الفرق.", @@ -88,6 +98,7 @@ "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": "إذا تم عرض [[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]] بشكل صحيح لـhasprimarypreservedstate، فقد تم تعليم طلبات primary-required لكي يجب حذفها، إذا عرضت قيمة غير فارغة لـpreservedusername فيجب استخدام اسم المستخدم هذا للوسيط username.", @@ -681,7 +692,7 @@ "apihelp-query+deletedrevisions-param-start": "الطابع الزمني لبدء العد منه، تم التجاهل عند معالجة قائمة بمعرفات المراجعة.", "apihelp-query+deletedrevisions-param-end": "الطابع الزمني لإيقاف التعداد فيه، تم التجاهل عند معالجة قائمة بمعرفات المراجعة.", "apihelp-query+deletedrevisions-param-tag": "إدراج المراجعات الموسومة بهذ الوسم فقط.", - "apihelp-query+deletedrevisions-param-user": "إددراج المراجعات بواسطة هذا المستخدم فقط.", + "apihelp-query+deletedrevisions-param-user": "إدراج المراجعات بواسطة هذا المستخدم فقط.", "apihelp-query+deletedrevisions-param-excludeuser": "لا تسرد المراجعات بواسطة هذا المستخدم.", "apihelp-query+deletedrevisions-example-titles": "إدراج المراجعات المحذوفة من الصفحات Main Page وTalk:Main Page، بمحتوى.", "apihelp-query+deletedrevisions-example-revids": "إدراج المعلومات الخاصة بالمراجعة المحذوفة 123456.", @@ -865,6 +876,8 @@ "apihelp-query+iwbacklinks-paramvalue-prop-iwprefix": "يضيف بادئة الإنترويكي.", "apihelp-query+iwbacklinks-paramvalue-prop-iwtitle": "يضيف عنوان الإنترويكي.", "apihelp-query+iwbacklinks-param-dir": "الاتجاه للإدراج فيه.", + "apihelp-query+iwbacklinks-example-simple": "الحصول على الصفحات التي تصل إلى [[wikibooks:Test]].", + "apihelp-query+iwbacklinks-example-generator": "الحصول على معلومات عن الصفحات التي تصل إلى [[wikibooks:Test]].", "apihelp-query+iwlinks-summary": "يعرض جميع روابط الإنترويكي من الصفحات المحددة.", "apihelp-query+iwlinks-param-url": "ما إذا كنت تريد الحصول على المسار الكامل (لا يمكن استخدامه مع $1prop).", "apihelp-query+iwlinks-param-prop": "الخصائص الإضافية التي يمكنك الحصول عليها لكل رابط بين اللغات:", @@ -1066,6 +1079,7 @@ "apihelp-query+revisions+base-paramvalue-prop-tags": "وسوم للمراجعة.", "apihelp-query+revisions+base-paramvalue-prop-roles": "أدرج أدوار فتحة المحتوى الموجودة في المراجعة.", "apihelp-query+revisions+base-paramvalue-prop-parsetree": "استخدم [[Special:ApiHelp/expandtemplates|action=expandtemplates]] أو [[Special:ApiHelp/parse|action=parse]] بدلا من ذلك، شجرة تحليل XML لمحتوى المراجعة (تتطلب نموذج المحتوى $1).", + "apihelp-query+revisions+base-param-slots": "أي الفتحات المراجعة لتعيد البيانات، عندما يتم تضمين الخصائص ذات الصلة بالفتحات في $1props، إذا تم حذفها، فسيتم إرجاع البيانات من فتحة main بتنسيق متوافق مع الإصدارات السابقة.", "apihelp-query+revisions+base-param-limit": "الحد من عدد المراجعات التي سيتم إرجاعها.", "apihelp-query+revisions+base-param-expandtemplates": "استخدم [[Special:ApiHelp/expandtemplates|action=expandtemplates]] بدلا من ذلك، قم بتوسيع القوالب في محتوى المراجعة (يتطلب $1prop=content).", "apihelp-query+revisions+base-param-generatexml": "استخدم [[Special:ApiHelp/expandtemplates|action=expandtemplates]] أو [[Special:ApiHelp/parse|action=parse]] بدلا من ذلك، قم بتوليد شجرة تحليل XML لمحتوى المراجعة (تتطلب $1prop=content).", @@ -1440,14 +1454,16 @@ "apihelp-json-param-callback": "إذا تم تحديده، فسيقوم بإخراج الإخراج في استدعاء دالة معينة، للسلامة; سيتم تقييد جميع البيانات الخاصة بالمستخدم.", "apihelp-json-param-utf8": "إذا تم تحديده، يقوم بترميز معظم (وليس كل) الأحرف غير ASCII كـUTF-8 بدلا من استبدالها بتسلسلات الهروب السداسية العشرية، افتراضي عندما لا يكون formatversion 1.", "apihelp-json-param-ascii": "إذا تم تحديده، يشفر كل غير ASCII باستخدام تسلسلات الهروب السداسية العشرية، افتراضي عندما يكون formatversion 1.", + "apihelp-json-param-formatversion": "تنسيق الإخراج: \n;1:تنسيق متوافق مع الإصدارات السابقة (مصفوفات منطقية بتنسيق XML، ومفاتيح * لعقد المحتوى، وما إلى ذلك).\n;2:التنسيق الحديث التجريبي، التفاصيل قد تتغير!\n;الأحدث: استخدم أحدث تنسيق (حاليا 2)، قد يتغير دون سابق إنذار.", "apihelp-jsonfm-summary": "بيانات الإخراج بتنسيق JSON (الطباعة بـHTML).", "apihelp-none-summary": "عدم إخراج أي شيء.", "apihelp-php-summary": "بيانات الإخراج بتنسيق PHP المتسلسل.", + "apihelp-php-param-formatversion": "تنسيق الإخراج: \n;1:تنسيق متوافق مع الإصدارات السابقة (مصفوفات منطقية بتنسيق XML، ومفاتيح * لعقد المحتوى، وما إلى ذلك).\n;2:التنسيق الحديث التجريبي، التفاصيل قد تتغير!\n;الأحدث: استخدم أحدث تنسيق (حاليا 2)، قد يتغير دون سابق إنذار.", "apihelp-phpfm-summary": "بيانات الإخراج بتنسيق JSON (الطباعة بـHTML).", "apihelp-rawfm-summary": "بيانات الإخراج، بما في ذلك عناصر تصحيح الأخطاء، بتنسيق JSON (الطباعة بـHTML).", "apihelp-xml-summary": "بيانات الإخراج بتنسيق XML.", "apihelp-xml-param-xslt": "إذا تم تحديده، سيضيف الصفحة المسماة كورقة أنماط XSL، يجب أن تكون القيمة عنوانا في نطاق {{ns:MediaWiki}} ينتهي بـ.xsl.", - "apihelp-xml-param-includexmlnamespace": "If specified, adds an XML namespace.\nإذا تم تحديدها، سيضيف نطاق XML.", + "apihelp-xml-param-includexmlnamespace": "\nإذا تم تحديدها، سيضيف نطاق XML.", "apihelp-xmlfm-summary": "بيانات الإخراج بتنسيق XML (الطباعة بـHTML).", "api-format-title": "ناتج API ميدياويكي", "api-format-prettyprint-header": "هذا هو تمثيل HTML لتنسيق $1، HTML مفيد في تصحيح الأخطاء، ولكنه غير مناسب لاستخدام التطبيق. \n\nحدد الوسيط format لتغيير نسق المخرجات، لمشاهدة تمثيل غير HTML لتنسيق $1; اضبط format=$2.\n\nراجع [[mw:Special:MyLanguage/API|التوثيق كاملا]]، أو [[Special:ApiHelp/main|مساعدة API]] لمزيد من المعلومات.", @@ -1516,7 +1532,7 @@ "api-help-param-direction": "في أي اتجاه للتعداد:\n;الأحدث: سرد الأقدم أولا، ملاحظة: يجب أن يكون $1start قبل $1end.\n;older:List newest first (default). Note: $1start has to be later than $1end.\n;الأقدم: سرد الأحدث أولا (افتراضي)، ملاحظة: يجب أن يكون $1start بعد $1end.", "api-help-param-continue": "عندما تتوفر المزيد من النتائج، استخدم هذا للمتابعة", "api-help-param-no-description": "(لا يوجد وصف)", - "api-help-param-maxbytes": "Cلا يمكن أن يكون أطول من $1 {{PLURAL:$1|بايت}}.", + "api-help-param-maxbytes": "لا يمكن أن يكون أطول من $1 {{PLURAL:$1|بايت}}.", "api-help-param-maxchars": "Cلا يمكن أن يكون أطول من $1 {{PLURAL:$1|حرف|أحرف}}.", "api-help-examples": "{{PLURAL:$1|مثال|أمثلة}}:", "api-help-permissions": "{{PLURAL:$1|الإذن|الأذونات}}:", @@ -1579,9 +1595,13 @@ "apierror-changeauth-norequest": "فشل في إنشاء طلب التغيير.", "apierror-chunk-too-small": "الحد الأدنى لحجم القطعة هو $1 {{PLURAL:$1|بايت}} للقطع غير النهائية.", "apierror-cidrtoobroad": "لا يُقبَل مدى $1 CIDR أكبر من /$2.", + "apierror-compare-maintextrequired": "الوسيط $1text-main مطلوب عندما يكون $1slots يحتوي على main (لا يمكن حذف الفتحة الرئيسية).", "apierror-compare-no-title": "لا يمكن الحفظ المسبق للحفظ بدون عنوان; حاول تحديد fromtitle أو totitle.", "apierror-compare-nosuchfromsection": "لا يوجد قسم $1 في المحتوى 'من'.", "apierror-compare-nosuchtosection": "لا يوجد قسم $1 في المحتوى 'إلى'.", + "apierror-compare-nofromrevision": "ليس 'من' مراجعة، حدد fromrev أو fromtitle أو fromid.", + "apierror-compare-notext": "لا يمكن استخدام الوسيط $1 بدون $2.", + "apierror-compare-notorevision": "ليس 'إلى' مراجعة، حدد torev أو totitle أو toid.", "apierror-compare-relative-to-nothing": "لا توجد مراجعة 'من' لـtorelative لتكون نسبة.", "apierror-contentserializationexception": "فشل تسلسل المحتوى: $1", "apierror-contenttoobig": "يتجاوز المحتوى الذي أدخلته حد حجم المقالة البالغ $1 {{PLURAL:$1|كيلوبايت}}.", @@ -1629,6 +1649,7 @@ "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": "يجب تعيين الوسيط $1.", @@ -1743,6 +1764,7 @@ "apiwarn-deprecation-login-botpw": "تم إيقاف تسجيل الدخول إلى الحساب الرئيسي عبر action=login وقد يتوقف عن العمل دون سابق إنذار، لمتابعة تسجيل الدخول باستخدام action=login; راجع [[Special:BotPasswords]]، لمتابعة استخدام تسجيل الدخول إلى الحساب الرئيسي بأمان; راجع action=clientlogin.", "apiwarn-deprecation-login-nobotpw": "تم إيقاف تسجيل الدخول إلى الحساب الرئيسي عبر action=login، وقد يتوقف عن العمل دون سابق إنذار، لتسجيل الدخول بأمان; راجع action=clientlogin.", "apiwarn-deprecation-login-token": "تم إيقاف عمل رمز مميز عبر action=login ;استخدم action=query&meta=tokens&type=login بدلا من ذلك.", + "apiwarn-deprecation-missingparam": "نظرا لعدم تحديد $1; تم استخدام تنسيق قديم للإخراج، تم إيقاف هذا التنسيق، وسيتم دائما استخدام التنسيق الجديد في المستقبل.", "apiwarn-deprecation-parameter": "تم إيقاف الوسيط $1.", "apiwarn-deprecation-parse-headitems": "تم إيقاف prop=headitems منذ ميدياويكي 1.28; استخدم prop=headhtml عند إنشاء مستندات HTML جديدة، أو prop=modules|jsconfigvars عند تحديث مستند من جانب العميل.", "apiwarn-deprecation-purge-get": "تم إيقاف استخدام action=purge عبر GET; استخدم POST بدلا من ذلك.", @@ -1762,6 +1784,7 @@ "apiwarn-parse-nocontentmodel": "لم يتم إعطاء title أو contentmodel، على افتراض $1.", "apiwarn-parse-revidwithouttext": "تم استخدام revid بدون text، وتم طلب خصائص الصفحة المحللة، هل تقصد استخدام oldid بدلا من revid؟", "apiwarn-parse-titlewithouttext": "تم استخدام title بدون text، وتم طلب خصائص الصفحة المحللة، هل تقصد استخدام page بدلا من title؟", + "apiwarn-redirectsandrevids": "لا يمكن استخدام دقة تحويلة مع الوسيط revids، أية تحويلات لنقطة revids لم يتم حلها.", "apiwarn-tokennotallowed": "الإجراء \"$1\" غير مسموح به للمستخدم الحالي.", "apiwarn-tokens-origin": "قد لا يتم الحصول على الرموز عند عدم تطبيق السياسة الأصلية.", "apiwarn-truncatedresult": "تم اقتطاع هذه النتيجة لأنها قد تكون أكبر من حد الـ$1 بايت.", diff --git a/includes/api/i18n/nb.json b/includes/api/i18n/nb.json index 8edddda330..5e30c1a094 100644 --- a/includes/api/i18n/nb.json +++ b/includes/api/i18n/nb.json @@ -53,7 +53,7 @@ "apihelp-clearhasmsg-example-1": "Fjern hasmsg-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 Example med passord ExamplePassword.", - "apihelp-clientlogin-example-login2": "Fortsett å logge inn etter en UI-respons for tofaktor-autentisering, ved å oppgi en OATHToken på 987654.", + "apihelp-clientlogin-example-login2": "Fortsett å logge inn etter en UI-respons for totrinns pålogging, ved å oppgi en OATHToken på 987654.", "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.", diff --git a/includes/api/i18n/zh-hant.json b/includes/api/i18n/zh-hant.json index 22dd3864c9..55c0671c18 100644 --- a/includes/api/i18n/zh-hant.json +++ b/includes/api/i18n/zh-hant.json @@ -60,6 +60,7 @@ "apihelp-compare-param-fromtitle": "要比對的第一個標題。", "apihelp-compare-param-fromid": "要比對的第一個頁面 ID。", "apihelp-compare-param-fromrev": "要比對的第一個修訂。", + "apihelp-compare-param-fromcontentformat-{slot}": "fromtext-{slot} 的內容序列化格式。", "apihelp-compare-param-fromtext": "指定 fromslots=main 並改用 fromtext-main。", "apihelp-compare-param-fromcontentmodel": "指定 fromslots=main 並改使用 fromcontentmodel-main。", "apihelp-compare-param-fromcontentformat": "指定 fromslots=main 並改使用 fromcontentformat-main。", @@ -73,6 +74,12 @@ "apihelp-compare-param-prop": "要取得的資訊部份。", "apihelp-compare-paramvalue-prop-diff": "HTML 差異。", "apihelp-compare-paramvalue-prop-diffsize": "以位元組為單位的 HTML 差異大小。", + "apihelp-compare-paramvalue-prop-ids": "「from」與「to」修訂的頁面與修訂 ID。", + "apihelp-compare-paramvalue-prop-title": "「from」與「to」修訂的頁面標題。", + "apihelp-compare-paramvalue-prop-user": "「from」與「to」修訂的使用者名稱與 ID。", + "apihelp-compare-paramvalue-prop-comment": "「from」與「to」修訂的註釋。", + "apihelp-compare-paramvalue-prop-parsedcomment": "「from」與「to」修訂的解析註釋。", + "apihelp-compare-paramvalue-prop-size": "「from」與「to」修訂的大小。", "apihelp-compare-example-1": "建立修訂 1 與 1 的差異檔", "apihelp-createaccount-summary": "建立新使用者帳號。", "apihelp-createaccount-param-name": "使用者名稱。", @@ -114,7 +121,9 @@ "apihelp-edit-param-nocreate": "若頁面不存在,則產生錯誤。", "apihelp-edit-param-watch": "加入目前頁面至您的監視清單。", "apihelp-edit-param-unwatch": "從您的監視清單中移除目前頁面。", + "apihelp-edit-param-watchlist": "無條件使用設置將頁面加入或移除目前使用者的監視清單或者是不更改監視清單。", "apihelp-edit-param-prependtext": "添加此文字至頁面開頭。覆蓋$1text。", + "apihelp-edit-param-undo": "撤銷此修訂。覆蓋$1text、$1prependtext與$1appendtext。", "apihelp-edit-param-redirect": "自動化解決重新導向。", "apihelp-edit-param-contentformat": "用於輸入文字的內容序列化格式。", "apihelp-edit-param-contentmodel": "新內容的內容模組。", @@ -186,6 +195,7 @@ "apihelp-import-param-templates": "用於跨 wiki 匯入:匯入一切包含的模板。", "apihelp-import-param-namespace": "匯入至此命名空間。無法與 $1rootpage 一起使用。", "apihelp-import-param-rootpage": "匯入作為此頁面的子頁面。無法與 $1namespace 一起使用。", + "apihelp-import-example-import": "以完整歷史紀錄匯入 [[meta:Help:ParserFunctions]] 至命名空間 100。", "apihelp-linkaccount-example-link": "開始進行從 Example 連結至帳號的程序。", "apihelp-login-summary": "登入並取得身分核對 cookies", "apihelp-login-param-name": "使用者名稱。", @@ -224,12 +234,14 @@ "apihelp-opensearch-example-te": "找出以 Te 為開頭的頁面。", "apihelp-options-summary": "更改目前使用者的偏好設定。", "apihelp-options-param-reset": "重設偏好設定為網站預設值。", + "apihelp-options-param-optionname": "選項名稱,其應設定為由 $1optionvalue 所提供的值。", "apihelp-options-param-optionvalue": "由 $1optionname 所指定,用於選項的值。", "apihelp-options-example-reset": "重設所有偏好設定", "apihelp-options-example-change": "更改skin和hideminor偏好設定。", "apihelp-options-example-complex": "重置所有偏好設定,然後再設定 skin 與 nickname。", "apihelp-paraminfo-summary": "獲得有關 API 模組的資訊。", "apihelp-paraminfo-param-helpformat": "說明字串的格式。", + "apihelp-paraminfo-param-formatmodules": "格式模組名稱清單(format 參數的值)。請改用 $1modules 。", "apihelp-paraminfo-example-1": "顯示 [[Special:ApiHelp/parse|action=parse]]、[[Special:ApiHelp/jsonfm|format=jsonfm]]、[[Special:ApiHelp/query+allpages|action=query&list=allpages]]、和 [[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]] 的資訊。", "apihelp-paraminfo-example-2": "顯示 [[Special:ApiHelp/query|action=query]] 所有子模組的資訊。", "apihelp-parse-summary": "解析內容併回傳解析器輸出。", @@ -251,6 +263,7 @@ "apihelp-parse-paramvalue-prop-displaytitle": "添加已解析 wiki 文字的標題。", "apihelp-parse-paramvalue-prop-headitems": "提供放置頁面裡的 <head> 之項目。", "apihelp-parse-paramvalue-prop-headhtml": "取得頁面已解析的 <head>。", + "apihelp-parse-paramvalue-prop-iwlinks": "在已解析的 wiki 文字提供跨 wiki 連結。", "apihelp-parse-param-disablepp": "請改用$1disablelimitreport。", "apihelp-parse-param-preview": "在預覽模式下解析。", "apihelp-parse-example-page": "解析頁面。", @@ -260,6 +273,7 @@ "apihelp-patrol-summary": "巡查頁面或修訂。", "apihelp-patrol-param-rcid": "要巡查的最近變更 ID。", "apihelp-patrol-param-revid": "要巡查的修訂 ID。", + "apihelp-patrol-param-tags": "在巡查日誌裡更改套用到項目的標籤。", "apihelp-patrol-example-rcid": "巡查一次最近變更。", "apihelp-patrol-example-revid": "巡查一個修訂。", "apihelp-protect-summary": "變更頁面的保護層級。", @@ -277,11 +291,13 @@ "apihelp-protect-example-unprotect2": "透過設定為沒有限制,來解除對頁面的保護。", "apihelp-purge-summary": "為指定標題清除快取。", "apihelp-purge-param-forcelinkupdate": "更新連結表格。", + "apihelp-purge-example-simple": "清除 Main Page 與 API 頁面。", "apihelp-purge-example-generator": "重新整理主要命名空間的前10個頁面。", "apihelp-query-summary": "擷取來自及有關MediaWiki的數據。", "apihelp-query-param-prop": "替已查詢頁面所要取得的屬性。", "apihelp-query-param-list": "要取得的清單。", "apihelp-query-param-meta": "要取得的詮釋資料。", + "apihelp-query-param-export": "匯出所有指定或已產生頁面的目前修訂。", "apihelp-query-param-iwurl": "若標題是跨 wiki 連結,是否取得完整的 URL。", "apihelp-query-param-rawcontinue": "回傳原始的 query-continue 資料來繼續。", "apihelp-query-example-revisions": "索取 Main Page 的[[Special:ApiHelp/query+siteinfo|站台資訊]]與[[Special:ApiHelp/query+revisions|修訂]]。", @@ -328,6 +344,7 @@ "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。", @@ -350,6 +367,8 @@ "apihelp-query+alllinks-example-generator": "取得包含連結的頁面。", "apihelp-query+allmessages-summary": "返回來自該網站的訊息。", "apihelp-query+allmessages-param-prop": "要取得的屬性。", + "apihelp-query+allmessages-param-nocontent": "若有設定,請不要包含在輸出裡的訊息內容。", + "apihelp-query+allmessages-param-args": "要替代訊息的引數。", "apihelp-query+allmessages-param-filter": "僅回傳名稱包含此字串的訊息。", "apihelp-query+allmessages-param-customised": "僅回傳在此自定義狀況下的訊息。", "apihelp-query+allmessages-param-lang": "以此語言來回傳訊息。", @@ -396,6 +415,7 @@ "apihelp-query+mystashedfiles-paramvalue-prop-type": "索取檔案的 MIME 類型以及媒體類型。", "apihelp-query+mystashedfiles-param-limit": "要取得的檔案數量。", "apihelp-query+alltransclusions-param-prop": "要包含到的資訊部份:", + "apihelp-query+alltransclusions-paramvalue-prop-title": "添加嵌入的標題。", "apihelp-query+alltransclusions-param-namespace": "要列舉的命名空間。", "apihelp-query+alltransclusions-param-limit": "要回傳的項目總數。", "apihelp-query+alltransclusions-param-dir": "列出時所採用的方向。", @@ -416,6 +436,7 @@ "apihelp-query+allusers-example-Y": "列出以Y開頭的使用者。", "apihelp-query+authmanagerinfo-summary": "取得目前身分核對狀態的資訊。", "apihelp-query+backlinks-summary": "找出連結至指定頁面的所有頁面。", + "apihelp-query+backlinks-param-title": "要搜尋的標題。不能與 $1pageid 一起使用。", "apihelp-query+backlinks-param-pageid": "要搜尋的頁面 ID。不能與 $1title 一起使用。", "apihelp-query+backlinks-param-namespace": "要列舉的命名空間。", "apihelp-query+backlinks-param-dir": "列出時所採用的方向。", @@ -433,10 +454,13 @@ "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": "列出使用者 Alice 與 Bob 的封鎖。", "apihelp-query+categories-summary": "列出頁面隸屬的所有分類。", + "apihelp-query+categories-param-prop": "為各分類所要取得的額外屬性:", "apihelp-query+categories-param-show": "要顯示出的分類種類。", "apihelp-query+categories-param-limit": "要回傳的分類數量。", "apihelp-query+categories-param-dir": "列出時所採用的方向。", @@ -448,8 +472,11 @@ "apihelp-query+categorymembers-param-prop": "要包含的資訊部份:", "apihelp-query+categorymembers-paramvalue-prop-ids": "添加頁面 ID。", "apihelp-query+categorymembers-paramvalue-prop-title": "添加標題與頁面的命名空間 ID。", + "apihelp-query+categorymembers-paramvalue-prop-timestamp": "添加在頁面有被包含時的時間戳記。", "apihelp-query+categorymembers-param-limit": "回傳的頁面數量上限。", "apihelp-query+categorymembers-param-sort": "作為排序順序的屬性。", + "apihelp-query+categorymembers-param-start": "起始列出的時間戳記。僅能與 $1sort=timestamp 一起使用。", + "apihelp-query+categorymembers-param-end": "結束列出的時間戳記。僅能與 $1sort=timestamp 一起使用。", "apihelp-query+categorymembers-param-startsortkey": "請改用 $1starthexsortkey。", "apihelp-query+categorymembers-param-endsortkey": "請改用 $1endhexsortkey。", "apihelp-query+categorymembers-example-simple": "取得在 Category:Physics 裡前 10 項的頁面。", @@ -467,6 +494,7 @@ "apihelp-query+deletedrevs-param-end": "終止列舉的時間戳記。", "apihelp-query+deletedrevs-param-from": "在此標題開始列出。", "apihelp-query+deletedrevs-param-to": "在此標題停止列出。", + "apihelp-query+deletedrevs-param-prefix": "搜尋以此值為開頭的所有頁面標題。", "apihelp-query+deletedrevs-param-unique": "各頁面僅列出一個修訂。", "apihelp-query+deletedrevs-param-tag": "僅列出以此標籤所標記的修訂。", "apihelp-query+deletedrevs-param-user": "此列出由該使用者作出的修訂。", @@ -478,8 +506,11 @@ "apihelp-query+disabled-summary": "已停用此查詢模組。", "apihelp-query+duplicatefiles-param-limit": "要回傳的重複檔案數量。", "apihelp-query+duplicatefiles-param-dir": "列出時所採用的方向。", + "apihelp-query+duplicatefiles-param-localonly": "僅查看在本地端儲存庫的檔案。", "apihelp-query+duplicatefiles-example-simple": "尋找重複 [[:File:Albert Einstein Head.jpg]] 的檔案。", "apihelp-query+duplicatefiles-example-generated": "查看全部有重複到的檔案。", + "apihelp-query+embeddedin-param-title": "要搜尋的標題。不能與 $1pageid 一起使用。", + "apihelp-query+embeddedin-param-pageid": "要搜尋的頁面 ID。不能與 $1title 一起使用。", "apihelp-query+embeddedin-param-namespace": "要列舉的命名空間。", "apihelp-query+embeddedin-param-dir": "列出時所採用的方向。", "apihelp-query+embeddedin-param-filterredir": "如何過濾重新導向。", @@ -492,6 +523,7 @@ "apihelp-query+exturlusage-paramvalue-prop-ids": "添加頁面 ID。", "apihelp-query+exturlusage-paramvalue-prop-title": "添加標題與頁面的命名空間 ID。", "apihelp-query+exturlusage-paramvalue-prop-url": "添加用於頁面的 URL。", + "apihelp-query+exturlusage-param-query": "不帶協定的搜尋字串。請查看 [[Special:LinkSearch]]。請留空以列出所有外部連結。", "apihelp-query+exturlusage-param-namespace": "要列舉的頁面命名空間。", "apihelp-query+exturlusage-param-limit": "要回傳的頁面數量。", "apihelp-query+exturlusage-example-simple": "顯示連結至 https://www.mediawiki.org 的頁面。", @@ -515,7 +547,9 @@ "apihelp-query+filearchive-paramvalue-prop-bitdepth": "添加版本的位元深度。", "apihelp-query+filearchive-paramvalue-prop-archivename": "添加非最新版本的存檔版本檔案名稱。", "apihelp-query+filearchive-example-simple": "顯示所有已刪除檔案的清單。", + "apihelp-query+filerepoinfo-paramvalue-prop-displayname": "人類可讀的儲存庫 wiki 名稱。", "apihelp-query+filerepoinfo-paramvalue-prop-initialCapital": "檔案是否隱式地以大寫字母開頭。", + "apihelp-query+filerepoinfo-paramvalue-prop-local": "儲存庫是否為本地端。", "apihelp-query+filerepoinfo-paramvalue-prop-rootUrl": "圖片路徑的根 URL 路徑。", "apihelp-query+filerepoinfo-paramvalue-prop-scriptDirUrl": "用於儲存庫 wiki 的 MediaWiki 安裝之根 URL 路徑。", "apihelp-query+filerepoinfo-paramvalue-prop-thumbUrl": "縮圖路徑的根 URL 路徑。", @@ -534,8 +568,11 @@ "apihelp-query+imageinfo-summary": "回傳檔案資訊與上傳日誌。", "apihelp-query+imageinfo-param-prop": "要取得的檔案資訊:", "apihelp-query+imageinfo-paramvalue-prop-timestamp": "添加上傳版本的時間戳記。", + "apihelp-query+imageinfo-paramvalue-prop-user": "添加上傳了各檔案版本的使用者。", + "apihelp-query+imageinfo-paramvalue-prop-userid": "添加上傳了各檔案版本的使用者 ID。", "apihelp-query+imageinfo-paramvalue-prop-comment": "版本的註釋。", "apihelp-query+imageinfo-paramvalue-prop-parsedcomment": "解析版本上的註釋。", + "apihelp-query+imageinfo-paramvalue-prop-canonicaltitle": "添加檔案的規範標題。", "apihelp-query+imageinfo-paramvalue-prop-url": "提供檔案與描述頁面的 URL。", "apihelp-query+imageinfo-paramvalue-prop-sha1": "替檔案添加 SHA-1 雜湊值。", "apihelp-query+imageinfo-paramvalue-prop-mime": "替檔案添加 MIME 類型。", @@ -545,6 +582,7 @@ "apihelp-query+imageinfo-param-start": "列出的起始時間戳記。", "apihelp-query+imageinfo-param-end": "列出的終止時間戳記。", "apihelp-query+imageinfo-param-urlheight": "與 $1urlwidth 相似。", + "apihelp-query+imageinfo-param-localonly": "僅查看在本地端儲存庫的檔案。", "apihelp-query+imageinfo-example-simple": "取得關於 [[:File:Albert Einstein Head.jpg]] 目前版本的資訊.", "apihelp-query+imageinfo-example-dated": "索取 [[:File:Test.jpg]] 自 2008 年以來的版本資訊。", "apihelp-query+images-summary": "回傳指定頁面中包含的所有檔案。", @@ -566,6 +604,8 @@ "apihelp-query+info-paramvalue-prop-watchers": "監視者的數目,如有允許的話。", "apihelp-query+info-paramvalue-prop-visitingwatchers": "有訪問頁面近期編輯數的各頁面監視者數目,如有允許的話。", "apihelp-query+info-paramvalue-prop-readable": "使用者是否可閱讀此頁面。", + "apihelp-query+info-param-testactions": "測試目前使用者是否可執行頁面上的某項操作。", + "apihelp-query+info-param-token": "請改用 [[Special:ApiHelp/query+tokens|action=query&meta=tokens]]。", "apihelp-query+info-example-simple": "取得有關頁面 Main Page 的資訊。", "apihelp-query+iwbacklinks-summary": "找出連結至指定跨 wiki 連結的所有頁面。", "apihelp-query+iwbacklinks-param-prefix": "跨 wiki 前綴。", @@ -596,6 +636,7 @@ "apihelp-query+langlinks-summary": "回傳指定頁面的所有跨語言連結。", "apihelp-query+langlinks-param-limit": "要回傳的 langlinks 數量。", "apihelp-query+langlinks-param-url": "是否取得完整的 URL(不能與 $1prop 一同使用)。", + "apihelp-query+langlinks-param-prop": "為各跨語言連結所要取得的額外屬性:", "apihelp-query+langlinks-paramvalue-prop-url": "添加完整的 URL。", "apihelp-query+langlinks-paramvalue-prop-autonym": "添加本地語言名稱。", "apihelp-query+langlinks-param-lang": "僅回傳帶有此語言代碼的語言連結。", @@ -607,6 +648,7 @@ "apihelp-query+links-param-limit": "要回傳的連結數量。", "apihelp-query+links-param-dir": "列出時所採用的方向。", "apihelp-query+links-example-simple": "從頁面 Main Page 取得連結。", + "apihelp-query+links-example-generator": "取得在 Main Page 頁面的連結頁面相關資訊。", "apihelp-query+linkshere-summary": "找出連結至指定頁面的所有頁面。", "apihelp-query+linkshere-param-prop": "要取得的屬性。", "apihelp-query+linkshere-paramvalue-prop-pageid": "各頁面的頁面 ID。", @@ -622,8 +664,11 @@ "apihelp-query+logevents-paramvalue-prop-ids": "添加日誌事件的 ID。", "apihelp-query+logevents-paramvalue-prop-title": "添加日誌事件的頁面標題。", "apihelp-query+logevents-paramvalue-prop-type": "添加日誌事件的類型。", + "apihelp-query+logevents-paramvalue-prop-user": "添加承擔日誌事件的使用者。", + "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": "篩選僅為此類型的日誌項目。", @@ -636,6 +681,7 @@ "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": "取得頁面 Main Page 與 MediaWiki 的屬性。", @@ -651,14 +697,21 @@ "apihelp-query+prefixsearch-param-limit": "回傳的結果數量上限。", "apihelp-query+prefixsearch-param-offset": "要略過的結果數量。", "apihelp-query+prefixsearch-example-simple": "搜尋開頭為 meaning 的頁面標題。", + "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": "請改用 $1filterredir=redirects。", @@ -673,6 +726,8 @@ "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": "添加編輯的頁面標題。", @@ -705,8 +760,11 @@ "apihelp-query+revisions-example-first5-user": "取得 Main Page 裡由使用者 MediaWiki default 所做出的最早前 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": "執行全文搜尋。", @@ -731,13 +789,16 @@ "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": "搜尋 meaning。", "apihelp-query+search-example-text": "搜尋 meaning 的文字。", "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": "檢查目前的響應延遲。", @@ -773,13 +834,16 @@ "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": "顯示使用者 Example 的貢獻。", + "apihelp-query+usercontribs-example-ipprefix": "顯示所有來自於前綴為 192.0.2. 的 IP 地址貢獻。", "apihelp-query+userinfo-summary": "取得目前使用者的資訊。", "apihelp-query+userinfo-param-prop": "要包含的資訊部份:", "apihelp-query+userinfo-paramvalue-prop-groups": "列出目前使用者所隸屬的所有群組。", @@ -798,6 +862,9 @@ "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": "請改用 [[Special:ApiHelp/query+tokens|action=query&meta=tokens]]。", "apihelp-query+watchlist-param-start": "起始列舉的時間戳記。", "apihelp-query+watchlist-param-end": "結束列舉的時間戳記。", "apihelp-query+watchlist-param-user": "此列出由該使用者作出的更改。", @@ -809,6 +876,9 @@ "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": "一般頁面編輯。", @@ -830,9 +900,16 @@ "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": "重新設定用於 Main page 的通知狀態。", + "apihelp-setnotificationtimestamp-example-allpages": "重新設定在 {{ns:user}} 命名空間裡頁面的通知狀態。", "apihelp-setpagelanguage-summary": "更改頁面的語言。", + "apihelp-setpagelanguage-extended-description-disabled": "您不被允許在此 wiki 上變更頁面的語言。\n\n請啟用 [[mw:Special:MyLanguage/Manual:$wgPageLanguageUseDB|$wgPageLanguageUseDB]] 來進行此操作。", "apihelp-setpagelanguage-param-reason": "變更的原因。", "apihelp-setpagelanguage-example-language": "更改 Main Page 的語言成巴斯克語。", "apihelp-stashedit-summary": "在分享快取裡預備編輯。", @@ -846,15 +923,19 @@ "apihelp-tokens-summary": "取得資料修改動作的密鑰。", "apihelp-tokens-extended-description": "此模組已因支援 [[Special:ApiHelp/query+tokens|action=query&meta=tokens]] 而停用。", "apihelp-unblock-summary": "解除封鎖一位使用者。", + "apihelp-unblock-param-user": "要封鎖的使用者名稱、IP 位址或 IP 範圍。不能與 $1id 或 $1userid 一起使用", + "apihelp-unblock-param-userid": "要封鎖的使用者 ID。不可與 $1id 或 $1user 一同使用。", "apihelp-unblock-param-reason": "解除封鎖的原因。", "apihelp-unblock-param-tags": "在封鎖日誌裡更改套用到項目的標籤。", "apihelp-unblock-example-id": "解除封銷 ID #105。", + "apihelp-undelete-summary": "恢復已刪除頁面的修訂。", "apihelp-undelete-param-title": "要恢復的頁面標題。", "apihelp-undelete-param-reason": "還原的原因。", "apihelp-undelete-param-tags": "在刪除日誌裡更改套用到項目的標籤。", "apihelp-undelete-example-page": "取消刪除頁面 Main Page。", "apihelp-undelete-example-revisions": "取消刪除 Main Page 的兩筆修訂。", "apihelp-unlinkaccount-summary": "移除目前使用者所連結到的第三方帳號。", + "apihelp-upload-summary": "上傳檔案,或取得等待上傳的狀態。", "apihelp-upload-param-filename": "目標檔案名稱。", "apihelp-upload-param-comment": "上傳註釋。如果 $1text 未指定的話,也會作為新檔案用的初始頁面文字。", "apihelp-upload-param-text": "用於新檔案的初始頁面文字。", @@ -893,6 +974,7 @@ "api-format-prettyprint-header-hyperlinked": "這是$1格式的HTML實現。HTML對除錯很有用,但不適合應用程式使用。\n\n指定format參數以更改輸出格式。要查看$1格式的非HTML實現,設置[$3 format=$2]。\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 清單。", @@ -932,6 +1014,7 @@ "api-help-param-upload": "必須使用 multipart/form-data 以檔案上傳的方式傳送。", "api-help-param-multi-separate": "將幾個值以 | 或 [[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": "要指定所有值,請使用$1。", "api-help-param-default": "預設值:$1", "api-help-param-default-empty": "預設值:(空)", @@ -957,7 +1040,11 @@ "api-help-authmanagerhelper-returnurl": "為第三方身份驗證流程傳回URL,必須為絕對值。需要此值或$1continue兩者之一。\n\n在接收REDIRECT回應時,一般狀況下您將打開瀏覽器或網站瀏覽功能到特定的redirecttarget URL以進行第三方身份驗證流程。當它完成時,第三方會將瀏覽器或網站瀏覽功能送至此URL。您應當提取任何來自URL的查詢或POST參數,並將之作為$1continue請求傳遞至此API模組。", "api-help-authmanagerhelper-continue": "此請求是在先前的UI或REDIRECT回應之後的後續動作。必須為此值或$1returnurl。", "api-help-authmanagerhelper-additional-params": "此模組允許額外參數,取決於可用的身份驗證請求。使用[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]与amirequestsfor=$1(或之前來自此模組的回應,如果合適)以決定可用請求及其使用的欄位。", + "apierror-appendnotsupported": "無法附加到使用內容模組 $1 的頁面。", "apierror-articleexists": "您所嘗試建立的條目剛剛已被創建。", + "apierror-assertbotfailed": "斷言使用者擁有的 bot 權限失效。", + "apierror-assertnameduserfailed": "斷言使用者「$1」出錯。", + "apierror-assertuserfailed": "斷言使用者已登入失敗。", "apierror-autoblocked": "您的 IP 位址已經被自動封鎖,因為它曾經被一名已封鎖的使用者使用過。", "apierror-badgenerator-notgenerator": "模組 $1 不能作為產生器。", "apierror-badgenerator-unknown": "未知的 generator=$1。", @@ -981,25 +1068,38 @@ "apierror-contentserializationexception": "內容序列化失敗:$1", "apierror-copyuploadbadurl": "不允許從此 URL 來上傳。", "apierror-csp-report": "處理 CSP 報告時錯誤:$1。", + "apierror-emptypage": "不允許建立空白的新頁面。", "apierror-filedoesnotexist": "檔案不存在。", "apierror-filenopath": "無法取得本地端檔案路徑。", "apierror-filetypecannotberotated": "無法旋轉的檔案類型。", "apierror-imageusage-badtitle": "$1的標題必須是檔案。", "apierror-import-unknownerror": "未知的匯入錯誤:$1", "apierror-invalidcategory": "您所輸入的分類名稱無效。", + "apierror-invalidlang": "用於參數 $1 的語言代碼無效。", + "apierror-invalidoldimage": "oldimage 參數含有無效格式。", + "apierror-invalidparammix-cannotusewith": "參數 $1 不能與 $2 一起使用。", + "apierror-invalidparammix-mustusewith": "$1 參數僅能與 $2 一起使用。", "apierror-invalidparammix": "{{PLURAL:$2|參數}} $1 不能一起使用。", "apierror-invalidsha1base36hash": "所提供的 SHA1Base36 雜湊無效。", "apierror-invalidsha1hash": "所提供的 SHA1 雜湊無效。", "apierror-invalidtitle": "錯誤標題「$1」。", + "apierror-invalidurlparam": "$1urlparam 的值無效($2=$3)。", "apierror-invaliduser": "無效的使用者名稱「$1」。", "apierror-invaliduserid": "使用者 ID $1 無效。", + "apierror-maxbytes": "參數 $1 不能大於 $2 {{PLURAL:$2|位元組|位元組}}", + "apierror-maxchars": "參數 $1 不能多於 $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": "$1參數必須被設定。", "apierror-missingrev-pageid": "沒有頁面 ID 為 $1 的目前修訂。", "apierror-missingrev-title": "沒有標題為$1的目前修訂。", "apierror-missingtitle": "您所指定的頁面不存在。", "apierror-missingtitle-byname": "頁面$1不存在。", + "apierror-moduledisabled": "模組 $1 已停用。", "apierror-mustbeloggedin-changeauth": "必須登入,才能變更身分核對資取。", "apierror-mustbeloggedin-generic": "您必須登入。", "apierror-mustbeloggedin-linkaccounts": "您必須登入到連結帳號。", diff --git a/includes/cache/localisation/LocalisationCache.php b/includes/cache/localisation/LocalisationCache.php index 75e5e19bce..9cf7acf6f1 100644 --- a/includes/cache/localisation/LocalisationCache.php +++ b/includes/cache/localisation/LocalisationCache.php @@ -800,7 +800,7 @@ class LocalisationCache { return [ 'core' => "$IP/languages/i18n", 'api' => "$IP/includes/api/i18n", - 'oojs-ui' => "$IP/resources/lib/oojs-ui/i18n", + 'oojs-ui' => "$IP/resources/lib/ooui/i18n", ] + $messagesDirs; } diff --git a/includes/changes/ChangesListBooleanFilter.php b/includes/changes/ChangesListBooleanFilter.php index fc37882c02..c781d717cc 100644 --- a/includes/changes/ChangesListBooleanFilter.php +++ b/includes/changes/ChangesListBooleanFilter.php @@ -29,13 +29,6 @@ use Wikimedia\Rdbms\IDatabase; * @since 1.29 */ class ChangesListBooleanFilter extends ChangesListFilter { - // This can sometimes be different on Special:RecentChanges - // and Special:Watchlist, due to the double-legacy hooks - // (SpecialRecentChangesFilters and SpecialWatchlistFilters) - - // but there will be separate sets of ChangesListFilterGroup and ChangesListFilter instances - // for those pages (it should work even if they're both loaded - // at once, but that can't happen). /** * Main unstructured UI i18n key * diff --git a/includes/collation/Collation.php b/includes/collation/Collation.php index 25b3d94574..ab3c6fb432 100644 --- a/includes/collation/Collation.php +++ b/includes/collation/Collation.php @@ -62,8 +62,6 @@ abstract class Collation { return new IcuCollation( 'root-u-kn' ); case 'xx-uca-ckb': return new CollationCkb; - case 'xx-uca-et': - return new CollationEt; case 'uppercase-ab': return new AbkhazUppercaseCollation; case 'uppercase-ba': diff --git a/includes/collation/CollationEt.php b/includes/collation/CollationEt.php deleted file mode 100644 index ca7b765314..0000000000 --- a/includes/collation/CollationEt.php +++ /dev/null @@ -1,60 +0,0 @@ - [], 'eo' => [ "Ĉ", "Ĝ", "Ĥ", "Ĵ", "Ŝ", "Ŭ" ], 'es' => [ "Ñ" ], - 'et' => [ "Š", "Ž", "Õ", "Ä", "Ö", "Ü", "W" ], // added W for CollationEt (xx-uca-et) + 'et' => [ "Š", "Ž", "Õ", "Ä", "Ö", "Ü" ], 'eu' => [ "Ñ" ], // not in libicu 'fa' => [ // RTL, let's put each letter on a new line diff --git a/includes/content/Content.php b/includes/content/Content.php index 000bff2d64..bb3fb107d7 100644 --- a/includes/content/Content.php +++ b/includes/content/Content.php @@ -284,13 +284,8 @@ interface Content { * 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. @@ -481,8 +476,10 @@ interface Content { * 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. diff --git a/includes/content/ContentHandler.php b/includes/content/ContentHandler.php index 344d0406bd..fab043a2ba 100644 --- a/includes/content/ContentHandler.php +++ b/includes/content/ContentHandler.php @@ -28,6 +28,7 @@ use Wikimedia\Assert\Assert; use MediaWiki\Logger\LoggerFactory; use MediaWiki\MediaWikiServices; +use MediaWiki\Revision\SlotRenderingProvider; use MediaWiki\Search\ParserOutputSearchDataExtractor; /** @@ -1389,14 +1390,20 @@ abstract class ContentHandler { * @return ParserOutput */ public function getParserOutputForIndexing( WikiPage $page, ParserCache $cache = null ) { + // TODO: MCR: ContentHandler should be called per slot, not for the whole page. + // See T190066. $parserOptions = $page->makeParserOptions( 'canonical' ); - $revId = $page->getRevision()->getId(); if ( $cache ) { $parserOutput = $cache->get( $page, $parserOptions ); } + if ( empty( $parserOutput ) ) { + $renderer = MediaWikiServices::getInstance()->getRevisionRenderer(); $parserOutput = - $page->getContent()->getParserOutput( $page->getTitle(), $revId, $parserOptions ); + $renderer->getRenderedRevision( + $page->getRevision()->getRevisionRecord(), + $parserOptions + )->getRevisionParserOutput(); if ( $cache ) { $cache->save( $parserOutput, $page, $parserOptions ); } @@ -1404,4 +1411,75 @@ abstract class ContentHandler { 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 []; + } + } diff --git a/includes/diff/DifferenceEngine.php b/includes/diff/DifferenceEngine.php index 1d69f12ec6..387e9e3c18 100644 --- a/includes/diff/DifferenceEngine.php +++ b/includes/diff/DifferenceEngine.php @@ -822,8 +822,20 @@ class DifferenceEngine extends ContextSource { /** * Show the new revision of the page. + * + * @note Not supported after calling setContent(). */ public function renderNewRevision() { + if ( $this->isContentOverridden ) { + // The code below only works with a Revision object. We could construct a fake revision + // (here or in setContent), but since this does not seem needed at the moment, + // we'll just fail for now. + throw new LogicException( + __METHOD__ + . ' is not supported after calling setContent(). Use setRevisions() instead.' + ); + } + $out = $this->getOutput(); $revHeader = $this->getRevisionHeader( $this->mNewRev ); # Add "current version as of X" title @@ -842,10 +854,16 @@ class DifferenceEngine extends ContextSource { $out->setRevisionTimestamp( $this->mNewRev->getTimestamp() ); $out->setArticleFlag( true ); - if ( !Hooks::run( 'ArticleContentViewCustom', - [ $this->mNewContent, $this->mNewPage, $out ] ) + if ( !Hooks::run( 'ArticleRevisionViewCustom', + [ $this->mNewRev->getRevisionRecord(), $this->mNewPage, $out ] ) ) { // Handled by extension + // NOTE: sync with hooks called in Article::view() + } elseif ( !Hooks::run( 'ArticleContentViewCustom', + [ $this->mNewContent, $this->mNewPage, $out ], '1.32' ) + ) { + // Handled by extension + // NOTE: sync with hooks called in Article::view() } else { // Normal page if ( $this->getTitle()->equals( $this->mNewPage ) ) { @@ -889,6 +907,13 @@ class DifferenceEngine extends ContextSource { * @return ParserOutput|bool False if the revision was not found */ protected function getParserOutput( WikiPage $page, Revision $rev ) { + if ( !$rev->getId() ) { + // WikiPage::getParserOutput wants a revision ID. Passing 0 will incorrectly show + // the current revision, so fail instead. If need be, WikiPage::getParserOutput + // could be made to accept a Revision or RevisionRecord instead of the id. + return false; + } + $parserOptions = $page->makeParserOptions( $this->getContext() ); $parserOutput = $page->getParserOutput( $parserOptions, $rev->getId() ); diff --git a/includes/exception/MWException.php b/includes/exception/MWException.php index b3e9422b8d..652a87dcfc 100644 --- a/includes/exception/MWException.php +++ b/includes/exception/MWException.php @@ -73,15 +73,23 @@ class MWException extends Exception { * @return string Message with arguments replaced */ public function msg( $key, $fallback /*[, params...] */ ) { + global $wgSitename; $args = array_slice( func_get_args(), 2 ); + $res = false; if ( $this->useMessageCache() ) { try { - return wfMessage( $key, $args )->text(); + $res = wfMessage( $key, $args )->text(); } catch ( Exception $e ) { } } - return wfMsgReplaceArgs( $fallback, $args ); + if ( $res === false ) { + $res = wfMsgReplaceArgs( $fallback, $args ); + // If an exception happens inside message rendering, + // {{SITENAME}} sometimes won't be replaced. + $res = preg_replace( '/\{\{SITENAME\}\}/', $wgSitename, $res ); + } + return $res; } /** @@ -154,6 +162,16 @@ class MWException extends Exception { global $wgOut, $wgSitename; if ( $this->useOutputPage() ) { $wgOut->prepareErrorPage( $this->getPageTitle() ); + // Manually set the html title, since sometimes + // {{SITENAME}} does not get replaced for exceptions + // happening inside message rendering. + $wgOut->setHTMLTitle( + $this->msg( + 'pagetitle', + "$1 - $wgSitename", + $this->getPageTitle() + ) + ); $wgOut->addHTML( $this->getHTML() ); diff --git a/includes/exception/MWExceptionRenderer.php b/includes/exception/MWExceptionRenderer.php index 49cf71e624..1f1cabeae1 100644 --- a/includes/exception/MWExceptionRenderer.php +++ b/includes/exception/MWExceptionRenderer.php @@ -197,12 +197,17 @@ class MWExceptionRenderer { * @return string Message with arguments replaced */ private static function msg( $key, $fallback /*[, params...] */ ) { + global $wgSitename; $args = array_slice( func_get_args(), 2 ); try { - return wfMessage( $key, $args )->text(); + $res = wfMessage( $key, $args )->text(); } catch ( Exception $e ) { - return wfMsgReplaceArgs( $fallback, $args ); + $res = wfMsgReplaceArgs( $fallback, $args ); + // If an exception happens inside message rendering, + // {{SITENAME}} sometimes won't be replaced. + $res = preg_replace( '/\{\{SITENAME\}\}/', $wgSitename, $res ); } + return $res; } /** diff --git a/includes/filerepo/file/LocalFile.php b/includes/filerepo/file/LocalFile.php index 7920e9cb4b..fa6e180ee1 100644 --- a/includes/filerepo/file/LocalFile.php +++ b/includes/filerepo/file/LocalFile.php @@ -2116,16 +2116,21 @@ class LocalFile extends File { * @return string|false */ function getDescriptionText( Language $lang = null ) { - $revision = Revision::newFromTitle( $this->title, false, Revision::READ_NORMAL ); + $store = MediaWikiServices::getInstance()->getRevisionStore(); + $revision = $store->getRevisionByTitle( $this->title, 0, Revision::READ_NORMAL ); if ( !$revision ) { return false; } - $content = $revision->getContent(); - if ( !$content ) { + + $renderer = MediaWikiServices::getInstance()->getRevisionRenderer(); + $rendered = $renderer->getRenderedRevision( $revision, new ParserOptions( null, $lang ) ); + + if ( !$rendered ) { + // audience check failed return false; } - $pout = $content->getParserOutput( $this->title, null, new ParserOptions( null, $lang ) ); + $pout = $rendered->getRevisionParserOutput(); return $pout->getText(); } diff --git a/includes/gallery/PackedImageGallery.php b/includes/gallery/PackedImageGallery.php index d1c945528d..7aa8c78893 100644 --- a/includes/gallery/PackedImageGallery.php +++ b/includes/gallery/PackedImageGallery.php @@ -107,6 +107,5 @@ class PackedImageGallery extends TraditionalImageGallery { * @param int $num */ public function setPerRow( $num ) { - return; } } diff --git a/includes/htmlform/fields/HTMLFloatField.php b/includes/htmlform/fields/HTMLFloatField.php index 72381f0161..15426fdb95 100644 --- a/includes/htmlform/fields/HTMLFloatField.php +++ b/includes/htmlform/fields/HTMLFloatField.php @@ -43,4 +43,8 @@ class HTMLFloatField extends HTMLTextField { return true; } + + protected function getInputWidget( $params ) { + return new OOUI\NumberInputWidget( $params ); + } } diff --git a/includes/htmlform/fields/HTMLMultiSelectField.php b/includes/htmlform/fields/HTMLMultiSelectField.php index 2038606597..e9ecc40f10 100644 --- a/includes/htmlform/fields/HTMLMultiSelectField.php +++ b/includes/htmlform/fields/HTMLMultiSelectField.php @@ -22,8 +22,7 @@ class HTMLMultiSelectField extends HTMLFormField implements HTMLNestedFilterable $this->mParams['disabled-options'] = []; } - // For backwards compatibility, also handle the old way with 'cssclass' => 'mw-chosen' - if ( isset( $params['dropdown'] ) || strpos( $this->mClass, 'mw-chosen' ) !== false ) { + if ( isset( $params['dropdown'] ) ) { $this->mClass .= ' mw-htmlform-dropdown'; } diff --git a/includes/htmlform/fields/HTMLTextField.php b/includes/htmlform/fields/HTMLTextField.php index b51182a2da..60c63d6a07 100644 --- a/includes/htmlform/fields/HTMLTextField.php +++ b/includes/htmlform/fields/HTMLTextField.php @@ -85,18 +85,19 @@ class HTMLTextField extends HTMLFormField { 'type', 'min', 'max', - 'pattern', - 'title', 'step', - 'list', + 'title', 'maxlength', 'tabindex', 'disabled', 'required', 'autofocus', - 'multiple', 'readonly', 'autocomplete', + // Only used in HTML mode: + 'pattern', + 'list', + 'multiple', ]; $attribs += $this->getAttributes( $allowedParams ); @@ -117,6 +118,7 @@ class HTMLTextField extends HTMLFormField { switch ( $this->mParams['type'] ) { case 'int': $type = 'number'; + $attribs['step'] = 1; break; case 'float': $type = 'number'; @@ -152,17 +154,22 @@ class HTMLTextField extends HTMLFormField { # @todo Enforce pattern, step, required, readonly on the server side as # well $allowedParams = [ + 'type', + 'min', + 'max', + 'step', + 'title', + 'maxlength', + 'tabindex', + 'disabled', + 'required', 'autofocus', + 'readonly', + 'autocomplete', + // Only used in OOUI mode: 'autosize', - 'disabled', 'flags', 'indicator', - 'maxlength', - 'readonly', - 'required', - 'tabindex', - 'type', - 'autocomplete', ]; $attribs += OOUI\Element::configFromHtmlAttributes( @@ -181,6 +188,9 @@ class HTMLTextField extends HTMLFormField { } $type = $this->getType( $attribs ); + if ( isset( $attribs['step'] ) && $attribs['step'] === 'any' ) { + $attribs['step'] = null; + } return $this->getInputWidget( [ 'id' => $this->mID, diff --git a/includes/installer/i18n/bg.json b/includes/installer/i18n/bg.json index 2e72e67c68..3805dfa71e 100644 --- a/includes/installer/i18n/bg.json +++ b/includes/installer/i18n/bg.json @@ -23,9 +23,9 @@ "config-session-expired": "Срокът на валидност на данните от сесията са изтекли.\nПродължителността на сесиите е настроена на $1.\nТова може да бъде увеличено чрез настройване на session.gc_maxlifetime в php.ini.\nНеобходимо е рестартиране на инсталационния процес.", "config-no-session": "Данните за сесията бяха загубени!\nПроверете вашия php.ini и се уверете, че на session.save_path е настроена подходящата директория.", "config-your-language": "Вашият език:", - "config-your-language-help": "Избиране на език за използване по време на инсталацията.", + "config-your-language-help": "Избор на език за използване по време на инсталацията.", "config-wiki-language": "Език на уикито:", - "config-wiki-language-help": "Избиране на език, на който ще е основното съдържание на уикито.", + "config-wiki-language-help": "Избор на език, на който ще е основното съдържание на уикито.", "config-back": "← Връщане", "config-continue": "Продължаване →", "config-page-language": "Език", @@ -50,20 +50,20 @@ "config-sidebar": "* [https://www.mediawiki.org Сайт на МедияУики]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Наръчник на потребителя]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents Наръчник на администратора]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ ЧЗВ]\n----\n* Документация\n* Бележки за версията\n* Авторски права\n* Обновяване", "config-env-good": "Средата беше проверена.\nИнсталирането на МедияУики е възможно.", "config-env-bad": "Средата беше проверена.\nНе е възможна инсталация на МедияУики.", - "config-env-php": "Инсталирана е версия на PHP $1.", + "config-env-php": "PHP $1 е инсталирано.", "config-env-hhvm": "HHVM $1 е инсталиран.", "config-unicode-using-intl": "Използване на разширението [https://pecl.php.net/intl intl PECL] за нормализация на Уникод.", "config-unicode-pure-php-warning": "Внимание: [https://pecl.php.net/intl Разширението intl PECL] не е налично за справяне с нормализацията на Уникод, превключване към по-бавното изпълнение на чист PHP.\nАко сайтът е с голям трафик, препоръчително е да се запознаете с [https://www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations нормализацията на Уникод].", "config-unicode-update-warning": "Предупреждение: Инсталираната версия на Обвивката за нормализация на Unicode използва по-старата версия на библиотеката на [http://site.icu-project.org/ проекта ICU].\nНеобходимо е да [https://www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations инсталирате по-нова версия], в случай че сте загрижени за използването на Unicode.", "config-no-db": "Не може да бъде открит подходящ драйвер за база данни! Необходимо е да инсталирате драйвер за база данни за PHP.\n{{PLURAL:$2|Поддържа се следния тип|Поддържат се следните типове}} бази от данни: $1.\n\nАко сами сте компилирали PHP, преконфигурирайте го с включен клиент за база данни, например чрез използване на ./configure --with-mysqli.\nАко сте инсталирали PHP от пакет за Debian или Ubuntu, необходимо е също така да инсталирате и модула php-mysql.", "config-outdated-sqlite": "Внимание: имате инсталиран SQLite $1, а минималната допустима версия е $2. SQLite ще бъде недостъпна за ползване.", - "config-no-fts3": "'''Предупреждение''': SQLite е компилирана без [//sqlite.org/fts3.html модула FTS3], затова възможностите за търсене няма да са достъпни.", + "config-no-fts3": "Предупреждение: SQLite е компилирана без [//sqlite.org/fts3.html модула FTS3], затова възможностите за търсене няма да са достъпни.", "config-pcre-old": "Фатална грешка: Изисква се PCRE версия $1 или по-нова.\nИзпълнимият файл на PHP е свързан с PCRE версия $2.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/Повече информация за PCRE].", - "config-pcre-no-utf8": "'''Фатално''': Модулът PCRE на PHP изглежда е компилиран без поддръжка на PCRE_UTF8.\nЗа да функционира правилно, МедияУики изисква поддръжка на UTF-8.", + "config-pcre-no-utf8": "Фатално: Модулът PCRE на PHP изглежда е компилиран без поддръжка на PCRE_UTF8.\nЗа да функционира правилно, МедияУики изисква поддръжка на UTF-8.", "config-memory-raised": "memory_limit на PHP е $1, увеличаване до $2.", "config-memory-bad": "Внимание: memory_limit на PHP е $1.\nСтойността вероятно е твърде ниска.\nВъзможно е инсталацията да се провали!", "config-apc": "[https://secure.php.net/apc APC] е инсталиран", - "config-apcu": "[https://secure.php.net/apc APC] е инсталиран", + "config-apcu": "[https://secure.php.net/apcu APCu] е инсталиран", "config-wincache": "[https://www.iis.net/downloads/microsoft/wincache-extension WinCache] е инсталиран", "config-no-cache-apcu": "Внимание: [https://secure.php.net/apcu APCu] и [https://www.iis.net/downloads/microsoft/wincache-extension WinCache] не могат да бъдат открити.\nКеширането на обекти не е активирано.", "config-mod-security": "Предупреждение: [https://modsecurity.org/ mod_security]/mod_security2 е включено на вашия уеб сървър. Много от обичайните му конфигурации пораждат проблеми с МедияУики и друг софтуер, който позволява публикуване на произволно съдържание.\nАко е възможно, моля изключете го. В противен случай се обърнете към [https://modsecurity.org/documentation/ документацията на mod_security] или се свържете с поддръжката на хостинга си, ако се сблъскате със случайни грешки.", @@ -73,19 +73,19 @@ "config-imagemagick": "Открит е ImageMagick: $1.\nПреоразмеряването на картинки ще бъде включено ако качването на файлове бъде разрешено.", "config-gd": "Открита е вградена графичната библиотека GD.\nАко качването на файлове бъде включено, ще бъде включена възможността за преоразмеряване на картинки.", "config-no-scaling": "Не са открити библиотеките GD или ImageMagick.\nПреоразмеряването на картинки ще бъде изключено.", - "config-no-uri": "'''Грешка:''' Не може да се определи текущия адрес.\nИнсталация беше прекратена.", + "config-no-uri": "Грешка: Не може да се определи текущия адрес.\nИнсталация беше прекратена.", "config-no-cli-uri": "Внимание: Не е зададен параметър --scriptpath, стойност по подразбиране: $1.", - "config-using-server": "Използване на сървърното име \"$1\".", - "config-using-uri": "Използване на сървърния адрес (URL) \"$1$2\".", + "config-using-server": "Използване на сървърното име „$1“.", + "config-using-uri": "Използване на сървърния адрес (URL) „$1$2“.", "config-uploads-not-safe": "Внимание: Папката по подразбиране за качване $1 е уязвима от изпълнение на зловредни скриптове.\nВъпреки че МедияУики извършва проверка за заплахи в сигурността на всички качени файлове, силно препоръчително е да се [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security#Upload_security затвори тази уязвимост в сигурността] преди разрешаване за качване на файлове.", "config-no-cli-uploads-check": "Предупреждение: Директорията по подразбиране за качване на файлове ($1) не е проверена за уязвимости при изпълнение на произволен скрипт по време на инсталацията от командния ред.", "config-brokenlibxml": "Вашата система използва комбинация от версии на PHP и libxml2, които са с много грешки и могат да причинят скрити повреди на данните в МедияУики или други уеб приложения.\nНеобходимо е обновяване до libxml2 2.7.3 или по-нова версия ([https://bugs.php.net/bug.php?id=45996 докладвана грешка при PHP]).\nИнсталацията беше прекратена.", "config-suhosin-max-value-length": "Suhosin е инсталиран и ограничава дължината GET параметъра length на $1 байта. Компонентът на МедияУики ResourceLoader ще може да пренебрегне частично това ограничение, но това ще намали производителността. По възможност е препоръчително да се настрои suhosin.get.max_value_length на 1024 или по-голяма стойност в php.ini и в LocalSettings.php да се настрои $wgResourceLoaderMaxQueryLength със същата стойност.", "config-using-32bit": "Внимание: изглежда, че системата Ви работи с 32-битови числа. Това [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:32-bit не се препоръчва].", "config-db-type": "Тип на базата от данни:", - "config-db-host": "Хост на базата от данни:", + "config-db-host": "Сървър на базата от данни:", "config-db-host-help": "Ако базата от данни е на друг сървър, в кутията се въвежда името на хоста или IP адреса.\n\nАко се използва споделен уеб хостинг, доставчикът на услугата би трябвало да е предоставил в документацията си коректния хост.\n\nАко инсталацията протича на Windows-сървър и се използва MySQL, използването на \"localhost\" може да е неприемливо. В такива случаи се използва \"127.0.0.1\" за локален IP адрес.\n\nПри използване на PostgreSQL, това поле се оставя празно, за свързване чрез Unix socket.", - "config-db-host-oracle": "TNS на базата данни:", + "config-db-host-oracle": "TNS на базата от данни:", "config-db-host-oracle-help": "Въведете валидно [http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm Local Connect Name]; файлът tnsnames.ora трябва да бъде видим за инсталацията.
Ако използвате клиентска библиотека версия 10g или по-нова можете да използвате метода [http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm Easy Connect].", "config-db-wiki-settings": "Идентифициране на това уики", "config-db-name": "Име на базата от данни:", @@ -107,18 +107,18 @@ "config-db-port": "Порт на базата от данни:", "config-db-schema": "Схема за МедияУики", "config-db-schema-help": "Схемата по-горе обикновено е коректна.\nПромени се извършват ако наистина е необходимо.", - "config-pg-test-error": "Невъзможно свързване с базата данни '''$1''': $2", + "config-pg-test-error": "Невъзможно свързване с базата данни $1: $2", "config-sqlite-dir": "Директория за данни на SQLite:", "config-sqlite-dir-help": "SQLite съхранява всички данни в един файл.\n\nПо време на инсталацията уеб сървърът трябва да има права за писане в посочената директория.\n\nТя не трябва да е достъпна през уеб, затова не е там, където са PHP файловете.\n\nИнсталаторът ще съхрани заедно с нея файл .htaccess, но ако този метод пропадне, някой може да придобие достъп до суровите данни от базата от данни.\nТова включва сурови данни за потребителите (адреси за е-поща, хеширани пароли), както и изтрити версии на страници и друга чувствителна и с ограничен достъп информация от и за уикито.\n\nБазата от данни е препоръчително да се разположи на друго място, например в /var/lib/mediawiki/yourwiki.", "config-oracle-def-ts": "Таблично пространство по подразбиране:", "config-oracle-temp-ts": "Временно таблично пространство:", - "config-type-mysql": "MySQL (или съвместима)", + "config-type-mysql": "MariaDB, MySQL (или съвместима)", "config-type-mssql": "Microsoft SQL сървър", "config-support-info": "МедияУики поддържа следните системи за бази от данни:\n\n$1\n\nАко не виждате желаната за използване система в списъка по-долу, следвайте инструкциите за активиране на поддръжка по-горе.", - "config-dbsupport-mysql": "* [{{int:version-db-mysql-url}} MySQL] е най-важна за МедияУики и се поддържа най-добре. МедияУики работи също така с [{{int:version-db-mariadb-url}} MariaDB] и [{{int:version-db-percona-url}} Percona Server], които са съвместими с MySQL.\n([https://secure.php.net/manual/bg/mysqli.installation.php Как се компилира PHP с поддръжка на MySQL])", + "config-dbsupport-mysql": "* [{{int:version-db-mariadb-url}} MariaDB] е най-важна за МедияУики и се поддържа най-добре. МедияУики работи също така с [{{int:version-db-mysql-url}} MySQL] и [{{int:version-db-percona-url}} Percona Server], които са съвместими с MariaDB.\n([https://secure.php.net/manual/en/mysqli.installation.php Как се компилира PHP с поддръжка на MySQL])", "config-dbsupport-postgres": "* [{{int:version-db-postgres-url}} PostgreSQL] е популярна система за управление на бази от данни, алтернатива на MySQL. ([https://secure.php.net/manual/bg/pgsql.installation.php Как се компилира PHP с поддръжка на PostgreSQL])", - "config-dbsupport-sqlite": "* [{{int:version-db-sqlite-url}} SQLite] е олекотена система за бази от данни, която е много добре поддържана. ([http://www.php.net/manual/bg/pdo.installation.php Как се компилира PHP с поддръжка на SQLite], използва PDO)", - "config-dbsupport-oracle": "* [{{int:version-db-oracle-url}} Oracle] е комерсиална корпоративна база от данни. ([http://www.php.net/manual/en/oci8.installation.php Как се компилира PHP с поддръжка на OCI8])", + "config-dbsupport-sqlite": "* [{{int:version-db-sqlite-url}} SQLite] е олекотена система за бази от данни, която е много добре поддържана. ([https://secure.php.net/manual/en/pdo.installation.php Как се компилира PHP с поддръжка на SQLite], използва PDO)", + "config-dbsupport-oracle": "* [{{int:version-db-oracle-url}} Oracle] е комерсиална корпоративна база от данни. ([https://secure.php.net/manual/en/oci8.installation.php Как се компилира PHP с поддръжка на OCI8])", "config-dbsupport-mssql": "* [{{int:version-db-mssql-url}} Microsoft SQL Server] е комерсиална корпоративна база от данни за Windows. ([https://secure.php.net/manual/en/sqlsrv.installation.php Как да се компилира PHP с поддръжка на SQLSRV])", "config-header-mysql": "Настройки на MariaDB/MySQL", "config-header-postgres": "Настройки за PostgreSQL", @@ -150,9 +150,9 @@ "config-can-upgrade": "В базата от данни има таблици за МедияУики.\nЗа надграждането им за MediaWiki $1, натиска се Продължаване.", "config-upgrade-done": "Обновяването приключи.\n\nВече е възможно [$1 да използвате уикито].\n\nАко е необходимо, възможно е файлът LocalSettings.php да бъде създаден отново чрез натискане на бутона по-долу.\nТова не е препоръчително действие, освен ако не срещате затруднения с уикито.", "config-upgrade-done-no-regenerate": "Обновяването приключи.\n\nВече е възможно [$1 да използвате уикито].", - "config-regenerate": "Създаване на LocalSettings.php →", + "config-regenerate": "Повторно създаване на LocalSettings.php →", "config-show-table-status": "Заявката SHOW TABLE STATUS не сполучи!", - "config-unknown-collation": "'''Предупреждение:''' Базата от данни използва неразпозната колация.", + "config-unknown-collation": "Предупреждение: Базата от данни използва неразпозната колация.", "config-db-web-account": "Сметка за уеб достъп до базата от данни", "config-db-web-help": "Избиране на потребителско име и парола, които уеб сървърът ще използва да се свързва с базата от данни при обичайната работа на уикито.", "config-db-web-account-same": "Използване на същата сметка като при инсталацията.", @@ -186,7 +186,7 @@ "config-admin-password-confirm": "Парола (повторно):", "config-admin-help": "Въвежда се предпочитаното потребителско име, например „Иванчо Иванчев“.\nТова ще е потребителското име, което администраторът ще използва за влизане в уикито.", "config-admin-name-blank": "Необходимо е да бъде въведено потребителско име на администратора.", - "config-admin-name-invalid": "Посоченото потребителско име \"$1\" е невалидно.\nНеобходимо е да се посочи друго.", + "config-admin-name-invalid": "Посоченото потребителско име „$1“ е невалидно.\nНеобходимо е да се посочи друго.", "config-admin-password-blank": "Въведете парола за администраторската сметка.", "config-admin-password-mismatch": "Двете въведени пароли не съвпадат.", "config-admin-email": "Адрес за електронна поща:", @@ -220,7 +220,7 @@ "config-license-help": "Много публични уикита поставят всички приноси под [https://freedomdefined.org/Definition/Bg свободен лиценз].\nТова помага за създаването на усещане за общност и насърчава дългосрочните приноси. \nТова не е необходимо като цяло за частно или корпоративно уики.\n\nАко искате да използвате текстове от Уикипедия, и искате Уикипедия да може да приема текстове, копирани от вашето уики, трябва да изберете лиценз {{int:config-license-cc-by-sa}}.\n\nЛицензът за свободна документация на GNU е старият лиценз на съдържанието на Уикипедия.\nТой все още е валиден лиценз, но някои негови условия са трудни за разбиране и правят по-сложни повторното използване и интерпретацията.", "config-email-settings": "Настройки за е-поща", "config-enable-email": "Разрешаване на изходящи е-писма", - "config-enable-email-help": "За да работят възможностите за използване на е-поща, необходимо е [Config-dbsupport-oracle/manual/en/mail.configuration.php настройките за поща на PHP] да бъдат конфигурирани правилно.\nАко няма да се използват услугите за е-поща в уикито, те могат да бъдат изключени тук.", + "config-enable-email-help": "За да работят възможностите за използване на е-поща, необходимо е [https://secure.php.net/manual/en/mail.configuration.ph настройките за поща на PHP] да бъдат конфигурирани правилно.\nАко няма да се използват услугите за е-поща в уикито, те могат да бъдат изключени тук.", "config-email-user": "Позволяване на потребителите да си изпращат е-писма през уикито", "config-email-user-help": "Позволяване на потребителите да си изпращат е-писма ако са разрешили това в настройките си.", "config-email-usertalk": "Оповестяване при промяна на потребителската беседа", @@ -309,6 +309,7 @@ "config-nofile": "Файлът „$1“ не може да бъде открит. Да не е бил изтрит?", "config-extension-link": "Знаете ли, че това уики поддържа [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions разширения]?\n\nМожете да разгледате [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category разширенията по категория] или [https://www.mediawiki.org/wiki/Extension_Matrix Матрицата на разширенията] за пълен списък на разширенията.", "config-skins-screenshots": "$1 (снимки на екрана: $2)", + "config-extensions-requires": "$1 (изисква $2)", "config-screenshot": "снимка на екран", "mainpagetext": "МедияУики беше успешно инсталирано.", "mainpagedocfooter": "Разгледайте [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents ръководството] за подробна информация относно използването на уики софтуера.\n\n== Първи стъпки ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Настройки за конфигуриране]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ ЧЗВ за МедияУики]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Пощенски списък относно нови версии на МедияУики]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Локализиране на МедияУики]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Научете как да се справяте със спама във вашето уики]" diff --git a/includes/installer/i18n/nap.json b/includes/installer/i18n/nap.json index e391609344..8183ed7c34 100644 --- a/includes/installer/i18n/nap.json +++ b/includes/installer/i18n/nap.json @@ -61,6 +61,7 @@ "config-memory-raised": "'O valore 'e PHP memory_limit è $1, aumentato a $2.", "config-memory-bad": "Attenziò: 'o valore 'e PHP memory_limit è $1.\nProbabbilmente troppo basso.\n'A installazione se putesse scassà!", "config-apc": "[https://secure.php.net/apc APC] è installato", + "config-apcu": "[https://secure.php.net/apcu APCu] è installato", "config-wincache": "[https://www.iis.net/downloads/microsoft/wincache-extension WinCache] è installato", "config-no-cache-apcu": "Attenziò: [https://secure.php.net/apcu APCu], [http://xcache.lighttpd.net/ XCache] o [https://www.iis.net/downloads/microsoft/wincache-extension WinCache] nun so' state truvate.\n'A funziona caching 'e ll'oggette non è apicciata.", "config-mod-security": "Attenziò: 'O servitore web vuosto téne [https://modsecurity.org/ mod_security]/mod_security2 appicciato. Ce stanno tante mpustaziune commune ca 'o facessero causà prubbleme a MediaWiki e ll'ati software ca permettessero ll'utente 'e pubbrecà cuntenute.\nSi putite, stutate sta funziona. Sinò, riferite 'a [https://modsecurity.org/documentation/ documentaziona ncopp' 'o mod_security] o cuntattate 'o host vuosto pe' ve dà supporto quanno se scummogliasse cocch'errore.", @@ -78,6 +79,7 @@ "config-no-cli-uploads-check": "Attenziò: 'a cartella predefinita p' 'e carreche ($1) nun è stata cuntrullata p' 'a vulnerabbelità ncopp'a l'esecuzione arbitraria 'e script pe' tramente ca se fà l'installazione 'a linea 'e commando.", "config-brokenlibxml": "'O sistema vuosto ave na combinazione 'e verziune 'e PHP e libxml2 nguacchiata ca putesse scassà 'e date 'e MediaWiki 'n manera annascunnusa e pure l'ati apprecaziune p' 'o web.\nAgghiurnate a libxml2 2.7.3 o cchiù muderno ([https://bugs.php.net/bug.php?id=45996 'o bug studiato d' 'o lato PHP]).\nInstallaziona spezzata.", "config-suhosin-max-value-length": "Suhosin è installato e miette lemmeto 'o parametro GET length a $1 byte.\n'O componente MediaWiki ResourceLoader funzionarrà aggirann'a stu lemmeto, ma luvanno prestaziune.\nSi pussibile, avit'a mpustà suhosin.get.max_value_length a 1024 o cchiù auto 'n php.ini, e mpustà $wgResourceLoaderMaxQueryLength a 'o stesso valore 'n LocalSettings.php.", + "config-using-32bit": "Attenziò: 'o sistema vuosto pare c'ausasse nummere sane 'e 32-bit. Chest' [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:32-bit è scunzigliat].", "config-db-type": "Tipo 'e database:", "config-db-host": "Host d' 'o database:", "config-db-host-help": "Si 'o server database vuosto stà mpizzato dint' 'a nu server differente, miette 'o nomme d' 'o host o l'indirizzo IP sujo.\n\nSi state ausanno nu servizio spartuto web hosting, 'aggenzia 'e hosting v'avess'a dà 'o nomme buono 'e nomme host dint' 'a documentaziona suoja.\n\nSi state installanno chisto dint'a nu server Windows cu MySQL, ausanno \"localhost\" può darse ca nun funziona p' 'o nomme server. Si chisto nun funziona, mettite \"127.0.0.1\" p' 'o ndirizzo locale vuosto.\n\nSi state ausanno PostgreSQL, lassate abbacante stu campo pe' v'accucchià cu nu socket Unix.", @@ -111,12 +113,12 @@ "config-type-mysql": "MariaDB, MySQL o compatibbele", "config-type-mssql": "Microsoft SQL Server", "config-support-info": "MediaWiki supporta 'e sisteme 'e database ccà abbascio:\n\n$1\n\nSi nfra chiste ccà nun vedite 'o sistema 'e database ca vulite ausà, allora avite liegge 'e instruziune ccà ncoppa pe' ne dà supporto.", - "config-dbsupport-mysql": "* [{{int:version-db-mysql-url}} MySQL] è 'a configurazione cchiù mmeglio p' 'o MediaWiki e è chilla meglio suppurtata. MediaWiki può faticà pure cu' [{{int:version-db-mariadb-url}} MariaDB] e [{{int:version-db-percona-url}} Percona Server], ca fossero MySQL cumpatibbele. ([https://secure.php.net/manual/en/mysqli.installation.php Comme s'adda fà pe' cumpilà PHP cu suppuorto MySQL])", - "config-dbsupport-postgres": "* [{{int:version-db-postgres-url}} PostgreSQL] è nu sistema canusciuto 'e database open source ca fosse n'alternativa a MySQL. Putess'avé cocch'errore p'arricettà, e nun è cunzigliato 'e ll'ausà dint'a n'ambiente 'e produziona. ([https://secure.php.net/manual/en/pgsql.installation.php Comme s'avess'a cumpilà PHP cu suppuorto PostgreSQL])", - "config-dbsupport-sqlite": "* [{{int:version-db-sqlite-url}} SQLite] è nu sistema 'e database leggero, ca fosse assaje buono suppurtato. ([http://www.php.net/manual/en/pdo.installation.php Comme cumpilà PHP cu suppuorto SQLite], aùsa PDO)", - "config-dbsupport-oracle": "* [{{int:version-db-oracle-url}} Oracle] è nu database 'e na fraveca commerciale. ([http://www.php.net/manual/en/oci8.installation.php Comme cumpilà PHP cu suppuorto OCI8])", + "config-dbsupport-mysql": "* [{{int:version-db-mariadb-url}} MariaDB] è 'a configurazione cchiù mmeglio p' 'o MediaWiki e è chilla meglio suppurtata. MediaWiki può faticà pure cu' [{{int:version-db-mariadb-url}} MariaDB] e [{{int:version-db-percona-url}} Percona Server], ca fossero MariaDB cumpatibbele. ([https://secure.php.net/manual/en/mysqli.installation.php Comme s'adda fà pe' cumpilà PHP cu suppuorto MySQL])", + "config-dbsupport-postgres": "* [{{int:version-db-postgres-url}} PostgreSQL] è nu sistema canusciuto 'e database open source ca fosse n'alternativa a MySQL.\n([https://secure.php.net/manual/en/pgsql.installation.php Comme s'avess'a cumpilà PHP cu suppuorto PostgreSQL])", + "config-dbsupport-sqlite": "* [{{int:version-db-sqlite-url}} SQLite] è nu sistema 'e database leggero, ca fosse assaje buono suppurtato.\n([https://secure.php.net/manual/en/pdo.installation.php Comme cumpilà PHP cu suppuorto SQLite], aùsa PDO)", + "config-dbsupport-oracle": "* [{{int:version-db-oracle-url}} Oracle] è nu database 'e na fraveca commerciale. ([https://secure.php.net/manual/en/oci8.installation.php Comme cumpilà PHP cu suppuorto OCI8])", "config-dbsupport-mssql": "* [{{int:version-db-mssql-url}} Microsoft SQL Server] è nu database 'e na fraveca commerciale p' 'o Windows. ([https://secure.php.net/manual/en/sqlsrv.installation.php Comme cumpilà PHP cu suppuorto SQLSRV])", - "config-header-mysql": "Mpustaziune MySQL", + "config-header-mysql": "Mpustaziune MariaDB/MySQL", "config-header-postgres": "Mpustaziune PostgreSQL", "config-header-sqlite": "Mpustaziune SQLite", "config-header-oracle": "Mpustaziune Oracle", @@ -155,7 +157,7 @@ "config-db-web-create": "Crìa 'o cunto si nun esiste ancora", "config-db-web-no-create-privs": "'O cunto ausato pe' ne fà l'installazione nun tene diritte necessarie pe' ne putè crià n'atu cunto.\n'O cunto zegnàto ccà adda esistere già.", "config-mysql-engine": "Mutore d'astipo:", - "config-mysql-innodb": "InnoDB", + "config-mysql-innodb": "InnoDB (fosse 'o cunzigliato)", "config-mysql-myisam": "MyISAM", "config-mysql-myisam-dep": "Attenziò: avite scigliuto MyISAM comm' 'o mutore 'archiviaziona MySQL, ca nun è raccummannato pe' l'ausà cu MediaWiki, pecché:\n* supporta debolmente 'a concorrenza p' 'o blocco d' 'a tabbella\n* è cchiù inchine 'a corruzione 'e l'ati mutore\n* 'o codece 'e base 'e MediaWiki nun gestisce sempe MyISAM comme l'avess'a gistiunà\n\nSi ll'installazione vosta MySQL suppuorta InnoDB, è autamente raccummandato ca si scigliesse a 'o posto suo.\nSi 'a installazione MySQL nun suppurtasse InnoDB, forse è 'o mumento 'e ll'agghiurnà.", "config-mysql-only-myisam-dep": "Attenziò: MyISAM è l'uneco mutore p'astipà date ca se trova mo' a disposizione p' 'o MySQL dint'a sta macchina, e nun fosse raccumandato 'e s'ausà cu MediaWiki, pecché:\n* suppurtasse minimamente concorrenza pe' bbìa 'e bluccà tabbelle\n* è cchiù facile ca jesse a se scassà cchiù 'e l'ati mutore\n* 'o codece MediaWiki nun maniasse sempe MyISAM comme l'avesse 'e manià\n\nL'installazione MySQL nun suppurtasse InnoDB, può darse ca chist'è 'o mumento pe' ve ll'agghiurnà.", @@ -193,6 +195,8 @@ "config-subscribe": "Mettiteve dint' 'a [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce mailing list 'e ll'annunciazione 'e verziune d' 'o software rilassate].", "config-subscribe-help": "Chest'è na mailing list a basso traffeco ca se dedicasse a se ffà annunzie 'e verziune nove, piglianno pure mpurtante nutarelle ca riguardassero 'a sicurezza.\nFosse cunzigliato 'e se nzegnà e s'agghiurnà l'installazione 'e MediaWiki quanno na verziona nova fosse pubbreca.", "config-subscribe-noemail": "Vuje avite tentato 'e ve trasì dint' 'a mailing list addedecata a se fà annunzie ncopp' 'e verziune nove senza ve dà n'indirizzo email.\nNzertanno n'indirizzo email se vulite affettuà l'iscrizione dint'a mailing list.", + "config-pingback": "Sparte 'e date 'e st'installazione ch' 'e sviluppature 'e MediaWiki.", + "config-pingback-help": "Si vuje sciglite st'opzione, MediaWiki cuntattasse spisso https://www.mediawiki.org ch' 'e date 'e base e st'istanza MediaWiki. Dint' 'a sta categoria 'e date, tràseno, p'esempie, 'o tipo 'e sistema, 'a virziona 'e PHP e database 'e backend scigliuto. 'A Wikimedia Foundation spartisse sti date ch' 'e sviluppature Mediawiki p' 'a puté aiutà a guidà 'e fatiche 'e sviluppo future. P' 'o sistema d' 'o vuosto 'e date se mannan'accussì:\n
$1
", "config-almost-done": "Avite quase fernuto!\nMo' putite zumpà 'a parta r' 'a configurazione e sempricemente installà 'a wiki.", "config-optional-continue": "Spiate cchiù dimanne.", "config-optional-skip": "Me so' scucciato già, installa surtanto 'o wiki.", @@ -241,7 +245,7 @@ "config-cache-options": "Mpustaziune p' 'a cache d'oggette:", "config-cache-help": "'O caching 'uggette s'ausa pe' puté migliurà 'a velocità 'e MediaWiki a fforza 'e ffà caching d' 'e date cchiù spisso ausàte.\nE Mezze a gruosse site se songo ncuraggiate a ll'appiccià chiste, e site piccerilli vedarranno migliuramente pure.", "config-cache-none": "Nisciuna memorizzazione n cache (nisciuna funziunalità è luvata, ma 'a velocità se putesse ffà a meno dint' 'e wiki cchiù gruosse)", - "config-cache-accel": "Mettere 'n cache oggette PHP (APC, XCache o WinCache)", + "config-cache-accel": "Mettere 'n cache oggette PHP (APC, APCu o WinCache)", "config-cache-memcached": "Aúsa 'o Memcached (richiede cchiù mpustaziune 'installazione e configuraziona)", "config-memcached-servers": "Server memcached:", "config-memcached-help": "Elenco 'e ll'indirizzi IP p' 'e putè ausà p' 'o Memcached.\nS'avess'a specificà uno pe' riga e scrivere 'a porta 'e trasuta. P'esempio:\n 127.0.0.1:11211\n 192.168.1.25:1234", @@ -291,14 +295,20 @@ "config-install-subscribe-fail": "Nun se pò sottoscrivere mediawiki-announce: $1", "config-install-subscribe-notpossible": "cURL nun è installato e allow_url_fopen nun è disponibbele.", "config-install-mainpage": "Crianno 'a paggena prencepale ch' 'e cuntenute predefinite", + "config-install-mainpage-exists": "'A paggena principale esiste già, è zumpata", "config-install-extension-tables": "Crianno tabelle pe' estenziune appicciate", "config-install-mainpage-failed": "Nun se pò nzertà 'a paggena prencepale: $1", - "config-install-done": "Cumplimente!\nAvite installato MediaWiki apposto.\n\n'O prugramma 'installazione ha generato nu file LocalSettings.php ca cuntene tuttuquante 'e mpustaziune.\n\nAvit'a scarrecà chisto e 'o nzertà dint' 'a cartella bbase d' 'o wiki vuosto ('a stessa addò fosse prisente l' index.php). 'A scarreca avess'a partì automaticamente.\n\nSi nu download nun s'avviasse, o si è stato annullato, putite riavvià cliccanno ncopp' 'o cullegamento 'e seguito:\n\n$3\n\nNota: si ascite mò 'a ll'installazione senza manco scarrecà 'o file 'e configurazione che s'è criato, po chesto nun sarrà cchiù dispunibbele.\n\nQuanno fosse tutto fernuto allora [$2 trasite dint' 'o wiki vuosto].", + "config-install-done": "Cumplimente!\nAvite installato MediaWiki.\n\n'O prugramma 'installazione ha generato nu file LocalSettings.php ca cuntene tuttuquante 'e mpustaziune.\n\nAvit'a scarrecà chisto e 'o nzertà dint' 'a cartella bbase d' 'o wiki vuosto ('a stessa addò fosse prisente l' index.php). 'A scarreca avess'a partì automaticamente.\n\nSi nu download nun s'avviasse, o si è stato annullato, putite riavvià cliccanno ncopp' 'o cullegamento 'e seguito:\n\n$3\n\nNota: si ascite mò 'a ll'installazione senza manco scarrecà 'o file 'e configurazione che s'è criato, po chesto nun sarrà cchiù dispunibbele.\n\nQuanno fosse tutto fernuto allora [$2 trasite dint' 'o wiki vuosto].", + "config-install-done-path": "Cumplimente!\nAvite installato MediaWiki.\n\n'O prugramma 'installazione ha generato nu file LocalSettings.php ca cuntene tuttuquante 'e mpustaziune.\n\nAvit'a scarrecà chisto, e l'avit'azzeccà dint' 'o $4. 'A scarreca avess'a partì automaticamente.\n\nSi nu download nun s'avviasse, o si è stato annullato, putite riavvià cliccanno ncopp' 'o cullegamento 'e seguito:\n\n$3\n\nNota: si ascite mò 'a ll'installazione senza manco scarrecà 'o file 'e configurazione che s'è criato, po chesto nun sarrà cchiù dispunibbele.\n\nQuanno fosse tutto fernuto allora [$2 trasite dint' 'o wiki vuosto].", + "config-install-success": "Avite installato MediaWiki apposto. Mo' putite vedé ncopp'a <$1$2> 'o wiki vuosto.\nSi avite cocche dubbio, vedite 'e trasí dint' 'a l'elenco 'e quistione FAQ:\n o vedite 'e cuntattà cocche forum 'e suppuorto dint' 'a chilla paggena.", "config-download-localsettings": "Scarreca LocalSettings.php", "config-help": "ajùto", "config-help-tooltip": "cliccà pe' 'o spannere", "config-nofile": "'O file \"$1\" nun se trova. Forse è stato scancellato?", "config-extension-link": "'O sapevate ch' 'o wiki vuosto suppurtasse 'e [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions estensiune]?\n\nPutite navigà nfra chiste [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category estensiune pe' categurìa].", - "mainpagetext": "MediaWiki è stato nstallato.", - "mainpagedocfooter": "Iate a cunzultà [https://meta.wikimedia.org/wiki/Help:Contents User's Guide] pe' n'avé nfurmaziune ncopp' 'o modo aùso d' 'o software wiki.\n\n== P'accummincià ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Elenco 'e mpustaziune pe' sta configuraziona]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ FAQ 'e Mediawiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Elenco 'e nutizie 'e Mediawiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localizzazzione 'e MediaWiki p' 'a lengua vuosta]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Mparate a cumbattere 'o spammo dint' 'a wiki d' 'a vosta]" + "config-skins-screenshots": "$1 (screenshots: $2)", + "config-extensions-requires": "$1 (vuless' 'o $2)", + "config-screenshot": "screenshot", + "mainpagetext": "MediaWiki è stato installato.", + "mainpagedocfooter": "Iate a cunzultà [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents User's Guide] pe' n'avé nfurmaziune ncopp' 'o modo aùso d' 'o software wiki.\n\n== P'accummincià ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Elenco 'e mpustaziune pe' sta configuraziona]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ FAQ 'e Mediawiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Elenco 'e nutizie 'e Mediawiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localizzazzione 'e MediaWiki p' 'a lengua vuosta]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Mparate a cumbattere 'o spammo dint' 'a wiki d' 'a vosta]" } diff --git a/includes/installer/i18n/roa-tara.json b/includes/installer/i18n/roa-tara.json index fcdaf00a55..0a59f1008b 100644 --- a/includes/installer/i18n/roa-tara.json +++ b/includes/installer/i18n/roa-tara.json @@ -40,18 +40,18 @@ "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:", diff --git a/includes/jobqueue/JobQueueDB.php b/includes/jobqueue/JobQueueDB.php index 689326e8b6..0b85fbe8be 100644 --- a/includes/jobqueue/JobQueueDB.php +++ b/includes/jobqueue/JobQueueDB.php @@ -264,8 +264,6 @@ class JobQueueDB extends JobQueue { if ( $flags & self::QOS_ATOMIC ) { $dbw->endAtomic( $method ); } - - return; } /** diff --git a/includes/jobqueue/jobs/CategoryMembershipChangeJob.php b/includes/jobqueue/jobs/CategoryMembershipChangeJob.php index a0c70abe71..c39823ff9b 100644 --- a/includes/jobqueue/jobs/CategoryMembershipChangeJob.php +++ b/includes/jobqueue/jobs/CategoryMembershipChangeJob.php @@ -232,12 +232,14 @@ class CategoryMembershipChangeJob extends Job { * @return string[] category names */ private function getCategoriesAtRev( WikiPage $page, Revision $rev, $parseTimestamp ) { - $content = $rev->getContent(); + $renderer = MediaWikiServices::getInstance()->getRevisionRenderer(); $options = $page->makeParserOptions( 'canonical' ); $options->setTimestamp( $parseTimestamp ); + // This could possibly use the parser cache if it checked the revision ID, // but that's more complicated than it's worth. - $output = $content->getParserOutput( $page->getTitle(), $rev->getId(), $options ); + $output = $renderer->getRenderedRevision( $rev->getRevisionRecord(), $options ) + ->getRevisionParserOutput(); // array keys will cast numeric category names to ints // so we need to cast them back to strings to avoid breaking things! diff --git a/includes/libs/rdbms/database/DatabaseSqlite.php b/includes/libs/rdbms/database/DatabaseSqlite.php index 1b9675add6..c8edc3901c 100644 --- a/includes/libs/rdbms/database/DatabaseSqlite.php +++ b/includes/libs/rdbms/database/DatabaseSqlite.php @@ -974,7 +974,9 @@ class DatabaseSqlite extends Database { } $sql = $obj->sql; $sql = preg_replace( - '/(?<=\W)"?' . preg_quote( trim( $this->addIdentifierQuotes( $oldName ), '"' ) ) . '"?(?=\W)/', + '/(?<=\W)"?' . + preg_quote( trim( $this->addIdentifierQuotes( $oldName ), '"' ), '/' ) . + '"?(?=\W)/', $this->addIdentifierQuotes( $newName ), $sql, 1 diff --git a/includes/libs/virtualrest/ParsoidVirtualRESTService.php b/includes/libs/virtualrest/ParsoidVirtualRESTService.php index 73ecc9dc26..3f8a11b324 100644 --- a/includes/libs/virtualrest/ParsoidVirtualRESTService.php +++ b/includes/libs/virtualrest/ParsoidVirtualRESTService.php @@ -181,7 +181,7 @@ class ParsoidVirtualRESTService extends VirtualRESTService { 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]; diff --git a/includes/media/JpegHandler.php b/includes/media/JpegHandler.php index 287c198c57..91bed4a82c 100644 --- a/includes/media/JpegHandler.php +++ b/includes/media/JpegHandler.php @@ -259,13 +259,13 @@ class JpegHandler extends ExifBitmapHandler { // 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; diff --git a/includes/page/Article.php b/includes/page/Article.php index e90334fce6..6a42d58c28 100644 --- a/includes/page/Article.php +++ b/includes/page/Article.php @@ -20,6 +20,8 @@ * @file */ use MediaWiki\MediaWikiServices; +use MediaWiki\Storage\MutableRevisionRecord; +use MediaWiki\Storage\RevisionRecord; /** * Class for viewing MediaWiki article and history. @@ -35,11 +37,11 @@ use MediaWiki\MediaWikiServices; class Article implements Page { /** * @var IContextSource|null The context this Article is executed in. - * If null, REquestContext::getMain() is used. + * If null, RequestContext::getMain() is used. */ protected $mContext; - /** @var WikiPage The WikiPage object of this instance */ + /** @var WikiPage|null The WikiPage object of this instance */ protected $mPage; /** @@ -49,22 +51,28 @@ class Article implements Page { public $mParserOptions; /** - * @var string|null Text of the revision we are working on - * @todo BC cruft - */ - public $mContent; - - /** - * @var Content|null Content of the revision we are working on. - * Initialized by fetchContentObject(). + * @var Content|null Content of the main slot of $this->mRevision. + * @note This variable is read only, setting it has no effect. + * Extensions that wish to override the output of Article::view should use a hook. + * @todo MCR: Remove in 1.33 + * @deprecated since 1.32 * @since 1.21 */ public $mContentObject; - /** @var bool Is the content ($mContent) already loaded? */ + /** + * @var bool Is the target revision loaded? Set by fetchRevisionRecord(). + * + * @deprecated since 1.32. Whether content has been loaded should not be relevant to + * code outside this class. + */ public $mContentLoaded = false; - /** @var int|null The oldid of the article that is to be shown, 0 for the current revision */ + /** + * @var int|null The oldid of the article that was requested to be shown, + * 0 for the current revision. + * @see $mRevIdFetched + */ public $mOldId; /** @var Title|null Title from which we were redirected here, if any. */ @@ -73,20 +81,38 @@ class Article implements Page { /** @var string|bool URL to redirect to or false if none */ public $mRedirectUrl = false; - /** @var int Revision ID of revision we are working on */ + /** + * @var int Revision ID of revision that was loaded. + * @see $mOldId + * @deprecated since 1.32, use getRevIdFetched() instead. + */ public $mRevIdFetched = 0; /** - * @var Revision|null Revision we are working on. Initialized by getOldIDFromRequest() - * or fetchContentObject(). + * @var Status|null represents the outcome of fetchRevisionRecord(). + * $fetchResult->value is the RevisionRecord object, if the operation was successful. + * + * The information in $fetchResult is duplicated by the following deprecated public fields: + * $mRevIdFetched, $mContentLoaded. $mRevision (and $mContentObject) also typically duplicate + * information of the loaded revision, but may be overwritten by extensions or due to errors. + */ + private $fetchResult = null; + + /** + * @var Revision|null Revision to be shown. Initialized by getOldIDFromRequest() + * or fetchContentObject(). Normally loaded from the database, but may be replaced + * by an extension, or be a fake representing an error message or some such. + * While the output of Article::view is typically based on this revision, + * it may be overwritten by error messages or replaced by extensions. */ public $mRevision = null; /** * @var ParserOutput|null|false The ParserOutput generated for viewing the page, * initialized by view(). If no ParserOutput could be generated, this is set to false. + * @deprecated since 1.32 */ - public $mParserOutput; + public $mParserOutput = null; /** * @var bool Whether render() was called. With the way subclasses work @@ -132,7 +158,7 @@ class Article implements Page { */ public static function newFromTitle( $title, IContextSource $context ) { if ( NS_MEDIA == $title->getNamespace() ) { - // FIXME: where should this go? + // XXX: This should not be here, but where should it go? $title = Title::makeTitle( NS_FILE, $title->getDBkey() ); } @@ -214,6 +240,11 @@ class Article implements Page { $this->mRedirectedFrom = null; # Title object if set $this->mRevIdFetched = 0; $this->mRedirectUrl = false; + $this->mRevision = null; + $this->mContentObject = null; + $this->fetchResult = null; + + // TODO hard-deprecate direct access to public fields $this->mPage->clear(); } @@ -229,25 +260,15 @@ class Article implements Page { * This function has side effects! Do not use this function if you * only want the real revision text if any. * - * @return Content Return the content of this revision + * @deprecated since 1.32, use getRevisionFetched() or fetchRevisionRecord() instead. + * + * @return Content * * @since 1.21 */ protected function getContentObject() { if ( $this->mPage->getId() === 0 ) { - # If this is a MediaWiki:x message, then load the messages - # and return the message value for x. - if ( $this->getTitle()->getNamespace() == NS_MEDIAWIKI ) { - $text = $this->getTitle()->getDefaultMessageText(); - if ( $text === false ) { - $text = ''; - } - - $content = ContentHandler::makeContent( $text, $this->getTitle() ); - } else { - $message = $this->getContext()->getUser()->isLoggedIn() ? 'noarticletext' : 'noarticletextanon'; - $content = new MessageContent( $message, null, 'parsemag' ); - } + $content = $this->getSubstituteContent(); } else { $this->fetchContentObject(); $content = $this->mContentObject; @@ -257,7 +278,49 @@ class Article implements Page { } /** - * @return int The oldid of the article that is to be shown, 0 for the current revision + * Returns Content object to use when the page does not exist. + * + * @return Content + */ + private function getSubstituteContent() { + # If this is a MediaWiki:x message, then load the messages + # and return the message value for x. + if ( $this->getTitle()->getNamespace() == NS_MEDIAWIKI ) { + $text = $this->getTitle()->getDefaultMessageText(); + if ( $text === false ) { + $text = ''; + } + + $content = ContentHandler::makeContent( $text, $this->getTitle() ); + } else { + $message = $this->getContext()->getUser()->isLoggedIn() ? 'noarticletext' : 'noarticletextanon'; + $content = new MessageContent( $message, null, 'parsemag' ); + } + + return $content; + } + + /** + * Returns ParserOutput to use when a page does not exist. In some cases, we still want to show + * "virtual" content, e.g. in the MediaWiki namespace, or in the File namespace for non-local + * files. + * + * @param ParserOptions $options + * + * @return ParserOutput + */ + protected function getEmptyPageParserOutput( ParserOptions $options ) { + $content = $this->getSubstituteContent(); + + return $content->getParserOutput( $this->getTitle(), 0, $options ); + } + + /** + * @see getOldIDFromRequest() + * @see getRevIdFetched() + * + * @return int The oldid of the article that is was requested in the constructor or via the + * context's WebRequest. */ public function getOldID() { if ( is_null( $this->mOldId ) ) { @@ -292,7 +355,7 @@ class Article implements Page { 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() ); } } @@ -315,6 +378,8 @@ class Article implements Page { } } + $this->mRevIdFetched = $this->mRevision ? $this->mRevision->getId() : 0; + return $oldid; } @@ -322,6 +387,7 @@ class Article implements Page { * Get text content object * Does *NOT* follow redirects. * @todo When is this null? + * @deprecated since 1.32, use fetchRevisionRecord() instead. * * @note Code that wants to retrieve page content from the database should * use WikiPage::getContent(). @@ -331,74 +397,139 @@ class Article implements Page { * @since 1.21 */ protected function fetchContentObject() { - if ( $this->mContentLoaded ) { - return $this->mContentObject; + if ( !$this->mContentLoaded ) { + $this->fetchRevisionRecord(); + } + + return $this->mContentObject; + } + + /** + * Fetches the revision to work on. + * The revision is typically loaded from the database, but may also be a fake representing + * an error message or content supplied by an extension. Refer to $this->fetchResult for + * the revision actually loaded from the database, and any errors encountered while doing + * that. + * + * @return RevisionRecord|null + */ + protected function fetchRevisionRecord() { + if ( $this->fetchResult ) { + return $this->mRevision ? $this->mRevision->getRevisionRecord() : null; } $this->mContentLoaded = true; - $this->mContent = null; + $this->mContentObject = null; $oldid = $this->getOldID(); - # Pre-fill content with error message so that if something - # fails we'll have something telling us what we intended. - // XXX: this isn't page content but a UI message. horrible. - $this->mContentObject = new MessageContent( 'missing-revision', [ $oldid ] ); + // $this->mRevision might already be fetched by getOldIDFromRequest() + if ( !$this->mRevision ) { + if ( !$oldid ) { + $this->mRevision = $this->mPage->getRevision(); + + if ( !$this->mRevision ) { + wfDebug( __METHOD__ . " failed to find page data for title " . + $this->getTitle()->getPrefixedText() . "\n" ); - if ( $oldid ) { - # $this->mRevision might already be fetched by getOldIDFromRequest() - if ( !$this->mRevision ) { + // Just for sanity, output for this case is done by showMissingArticle(). + $this->fetchResult = Status::newFatal( 'noarticletext' ); + $this->applyContentOverride( $this->makeFetchErrorContent() ); + return null; + } + } else { $this->mRevision = Revision::newFromId( $oldid ); + if ( !$this->mRevision ) { - wfDebug( __METHOD__ . " failed to retrieve specified revision, id $oldid\n" ); - return false; + wfDebug( __METHOD__ . " failed to load revision, rev_id $oldid\n" ); + + $this->fetchResult = Status::newFatal( 'missing-revision', $oldid ); + $this->applyContentOverride( $this->makeFetchErrorContent() ); + return null; } } - } else { - $oldid = $this->mPage->getLatest(); - if ( !$oldid ) { - wfDebug( __METHOD__ . " failed to find page data for title " . - $this->getTitle()->getPrefixedText() . "\n" ); - return false; - } + } + + $this->mRevIdFetched = $this->mRevision->getId(); + $this->fetchResult = Status::newGood( $this->mRevision ); - # Update error message with correct oldid - $this->mContentObject = new MessageContent( 'missing-revision', [ $oldid ] ); + if ( !$this->mRevision->userCan( Revision::DELETED_TEXT, $this->getContext()->getUser() ) ) { + wfDebug( __METHOD__ . " failed to retrieve content of revision " . + $this->mRevision->getId() . "\n" ); - $this->mRevision = $this->mPage->getRevision(); + // Just for sanity, output for this case is done by showDeletedRevisionHeader(). + $this->fetchResult = Status::newFatal( 'rev-deleted-text-permission' ); + $this->applyContentOverride( $this->makeFetchErrorContent() ); + return null; + } - if ( !$this->mRevision ) { - wfDebug( __METHOD__ . " failed to retrieve current page, rev_id $oldid\n" ); - return false; + if ( Hooks::isRegistered( 'ArticleAfterFetchContentObject' ) ) { + $contentObject = $this->mRevision->getContent( + Revision::FOR_THIS_USER, + $this->getContext()->getUser() + ); + + $hookContentObject = $contentObject; + + // Avoid PHP 7.1 warning of passing $this by reference + $articlePage = $this; + + Hooks::run( + 'ArticleAfterFetchContentObject', + [ &$articlePage, &$hookContentObject ], + '1.32' + ); + + if ( $hookContentObject !== $contentObject ) { + // A hook handler is trying to override the content + $this->applyContentOverride( $hookContentObject ); } } - // @todo FIXME: Horrible, horrible! This content-loading interface just plain sucks. - // We should instead work with the Revision object when we need it... - // Loads if user is allowed - $content = $this->mRevision->getContent( + // For B/C only + $this->mContentObject = $this->mRevision->getContent( Revision::FOR_THIS_USER, $this->getContext()->getUser() ); - if ( !$content ) { - wfDebug( __METHOD__ . " failed to retrieve content of revision " . - $this->mRevision->getId() . "\n" ); - return false; + return $this->mRevision->getRevisionRecord(); + } + + /** + * Returns a Content object representing any error in $this->fetchContent, or null + * if there is no such error. + * + * @return Content|null + */ + private function makeFetchErrorContent() { + if ( !$this->fetchResult || $this->fetchResult->isOK() ) { + return null; } - $this->mContentObject = $content; - $this->mRevIdFetched = $this->mRevision->getId(); + return new MessageContent( $this->fetchResult->getMessage() ); + } - // Avoid PHP 7.1 warning of passing $this by reference - $articlePage = $this; + /** + * Applies a content override by constructing a fake Revision object and assigning + * it to mRevision. The fake revision will not have a user, timestamp or summary set. + * + * This mechanism exists mainly to accommodate extensions that use the + * ArticleAfterFetchContentObject. Once that hook has been removed, there should no longer + * be a need for a fake revision object. fetchRevisionRecord() presently also uses this mechanism + * to report errors, but that could be changed to use $this->fetchResult instead. + * + * @param Content $override Content to be used instead of the actual page content, + * coming from an extension or representing an error message. + */ + private function applyContentOverride( Content $override ) { + // Construct a fake revision + $rev = new MutableRevisionRecord( $this->getTitle() ); + $rev->setContent( 'main', $override ); - Hooks::run( - 'ArticleAfterFetchContentObject', - [ &$articlePage, &$this->mContentObject ] - ); + $this->mRevision = new Revision( $rev ); - return $this->mContentObject; + // For B/C only + $this->mContentObject = $override; } /** @@ -417,25 +548,32 @@ class Article implements Page { /** * Get the fetched Revision object depending on request parameters or null - * on failure. + * on failure. The revision returned may be a fake representing an error message or + * wrapping content supplied by an extension. Refer to $this->fetchResult for the + * revision actually loaded from the database. * * @since 1.19 * @return Revision|null */ public function getRevisionFetched() { - $this->fetchContentObject(); + $this->fetchRevisionRecord(); - return $this->mRevision; + if ( $this->fetchResult->isOK() ) { + return $this->mRevision; + } } /** * Use this to fetch the rev ID used on page views * + * Before fetchRevisionRecord was called, this returns the page's latest revision, + * regardless of what getOldID() returns. + * * @return int Revision ID of last article revision */ public function getRevIdFetched() { - if ( $this->mRevIdFetched ) { - return $this->mRevIdFetched; + if ( $this->fetchResult && $this->fetchResult->isOK() ) { + return $this->fetchResult->value->getId(); } else { return $this->mPage->getLatest(); } @@ -571,11 +709,9 @@ class Article implements Page { } break; case 3: - # This will set $this->mRevision if needed - $this->fetchContentObject(); - # Are we looking at an old revision - if ( $oldid && $this->mRevision ) { + $rev = $this->fetchRevisionRecord(); + if ( $oldid && $this->fetchResult->isOK() ) { $this->setOldSubtitle( $oldid ); if ( !$this->showDeletedRevisionHeader() ) { @@ -599,10 +735,21 @@ class Article implements Page { "
\n$1\n
", 'clearyourcache' ); + } elseif ( !Hooks::run( 'ArticleRevisionViewCustom', [ + $rev, + $this->getTitle(), + $oldid, + $outputPage, + ] ) + ) { + // NOTE: sync with hooks called in DifferenceEngine::renderNewRevision() + // Allow extensions do their own custom view for certain pages + $outputDone = true; } elseif ( !Hooks::run( 'ArticleContentViewCustom', - [ $this->fetchContentObject(), $this->getTitle(), $outputPage ] ) + [ $this->fetchContentObject(), $this->getTitle(), $outputPage ], '1.32' ) ) { - # Allow extensions do their own custom view for certain pages + // NOTE: sync with hooks called in DifferenceEngine::renderNewRevision() + // Allow extensions do their own custom view for certain pages $outputDone = true; } break; @@ -610,12 +757,32 @@ class Article implements Page { # Run the parse, protected by a pool counter wfDebug( __METHOD__ . ": doing uncached parse\n" ); - $content = $this->getContentObject(); - $poolArticleView = new PoolWorkArticleView( $this->getPage(), $parserOptions, - $this->getRevIdFetched(), $useParserCache, $content ); + $rev = $this->fetchRevisionRecord(); + $error = null; - if ( !$poolArticleView->execute() ) { + if ( $rev ) { + $poolArticleView = new PoolWorkArticleView( + $this->getPage(), + $parserOptions, + $this->getRevIdFetched(), + $useParserCache, + $rev + ); + $ok = $poolArticleView->execute(); $error = $poolArticleView->getError(); + $this->mParserOutput = $poolArticleView->getParserOutput() ?: null; + + # Don't cache a dirty ParserOutput object + if ( $poolArticleView->getIsDirty() ) { + $outputPage->setCdnMaxage( 0 ); + $outputPage->addHTML( "\n" ); + } + } else { + $ok = false; + } + + if ( !$ok ) { if ( $error ) { $outputPage->clearHTML(); // for release() errors $outputPage->enableClientCache( false ); @@ -628,18 +795,13 @@ class Article implements Page { return; } - $this->mParserOutput = $poolArticleView->getParserOutput(); - $outputPage->addParserOutput( $this->mParserOutput, $poOptions ); - if ( $content->getRedirectTarget() ) { - $outputPage->addSubtitle( "" . - $this->getContext()->msg( 'redirectpagesub' )->parse() . "" ); + if ( $this->mParserOutput ) { + $outputPage->addParserOutput( $this->mParserOutput, $poOptions ); } - # Don't cache a dirty ParserOutput object - if ( $poolArticleView->getIsDirty() ) { - $outputPage->setCdnMaxage( 0 ); - $outputPage->addHTML( "\n" ); + if ( $rev && $this->getRevisionRedirectTarget( $rev ) ) { + $outputPage->addSubtitle( "" . + $this->getContext()->msg( 'redirectpagesub' )->parse() . "" ); } $outputDone = true; @@ -650,9 +812,12 @@ class Article implements Page { } } - # Get the ParserOutput actually *displayed* here. - # Note that $this->mParserOutput is the *current*/oldid version output. + // Get the ParserOutput actually *displayed* here. + // Note that $this->mParserOutput is the *current*/oldid version output. + // 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 @@ -677,12 +842,12 @@ class Article implements Page { $outputPage->adaptCdnTTL( $this->mPage->getTimestamp(), IExpiringStore::TTL_DAY ); # Check for any __NOINDEX__ tags on the page using $pOutput - $policy = $this->getRobotPolicy( 'view', $pOutput ); + $policy = $this->getRobotPolicy( 'view', $pOutput ?: null ); $outputPage->setIndexPolicy( $policy['index'] ); - $outputPage->setFollowPolicy( $policy['follow'] ); + $outputPage->setFollowPolicy( $policy['follow'] ); // FIXME: test this $this->showViewFooter(); - $this->mPage->doViewUpdates( $user, $oldid ); + $this->mPage->doViewUpdates( $user, $oldid ); // FIXME: test this # Load the postEdit module if the user just saved this revision # See also EditPage::setPostEditCookie @@ -693,19 +858,34 @@ class Article implements Page { # Clear the cookie. This also prevents caching of the response. $request->response()->clearCookie( $cookieKey ); $outputPage->addJsConfigVars( 'wgPostEdit', $postEdit ); - $outputPage->addModules( 'mediawiki.action.view.postEdit' ); + $outputPage->addModules( 'mediawiki.action.view.postEdit' ); // FIXME: test this } } + /** + * @param RevisionRecord $revision + * @return null|Title + */ + private function getRevisionRedirectTarget( RevisionRecord $revision ) { + // TODO: find a *good* place for the code that determines the redirect target for + // a given revision! + // NOTE: Use main slot content. Compare code in DerivedPageDataUpdater::revisionIsRedirect. + $content = $revision->getContent( 'main' ); + return $content ? $content->getRedirectTarget() : null; + } + /** * Adjust title for pages with displaytitle, -{T|}- or language conversion * @param ParserOutput $pOutput */ public function adjustDisplayTitle( ParserOutput $pOutput ) { + $out = $this->getContext()->getOutput(); + # Adjust the title if it was set by displaytitle, -{T|}- or language conversion $titleText = $pOutput->getTitleText(); if ( strval( $titleText ) !== '' ) { - $this->getContext()->getOutput()->setPageTitle( $titleText ); + $out->setPageTitle( $titleText ); + $out->setDisplayTitle( $titleText ); } } @@ -1261,7 +1441,9 @@ class Article implements Page { # Show error message $oldid = $this->getOldID(); if ( !$oldid && $title->getNamespace() === NS_MEDIAWIKI && $title->hasSourceText() ) { - $outputPage->addParserOutput( $this->getContentObject()->getParserOutput( $title ) ); + // use fake Content object for system message + $parserOptions = ParserOptions::newCanonical( 'canonical' ); + $outputPage->addParserOutput( $this->getEmptyPageParserOutput( $parserOptions ) ); } else { if ( $oldid ) { $text = wfMessage( 'missing-revision', $oldid )->plain(); @@ -1670,7 +1852,7 @@ class Article implements Page { __METHOD__ ); - // @todo FIXME: i18n issue/patchwork message + // @todo i18n issue/patchwork message $context->getOutput()->addHTML( '' . $context->msg( 'historywarning' )->numParams( $revisions )->parse() . @@ -1697,7 +1879,7 @@ class Article implements Page { /** * Output deletion confirmation dialog - * @todo FIXME: Move to another file? + * @todo Move to another file? * @param string $reason Prefilled reason */ public function confirmDelete( $reason ) { @@ -1974,7 +2156,7 @@ class Article implements Page { /** * Lightweight method to get the parser output for a page, checking the parser cache - * and so on. Doesn't consider most of the stuff that WikiPage::view is forced to + * and so on. Doesn't consider most of the stuff that Article::view() is forced to * consider, so it's not appropriate to use there. * * @since 1.16 (r52326) for LiquidThreads @@ -2123,8 +2305,13 @@ class Article implements Page { * 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 ); } /** diff --git a/includes/page/ImageHistoryList.php b/includes/page/ImageHistoryList.php index 1f87d93360..0a07c6884f 100644 --- a/includes/page/ImageHistoryList.php +++ b/includes/page/ImageHistoryList.php @@ -266,7 +266,7 @@ class ImageHistoryList extends ContextSource { } else { $row .= '' . Linker::formatComment( $description, $this->title ) . ''; + '">' . Linker::formatComment( $description, $this->title ) . ''; } $rowClass = null; diff --git a/includes/page/ImagePage.php b/includes/page/ImagePage.php index 58f25d4650..d3d6da7935 100644 --- a/includes/page/ImagePage.php +++ b/includes/page/ImagePage.php @@ -272,18 +272,20 @@ class ImagePage extends Article { } /** - * Overloading Article's getContentObject method. + * Overloading Article's getEmptyPageParserOutput method. * * Omit noarticletext if sharedupload; text will be fetched from the * shared upload server if possible. - * @return string + * + * @param ParserOptions $options + * @return ParserOutput */ - public function getContentObject() { + public function getEmptyPageParserOutput( ParserOptions $options ) { $this->loadFile(); if ( $this->mPage->getFile() && !$this->mPage->getFile()->isLocal() && 0 == $this->getId() ) { - return null; + return new ParserOutput(); } - return parent::getContentObject(); + return parent::getEmptyPageParserOutput( $options ); } private function getLanguageForRendering( WebRequest $request, File $file ) { diff --git a/includes/page/WikiPage.php b/includes/page/WikiPage.php index bf21a56708..74e31791e9 100644 --- a/includes/page/WikiPage.php +++ b/includes/page/WikiPage.php @@ -29,6 +29,7 @@ use MediaWiki\Storage\PageUpdater; 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; @@ -2820,15 +2821,21 @@ class WikiPage implements Page, IDBAccessObject { * 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 ) { @@ -2843,7 +2850,9 @@ class WikiPage implements Page, IDBAccessObject { ) ); // Delete pagelinks, update secondary indexes, etc - $updates = $this->getDeletionUpdates( $content ); + $updates = $this->getDeletionUpdates( + $revision ? $revision->getRevisionRecord() : $content + ); foreach ( $updates as $update ) { DeferredUpdates::addUpdate( $update ); } @@ -3545,32 +3554,68 @@ class WikiPage implements Page, IDBAccessObject { * 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; } /** diff --git a/includes/parser/Preprocessor_Hash.php b/includes/parser/Preprocessor_Hash.php index 0326499a7a..6d6dd8937b 100644 --- a/includes/parser/Preprocessor_Hash.php +++ b/includes/parser/Preprocessor_Hash.php @@ -1088,7 +1088,7 @@ class PPFrame_Hash implements PPFrame { } 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; @@ -1786,7 +1786,7 @@ class PPNode_Hash_Tree implements PPNode { $class = self::class; } } else { - throw new MWException( __METHOD__.': invalid node descriptor' ); + throw new MWException( __METHOD__ . ': invalid node descriptor' ); } return new $class( $store, $index ); } @@ -2206,7 +2206,7 @@ class PPNode_Hash_Attr implements PPNode { 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]; diff --git a/includes/poolcounter/PoolWorkArticleView.php b/includes/poolcounter/PoolWorkArticleView.php index 4af86ae03d..286494efa4 100644 --- a/includes/poolcounter/PoolWorkArticleView.php +++ b/includes/poolcounter/PoolWorkArticleView.php @@ -17,7 +17,12 @@ * * @file */ + use MediaWiki\MediaWikiServices; +use MediaWiki\Revision\RevisionRenderer; +use MediaWiki\Storage\MutableRevisionRecord; +use MediaWiki\Storage\RevisionRecord; +use MediaWiki\Storage\RevisionStore; class PoolWorkArticleView extends PoolCounterWork { /** @var WikiPage */ @@ -35,8 +40,14 @@ class PoolWorkArticleView extends PoolCounterWork { /** @var ParserOptions */ private $parserOptions; - /** @var Content|null */ - private $content = null; + /** @var RevisionRecord|null */ + private $revision = null; + + /** @var RevisionStore */ + private $revisionStore = null; + + /** @var RevisionRenderer */ + private $renderer = null; /** @var ParserOutput|bool */ private $parserOutput = false; @@ -53,26 +64,52 @@ class PoolWorkArticleView extends PoolCounterWork { * @param int $revid ID of the revision being parsed. * @param bool $useParserCache Whether to use the parser cache. * operation. - * @param Content|string|null $content Content to parse or null to load it; may - * also be given as a wikitext string, for BC. + * @param RevisionRecord|Content|string|null $revision Revision to render, or null to load it; + * may also be given as a wikitext string, or a Content object, for BC. */ public function __construct( WikiPage $page, ParserOptions $parserOptions, - $revid, $useParserCache, $content = null + $revid, $useParserCache, $revision = null ) { - if ( is_string( $content ) ) { // BC: old style call + if ( is_string( $revision ) ) { // BC: very old style call $modelId = $page->getRevision()->getContentModel(); $format = $page->getRevision()->getContentFormat(); - $content = ContentHandler::makeContent( $content, $page->getTitle(), $modelId, $format ); + $revision = ContentHandler::makeContent( $revision, $page->getTitle(), $modelId, $format ); + } + + if ( $revision instanceof Content ) { // BC: old style call + $content = $revision; + $revision = new MutableRevisionRecord( $page->getTitle() ); + $revision->setId( $revid ); + $revision->setPageId( $page->getId() ); + $revision->setContent( 'main', $content ); } + if ( $revision ) { + // Check that the RevisionRecord matches $revid and $page, but still allow + // fake RevisionRecords coming from errors or hooks in Article to be rendered. + if ( $revision->getId() && $revision->getId() !== $revid ) { + throw new InvalidArgumentException( '$revid parameter mismatches $revision parameter' ); + } + if ( $revision->getPageId() + && $revision->getPageId() !== $page->getTitle()->getArticleID() + ) { + throw new InvalidArgumentException( '$page parameter mismatches $revision parameter' ); + } + } + + // TODO: DI: inject services + $this->renderer = MediaWikiServices::getInstance()->getRevisionRenderer(); + $this->revisionStore = MediaWikiServices::getInstance()->getRevisionStore(); + $this->parserCache = MediaWikiServices::getInstance()->getParserCache(); + $this->page = $page; $this->revid = $revid; $this->cacheable = $useParserCache; $this->parserOptions = $parserOptions; - $this->content = $content; - $this->parserCache = MediaWikiServices::getInstance()->getParserCache(); + $this->revision = $revision; $this->cacheKey = $this->parserCache->getKey( $page, $parserOptions ); $keyPrefix = $this->cacheKey ?: wfMemcKey( 'articleview', 'missingcachekey' ); + parent::__construct( 'ArticleView', $keyPrefix . ':revid:' . $revid ); } @@ -114,23 +151,33 @@ class PoolWorkArticleView extends PoolCounterWork { $isCurrent = $this->revid === $this->page->getLatest(); - if ( $this->content !== null ) { - $content = $this->content; + // Bypass audience check for current revision + $audience = $isCurrent ? RevisionRecord::RAW : RevisionRecord::FOR_PUBLIC; + + if ( $this->revision !== null ) { + $rev = $this->revision; } elseif ( $isCurrent ) { - // XXX: why use RAW audience here, and PUBLIC (default) below? - $content = $this->page->getContent( Revision::RAW ); + $rev = $this->page->getRevision() + ? $this->page->getRevision()->getRevisionRecord() + : null; } else { - $rev = Revision::newFromTitle( $this->page->getTitle(), $this->revid ); + $rev = $this->revisionStore->getRevisionByTitle( $this->page->getTitle(), $this->revid ); + } - if ( $rev === null ) { - $content = null; - } else { - // XXX: why use PUBLIC audience here (default), and RAW above? - $content = $rev->getContent(); - } + if ( !$rev ) { + // couldn't load + return false; } - if ( $content === null ) { + $renderedRevision = $this->renderer->getRenderedRevision( + $rev, + $this->parserOptions, + null, + [ 'audience' => $audience ] + ); + + if ( !$renderedRevision ) { + // audience check failed return false; } @@ -138,11 +185,7 @@ class PoolWorkArticleView extends PoolCounterWork { $cacheTime = wfTimestampNow(); $time = - microtime( true ); - $this->parserOutput = $content->getParserOutput( - $this->page->getTitle(), - $this->revid, - $this->parserOptions - ); + $this->parserOutput = $renderedRevision->getRevisionParserOutput(); $time += microtime( true ); // Timing hack diff --git a/includes/resourceloader/ResourceLoader.php b/includes/resourceloader/ResourceLoader.php index 8f5d083ab5..604a140de5 100644 --- a/includes/resourceloader/ResourceLoader.php +++ b/includes/resourceloader/ResourceLoader.php @@ -1162,8 +1162,8 @@ MESSAGE; } } else { if ( $states ) { - // Keep default escaping of slashes (e.g. "") for ResourceLoaderClientHtml. - $this->errors[] = 'Problematic modules: ' . json_encode( $states, JSON_PRETTY_PRINT ); + $this->errors[] = 'Problematic modules: ' + . self::encodeJsonForScript( $states ); } } @@ -1223,7 +1223,7 @@ MESSAGE; 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.' ); @@ -1292,6 +1292,35 @@ MESSAGE; return $out; } + /** + * Wrapper around json_encode that avoids needless escapes, + * and pretty-prints in debug mode. + * + * @internal + * @since 1.32 + * @param bool|string|array $data + * @return string JSON + */ + public static function encodeJsonForScript( $data ) { + // Keep output as small as possible by disabling needless escape modes + // that PHP uses by default. + // However, while most module scripts are only served on HTTP responses + // for JavaScript, some modules can also be embedded in the HTML as inline + // scripts. This, and the fact that we sometimes need to export strings + // containing user-generated content and labels that may genuinely contain + // a sequences like "", we need to encode either '/' or '<'. + // By default PHP escapes '/'. Let's escape '<' instead which is less common + // and allows URLs to mostly remain readable. + $jsonFlags = JSON_UNESCAPED_SLASHES | + JSON_UNESCAPED_UNICODE | + JSON_HEX_TAG | + JSON_HEX_AMP; + if ( self::inDebugMode() ) { + $jsonFlags |= JSON_PRETTY_PRINT; + } + return json_encode( $data, $jsonFlags ); + } + /** * Returns a JS call to mw.loader.state, which sets the state of one * ore more modules to a given value. Has two calling conventions: @@ -1317,31 +1346,6 @@ MESSAGE; ); } - /** - * Returns JS code which calls the script given by $script. The script will - * be called with local variables name, version, dependencies and group, - * which will have values corresponding to $name, $version, $dependencies - * and $group as supplied. - * - * @param string $name Module name - * @param string $version Module version hash - * @param array $dependencies List of module names on which this module depends - * @param string $group Group which the module is in. - * @param string $source Source of the module, or 'local' if not foreign. - * @param string $script JavaScript code - * @return string JavaScript code - */ - public static function makeCustomLoaderScript( $name, $version, $dependencies, - $group, $source, $script - ) { - $script = str_replace( "\n", "\n\t", trim( $script ) ); - return Xml::encodeJsCall( - "( function ( name, version, dependencies, group, source ) {\n\t$script\n} )", - [ $name, $version, $dependencies, $group, $source ], - self::inDebugMode() - ); - } - private static function isEmptyObject( stdClass $obj ) { foreach ( $obj as $key => $value ) { return false; @@ -1378,69 +1382,56 @@ MESSAGE; /** * Returns JS code which calls mw.loader.register with the given - * parameters. Has three calling conventions: + * parameter. * - * - ResourceLoader::makeLoaderRegisterScript( $name, $version, - * $dependencies, $group, $source, $skip - * ): - * Register a single module. + * @par Example + * @code * - * - ResourceLoader::makeLoaderRegisterScript( [ $name1, $name2 ] ): - * Register modules with the given names. - * - * - ResourceLoader::makeLoaderRegisterScript( [ + * ResourceLoader::makeLoaderRegisterScript( [ * [ $name1, $version1, $dependencies1, $group1, $source1, $skip1 ], * [ $name2, $version2, $dependencies1, $group2, $source2, $skip2 ], * ... * ] ): - * Registers modules with the given names and parameters. + * @endcode * - * @param string $name Module name - * @param string|null $version Module version hash - * @param array|null $dependencies List of module names on which this module depends - * @param string|null $group Group which the module is in - * @param string|null $source Source of the module, or 'local' if not foreign - * @param string|null $skip Script body of the skip function + * @internal + * @since 1.32 + * @param array $modules Array of module registration arrays, each containing + * - string: module name + * - string: module version + * - array|null: List of dependencies (optional) + * - string|null: Module group (optional) + * - string|null: Name of foreign module source, or 'local' (optional) + * - string|null: Script body of a skip function (optional) * @return string JavaScript code */ - public static function makeLoaderRegisterScript( $name, $version = null, - $dependencies = null, $group = null, $source = null, $skip = null - ) { - if ( is_array( $name ) ) { + public static function makeLoaderRegisterScript( array $modules ) { + // Optimisation: Transform dependency names into indexes when possible + // to produce smaller output. They are expanded by mw.loader.register on + // the other end using resolveIndexedDependencies(). + $index = []; + foreach ( $modules as $i => &$module ) { // Build module name index - $index = []; - foreach ( $name as $i => &$module ) { - $index[$module[0]] = $i; - } - - // Transform dependency names into indexes when possible, they will be resolved by - // mw.loader.register on the other end - foreach ( $name as &$module ) { - if ( isset( $module[2] ) ) { - foreach ( $module[2] as &$dependency ) { - if ( isset( $index[$dependency] ) ) { - $dependency = $index[$dependency]; - } + $index[$module[0]] = $i; + } + foreach ( $modules as &$module ) { + if ( isset( $module[2] ) ) { + foreach ( $module[2] as &$dependency ) { + if ( isset( $index[$dependency] ) ) { + // Replace module name in dependency list with index + $dependency = $index[$dependency]; } } } + } - array_walk( $name, [ 'self', 'trimArray' ] ); + array_walk( $modules, [ 'self', 'trimArray' ] ); - return Xml::encodeJsCall( - 'mw.loader.register', - [ $name ], - self::inDebugMode() - ); - } else { - $registration = [ $name, $version, $dependencies, $group, $source, $skip ]; - self::trimArray( $registration ); - return Xml::encodeJsCall( - 'mw.loader.register', - $registration, - self::inDebugMode() - ); - } + return Xml::encodeJsCall( + 'mw.loader.register', + [ $modules ], + self::inDebugMode() + ); } /** @@ -1453,24 +1444,19 @@ MESSAGE; * - ResourceLoader::makeLoaderSourcesScript( [ $id1 => $loadUrl, $id2 => $loadUrl, ... ] ); * Register sources with the given IDs and properties. * - * @param string $id Source ID + * @param string|array $sources Source ID * @param string|null $loadUrl load.php url * @return string JavaScript code */ - public static function makeLoaderSourcesScript( $id, $loadUrl = null ) { - if ( is_array( $id ) ) { - return Xml::encodeJsCall( - 'mw.loader.addSource', - [ $id ], - self::inDebugMode() - ); - } else { - return Xml::encodeJsCall( - 'mw.loader.addSource', - [ $id, $loadUrl ], - self::inDebugMode() - ); + public static function makeLoaderSourcesScript( $sources, $loadUrl = null ) { + if ( !is_array( $sources ) ) { + $sources = [ $sources => $loadUrl ]; } + return Xml::encodeJsCall( + 'mw.loader.addSource', + [ $sources ], + self::inDebugMode() + ); } /** @@ -1496,7 +1482,7 @@ MESSAGE; public static function makeInlineCodeWithModule( $modules, $script ) { // Adds an array to lazy-created RLQ return '(window.RLQ=window.RLQ||[]).push([' - . json_encode( $modules ) . ',' + . self::encodeJsonForScript( $modules ) . ',' . 'function(){' . trim( $script ) . '}' . ']);'; } diff --git a/includes/resourceloader/ResourceLoaderClientHtml.php b/includes/resourceloader/ResourceLoaderClientHtml.php index 8d0836640f..5c072bfdec 100644 --- a/includes/resourceloader/ResourceLoaderClientHtml.php +++ b/includes/resourceloader/ResourceLoaderClientHtml.php @@ -304,7 +304,10 @@ class ResourceLoaderClientHtml { // Inline RLQ: Load general modules if ( $data['general'] ) { $chunks[] = ResourceLoader::makeInlineScript( - Xml::encodeJsCall( 'mw.loader.load', [ $data['general'] ] ), + 'RLPAGEMODULES=' + . ResourceLoader::encodeJsonForScript( $data['general'] ) + . ';' + . 'mw.loader.load(RLPAGEMODULES);', $nonce ); } diff --git a/includes/resourceloader/ResourceLoaderOOUIModule.php b/includes/resourceloader/ResourceLoaderOOUIModule.php index a3f7b5b152..0a4e94e40b 100644 --- a/includes/resourceloader/ResourceLoaderOOUIModule.php +++ b/includes/resourceloader/ResourceLoaderOOUIModule.php @@ -55,14 +55,14 @@ trait ResourceLoaderOOUIModule { // Note that keys must be TitleCase. protected static $builtinThemePaths = [ 'WikimediaUI' => [ - 'scripts' => 'resources/lib/oojs-ui/oojs-ui-wikimediaui.js', - 'styles' => 'resources/lib/oojs-ui/oojs-ui-{module}-wikimediaui.css', - 'images' => 'resources/lib/oojs-ui/themes/wikimediaui/{module}.json', + 'scripts' => 'resources/lib/ooui/oojs-ui-wikimediaui.js', + 'styles' => 'resources/lib/ooui/oojs-ui-{module}-wikimediaui.css', + 'images' => 'resources/lib/ooui/themes/wikimediaui/{module}.json', ], 'Apex' => [ - 'scripts' => 'resources/lib/oojs-ui/oojs-ui-apex.js', - 'styles' => 'resources/lib/oojs-ui/oojs-ui-{module}-apex.css', - 'images' => 'resources/lib/oojs-ui/themes/apex/{module}.json', + 'scripts' => 'resources/lib/ooui/oojs-ui-apex.js', + 'styles' => 'resources/lib/ooui/oojs-ui-{module}-apex.css', + 'images' => 'resources/lib/ooui/themes/apex/{module}.json', ], ]; diff --git a/includes/resourceloader/ResourceLoaderSkinModule.php b/includes/resourceloader/ResourceLoaderSkinModule.php index 2455596233..e0fbeeed20 100644 --- a/includes/resourceloader/ResourceLoaderSkinModule.php +++ b/includes/resourceloader/ResourceLoaderSkinModule.php @@ -117,7 +117,7 @@ class ResourceLoaderSkinModule extends ResourceLoaderFileModule { } // 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) diff --git a/includes/resourceloader/ResourceLoaderStartUpModule.php b/includes/resourceloader/ResourceLoaderStartUpModule.php index 8140c2c8c0..e4a753fc16 100644 --- a/includes/resourceloader/ResourceLoaderStartUpModule.php +++ b/includes/resourceloader/ResourceLoaderStartUpModule.php @@ -404,16 +404,9 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { $mwLoaderCode .= file_get_contents( "$IP/resources/src/startup/profiler.js" ); } - // Keep output as small as possible by disabling needless escapes that PHP uses by default. - // This is not HTML output, only used in a JS response. - $jsonFlags = JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE; - if ( ResourceLoader::inDebugMode() ) { - $jsonFlags |= JSON_PRETTY_PRINT; - } - // Perform replacements for mediawiki.js $mwLoaderPairs = [ - '$VARS.baseModules' => json_encode( $this->getBaseModules(), $jsonFlags ), + '$VARS.baseModules' => ResourceLoader::encodeJsonForScript( $this->getBaseModules() ), ]; $profilerStubs = [ '$CODE.profileExecuteStart();' => 'mw.loader.profiler.onExecuteStart( module );', @@ -432,13 +425,11 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { // Perform string replacements for startup.js $pairs = [ - '$VARS.wgLegacyJavaScriptGlobals' => json_encode( - $this->getConfig()->get( 'LegacyJavaScriptGlobals' ), - $jsonFlags + '$VARS.wgLegacyJavaScriptGlobals' => ResourceLoader::encodeJsonForScript( + $this->getConfig()->get( 'LegacyJavaScriptGlobals' ) ), - '$VARS.configuration' => json_encode( - $this->getConfigSettings( $context ), - $jsonFlags + '$VARS.configuration' => ResourceLoader::encodeJsonForScript( + $this->getConfigSettings( $context ) ), // Raw JavaScript code (not JSON) '$CODE.registrations();' => trim( $this->getModuleRegistrations( $context ) ), diff --git a/includes/search/SearchNearMatcher.php b/includes/search/SearchNearMatcher.php index 27046f3156..0a644934c4 100644 --- a/includes/search/SearchNearMatcher.php +++ b/includes/search/SearchNearMatcher.php @@ -53,7 +53,6 @@ class SearchNearMatcher { */ protected function getNearMatchInternal( $searchterm ) { $lang = $this->language; - $allSearchTerms = [ $searchterm ]; if ( $lang->hasVariants() ) { @@ -68,6 +67,13 @@ class SearchNearMatcher { return $titleResult; } + // Most of our handling here deals with finding a valid title for the search term, + // but almost anything starting with '#' is "valid" and points to Main_Page#searchterm. + // Rather than doing something completely wrong, do nothing. + if ( $searchterm === '' || $searchterm[0] === '#' ) { + return null; + } + foreach ( $allSearchTerms as $term ) { # Exact match? No need to look further. $title = Title::newFromText( $term ); diff --git a/includes/specialpage/ChangesListSpecialPage.php b/includes/specialpage/ChangesListSpecialPage.php index caa039b5e9..43b4e98663 100644 --- a/includes/specialpage/ChangesListSpecialPage.php +++ b/includes/specialpage/ChangesListSpecialPage.php @@ -69,9 +69,6 @@ abstract class ChangesListSpecialPage extends SpecialPage { /** @var FormOptions */ protected $rcOptions; - /** @var array */ - protected $customFilters; - // Order of both groups and filters is significant; first is top-most priority, // descending from there. // 'showHideSuffix' is a shortcut to and avoid spelling out @@ -84,8 +81,7 @@ abstract class ChangesListSpecialPage extends SpecialPage { * * Groups are displayed to the user in the structured UI. However, if necessary, * all of the filters in a group can be configured to only display on the - * unstuctured UI, in which case you don't need a group title. This is done in - * getFilterGroupDefinitionFromLegacyCustomFilters, for example. + * unstuctured UI, in which case you don't need a group title. * * @var array $filterGroupDefinitions */ @@ -987,11 +983,7 @@ abstract class ChangesListSpecialPage extends SpecialPage { Hooks::run( 'ChangesListSpecialPageStructuredFilters', [ $this ] ); - $unstructuredGroupDefinition = - $this->getFilterGroupDefinitionFromLegacyCustomFilters( - $this->getCustomFilters() - ); - $this->registerFiltersFromDefinitions( [ $unstructuredGroupDefinition ] ); + $this->registerFiltersFromDefinitions( [] ); $userExperienceLevel = $this->getFilterGroup( 'userExpLevel' ); $registered = $userExperienceLevel->getFilter( 'registered' ); @@ -1074,32 +1066,6 @@ abstract class ChangesListSpecialPage extends SpecialPage { } } - /** - * Get filter group definition from legacy custom filters - * - * @param array $customFilters Custom filters from legacy hooks - * @return array Group definition - */ - protected function getFilterGroupDefinitionFromLegacyCustomFilters( array $customFilters ) { - // Special internal unstructured group - $unstructuredGroupDefinition = [ - 'name' => 'unstructured', - 'class' => ChangesListBooleanFilterGroup::class, - 'priority' => -1, // Won't display in structured - 'filters' => [], - ]; - - foreach ( $customFilters as $name => $params ) { - $unstructuredGroupDefinition['filters'][] = [ - 'name' => $name, - 'showHide' => $params['msg'], - 'default' => $params['default'], - ]; - } - - return $unstructuredGroupDefinition; - } - /** * @return array The legacy show/hide toggle filters */ @@ -1245,21 +1211,6 @@ abstract class ChangesListSpecialPage extends SpecialPage { return $output; } - /** - * Get custom show/hide filters using deprecated ChangesListSpecialPageFilters - * hook. - * - * @return array Map of filter URL param names to properties (msg/default) - */ - protected function getCustomFilters() { - if ( $this->customFilters === null ) { - $this->customFilters = []; - Hooks::run( 'ChangesListSpecialPageFilters', [ $this, &$this->customFilters ], '1.29' ); - } - - return $this->customFilters; - } - /** * Fetch values for a FormOptions object from the WebRequest associated with this instance. * diff --git a/includes/specialpage/LoginSignupSpecialPage.php b/includes/specialpage/LoginSignupSpecialPage.php index e94f3db72c..bf6c9bbfe9 100644 --- a/includes/specialpage/LoginSignupSpecialPage.php +++ b/includes/specialpage/LoginSignupSpecialPage.php @@ -1127,7 +1127,7 @@ abstract class LoginSignupSpecialPage extends AuthManagerSpecialPage { 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, diff --git a/includes/specials/SpecialAllPages.php b/includes/specials/SpecialAllPages.php index ef05dd15b6..e96df0b5ea 100644 --- a/includes/specials/SpecialAllPages.php +++ b/includes/specials/SpecialAllPages.php @@ -97,13 +97,13 @@ class SpecialAllPages extends IncludableSpecialPage { * @param int $namespace A namespace constant (default NS_MAIN). * @param string $from DbKey we are starting listing at. * @param string $to DbKey we are ending listing at. - * @param bool $hideRedirects Dont show redirects (default false) + * @param bool $hideRedirects Don't show redirects (default false) */ protected function outputHTMLForm( $namespace = NS_MAIN, $from = '', $to = '', $hideRedirects = false ) { $miserMode = (bool)$this->getConfig()->get( 'MiserMode' ); - $fields = [ + $formDescriptor = [ 'from' => [ 'type' => 'text', 'name' => 'from', @@ -138,13 +138,14 @@ class SpecialAllPages extends IncludableSpecialPage { ]; if ( $miserMode ) { - unset( $fields['hideredirects'] ); + unset( $formDescriptor['hideredirects'] ); } $context = new DerivativeContext( $this->getContext() ); $context->setTitle( $this->getPageTitle() ); // Remove subpage - $form = HTMLForm::factory( 'table', $fields, $context ); - $form->setMethod( 'get' ) + $htmlForm = HTMLForm::factory( 'ooui', $formDescriptor, $context ); + $htmlForm + ->setMethod( 'get' ) ->setWrapperLegendMsg( 'allpages' ) ->setSubmitTextMsg( 'allpagessubmit' ) ->prepareForm() @@ -155,7 +156,7 @@ class SpecialAllPages extends IncludableSpecialPage { * @param int $namespace (default NS_MAIN) * @param string $from List all pages from this name * @param string $to List all pages to this name - * @param bool $hideredirects Dont show redirects (default false) + * @param bool $hideredirects Don't show redirects (default false) */ function showToplevel( $namespace = NS_MAIN, $from = '', $to = '', $hideredirects = false ) { $from = Title::makeTitleSafe( $namespace, $from ); @@ -170,7 +171,7 @@ class SpecialAllPages extends IncludableSpecialPage { * @param int $namespace Namespace (Default NS_MAIN) * @param string $from List all pages from this name (default false) * @param string $to List all pages to this name (default false) - * @param bool $hideredirects Dont show redirects (default false) + * @param bool $hideredirects Don't show redirects (default false) */ function showChunk( $namespace = NS_MAIN, $from = false, $to = false, $hideredirects = false ) { $output = $this->getOutput(); diff --git a/includes/specials/SpecialFilepath.php b/includes/specials/SpecialFilepath.php index c18faa12d3..618fd1da48 100644 --- a/includes/specials/SpecialFilepath.php +++ b/includes/specials/SpecialFilepath.php @@ -41,12 +41,17 @@ class SpecialFilepath extends RedirectSpecialPage { public function getRedirect( $par ) { $file = $par ?: $this->getRequest()->getText( 'file' ); + $redirect = null; if ( $file ) { - $argument = "file/$file"; - } else { - $argument = 'file'; + $redirect = SpecialPage::getSafeTitleFor( 'Redirect', "file/$file" ); } - return SpecialPage::getSafeTitleFor( 'Redirect', $argument ); + if ( $redirect === null ) { + // The user input is empty or an invalid title, + // redirect to form of Special:Redirect with the invalid value prefilled + $this->mAddedRedirectParams['wpvalue'] = $file; + $redirect = SpecialPage::getSafeTitleFor( 'Redirect', 'file' ); + } + return $redirect; } protected function getGroupName() { diff --git a/includes/specials/SpecialRecentchanges.php b/includes/specials/SpecialRecentchanges.php index 983f74cd82..3e8bf1202c 100644 --- a/includes/specials/SpecialRecentchanges.php +++ b/includes/specials/SpecialRecentchanges.php @@ -225,20 +225,6 @@ class SpecialRecentChanges extends ChangesListSpecialPage { } } - /** - * Get all custom filters - * - * @return array Map of filter URL param names to properties (msg/default) - */ - protected function getCustomFilters() { - if ( $this->customFilters === null ) { - $this->customFilters = parent::getCustomFilters(); - Hooks::run( 'SpecialRecentChangesFilters', [ $this, &$this->customFilters ], '1.23' ); - } - - return $this->customFilters; - } - /** * Process $par and put options found in $opts. Used when including the page. * diff --git a/includes/specials/SpecialRedirect.php b/includes/specials/SpecialRedirect.php index e827911382..1b2bda9a93 100644 --- a/includes/specials/SpecialRedirect.php +++ b/includes/specials/SpecialRedirect.php @@ -68,37 +68,44 @@ class SpecialRedirect extends FormSpecialPage { /** * 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(); @@ -116,48 +123,52 @@ class SpecialRedirect extends FormSpecialPage { } } - 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 - ] ); + ] ) ); } /** @@ -165,19 +176,21 @@ class SpecialRedirect extends FormSpecialPage { * (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 ) ); } /** @@ -186,41 +199,39 @@ class SpecialRedirect extends FormSpecialPage { * 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; diff --git a/includes/specials/SpecialUndelete.php b/includes/specials/SpecialUndelete.php index 3069bd8654..a92982040b 100644 --- a/includes/specials/SpecialUndelete.php +++ b/includes/specials/SpecialUndelete.php @@ -21,6 +21,8 @@ * @ingroup SpecialPage */ +use MediaWiki\MediaWikiServices; +use MediaWiki\Storage\RevisionRecord; use Wikimedia\Rdbms\IResultWrapper; /** @@ -421,8 +423,9 @@ class SpecialUndelete extends SpecialPage { $t = $lang->userTime( $timestamp, $user ); $userLink = Linker::revUserTools( $rev ); - $content = $rev->getContent( Revision::FOR_THIS_USER, $user ); + $content = $rev->getContent( RevisionRecord::FOR_THIS_USER, $user ); + // TODO: MCR: this will have to become something like $hasTextSlots and $hasNonTextSlots $isText = ( $content instanceof TextContent ); if ( $this->mPreview || $isText ) { @@ -447,12 +450,23 @@ class SpecialUndelete extends SpecialPage { return; } - if ( ( $this->mPreview || !$isText ) && $content ) { + if ( $this->mPreview || !$isText ) { // NOTE: non-text content has no source view, so always use rendered preview $popts = $out->parserOptions(); + $renderer = MediaWikiServices::getInstance()->getRevisionRenderer(); + + $rendered = $renderer->getRenderedRevision( + $rev->getRevisionRecord(), + $popts, + $user, + [ 'audience' => RevisionRecord::FOR_THIS_USER ] + ); + + // Fail hard if the audience check fails, since we already checked + // at the beginning of this method. + $pout = $rendered->getRevisionParserOutput(); - $pout = $content->getParserOutput( $this->mTargetObj, $rev->getId(), $popts, true ); $out->addParserOutput( $pout, [ 'enableSectionEditLinks' => false, ] ); @@ -462,6 +476,7 @@ class SpecialUndelete extends SpecialPage { $buttonFields = []; if ( $isText ) { + // TODO: MCR: make this work for multiple slots // source view for textual content $sourceView = Xml::element( 'textarea', [ 'readonly' => 'readonly', diff --git a/includes/specials/SpecialWatchlist.php b/includes/specials/SpecialWatchlist.php index 908183d25a..432cfcc2f9 100644 --- a/includes/specials/SpecialWatchlist.php +++ b/includes/specials/SpecialWatchlist.php @@ -289,20 +289,6 @@ class SpecialWatchlist extends ChangesListSpecialPage { } } - /** - * Get all custom filters - * - * @return array Map of filter URL param names to properties (msg/default) - */ - protected function getCustomFilters() { - if ( $this->customFilters === null ) { - $this->customFilters = parent::getCustomFilters(); - Hooks::run( 'SpecialWatchlistFilters', [ $this, &$this->customFilters ], '1.23' ); - } - - return $this->customFilters; - } - /** * Fetch values for a FormOptions object from the WebRequest associated with this instance. * diff --git a/includes/specials/forms/PreferencesFormOOUI.php b/includes/specials/forms/PreferencesFormOOUI.php index cfa8f8fa1d..bf4d9af80e 100644 --- a/includes/specials/forms/PreferencesFormOOUI.php +++ b/includes/specials/forms/PreferencesFormOOUI.php @@ -172,7 +172,7 @@ class PreferencesFormOOUI extends OOUIHTMLForm { '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' : '' ) ], @@ -193,7 +193,7 @@ class PreferencesFormOOUI extends OOUIHTMLForm { [ '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 ) ) @@ -213,7 +213,7 @@ class PreferencesFormOOUI extends OOUIHTMLForm { ) . Html::rawElement( 'div', - [ 'class' => 'oo-ui-menuLayout-content' ], + [ 'class' => 'oo-ui-menuLayout-content mw-htmlform-autoinfuse-lazy' ], $this->displaySection( $this->mFieldTree, '', 'mw-prefsection-' ) ) ) diff --git a/includes/specials/pagers/ContribsPager.php b/includes/specials/pagers/ContribsPager.php index 59fa948ac6..81a1f5a506 100644 --- a/includes/specials/pagers/ContribsPager.php +++ b/includes/specials/pagers/ContribsPager.php @@ -407,24 +407,13 @@ class ContribsPager extends RangeChronologicalPager { } /** - * Generates each row in the contributions list. + * Check whether the revision associated is valid for formatting. If has no associated revision + * id then null is returned. * - * Contributions which are marked "top" are currently on top of the history. - * For these contributions, a [rollback] link is shown for users with roll- - * back privileges. The rollback link restores the most recent version that - * was not written by the target user. - * - * @todo This would probably look a lot nicer in a table. * @param object $row - * @return string + * @return Revision|null */ - function formatRow( $row ) { - $ret = ''; - $classes = []; - $attribs = []; - - $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); - + public function tryToCreateValidRevision( $row ) { /* * There may be more than just revision rows. To make sure that we'll only be processing * revisions here, let's _try_ to build a revision out of our row (without displaying @@ -440,8 +429,30 @@ class ContribsPager extends RangeChronologicalPager { $validRevision = false; } Wikimedia\restoreWarnings(); + return $validRevision ? $rev : null; + } + + /** + * Generates each row in the contributions list. + * + * Contributions which are marked "top" are currently on top of the history. + * For these contributions, a [rollback] link is shown for users with roll- + * back privileges. The rollback link restores the most recent version that + * was not written by the target user. + * + * @todo This would probably look a lot nicer in a table. + * @param object $row + * @return string + */ + function formatRow( $row ) { + $ret = ''; + $classes = []; + $attribs = []; + + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); - if ( $validRevision ) { + $rev = $this->tryToCreateValidRevision( $row ); + if ( $rev ) { $attribs['data-mw-revid'] = $rev->getId(); $page = Title::newFromRow( $row ); diff --git a/includes/user/User.php b/includes/user/User.php index 7bebe80715..d6d4db25f3 100644 --- a/includes/user/User.php +++ b/includes/user/User.php @@ -1010,10 +1010,10 @@ class User implements IDBAccessObject, UserIdentity { // 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 ) ) { diff --git a/includes/watcheditem/WatchedItemStore.php b/includes/watcheditem/WatchedItemStore.php index 6e907deef8..6b0c2aab11 100644 --- a/includes/watcheditem/WatchedItemStore.php +++ b/includes/watcheditem/WatchedItemStore.php @@ -407,6 +407,11 @@ class WatchedItemStore implements WatchedItemStoreInterface, StatsdAwareInterfac array $targetsWithVisitThresholds, $minimumWatchers = null ) { + if ( $targetsWithVisitThresholds === [] ) { + // No titles requested => no results returned + return []; + } + $dbr = $this->getConnectionRef( DB_REPLICA ); $conds = $this->getVisitingWatchersCondition( $dbr, $targetsWithVisitThresholds ); diff --git a/includes/widget/search/FullSearchResultWidget.php b/includes/widget/search/FullSearchResultWidget.php index af1e02754c..66fc030ca4 100644 --- a/includes/widget/search/FullSearchResultWidget.php +++ b/includes/widget/search/FullSearchResultWidget.php @@ -107,7 +107,7 @@ class FullSearchResultWidget implements SearchResultWidget { ""; } - return "
  • {$html}
  • "; + return "
  • {$html}
  • "; } /** diff --git a/jsduck.json b/jsduck.json index 6e96945af7..33627886b0 100644 --- a/jsduck.json +++ b/jsduck.json @@ -25,11 +25,11 @@ "resources/src", "resources/lib/jquery.client/jquery.client.js", "resources/lib/oojs/oojs.jquery.js", - "resources/lib/oojs-ui/oojs-ui-core.js", - "resources/lib/oojs-ui/oojs-ui-widgets.js", - "resources/lib/oojs-ui/oojs-ui-toolbars.js", - "resources/lib/oojs-ui/oojs-ui-windows.js", - "resources/lib/oojs-ui/oojs-ui-wikimediaui.js", - "resources/lib/oojs-ui/oojs-ui-apex.js" + "resources/lib/ooui/oojs-ui-core.js", + "resources/lib/ooui/oojs-ui-widgets.js", + "resources/lib/ooui/oojs-ui-toolbars.js", + "resources/lib/ooui/oojs-ui-windows.js", + "resources/lib/ooui/oojs-ui-wikimediaui.js", + "resources/lib/ooui/oojs-ui-apex.js" ] } diff --git a/languages/Language.php b/languages/Language.php index 85daa14821..34edb753b5 100644 --- a/languages/Language.php +++ b/languages/Language.php @@ -33,6 +33,25 @@ use CLDRPluralRuleParser\Evaluator; * @ingroup Language */ class Language { + /** + * Return autonyms in fetchLanguageName(s). + * @since 1.32 + */ + const AS_AUTONYMS = null; + + /** + * Return all known languages in fetchLanguageName(s). + * @since 1.32 + */ + const ALL = 'all'; + + /** + * Return in fetchLanguageName(s) only the languages for which we have at + * least some localisation. + * @since 1.32 + */ + const SUPPORTED = 'mwfile'; + /** * @var LanguageConverter */ @@ -809,16 +828,16 @@ class Language { /** * Get an array of language names, indexed by code. * @param null|string $inLanguage Code of language in which to return the names - * Use null for autonyms (native names) + * Use self::AS_AUTONYMS for autonyms (native names) * @param string $include One of: - * 'all' all available languages + * self::ALL all available languages * 'mw' only if the language is defined in MediaWiki or wgExtraLanguageNames (default) - * 'mwfile' only if the language is in 'mw' *and* has a message file + * self::SUPPORTED only if the language is in 'mw' *and* has a message file * @return array Language code => language name (sorted by key) * @since 1.20 */ - public static function fetchLanguageNames( $inLanguage = null, $include = 'mw' ) { - $cacheKey = $inLanguage === null ? 'null' : $inLanguage; + public static function fetchLanguageNames( $inLanguage = self::AS_AUTONYMS, $include = 'mw' ) { + $cacheKey = $inLanguage === self::AS_AUTONYMS ? 'null' : $inLanguage; $cacheKey .= ":$include"; if ( self::$languageNameCache === null ) { self::$languageNameCache = new HashBagOStuff( [ 'maxKeys' => 20 ] ); @@ -835,18 +854,21 @@ class Language { /** * Uncached helper for fetchLanguageNames * @param null|string $inLanguage Code of language in which to return the names - * Use null for autonyms (native names) + * Use self::AS_AUTONYMS for autonyms (native names) * @param string $include One of: - * 'all' all available languages + * self::ALL all available languages * 'mw' only if the language is defined in MediaWiki or wgExtraLanguageNames (default) - * 'mwfile' only if the language is in 'mw' *and* has a message file + * self::SUPPORTED only if the language is in 'mw' *and* has a message file * @return array Language code => language name (sorted by key) */ - private static function fetchLanguageNamesUncached( $inLanguage = null, $include = 'mw' ) { + private static function fetchLanguageNamesUncached( + $inLanguage = self::AS_AUTONYMS, + $include = 'mw' + ) { global $wgExtraLanguageNames, $wgUsePigLatinVariant; // If passed an invalid language code to use, fallback to en - if ( $inLanguage !== null && !self::isValidCode( $inLanguage ) ) { + if ( $inLanguage !== self::AS_AUTONYMS && !self::isValidCode( $inLanguage ) ) { $inLanguage = 'en'; } @@ -871,7 +893,7 @@ class Language { } } - if ( $include === 'all' ) { + if ( $include === self::ALL ) { ksort( $names ); return $names; } @@ -882,7 +904,7 @@ class Language { $returnMw[$coreCode] = $names[$coreCode]; } - if ( $include === 'mwfile' ) { + if ( $include === self::SUPPORTED ) { $namesMwFile = []; # We do this using a foreach over the codes instead of a directory # loop so that messages files in extensions will work correctly. @@ -905,12 +927,17 @@ class Language { /** * @param string $code The code of the language for which to get the name - * @param null|string $inLanguage Code of language in which to return the name (null for autonyms) - * @param string $include 'all', 'mw' or 'mwfile'; see fetchLanguageNames() + * @param null|string $inLanguage Code of language in which to return the name + * (SELF::AS_AUTONYMS for autonyms) + * @param string $include See fetchLanguageNames() * @return string Language name or empty * @since 1.20 */ - public static function fetchLanguageName( $code, $inLanguage = null, $include = 'all' ) { + public static function fetchLanguageName( + $code, + $inLanguage = self::AS_AUTONYMS, + $include = self::ALL + ) { $code = strtolower( $code ); $array = self::fetchLanguageNames( $inLanguage, $include ); return !array_key_exists( $code, $array ) ? '' : $array[$code]; diff --git a/languages/classes/LanguageKk.php b/languages/classes/LanguageKk.php index dc8a9f892f..4184508bdb 100644 --- a/languages/classes/LanguageKk.php +++ b/languages/classes/LanguageKk.php @@ -329,21 +329,18 @@ class KkConverter extends LanguageConverter { $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; } diff --git a/languages/data/CrhExceptions.php b/languages/data/CrhExceptions.php index fcba6dc1dc..92c1f86e5a 100644 --- a/languages/data/CrhExceptions.php +++ b/languages/data/CrhExceptions.php @@ -104,9 +104,9 @@ class CrhExceptions { # 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; @@ -388,8 +388,8 @@ class CrhExceptions { 'му([иэИЭ])' => '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', @@ -410,80 +410,80 @@ class CrhExceptions { // 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' => 'ğ', @@ -496,69 +496,73 @@ class CrhExceptions { '/Д[жЖ]/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', ############################### # не зависят от места в слове # @@ -576,19 +580,19 @@ class CrhExceptions { # Ö, Ü 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 = [ @@ -596,31 +600,31 @@ class CrhExceptions { // 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 е/Е! @@ -636,67 +640,77 @@ class CrhExceptions { # буква Ё - первый заход # расставляем Ь после согласных - '/'.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 @@ -718,10 +732,10 @@ class CrhExceptions { '/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' => 'ЦИАЛ', @@ -730,15 +744,15 @@ class CrhExceptions { '/[ьЬ]([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' => 'ё', @@ -746,8 +760,8 @@ class CrhExceptions { # расставляем Ь перед Ю # 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' => 'ю', @@ -758,18 +772,18 @@ class CrhExceptions { '/[ьЬ]([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НЪ', ]; } diff --git a/languages/i18n/ar.json b/languages/i18n/ar.json index 27dd646e67..4990716396 100644 --- a/languages/i18n/ar.json +++ b/languages/i18n/ar.json @@ -75,7 +75,8 @@ "سامي الرحيلي", "Azouz.anis", "Elbasyouny", - "Omar Ghrida" + "Omar Ghrida", + "AHmed Khaled" ] }, "tog-underline": "سطر تحت الوصلات:", @@ -424,9 +425,9 @@ "customcssprotected": "أنت لا تمتلك السماح لتعديل صفحة الCSS هذه، لأنها تحتوي على الإعدادات الشخصية لمستخدم آخر.", "customjsonprotected": "ليست لديك صلاحية تحرير صفحة جسون هذه لأنها تحتوي على إعدادات شخصية لمستخدم آخر.", "customjsprotected": "أنت لا تمتلك السماح لتعديل صفحة الجافاسكريبت هذه، لأنها تحتوي على الإعدادات الشخصية لمستخدم آخر.", - "sitecssprotected": "ليست لديك صلاحية تعديل صفحة CSS هذه لأنها قد تؤثر على جميع الزوار", - "sitejsonprotected": "ليست لديك صلاحية تعديل صفحة جسون هذه لأنها قد تؤثر على جميع الزوار", - "sitejsprotected": "ليست لديك صلاحية تعديل صفحة جافا سكريبت هذه لأنها قد تؤثر على جميع الزوار", + "sitecssprotected": "ليست لديك صلاحية تعديل صفحة CSS هذه لأنها قد تؤثر على جميع الزوار.", + "sitejsonprotected": "ليست لديك صلاحية تعديل صفحة جسون هذه لأنها قد تؤثر على جميع الزوار.", + "sitejsprotected": "ليست لديك صلاحية تعديل صفحة جافا سكريبت هذه لأنها قد تؤثر على جميع الزوار.", "mycustomcssprotected": "ليس لديك صلاحية تعديل هذه الصفحة للطرز المتراصة.", "mycustomjsonprotected": "ليست لديك صلاحية تحرير صفحة جسون هذه", "mycustomjsprotected": "ليس لديك صلاحية تعديل صفحة جافاسكربت هذه.", @@ -582,10 +583,10 @@ "botpasswords-editexisting": "تعديل كلمة مرور موجودة للبوت", "botpasswords-label-needsreset": "(تحتاج كلمة المرور إلى إعادة الضبط)", "botpasswords-label-appid": "اسم البوت:", - "botpasswords-label-create": "أنشأ", + "botpasswords-label-create": "أنشـأ", "botpasswords-label-update": "حدث", "botpasswords-label-cancel": "ألغ", - "botpasswords-label-delete": "احذف", + "botpasswords-label-delete": "", "botpasswords-label-resetpassword": "أعد ضبط كلمة السر", "botpasswords-label-grants": "المنح التي يمكن تطبيقها:", "botpasswords-help-grants": "كل منحة تعطي وصولا لصلاحيات المستخدم المعروضة التي يمتلكها حساب المستخدم بالفعل. انظر [[Special:ListGrants|جدول المنح]] للمزيد من المعلومات.", @@ -1841,9 +1842,9 @@ "filehist-filesize": "حجم الملف", "filehist-comment": "تعليق", "imagelinks": "استخدام الملف", - "linkstoimage": "{{PLURAL:$1||الصفحة التالية تصل|الصفحتان التاليتان تصلان|ال$1 صفحات التالية تصل|ال$1 صفحة التالية تصل}} إلى هذا الملف:", - "linkstoimage-more": "أكثر من {{PLURAL:$1||صفحة واحدة تصل|صفحتين تصلان|$1 صفحات تصل|$1 صفحة تصل}} إلى هذا الملف.\nالقائمة التالية تعرض فقط {{PLURAL:$1||أول صفحة تصل|أول صفحتين تصلان|أول $1 صفحات تصل|أول $1 صفحة تصل}} إلى هذا الملف.\n[[Special:WhatLinksHere/$2|قائمة كاملة]] متوفرة.", - "nolinkstoimage": "لا توجد صفحات تصل لهذا الملف.", + "linkstoimage": "{{PLURAL:$1||الصفحة التالية تستخدم|الصفحتان التاليتان تستخدمان|ال$1 صفحات التالية تستخدم|ال$1 صفحة التالية تستخدم}} هذا الملف:", + "linkstoimage-more": "أكثر من {{PLURAL:$1||صفحة واحدة تستخدم|صفحتين تستخدمان|$1 صفحات تستخدم|$1 صفحة تستخدم}} هذا الملف.\nالقائمة التالية تعرض فقط {{PLURAL:$1||أول صفحة تستخدم|أول صفحتين تستخدمان|أول $1 صفحات تستخدم|أول $1 صفحة تستخدم}} هذا الملف.\n[[Special:WhatLinksHere/$2|قائمة كاملة]] متوفرة.", + "nolinkstoimage": "لا توجد صفحات تستخدم هذا الملف.", "morelinkstoimage": "عرض [[Special:WhatLinksHere/$1|المزيد من الوصلات]] إلى هذا الملف.", "linkstoimage-redirect": "$1 (تحويلة ملف) $2", "duplicatesoffile": "{{PLURAL:$1|الملف التالي مكرر|ال$1 ملف التالي مكررات}} لهذا الملف\n([[Special:FileDuplicateSearch/$2|المزيد من التفاصيل]]):", @@ -3442,6 +3443,10 @@ "confirm-unwatch-top": "إزالة هذه الصفحة من قائمة مراقبتك؟", "confirm-rollback-button": "موافق", "confirm-rollback-top": "استرجاع التعديلات لهذه الصفحة؟", + "confirm-mcrundo-title": "الرجوع عن تغيير", + "mcrundofailed": "الرجوع فشل", + "mcrundo-missingparam": "وسائط مطلوبة مفقودة عند الطلب.", + "mcrundo-changed": "لقد تم تغيير الصفحة منذ عرضت الفرق; يُرجَى مراجعة التغيير الجديد.", "semicolon-separator": "؛ ", "comma-separator": "، ", "quotation-marks": "«$1»", @@ -3635,6 +3640,7 @@ "redirect-file": "اسم ملف", "redirect-logid": "معرف السجل", "redirect-not-exists": "المطلوب غير موجود", + "redirect-not-numeric": "قيمة غير رقمية", "fileduplicatesearch": "بحث عن ملفات مكررة", "fileduplicatesearch-summary": "ابحث عن الملفات المكررة بناء على قيم الهاش.", "fileduplicatesearch-filename": "اسم الملف:", diff --git a/languages/i18n/ast.json b/languages/i18n/ast.json index b1977cfb97..920ae6baf5 100644 --- a/languages/i18n/ast.json +++ b/languages/i18n/ast.json @@ -362,9 +362,9 @@ "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.", @@ -3466,6 +3466,7 @@ "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:", @@ -4023,7 +4024,7 @@ "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 editinterface. 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 editinterface. 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.", diff --git a/languages/i18n/be-tarask.json b/languages/i18n/be-tarask.json index 6a03a6ef7d..596aebd6ed 100644 --- a/languages/i18n/be-tarask.json +++ b/languages/i18n/be-tarask.json @@ -1665,15 +1665,15 @@ "backend-fail-writetemp": "Немагчыма запісаць часовы файл.", "backend-fail-closetemp": "Немагчыма закрыць часовы файл.", "backend-fail-read": "Немагчыма прачытаць файл «$1».", - "backend-fail-create": "Немагчыма запісаць файл $1.", - "backend-fail-maxsize": "Не атрымалася запісаць файл $1, бо яго памер перавышае {{PLURAL:$2|$2 байт|$2 байта|$2 байтаў}}.", + "backend-fail-create": "Немагчыма запісаць файл «$1».", + "backend-fail-maxsize": "Не атрымалася запісаць файл «$1», бо яго памер перавышае $2 {{PLURAL:$2|байт|байты|байтаў}}.", "backend-fail-readonly": "Сховішча «$1» знаходзіцца ў рэжыме толькі чытаньня. Прычына: $2", "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» з-за недастачы правоў ці адсутнасьці дырэкторыяў або кантэйнэраў.", + "backend-fail-usable": "Не атрымалася прачытаць ці запісаць файл «$1» празь недахоп правоў ці адсутнасьці каталёгаў або кантэйнэраў.", "filejournal-fail-dbconnect": "Не атрымалася злучыцца з базай зьвестак журнала для сховішча «$1».", "filejournal-fail-dbquery": "Не атрымалася абнавіць базу зьвестак журнала для сховішча «$1».", "lockmanager-notlocked": "Немагчыма разблякаваць «$1», які не заблякаваны.", @@ -3471,6 +3471,7 @@ "redirect-file": "Назва файлу", "redirect-logid": "ID журнала", "redirect-not-exists": "Значэньне ня знойдзена", + "redirect-not-numeric": "Значэньне ня лікавае", "fileduplicatesearch": "Пошук дублікатаў файлаў", "fileduplicatesearch-summary": "Пошук аднолькавых файлаў на падставе іх хэшаў.", "fileduplicatesearch-filename": "Назва файла:", diff --git a/languages/i18n/bg.json b/languages/i18n/bg.json index 498662d16d..e833d9d6f4 100644 --- a/languages/i18n/bg.json +++ b/languages/i18n/bg.json @@ -650,7 +650,7 @@ "subject-preview": "Предварителен преглед на заглавието:", "previewerrortext": "Възникна грешка при опита за преглед на промените.", "blockedtitle": "Потребителят е блокиран", - "blockedtext": "'''Вашето потребителско име (или IP-адрес) беше блокирано.'''\n\nБлокирането е извършено от $1. Посочената причина е: ''$2''\n\n*Начало на блокирането: $8\n*Край на блокирането: $6\n*Блокирането се отнася за: $7\n\nМожете да се свържете с $1 или с някой от останалите [[{{MediaWiki:Grouppage-sysop}}|администратори]], за да обсъдите блокирането.\n\nМожете да използвате услугата „Пращане писмо на потребител“ само ако не ви е забранена употребата ѝ и ако сте посочили валидна електронна поща в [[Special:Preferences|настройките]] си.\n\nВашият IP адрес е $3, а номерът на блокирането е $5. Включвайте едно от двете или и двете във всяко запитване, което правите.", + "blockedtext": "'''Вашето потребителско име (или IP-адрес) беше блокирано.'''\n\nБлокирането е извършено от $1. Посочената причина е: ''$2''\n\n*Начало на блокирането: $8\n*Край на блокирането: $6\n*Блокирането се отнася за: $7\n\nМожете да се свържете с $1 или с някой от останалите [[{{MediaWiki:Grouppage-sysop}}|администратори]], за да обсъдите блокирането.\n\nМожете да използвате услугата „{{int:emailuser}}“ само ако не ви е забранена употребата ѝ и ако сте посочили валидна електронна поща в [[Special:Preferences|настройките]] си.\n\nВашият IP адрес е $3, а номерът на блокирането е $5. Включвайте едно от двете или и двете във всяко запитване, което правите.", "autoblockedtext": "IP-адресът ви беше блокиран автоматично, защото е бил използван от друг потребител, който е бил блокиран от $1.\nПосочената причина е:\n\n:''$2''\n\n* Начало на блокирането: $8\n* Край на блокирането: $6\n* Блокирането се отнася за: $7\n\nМожете да се свържете с $1 или с някой от останалите [[{{MediaWiki:Grouppage-sysop}}|администратори]], за да обсъдите блокирането.\n\nМожете да използвате услугата „Пращане писмо на потребител“ само ако не ви е забранена употребата ѝ и ако сте посочили валидна електронна поща в [[Special:Preferences|настройките]] си.\n\nТекущият ви IP-адрес е $3, а номерът на блокирането ви е $5. Включвайте ги във всяко питане, което правите.", "systemblockedtext": "Вашето потребителско име или IP адрес беше автоматично блокирано от Медия Уики.\nПосочената причина е:\n\n:$2\n\n* Начало на блокирането: $8\n* Край на блокирането: $6\n* Блокирането се отнася за: $7\n\nВашият текущ IP адрес е $3.\nМоля, включете всичките детайли по-горе, ако правите каквито и да е запитвания.", "blockednoreason": "не е указана причина", @@ -1005,7 +1005,7 @@ "recentchangesdays": "Брой дни в последни промени:", "recentchangesdays-max": "(най-много $1 {{PLURAL:$1|ден|дни}})", "recentchangescount": "Брой показвани редакции по подразбиране:", - "prefs-help-recentchangescount": "Това включва последните промени, историите на страниците и дневниците.", + "prefs-help-recentchangescount": "Максимален брой: 1000", "prefs-help-watchlist-token2": "Това е секретният ключ към уеб хранилката на вашия списък за наблюдение.\nВсеки, който го знае, би могъл да прегледа списъка ви за наблюдение, така че не го споделяйте.\nПри нужда можете да го [[Special:ResetTokens|изчистите]].", "prefs-help-tokenmanagement": "Можете да видите и нулирате тайния ключ за Вашата сметка, който може да има достъп до уеб хранилката на Вашия списък за наблюдение. Всеки, който знае ключа, ще може да види Вашия списък за наблюдение, така че не го споделяйте.", "savedprefs": "Настройките ви бяха съхранени.", @@ -1035,7 +1035,7 @@ "prefs-files": "Файлове", "prefs-custom-css": "Личен CSS", "prefs-custom-js": "Личен JS", - "prefs-common-config": "Общи настройки на CSS/JS за всички облици:", + "prefs-common-config": "Общи настройки на CSS/JSON/JavaScript за всички облици:", "prefs-reset-intro": "Тази страница може да се използва за възстановяване на потребителските настройки към стандартните за сайта.\nТова действие е необратимо.", "prefs-emailconfirm-label": "Потвърждаване на адрес за е-поща:", "youremail": "Е-поща:", @@ -1203,8 +1203,8 @@ "right-sendemail": "Изпращане на е-писма до другите потребители", "right-managechangetags": "Създаване и (де)активиране на [[Special:Tags|етикети]]", "right-applychangetags": "Задаване на [[Special:Tags|етикети]] заедно с направените промени", - "right-changetags": "Добавяне и премахване на произволни [[Special:Tags|етикети]] в индивидуални редакции и записи в дневници", - "right-deletechangetags": "Изтриване на [[Special:Tags|етикети]] от базата на данни", + "right-changetags": "Добавяне и премахване на произволни [[Special:Tags|етикети]] на индивидуални редакции и записи в дневници", + "right-deletechangetags": "Изтриване на [[Special:Tags|етикети]] от базата от данни", "grant-group-page-interaction": "Взаимодействие със страници", "grant-group-file-interaction": "Взаимодействие с медийни файлове", "grant-group-watchlist-interaction": "Взаимодействие с вашия списък за наблюдение", @@ -1218,8 +1218,8 @@ "grant-createaccount": "Създаване на сметки", "grant-createeditmovepage": "Създаване, редактиране и преместване на страници", "grant-delete": "Изтриване на страници, редакции и записи в дневника", - "grant-editinterface": "Редактиране на МедияУики пространството и потребителския CSS/JavaScript", - "grant-editmycssjs": "Редактиране на личния CSS/JavaScript", + "grant-editinterface": "Редактиране на МедияУики пространството и глобалния/потребителския JSON", + "grant-editmycssjs": "Редактиране на личния CSS/JSON/JavaScript", "grant-editmyoptions": "Редактиране на вашите потребителски настройки", "grant-editmywatchlist": "Редактиране на списъка ви за наблюдение", "grant-editpage": "Редактиране на съществуващи страници", @@ -1289,7 +1289,7 @@ "action-editcontentmodel": "редактиране на модела на съдържанието на страница", "action-managechangetags": "създаване и (де)активиране на етикети", "action-applychangetags": "прилагане на етикетите заедно с промените ви", - "action-changetags": "добавяне и премахване на произволни етикети в индивидуални редакции и записи в дневниците", + "action-changetags": "добавяне и премахване на произволни етикети на индивидуални редакции и записи в дневниците", "action-deletechangetags": "изтриване на етикети от базата от данни", "action-purge": "почисти кеша на тази страница", "nchanges": "$1 {{PLURAL:$1|промяна|промени}}", @@ -1336,7 +1336,7 @@ "rcfilters-savedqueries-rename": "Преименуване", "rcfilters-savedqueries-setdefault": "Установяване като стойност по подразбиране", "rcfilters-savedqueries-unsetdefault": "Премахване на стойността по подразбиране", - "rcfilters-savedqueries-remove": "Премахване", + "rcfilters-savedqueries-remove": "Изтриване", "rcfilters-savedqueries-new-name-label": "Име", "rcfilters-savedqueries-new-name-placeholder": "Опишете целта на филтъра", "rcfilters-savedqueries-apply-label": "Създаване на филтър", @@ -1352,7 +1352,7 @@ "rcfilters-empty-filter": "Няма активни филтри. Показани са всички редакции.", "rcfilters-filterlist-title": "Филтри", "rcfilters-filterlist-whatsthis": "Как работи това?", - "rcfilters-filterlist-feedbacklink": "Споделете какво мислите за тези (нови) инструменти за филтриране", + "rcfilters-filterlist-feedbacklink": "Споделете какво мислите за тези инструменти за филтриране", "rcfilters-highlightbutton-title": "Отбелязване на резултатите", "rcfilters-highlightmenu-title": "Изберете цвят", "rcfilters-highlightmenu-help": "Изберете цвят за отбелязване на свойството", @@ -1631,7 +1631,7 @@ "uploadstash-refresh": "Обновяване на списъка с файлове", "uploadstash-thumbnail": "преглед на миниатюра", "img-auth-accessdenied": "Достъпът е отказан", - "img-auth-nopathinfo": "Липсва PATH_INFO.\nВашият сървър не е конфигуриран да предава тази информация.\nТой може да е базиран на CGI и да не поддържа img_auth.\nВижте https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.", + "img-auth-nopathinfo": "Липсва информация за пътя.\nВашият сървър трябва да бъде настроен да предава променливите REQUEST_URI и PATH_INFO .\nАко това е така, опитайте да активирате $wgUsePathInfo.\n\nВижте https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.", "img-auth-notindir": "Търсеният път не е в настроената директория за качвания.", "img-auth-badtitle": "Грешка при изграждането на валидно заглавие от „$1“.", "img-auth-nologinnWL": "Не сте влезли в системата и „$1“ не е в разрешения списък.", @@ -1691,9 +1691,9 @@ "filehist-filesize": "Размер на файла", "filehist-comment": "Коментар", "imagelinks": "Използване на файла", - "linkstoimage": "{{PLURAL:$1|Следната страница сочи|Следните $1 страници сочат}} към файла:", - "linkstoimage-more": "Към този файл {{PLURAL:$1|препраща|препращат}} повече от $1 {{PLURAL:$1|страница|страници}}.\nСписъкът по-долу показва само {{PLURAL:$1|първата страница, която препраща|първите $1 страници, които препращат}} към файла.\nНа разположение е и [[Special:WhatLinksHere/$2|пълният списък]].", - "nolinkstoimage": "Няма страници, сочещи към файла.", + "linkstoimage": "{{PLURAL:$1|Следната страница използва|Следните $1 страници използват}} следния файл:", + "linkstoimage-more": "Този файл се използва от повече от $1 {{PLURAL:$1|страница|страници}}.\nСписъкът по-долу показва само {{PLURAL:$1|първата страница, която го използва|първите $1 страници, които го използват}}.\nНа разположение е и [[Special:WhatLinksHere/$2|пълният списък]].", + "nolinkstoimage": "Няма страници използващи файла.", "morelinkstoimage": "Можете да видите [[Special:WhatLinksHere/$1|още препратки]] към този файл.", "linkstoimage-redirect": "$1 (файлово пренасочване) $2", "duplicatesoffile": "{{PLURAL:$1|Следният файл се повтаря|Следните $1 файла се повтарят}} с този файл ([[Special:FileDuplicateSearch/$2|повече подробности]]):", @@ -1786,7 +1786,7 @@ "brokenredirects-edit": "редактиране", "brokenredirects-delete": "изтриване", "withoutinterwiki": "Страници без междуезикови препратки", - "withoutinterwiki-summary": "Следните страници не препращат към версии на други езици:", + "withoutinterwiki-summary": "Следните страници не са свързани с версии на други езици:", "withoutinterwiki-legend": "Представка", "withoutinterwiki-submit": "Показване", "fewestrevisions": "Страници с най-малко редакции", @@ -1919,12 +1919,12 @@ "log": "Дневници", "logeventslist-submit": "Показване", "logeventslist-more-filters": "Показване на още дневници:", - "logeventslist-patrol-log": "Дневник на патрула", + "logeventslist-patrol-log": "Дневник на патрулирането", "logeventslist-tag-log": "Дневник на етикетите", "all-logs-page": "Всички публични дневници", "alllogstext": "Смесено показване на записи от всички налични дневници в {{SITENAME}}.\nМожете да ограничите прегледа, като изберете вид на дневника, потребителско име или определена страница.", "logempty": "Дневникът не съдържа записи, отговарящи на избрания критерий.", - "log-title-wildcard": "Търсене на заглавия, започващи със", + "log-title-wildcard": "Търсене на заглавия, започващи със следния текст", "showhideselectedlogentries": "Промяна на видимостта на избраните записи", "log-edit-tags": "Редактиране на етикетите на избраните записи в дневника", "checkbox-select": "Избор: $1", @@ -1947,7 +1947,7 @@ "cachedspecial-refresh-now": "Преглед на текущата.", "categories": "Категории", "categories-submit": "Показване", - "categoriespagetext": "{{PLURAL:$1|Следната категория съдържа|Следните категории съдържат}} страници или медийни файлове.\n[[Special:UnusedCategories|Неизползваните категории]] не са показани тук.\nВижте също списъка с [[Special:WantedCategories|желани категории]].", + "categoriespagetext": "{{PLURAL:$1|Следната категория съществува|Следните категории съществуват}} на уикито, и тя може да е или да не е неизползвана.\nВижте също списъка с [[Special:WantedCategories|желани категории]].", "categoriesfrom": "Показване на категориите, като се започне от:", "deletedcontributions": "Изтрити приноси на потребител", "deletedcontributions-title": "Изтрити приноси на потребител", @@ -1964,7 +1964,7 @@ "listusers-noresult": "Няма намерени потребители.", "listusers-blocked": "(блокиран)", "activeusers": "Списък на активните потребители", - "activeusers-intro": "Това е списък на потребителите, които са демонстрирали някаква активност през {{PLURAL:$1|последния|последните}} $1 {{PLURAL:$1|ден|дни}}.", + "activeusers-intro": "Това е списък на потребителите, които са имали някаква активност през {{PLURAL:$1|последния|последните}} $1 {{PLURAL:$1|ден|дни}}.", "activeusers-count": "$1 {{PLURAL:$1|действие|действия}} за {{PLURAL:$3|последния ден|последните $3 дни}}", "activeusers-from": "Показване на потребителите, започвайки от:", "activeusers-groups": "Показване на потребителите, принадлежащи към групи:", @@ -2007,33 +2007,33 @@ "emailuser-title-target": "Писмо до {{GENDER:$1|потребителя}}", "emailuser-title-notarget": "Изпращане на е-писмо на потребител", "emailpagetext": "Можете да използвате формуляра по-долу, за да изпратите електронно писмо на {{GENDER:$1|този потребител}}.\nАдресът, който се въвели в [[Special:Preferences|настройките си]], ще се появи в полето „От“ на писмото, така че получателят ще е в състояние да ви отговори директно.", - "defemailsubject": "Писмо от потребител $1 в {{SITENAME}}", + "defemailsubject": "Писмо от потребител „$1“ в {{SITENAME}}", "usermaildisabled": "Потребителят не е разрешил да получава електронна поща", "usermaildisabledtext": "Не можете да изпращате електронна поща на други потребители от това уики", "noemailtitle": "Няма електронна поща", "noemailtext": "Този потребител не е посочил валиден адрес за електронна поща.", "nowikiemailtext": "Този потребител е избрал да не получава електронна поща от други потребители.", - "emailnotarget": "Несъществуващ или невалиден получател на е-писмото.", + "emailnotarget": "Несъществуващо или невалидно потребителско име за получател.", "emailtarget": "Въвежда се получателят на е-писмото", "emailusername": "Потребителско име:", "emailusernamesubmit": "Изпращане", "email-legend": "Изпращане на електронно писмо до друг потребител на {{SITENAME}}", "emailfrom": "От:", "emailto": "До:", - "emailsubject": "Относно:", + "emailsubject": "Тема:", "emailmessage": "Съобщение:", "emailsend": "Изпращане", "emailccme": "Изпращане на копие на писмото до автора.", - "emailccsubject": "Копие на писмото ви до $1: $2", + "emailccsubject": "Копие на писмото Ви до $1: $2", "emailsent": "Писмото е изпратено", - "emailsenttext": "Писмото ви беше изпратено.", + "emailsenttext": "Писмото Ви беше изпратено.", "emailuserfooter": "Това писмо беше изпратено от $1 на {{GENDER:$2|$2}} чрез функцията „{{int:emailuser}}“ на {{SITENAME}}. Ако отговорите на писмото, вашето писмо ще бъде изпратено директно на {{GENDER:$1|първоначалния подател}}, показвайки адреса на ел. Ви поща на получателя.", "usermessage-summary": "Оставяне на системно съобщение.", "usermessage-editor": "Системни съобщения", "watchlist": "Списък за наблюдение", "mywatchlist": "Списък за наблюдение", "watchlistfor2": "За $1 $2", - "nowatchlist": "Списъкът ви за наблюдение е празен.", + "nowatchlist": "Списъкът Ви за наблюдение е празен.", "watchlistanontext": "За преглеждане и редактиране на списъка за наблюдение се изисква влизане в системата.", "watchnologin": "Не сте влезли", "addwatch": "Добавяне към списъка за наблюдение", @@ -2168,11 +2168,11 @@ "protectexpiry": "Изтича на:", "protect_expiry_invalid": "Невалиден срок на изтичане.", "protect_expiry_old": "Срокът на изтичане е минал.", - "protect-unchain-permissions": "Позволяване на по-нататъшни възможности за защита", + "protect-unchain-permissions": "Позволяване на допълнителни възможности за защита", "protect-text": "Тук можете да прегледате и промените нивото на защита на страницата $1.", "protect-locked-blocked": "Не можете да променяте нивата на защита на страниците, докато сте блокиран(а).\nТекущите настройки за страницата $1 са:", "protect-locked-dblock": "Нивата на защита на страниците не могат да бъдат променяни, защото базата от данни е заключена.\nЕто текущите настройки за страницата $1:", - "protect-locked-access": "Нямате правото да променяте нивата на защита на страниците. Ето текущите настройки за страницата „'''$1'''“:", + "protect-locked-access": "Нямате правото да променяте нивата на защита на страниците. Ето текущите настройки за страницата $1:", "protect-cascadeon": "Тази страница е защитена против редактиране, защото е включена в {{PLURAL:$1|следната страница, която от своя страна има|следните страници, които от своя страна имат}} каскадна защита.\nМожете да промените нивото на защита на страницата, но това няма да повлияе върху каскадната защита.", "protect-default": "Позволяване за всички потребители", "protect-fallback": "Позволяване само за потребители с права на „$1“", @@ -2212,13 +2212,13 @@ "viewdeletedpage": "Преглед на изтрити страници", "undeletepagetext": "{{PLURAL:$1|Следната страница беше изтрита, но все още се намира в архива и може да бъде възстановена|Следните $1 страници бяха изтрити, но все още се намират в архива и могат да бъдат възстановени}}. Архивът може да се почиства от време на време.", "undelete-fieldset-title": "Възстановяване на версии", - "undeleteextrahelp": "За възстановяване на пълната история на страницата не се слагат отметки и се натиска '''''{{int:undeletebtn}}'''''.\nЗа частично възстановяване се поставят отметки на тези версии на страницата, които трябва да бъдат възстановени, след което се натиска '''''{{int:undeletebtn}}'''''.", + "undeleteextrahelp": "За възстановяване на пълната история на страницата не се слагат отметки и се натиска {{int:undeletebtn}}.\nЗа частично възстановяване се поставят отметки на тези версии на страницата, които трябва да бъдат възстановени, след което се натиска {{int:undeletebtn}}.", "undeleterevisions": "$1 {{PLURAL:$1|версия беше изтрита|версии бяха изтрити}}", "undeletehistory": "Ако възстановите страницата, всички версии ще бъдат върнати в историята.\nАко след изтриването е създадена страница със същото име, възстановените версии ще се появят като по-ранна история, а текущата версия на страницата няма да бъде заменена автоматично. Също така обърнете внимание, че ограниченията, приложени върху версиите, ще се загубят след възстановяването.", "undeleterevdel": "Възстановяването няма да бъде изпълнено, ако би довело до частично изтриване на актуалната версия. В такъв случай актуалната версия не трябва да бъде избирана или пък състоянието ѝ трябва да бъде променено на нормална (нескрита) версия. Версиите на файлове, които нямате право да преглеждате, няма да бъдат възстановени.", "undeletehistorynoadmin": "Тази страница е била изтрита. В резюмето отдолу е посочена причината за това, заедно с информация за потребителите, редактирали страницата преди изтриването ѝ. Конкретното съдържание на изтритите версии е достъпно само за администратори.", "undelete-revision": "Изтрита версия на $1 (към $4, в $5) от $3:", - "undeleterevision-missing": "Неправилна или липсваща версия. Може да сте последвали грешна препратка или указаната версия да е била възстановена или премахната от архива", + "undeleterevision-missing": "Неправилна или липсваща версия.\nМоже да сте последвали грешна препратка или указаната версия да е била възстановена или премахната от архива.", "undelete-nodiff": "Не е открита предишна редакция.", "undeletebtn": "Възстановяване", "undeletelink": "преглед/възстановяване", @@ -2226,18 +2226,18 @@ "undeleteinvert": "Обръщане на избора", "undeletecomment": "Причина:", "cannotundelete": "Една или повече операции по възстановяване се провалиха:\n$1", - "undeletedpage": "'''Страницата „$1“ беше възстановена.'''\n\nМожете да видите последните изтрити и възстановени страници в [[Special:Log/delete|дневника на изтриванията]].", + "undeletedpage": "Страницата $1 беше възстановена\n\nМожете да видите последните изтрити и възстановени страници в [[Special:Log/delete|дневника на изтриванията]].", "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": "Не са намерени страници, отговарящи на търсения критерий.", "undelete-filename-mismatch": "Не е възможно възстановяването на файловата версия с времева отметка $1: несъответствие в името на файла", "undelete-bad-store-key": "Не е възможно възстановяването на файловата версия с времева отметка $1: файлът е липсвал преди изтриването.", "undelete-cleanup-error": "Грешка при изтриване на неизползвания архивен файл „$1“.", - "undelete-missing-filearchive": "Не е възможно възстановяването на файла с ID $1, защото не присъства в базата от данни. Вероятно вече е възстановен.", + "undelete-missing-filearchive": "Не е възможно възстановяването на файла с ID $1, защото не присъства в базата от данни.\nВероятно вече е възстановен.", "undelete-error": "Грешка при възстановяване на страницата", "undelete-error-short": "Грешка при възстановяването на изтрития файл: $1", "undelete-error-long": "Възникнаха грешки при възстановяването на изтрития файл:\n\n$1", @@ -2262,7 +2262,7 @@ "year": "От година (и по-рано):", "date": "От дата (и по-рано):", "sp-contributions-newbies": "Показване само на приносите на нови потребители", - "sp-contributions-newbies-sub": "на нови потребители", + "sp-contributions-newbies-sub": "За нови сметки", "sp-contributions-newbies-title": "Потребителски приноси за нови сметки", "sp-contributions-blocklog": "дневник на блокиранията", "sp-contributions-deleted": "изтрити приноси на {{GENDER:$1|потребител}}", @@ -2301,11 +2301,11 @@ "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-адрес, използван от потребителя, както и на всички останали адреси, от които се опита да редактира", @@ -2321,8 +2321,8 @@ "blockipsuccesssub": "Блокирането беше успешно", "blockipsuccesstext": "Потребител [[Special:Contributions/$1|$1]] беше блокиран(а).
    \nМожете да прегледате пълния [[Special:BlockList|списък на блокираните потребители]].", "ipb-blockingself": "На път сте да блокирате себе си! Наистина ли желаете да извършите това действие?", - "ipb-confirmhideuser": "На път сте да блокирате потребител, който е \"скрит потребител\". Това действие ще заличи потребителското име от всички списъци и дневници. Наистина ли желаете да направите това?", - "ipb-edit-dropdown": "Причини за блокиране", + "ipb-confirmhideuser": "На път сте да блокирате потребител, който е „скрит потребител“. Това действие ще заличи потребителското име от всички списъци и дневници. Наистина ли желаете да направите това?", + "ipb-edit-dropdown": "Редактиране на причините за блокиране", "ipb-unblock-addr": "Отблокиране на $1", "ipb-unblock": "Отблокиране на потребителско име или IP-адрес", "ipb-blocklist": "Преглед на текущите блокирания", @@ -2344,9 +2344,9 @@ "autoblocklist-empty": "Списъкът на автоматичните блокирания е празен.", "ipblocklist": "Блокирани потребители", "ipblocklist-legend": "Търсене на блокиран потребител", - "blocklist-userblocks": "Скриване на блокирани потребителски сметки", + "blocklist-userblocks": "Скриване блокирането на потребителски сметки", "blocklist-tempblocks": "Скриване на временни блокирания", - "blocklist-addressblocks": "Скриване на отделни блокирани IP адреси", + "blocklist-addressblocks": "Скриване на отделни блокирания на IP адреси", "blocklist-rangeblocks": "Скриване на блокиранията по IP диапазон", "blocklist-timestamp": "Дата и час", "blocklist-target": "Цел", @@ -2480,7 +2480,7 @@ "fix-double-redirects": "Обновяване на всички двойни пренасочвания, които сочат към оригиналното заглавие", "move-leave-redirect": "Оставяне на пренасочваща страница от старото към новото заглавие", "protectedpagemovewarning": "Внимание: Тази страница е защитена и само потребители със статут на администратори могат да я преместят.\nЗа справка по-долу е показан последният запис от дневниците.", - "semiprotectedpagemovewarning": "Забележка: Тази страница е защитена и само регистрирани потребители могат да я преместят.\nЗа справка по-долу е показан последният запис от дневниците.", + "semiprotectedpagemovewarning": "Забележка: Тази страница е защитена и само автоматично одобрени потребители могат да я преместят.\nЗа справка по-долу е показан последният запис от дневниците.", "move-over-sharedrepo": "[[:$1]] вече съществува в споделеното хранилище. Преместване на файл с това заглавие ще замени споделения файл.", "file-exists-sharedrepo": "Избраното име на файл вече се използва от файл в споделеното хранилище.\nНеобходимо е да изберете друго име.", "export": "Изнасяне на страници", @@ -3162,8 +3162,8 @@ "confirm_purge_button": "Добре", "confirm-purge-top": "Изчистване на складираното копие на страницата?", "confirm-purge-bottom": "Изчистването на страница опреснява кеша и показва последната ѝ версия.", - "confirm-watch-button": "Потвърждаване", - "confirm-watch-top": "Добавяне на страницата в списъка ви за наблюдение?", + "confirm-watch-button": "Добре", + "confirm-watch-top": "Добавяне на страницата в списъка Ви за наблюдение?", "confirm-unwatch-button": "Потвърждаване", "confirm-unwatch-top": "Премахване на страницата от списъка Ви за наблюдение?", "confirm-rollback-button": "OK", diff --git a/languages/i18n/ca.json b/languages/i18n/ca.json index 9e1b9b42ed..35764bc9a7 100644 --- a/languages/i18n/ca.json +++ b/languages/i18n/ca.json @@ -414,6 +414,8 @@ "customcssprotected": "No teniu permisos per editar la pàgina CSS perquè conté els paràmetres personals d'un altre usuari.", "customjsonprotected": "No teniu permisos per editar aquesta pàgina JSON perquè conté configuracions personals d'un altre usuari.", "customjsprotected": "No teniu permisos per editar la pàgina JavaScript perquè conté els paràmetres personals d'un altre usuari.", + "sitecssprotected": "No teniu permisos per modificar aquesta pàgina CSS perquè pot afectar a tots els visitants.", + "sitejsonprotected": "No teniu permisos per modificar aquesta pàgina JSON perquè pot afectar a tots els visitants.", "mycustomcssprotected": "No tens permís per editar aquesta pàgina CSS.", "mycustomjsonprotected": "No teniu permisos per editar aquesta pàgina JSON.", "mycustomjsprotected": "No tens permís per editar aquesta pàgina JavaScript.", @@ -1235,7 +1237,11 @@ "right-editcontentmodel": "Editar el model de contingut d'una pàgina", "right-editinterface": "Editar la interfície d'usuari", "right-editusercss": "Modificar els fitxers CSS d'altres usuaris", + "right-edituserjson": "Modifica els fitxers JSON d'altres usuaris", "right-edituserjs": "Modificar els fitxers JavaScript d'altres usuaris", + "right-editsitecss": "Modifica el CSS global del lloc", + "right-editsitejson": "Modifica el JSON global del lloc", + "right-editsitejs": "Modifica el JavaScript global del lloc", "right-editmyusercss": "Modificar els vostres fitxers d'usuari CSS", "right-editmyuserjs": "Modificar els vostres fitxers d'usuari JavaScript", "right-viewmywatchlist": "Mostra la llista de seguiment pròpia", @@ -1275,7 +1281,7 @@ "grant-createaccount": "Crea comptes", "grant-createeditmovepage": "Crea, modifica i reanomena pàgines", "grant-delete": "Suprimeix pàgines, revisions i entrades de registre", - "grant-editinterface": "Modifica l'espai de noms MediaWiki i els CSS/JSON/JavaScript d'usuari", + "grant-editinterface": "Modifica l'espai de noms MediaWiki i el JSON global del lloc o de l'usuari", "grant-editmycssjs": "Modifiqueu el vostre CSS/JSON/JavaScript d'usuari", "grant-editmyoptions": "Editeu les vostres preferències d'usuari", "grant-editmywatchlist": "Modifica la llista de seguiment", @@ -1376,6 +1382,8 @@ "rcfilters-activefilters": "Filtres actius", "rcfilters-activefilters-hide": "Amaga", "rcfilters-activefilters-show": "Mostra", + "rcfilters-activefilters-hide-tooltip": "Amaga l'àrea de filtres actius", + "rcfilters-activefilters-show-tooltip": "Mostra l'àrea de filtres actius", "rcfilters-advancedfilters": "Filtres avançats", "rcfilters-limit-title": "Resultats a mostrar", "rcfilters-limit-and-date-label": "$1 {{PLURAL:$1|canvi|canvis}}, $2", @@ -1399,6 +1407,7 @@ "rcfilters-savedqueries-apply-and-setdefault-label": "Crear filtre predeterminat", "rcfilters-savedqueries-cancel-label": "Cancel·la", "rcfilters-savedqueries-add-new-title": "Desa els paràmetres de filtres actuals", + "rcfilters-savedqueries-already-saved": "Ja s'han desat aquests filtres. Canvieu els vostres paràmetres per crear un filtre desat nou.", "rcfilters-restore-default-filters": "Restaura els filtres per defecte", "rcfilters-clear-all-filters": "Esborra tots els filtres", "rcfilters-show-new-changes": "Mostra els nous canvis", @@ -1726,11 +1735,14 @@ "uploadstash-bad-path-invalid": "El camí no és vàlid.", "uploadstash-bad-path-unknown-type": "El tipus «$1» és desconegut.", "uploadstash-bad-path-unrecognized-thumb-name": "Nom de miniatura no reconegut.", + "uploadstash-bad-path-bad-format": "La clau «$1» no està en un format adequat.", "uploadstash-file-not-found-no-thumb": "No s'ha pogut obtenir una miniatura.", + "uploadstash-file-not-found-missing-content-type": "Manca una capçalera de tipus de contingut.", "uploadstash-file-not-found-not-exists": "No es pot trobar el camí, o bé no és un fitxer pla.", "uploadstash-file-too-large": "No es pot servir un fitxer més gran de $1 bytes.", "uploadstash-not-logged-in": "Cap usuari ha iniciat una sessió. Els fitxers han de pertànyer als usuaris.", "uploadstash-wrong-owner": "Aquest fitxer ($1) no pertany a l'usuari actual.", + "uploadstash-no-such-key": "No existeix la clau ($1). No es pot suprimir.", "uploadstash-no-extension": "L’extensió és nul·la.", "uploadstash-zero-length": "El fitxer té mida zero.", "invalid-chunk-offset": "El desplaçament del fragment no és vàlid", @@ -2354,6 +2366,7 @@ "undeletehistorynoadmin": "S'ha eliminat la pàgina. El motiu es mostra\nal resum a continuació, juntament amb detalls dels usuaris que l'havien editat abans de la seua eliminació. El text de les revisions eliminades només és accessible als administradors.", "undelete-revision": "S'ha eliminat la revisió de $1 (des del dia $4 a les $5), revisat per $3:", "undeleterevision-missing": "La revisió no és vàlida o no hi és. Podeu tenir-hi un enllaç incorrecte, o bé pot haver-se restaurat o eliminat de l'arxiu.", + "undeleterevision-duplicate-revid": "No s'ha pogut restaurar {{PLURAL:$1|una revisió|$1 revisions}}, perquè {{PLURAL:$1|el seu|els seus}} rev_id ja s'estaven fent servir.", "undelete-nodiff": "No s'ha trobat cap revisió anterior.", "undeletebtn": "Restaura!", "undeletelink": "mira/restaura", @@ -2474,6 +2487,7 @@ "blocklist": "Usuaris blocats", "autoblocklist": "Blocatges automàtics", "autoblocklist-submit": "Cerca", + "autoblocklist-legend": "Llista els blocatges automàtics", "autoblocklist-localblocks": "{{PLURAL:$1|Blocatge automàtic local|Blocatges automàtics locals}}", "autoblocklist-total-autoblocks": "Nombre total de blocatges automàtics: $1", "autoblocklist-empty": "La llista de blocatges automàtics és buida.", @@ -2687,6 +2701,7 @@ "imported-log-entries": "{{PLURAL:$1|S'ha importat una entrada del registre|S'han importat $1 entrades del registre}}.", "importfailed": "La importació ha fallat: $1", "importunknownsource": "No es reconeix el tipus de la font d'importació", + "importnoprefix": "No s'ha proporcionat cap prefix interwiki", "importcantopen": "No s'ha pogut obrir el fitxer a importar", "importbadinterwiki": "Enllaç d'interwiki incorrecte", "importsuccess": "Importació completada!", @@ -2799,6 +2814,7 @@ "group-bot.css": "/* El CSS d'aquí només afectarà els bots */", "group-sysop.css": "/* El CSS d'aquí només afectarà els sysops */", "group-bureaucrat.css": "/* El CSS d'aquí només afectarà els buròcrates */", + "common.json": "/* Tots els JSON d'aquí es carregaran per a tots els usuaris a cada càrrega de la pàgina. */", "common.js": "/* Es carregarà per a tots els usuaris, i per a qualsevol pàgina, el codi JavaScript que hi haja després d'aquesta línia. */", "group-autoconfirmed.js": "/* Qualsevol JavaScript d'aquí es carregarà només per als usuaris autoconfirmats */", "group-user.js": "/* Qualsevol JavaScript d'aquí es carregarà només per als usuaris registrats */", @@ -3524,6 +3540,7 @@ "tag-mw-blank-description": "Modificacions que blanquegen una pàgina", "tag-mw-replace": "Substitució", "tag-mw-replace-description": "Modificacions que eliminen més del 90% del contingut d'una pàgina", + "tag-mw-rollback": "Reversió", "tag-mw-undo": "Desfés", "tags-title": "Etiquetes", "tags-intro": "Aquesta pàgina llista les etiquetes amb què el programari pot marcar una modificació, i el seu significat.", @@ -3703,6 +3720,7 @@ "logentry-newusers-byemail": "El compte d'usuari $3 {{GENDER:$2|ha estat creat}} per $1 i la contrasenya ha estat enviada per correu electrònic", "logentry-newusers-autocreate": "El compte d'usuari $1 {{GENDER:$2|ha estat creat}} automàticament", "logentry-protect-move_prot": "$1 {{GENDER:$2|ha traslladat}} els valors de protecció de $4 a $3", + "logentry-protect-unprotect": "$1 {{GENDER:$2|ha suprimit}} la protecció de $3", "logentry-protect-protect": "$1 {{GENDER:$2|ha protegit}} $3 $4", "logentry-protect-protect-cascade": "$1 {{GENDER:$2|ha protegit}} $3 $4 [en cascada]", "logentry-protect-modify": "$1 {{GENDER:$2|ha canviat}} el nivell de protecció de $3 $4", diff --git a/languages/i18n/cdo.json b/languages/i18n/cdo.json index 57ef3c8b59..1224672835 100644 --- a/languages/i18n/cdo.json +++ b/languages/i18n/cdo.json @@ -559,6 +559,7 @@ "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": "最新版本", @@ -660,6 +661,7 @@ "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": "汝也會使選擇讓其他其用戶通過汝其用戶頁面或者討論頁面懸頂其鏈接,使電子郵件來聯繫汝。其他其用戶聯繫汝其辰候,汝其電子郵件地址𣍐顯示出來。", @@ -733,6 +735,7 @@ "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", @@ -876,6 +879,8 @@ "unwatch": "伓使監視", "unwatchthispage": "停止監視", "watchlist-details": "Nṳ̄ gì găng-sê-dăng {{PLURAL:$1|ô $1 gó|dŭ liāng ô $1 gó}} hiĕk-miêng (bău-guák tō̤-lâung-hiĕk).", + "wlheader-enotif": "Ī-gĭng kŭi kó̤ diêng-piĕ tŭng-dĭ.", + "wlheader-showupdated": "Ṳ̀-guō ô diê-siŏh-hiĕk, găk nṳ̄ muōi-muōi siŏh-huòi káng guó cī-hâiu, bô ké̤ṳk nè̤ng gāi kó̤, hī-siŏh-hiĕk gì biĕu-dà̤ cêu-sê cū-tā̤.", "wlshowlast": "顯示最$1點鐘$2日", "watchlist-options": "監視單選項", "watching": "監視...", @@ -895,6 +900,7 @@ "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}}]])改其。", @@ -1070,6 +1076,7 @@ "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", @@ -1194,6 +1201,7 @@ "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ō̤:", diff --git a/languages/i18n/ckb.json b/languages/i18n/ckb.json index b97674be68..75940d2834 100644 --- a/languages/i18n/ckb.json +++ b/languages/i18n/ckb.json @@ -998,7 +998,7 @@ "userrights-expiry-in-past": "کاتی بەسەرچوون بۆ گرووپی «$1» لە ڕابردوودایە.", "group": "گرووپ:", "group-user": "بەکارھێنەران", - "group-autoconfirmed": "بەکارھێنەرە خۆبەخۆ پەسندکراوەکان", + "group-autoconfirmed": "بەکارھێنەرانی پەسەندکراوی خۆگەڕ", "group-bot": "بۆتەکان", "group-sysop": "بەڕێوەبەران", "group-interface-admin": "بەڕێوەبەرانی ڕووکار", @@ -1006,14 +1006,14 @@ "group-suppress": "چاودێرەکان", "group-all": "(ھەموو)", "group-user-member": "{{GENDER:$1|بەکارھێنەر}}", - "group-autoconfirmed-member": "{{GENDER:$1|بەکارھێنەرە خۆبەخۆ پەسندکراوەکان}}", + "group-autoconfirmed-member": "{{GENDER:$1|بەکارھێنەرانی پەسەندکراوی خۆگەڕ}}", "group-bot-member": "بۆت", "group-sysop-member": "{{GENDER:$1|بەڕێوەبەر}}", "group-interface-admin-member": "{{GENDER:$1|بەڕێوەبەری ڕووکار}}", "group-bureaucrat-member": "{{GENDER:$1|بیوروکرات}}", "group-suppress-member": "{{GENDER:$1|چاودێر}}", "grouppage-user": "{{ns:project}}:بەکارھێنەران", - "grouppage-autoconfirmed": "{{ns:project}}:بەکارھێنەرە خۆبەخۆ پەسندکراوەکان", + "grouppage-autoconfirmed": "{{ns:project}}:بەکارھێنەرانی پەسەندکراوی خۆگەڕ", "grouppage-bot": "{{ns:project}}:بۆت", "grouppage-sysop": "{{ns:project}}:بەڕێوەبەران", "grouppage-interface-admin": "{{ns:project}}:بەڕێوەبەرانی ڕووکار", @@ -1253,6 +1253,9 @@ "rcfilters-liveupdates-button": "نوێکردنەوەی زیندوو", "rcfilters-watchlist-edit-watchlist-button": "دەستکاریکردنی پێڕستی پەڕە چاودێریکراوەکانت", "rcfilters-watchlist-showupdated": "ئەو پەڕانەی دەستکاریکراون و لەکاتی دەستکاریکردنەکەوە سەردانت نەکردوونەتەوە بە تۆخ دەردەکەون، بە نیشانی پڕکراوەوە.", + "rcfilters-preference-label": "گەڕاندنەوەی وەشانی نوێی دوایین گۆڕانکارییەکان", + "rcfilters-watchlist-preference-label": "شاردنەوەی وەشانی نوێی پێڕستی چاودێری", + "rcfilters-watchlist-preference-help": "ئەم ھەڵبژاردەیە وەشانی نوێی ڕووکار و ھەموو ئامرازەکانی لەو کاتەوە زیاد کراون دەگەڕێنێتەوە.", "rcnotefrom": "ژێرەوە {{PLURAL:$5|گۆڕانکارییەکەیە|گۆڕانکارییەکانە}} لە $3، $4ەوە (ھەتا $1 نیشان دراوە).", "rclistfromreset": "گەڕاندنەوەی ھەڵبژاردەی بەروار", "rclistfrom": "گۆڕانکارییە نوێکان نیشان بدە بە دەستپێکردن لە $3 $2", @@ -2831,6 +2834,7 @@ "specialpages-group-wiki": "دراوەکان و ئامرازەکان", "specialpages-group-redirects": "پەڕە تایبەتەکانی ڕەوانەکردن", "specialpages-group-spam": "ئامرازەکانی سپەم", + "specialpages-group-developer": "ئامرازەکانی بەرھەمھێنەر", "blankpage": "پەڕەی واڵا", "intentionallyblankpage": "ئەم پەڕەیە لەقەست واڵا ھێڵراوەتەوە.", "external_image_whitelist": " #ئەم دێڕ ھەر بەم جۆرە کە ھەیە بەجێبێڵە
    \n#کەرتەکانی regular expression (تەنیا ئە بەشە کە لە نێوان // دا دێت) لە خوارەوە دابنێ\n#These will be matched with the URLs of external (hotlinked) images\n#Those that match will be displayed as images, otherwise only a link to the image will be shown\n#ئەو دێڕانە بە # دەست پێدەکەن وەک شرۆڤە (comments) مامەڵەیان لەگەڵ دەکرێ\n#بە گەورە و بچووکی پیتەکان ھەستیارە (case-insensitive)\n\n#گشت کەرتەکانی regex لە سەرەوەی ئەم دێرەدا دابنێ. ئەم دێڕ ھەر بەم جۆرە کە ھەیە بەجێبێڵە
    ", diff --git a/languages/i18n/cs.json b/languages/i18n/cs.json index 9271047ec8..8bc287d31c 100644 --- a/languages/i18n/cs.json +++ b/languages/i18n/cs.json @@ -3548,6 +3548,7 @@ "redirect-file": "Jméno souboru", "redirect-logid": "ID protokolovacího záznamu", "redirect-not-exists": "Hodnota nenalezena", + "redirect-not-numeric": "Hodnota není číslo", "fileduplicatesearch": "Hledání duplicitních souborů", "fileduplicatesearch-summary": "Hledání duplicitních souborů podle jejich hašů.", "fileduplicatesearch-filename": "Jméno souboru:", diff --git a/languages/i18n/da.json b/languages/i18n/da.json index 8285b75d0f..7a2358c99b 100644 --- a/languages/i18n/da.json +++ b/languages/i18n/da.json @@ -1154,6 +1154,7 @@ "group-autoconfirmed": "Registrerede brugere", "group-bot": "Robotter", "group-sysop": "Administratorer", + "group-interface-admin": "Grænsesnitadministratorer", "group-bureaucrat": "Bureaukrater", "group-suppress": "Undertrykkere", "group-all": "(alle)", @@ -1518,6 +1519,7 @@ "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.", @@ -1681,6 +1683,7 @@ "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.", @@ -3245,6 +3248,8 @@ "confirm-unwatch-top": "Fjern denne side fra din overvågningsliste?", "confirm-rollback-button": "OK", "confirm-rollback-top": "Omgør redigering på denne side?", + "confirm-mcrundo-title": "Fortryd en ændring", + "mcrundofailed": "Omgørelse mislykkedes", "quotation-marks": "\"$1\"", "imgmultipageprev": "← forrige side", "imgmultipagenext": "næste side →", @@ -3594,6 +3599,7 @@ "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{{#language:…}} og variabler så som \n{{CURRENTDAY}}\nFaktisk udfolder den stort set alt i dobbelte tuborgklammer.", "expand_templates_title": "Sammenhængstitel, for {{FULLPAGENAME}} osv.:", @@ -3679,6 +3685,7 @@ "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", @@ -3712,6 +3719,7 @@ "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", diff --git a/languages/i18n/de-ch.json b/languages/i18n/de-ch.json index 0b44ae2b08..768ca98fdd 100644 --- a/languages/i18n/de-ch.json +++ b/languages/i18n/de-ch.json @@ -13,7 +13,8 @@ "FriedhelmW", "J. 'mach' wust", "Macofe", - "Marcell0" + "Marcell0", + "L*E*D" ] }, "tog-hideminor": "Kleine Änderungen in den «Letzten Änderungen» ausblenden", @@ -21,6 +22,7 @@ "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", @@ -56,19 +58,28 @@ "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.", @@ -79,6 +90,8 @@ "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.", @@ -143,6 +156,7 @@ "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": "Erstelle die Seite «[[:$1]]» in diesem Wiki. {{PLURAL:$2|0=|Siehe auch die über deine Suche gefundene Seite.|Siehe auch die gefundenen Suchergebnisse.}}", @@ -164,10 +178,12 @@ "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* '''[[{{ns:file}}:Datei.jpg]]''' – für ein Vollbild\n* '''[[{{ns:file}}:Datei.png|200px|thumb|left|Alternativer Text]]''' – für ein 200px breites Bild innerhalb einer Box, mit «Alternativer Text» als Bildbeschreibung\n* '''[[{{ns:media}}:Datei.ogg]]''' – 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.", @@ -222,6 +238,7 @@ "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).", @@ -264,6 +281,7 @@ "undelete-show-file-confirm": "Bist du sicher, dass du eine gelöschte Version der Datei «$1» 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»'''.", @@ -298,15 +316,27 @@ "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.", @@ -352,7 +382,7 @@ "external_image_whitelist": " #Diese Zeile nicht verändern.
    \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.
    ", "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»" } diff --git a/languages/i18n/de.json b/languages/i18n/de.json index 7bf7807717..8b1de77242 100644 --- a/languages/i18n/de.json +++ b/languages/i18n/de.json @@ -3577,6 +3577,7 @@ "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:", diff --git a/languages/i18n/en.json b/languages/i18n/en.json index 18dc51aab4..4fa19d345a 100644 --- a/languages/i18n/en.json +++ b/languages/i18n/en.json @@ -1400,8 +1400,8 @@ "rcfilters-activefilters": "Active filters", "rcfilters-activefilters-hide": "Hide", "rcfilters-activefilters-show": "Show", - "rcfilters-activefilters-hide-tooltip": "Hide Active Filters area", - "rcfilters-activefilters-show-tooltip": "Show Active Filters area", + "rcfilters-activefilters-hide-tooltip": "Hide Active filters area", + "rcfilters-activefilters-show-tooltip": "Show Active filters area", "rcfilters-advancedfilters": "Advanced filters", "rcfilters-limit-title": "Results to show", "rcfilters-limit-and-date-label": "$1 {{PLURAL:$1|change|changes}}, $2", @@ -1413,7 +1413,7 @@ "rcfilters-highlighted-filters-list": "Highlighted: $1", "rcfilters-quickfilters": "Saved filters", "rcfilters-quickfilters-placeholder-title": "No filters saved yet", - "rcfilters-quickfilters-placeholder-description": "To save your filter settings and reuse them later, click the bookmark icon in the Active Filter area, below.", + "rcfilters-quickfilters-placeholder-description": "To save your filter settings and reuse them later, click the bookmark icon in the Active filters area, below.", "rcfilters-savedqueries-defaultlabel": "Saved filters", "rcfilters-savedqueries-rename": "Rename", "rcfilters-savedqueries-setdefault": "Set as default", @@ -3898,6 +3898,7 @@ "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:", diff --git a/languages/i18n/es.json b/languages/i18n/es.json index 15cab0585f..76962ef3ae 100644 --- a/languages/i18n/es.json +++ b/languages/i18n/es.json @@ -190,7 +190,7 @@ "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", @@ -2380,7 +2380,7 @@ "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", @@ -4197,7 +4197,7 @@ "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 editinterface. 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 editinterface. 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.", diff --git a/languages/i18n/eu.json b/languages/i18n/eu.json index 7248b62c1d..cfd0594f6f 100644 --- a/languages/i18n/eu.json +++ b/languages/i18n/eu.json @@ -391,6 +391,7 @@ "ns-specialprotected": "Ezin dira {{ns:special}} izen-tarteko orrialdeak editatu.", "titleprotected": "[[User:$1|$1]]ek izenburu hau sortzea ekidin zuen.\nEmandako arrazoia $2 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", @@ -1793,8 +1794,8 @@ "filehist-filesize": "Tamaina", "filehist-comment": "Iruzkina", "imagelinks": "Fitxategiaren erabilera", - "linkstoimage": "Hurrengo {{PLURAL:$1|orrialdeak du|$1 orrialdeek dute}} fitxategi honetarako lotura:", - "linkstoimage-more": "$1 {{PLURAL:$1|orri lotura|orri lotura}} baino gehiago daude fitxategira.\nOndorengo zerrendak fitxategira dauden {{PLURAL:$1|lehen lotura|lehen $1 loturak}} erakusten ditu bakarrik.\n[[Special:WhatLinksHere/$2|Zerrenda osoa]] ere eskuragarri dago.", + "linkstoimage": "Hurrengo {{PLURAL:$1|orrialdeak|$1 orrialdeek}} fitxategi honetarako lotura erabiltzen dute:", + "linkstoimage-more": "$1 {{PLURAL:$1|orri lotura}} baino gehiago daude fitxategira.\nOndorengo zerrendak fitxategira dauden {{PLURAL:$1|lehen lotura|lehen $1 loturak}} erakusten ditu bakarrik.\n[[Special:WhatLinksHere/$2|Zerrenda osoa]] ere eskuragarri dago.", "nolinkstoimage": "Ez dago fitxategi honetara lotura duen orririk.", "morelinkstoimage": "Ikusi fitxategi honen [[Special:WhatLinksHere/$1|lotura gehiago]].", "linkstoimage-redirect": "$1 (fitxategiranzko birbideratzea) $2", @@ -3384,7 +3385,7 @@ "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", @@ -3514,7 +3515,7 @@ "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", diff --git a/languages/i18n/fi.json b/languages/i18n/fi.json index 65c9f4badb..2c09e0b4e3 100644 --- a/languages/i18n/fi.json +++ b/languages/i18n/fi.json @@ -1787,7 +1787,7 @@ "upload-curl-error6-text": "Antamaasi osoitteeseen ei saatu yhteyttä. Varmista, että osoite on oikein ja että sivusto on saavutettavissa.", "upload-curl-error28": "Etälähetyksen aikakatkaisu", "upload-curl-error28-text": "Antamastasi osoitteesta ei saatu vastausta määräajassa. Varmista, että sivusto on saavutettavissa ja yritä uudelleen.", - "license": "Lisenssi", + "license": "Lisenssi:", "license-header": "Lisenssi", "nolicense": "Ei lisenssiä", "licenses-edit": "Muokkaa lisenssivaihtoehtoja", @@ -3541,6 +3541,7 @@ "redirect-file": "Tiedostonimi", "redirect-logid": "Lokin tunnistenumero", "redirect-not-exists": "Arvoa ei löytynyt", + "redirect-not-numeric": "Arvo ei numeerinen", "fileduplicatesearch": "Kaksoiskappaleiden haku", "fileduplicatesearch-summary": "Etsii tiedoston kaksoiskappaleita hajautusarvon perusteella.", "fileduplicatesearch-filename": "Tiedostonimi", @@ -4098,6 +4099,7 @@ "edit-error-long": "Virheet:\n\n$1", "revid": "versio $1", "pageid": "sivun tunnistenumero $1", + "interfaceadmin-info": "$1\n\nSivustonlaajuisten CSS/JS/JSON-tiedostojen muokkaamisoikeus erotettiin äskettäin editinterface-oikeudesta. Jos et ymmärrä, miksi saat tämän virheen, katso [[mw:MediaWiki_1.32/interface-admin]].", "rawhtml-notallowed": "<html> komentoa ei voida käyttää normaalien sivujen ulkopuolella.", "gotointerwiki": "Lähdössä {{GRAMMAR:elative|{{SITENAME}}}}", "gotointerwiki-invalid": "Annettu otsikko on virheellinen.", diff --git a/languages/i18n/fr.json b/languages/i18n/fr.json index 0724ba61fc..f60c1365fc 100644 --- a/languages/i18n/fr.json +++ b/languages/i18n/fr.json @@ -527,7 +527,7 @@ "mycustomjsprotected": "Vous n’avez pas le droit de modifier cette page JavaScript.", "myprivateinfoprotected": "Vous n’avez pas le droit de modifier vos informations personnelles.", "mypreferencesprotected": "Vous n’avez pas le droit de modifier vos préférences.", - "ns-specialprotected": "Les pages spéciales ne peuvent pas être modifiés.", + "ns-specialprotected": "Les pages spéciales ne peuvent pas être modifiées.", "titleprotected": "Ce titre a été protégé contre toute création par [[User:$1|$1]].\nLe motif fourni est $2.", "filereadonlyerror": "Impossible de modifier le fichier « $1 » parce que le répertoire de fichiers « $2 » est en lecture seule.\n\nL’administrateur système qui l’a verrouillé a fourni ce motif : « $3 ».", "invalidtitle": "Titre non valide", @@ -3733,6 +3733,7 @@ "redirect-file": "Nom du fichier", "redirect-logid": "ID de journal", "redirect-not-exists": "Valeur non trouvée", + "redirect-not-numeric": "Valeur non numérique", "fileduplicatesearch": "Recherche de doublons", "fileduplicatesearch-summary": "Recherche des copies de fichiers identiques d'après leur empreinte de hachage.", "fileduplicatesearch-filename": "Nom du fichier :", diff --git a/languages/i18n/gcr.json b/languages/i18n/gcr.json index 3d501ac80d..974ddf40d2 100644 --- a/languages/i18n/gcr.json +++ b/languages/i18n/gcr.json @@ -5,16 +5,16 @@ ] }, "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", - "tog-editsectiononrightclick": "Aktivé modifikasyon-an dé sèksyon pa roun klik drèt asou tit di sèksyon", + "tog-editsectiononrightclick": "Agtivé modifikasyon-an dé sègsyon pa roun klik drèt asou tit-ya di sègsyon", "tog-watchcreations": "Ajouté à mo lis di swivi paj-ya ki mo kréyé é fiché-ya ki mo ka enpòrté", "tog-watchdefault": "Ajouté à mo lis di swivi paj-ya ké fiché-ya ki mo ka modifyé", "tog-watchmoves": "Ajouté paj-ya ké fiché-ya ki mo ka déplasé annan mo lis di swivi", @@ -39,7 +39,7 @@ "tog-watchlisthideliu": "Maské modifikasyon-yan ki fè pa dé itilizatò annan lis di swivi", "tog-watchlistreloadautomatically": "Roucharjé otomatikman lis di swivi-a lò lòpsyon di filtraj sa modifyé (JavaScript réki)", "tog-watchlistunwatchlinks": "Ajouté dé markèr dirèk ({{int:Watchlist-unwatch}}/{{int:Watchlist-unwatch-undo}}) pou paj-ya swivi ké dé chanjman (JavaScript sa nésésèr pou itilizé fonksyonalité-a)", - "tog-watchlisthideanons": "Maské modifikasyon-yan di itilizatò anonim annan lis di swivi", + "tog-watchlisthideanons": "Maské modifikasyon-yan di itilizatò annonnim annan lis di swivi-a", "tog-watchlisthidepatrolled": "Maské modifikasyon-yan ki rouli annan lis di swivi", "tog-watchlisthidecategorization": "Maské katégorizasyon dé paj", "tog-ccmeonemails": "• Voyé mo roun kopi dé kouryé ki mo ka voyé pou ròt itilizatò", @@ -181,7 +181,7 @@ "viewdeleted_short": "Wè {{PLURAL:$1|roun modifikasyon souprimé|$1 modifikasyon souprimé}}", "protect": "Protéjé", "protect_change": "modifyé", - "unprotect": "Chanjé protèksyon-an", + "unprotect": "Chanjé protègsyon-an", "newpage": "Nouvèl paj", "talkpagelinktext": "diskisyon", "specialpage": "Paj èspésyal", @@ -198,7 +198,7 @@ "viewhelppage": "Wè paj di lèd", "categorypage": "Wè paj di katégori", "viewtalkpage": "Wè paj di diskisyon", - "otherlanguages": "Annan rounòt langaj", + "otherlanguages": "Annan ròt lanng", "redirectedfrom": "(Roudirijé dipi $1)", "redirectpagesub": "Paj di roudirègsyon", "redirectto": "Roudirijé bò'd :", @@ -304,7 +304,7 @@ "readonly": "Baz di data vérouyé", "enterlockreason": "Endiké rézon-an di vérouyaj ensi ki roun èstimasyon di so douré", "readonlytext": "Ajou ké mizajou di baz di data sa atchwèlman bloké, probabman pou pèrmèt mentnans di baz-a, aprè sa, tout bagaj ké rantré annan lòrd.\n\nAdministratò sistenm-an ki vérouyé baz di data fourni èsplikasyon-an ki ka swiv :
    $1", - "missing-article": "Baz-a di data pa trouvé tègs-a di roun paj ki li té divèt trouvé, ki entitilé « $1 » $2.\n\nJénéralman, sala ka sirvini an swivan roun lyannaj bò'd roun dif ki périmen oben bò'd listorik-a di roun paj ki souprimen.\n\nSi a pa sa ki la, zòt pitèt trouvé roun annonmanli annan progranm-an.\nSouplé, signalé li à roun [[Special:ListUsers/sysop|administratò]] é pa bliyé di endiké li URL-a di paj-a.", + "missing-article": "Baz-a di data pa trouvé tègs-a di roun paj ki li té divèt trouvé, ki entitilé « $1 » $2.\n\nJénéralman, sala ka sirvini an swivan roun lyannaj bò'd roun dif ki périmen oben bò'd listorik-a di roun paj ki siprimen.\n\nSi a pa sa ki la, zòt pitèt trouvé roun annonmanli annan progranm-an.\nSouplé, signalé li à roun [[Special:ListUsers/sysop|administratò]] é pa bliyé di endiké li URL-a di paj-a.", "missingarticle-rev": "(niméro di vèrsyon : $1)", "missingarticle-diff": "(diff : $1, $2)", "readonly_lag": "Baz-a di data té otonmatikman vérouyé pannan ki sèrvò-ya ségondèr ka réyaligné yé kò asou sèrvò prensipal-a", @@ -350,7 +350,7 @@ "protectedinterface": "Sa paj ka fourni tègs di lentèrfas pou lojisyèl-a asou sa wiki é sa protéjé pou évité abi-ya.\nPou ajouté oben modifyé dé anmòrfwézaj asou tout wiki, souplé, itilizé [https://translatewiki.net/ translatewiki.net], projè-a di réjyonnalizasyon di MediaWiki.", "editinginterface": "Panga : zòt ka modifiyé oun paj ki itilizé pou kréyé tègs-a di lentèrfas-a di lojisyèl.\nChanjman-yan asou sa paj ké répèrkité yé kò asou laparans-a di lentèrfas itilizatò-a pou ròt itilizatò-ya di sa wiki.", "translateinterface": "Pou ajouté oben modifyé dé anmòrfwézaj pou tout wiki, souplé, itilizé [https://translatewiki.net/ translatewiki.net], projè-a di lokalizasyon lengwistik di MediaWiki.", - "cascadeprotected": "Sa paj protéjé kont modifikasyon-yan pas li sa transkliz pa {{PLURAL:$1|paj-a ki ka swiv, ki té protéjé|paj-ya ki ka swiv, ki té protéjé}} ké lòpsyon « protèksyon an kaskad » aktivé :\n$2", + "cascadeprotected": "Sa paj protéjé kont modifikasyon-yan pas li sa transkliz pa {{PLURAL:$1|paj-a ki ka swiv, ki té protéjé|paj-ya ki ka swiv, ki té protéjé}} ké lòpsyon « protègsyon an kaskad » agtivé :\n$2", "namespaceprotected": "Zòt pa gen pèrmisyon-an di modifyé paj-ya di lèspas di non « $1 ».", "customcssprotected": "Zòt pa gen pèrmisyon-an di modifyé sa féy di stil CSS, pas li ka kontni paramèt pèrsonèl di rounòt itilizatò.", "customjsonprotected": "Zòt pa gen drwè di modifyé sa paj JSON pas li ka kontni paramèt pèrsonèl di rounòt itilizatò.", @@ -395,7 +395,7 @@ "cannotloginnow-title": "Enposib di konnègté so kò atchwèlman", "cannotloginnow-text": "Konnègsyon-an pa posib an itilizan $1.", "cannotcreateaccount-title": "Kréyasyon di kont enposib", - "cannotcreateaccount-text": "Kréyasyon-an dirèk di kont itilizatò pa aktivé asou sa wiki.", + "cannotcreateaccount-text": "Kréyasyon-an dirèk di kont itilizatò pa fika agtivé asou sa wiki.", "yourdomainname": "Zòt domenn :", "password-change-forbidden": "Zòt pa pouvé modifyé mo di pas asou sa wiki.", "externaldberror": "Swé roun lérò prodjwi so kò asou baz-a di data d'otantifikasyon, swé zòt pa otorizé à mété à jou zòt kont ègstèrn.", @@ -430,7 +430,7 @@ "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.", @@ -439,7 +439,7 @@ "createaccounterror": "Enposib di kréyé kont-a : $1", "nocookiesnew": "Kont itilizatò-a kréyé, mé zòt pa konnègté.\n{{SITENAME}} ka itilizé dé témwen (''cookies'') pou konsèrvé konnègsyon-an mé zòt dézagtivé yé.\nSouplé, agtivé yé é rikonnègté zòt kò ké menm non é menm modipas.", "nocookieslogin": "{{SITENAME}} itilizé dé témwen (''cookies'') pou konsèrvé konnègsyon-an mé zòt dézagtivé yé.\nSouplé, agtivé yé é rikonnègté zòt kò.", - "nocookiesfornew": "Kont itilizatò pa té kréyé, pas nou pa té pouvé idantifyé so lorijin.\nVérifyé ki zòt aktivé témwen-yan (''cookies''), roucharjé paj-a é éséyé òkò.", + "nocookiesfornew": "Kont itilizatò-a pa té fika kréyé, pas nou pa té pouvé idantifyé so lorijin.\nVérifyé ki zòt agtivé témwen-yan (''cookies''), roucharjé paj-a é éséyé òkò.", "nocookiesforlogin": "{{int:nocookieslogin}}", "createacct-loginerror": "Kont-a byen té kréyé mé zòt pa pouvé konnègté zòt kò otonmatikman.\nSouplé, [[Special:UserLogin|konnègté zòt kò manniyèlman]].", "noname": "Zòt pa sézi roun non d'itilizatò valid.", @@ -517,7 +517,7 @@ "botpasswords-label-delete": "Souprimé", "botpasswords-label-resetpassword": "Réyinisyalizé mo di pas", "botpasswords-label-grants": "Drwè aplikab :", - "botpasswords-help-grants": "Otorizasyon-yan ka pèrmèt di aksédé o drwè ki déja akòrdé à zòt kont itilizatò. Aktivé roun otorizasyon isi ka fourni laksè à pyès drwè ki zòt kont itilizatò pa gen dayò. Wè [[Special:ListGrants|tablo dé otorizasyon]] pou plis d’enfòrmasyon.", + "botpasswords-help-grants": "Lotorizasyon-yan ka pèrmèt di agsédé o drwè ki déja akòrdé à zòt kont itilizatò. Agtivé roun lotorizasyon isi ka fourni lagsè à pyès drwè ki zòt kont itilizatò péké ganyen dayò. Wè [[Special:ListGrants|tablo dé lotorizasyon]] pou plis di lenfòrmasyon.", "botpasswords-label-grants-column": "Akòrdé", "botpasswords-bad-appid": "Non-an di robo « $1 » pa valid.", "botpasswords-insert-failed": "Échèk di ajou-a di non di robo « $1 ». Ès i té ja ajouté ?", @@ -625,7 +625,7 @@ "permissionserrors": "Éròr di pèrmisyon", "permissionserrorstext-withaction": "Zòt pa pouvé $2, pou {{PLURAL:$1|rézon swivant}} :", "recreate-moveddeleted-warn": "Panga : zòt ka roukréyé oun paj ki té présédaman souprimé.\n\nAsouré-zòt ki li sa pertinan di pourswiv modifikasyon-yan asou sa paj.\nJournal dé souprésyon é dé déplasman pou sa paj sa afiché anba à tit di enfòrmasyon :", - "moveddeleted-notice": "Sa paj té souprimé. \nJournal dé souprésyon, dé protèksyon é dé déplasman di paj-a sa afiché anba pou référans.", + "moveddeleted-notice": "Sa paj té siprimen. \nJournal-ya dé siprésyon, dé protègsyon é dé déplasman pou paj-a sa afiché anba pou référans.", "content-model-wikitext": "wikitèks", "undo-failure": "Sa modifikasyon pa pouvé défèt : sala ké antré an konfli ké modifikasyon entèrmédjèr-ya.", "viewpagelogs": "Wè opérasyon-yan asou sa paj", @@ -637,10 +637,10 @@ "currentrevisionlink": "Wè vèrsyon atchwèl-a", "cur": "atch", "last": "dif", - "histlegend": "Sélèksyon di diff : koché bouton radjo-ya dé vèrsyon à konparé é apiyé asou antré oben asou bouton-an ki anba.
    \nLéjann : ({{int:cur}}) = diférans ké dannyé vèrsyon-an, ({{int:last}}) = diférans ké vèrsyon présédant-a, {{int:minoreditletter}} = modifikasyon minò.", + "histlegend": "Sélègsyon di diff : koché bouton radjo-ya dé vèrsyon à konparé é apiyé asou antré oben asou bouton-an ki anba.
    \nLéjann : ({{int:cur}}) = diférans ké dannyé vèrsyon-an, ({{int:last}}) = diférans ké vèrsyon présédan-an, {{int:minoreditletter}} = 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", @@ -693,8 +693,8 @@ "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.", @@ -716,7 +716,7 @@ "rcshowhideliu": "$1 itilizatò anréjistré", "rcshowhideliu-show": "Afiché", "rcshowhideliu-hide": "Maské", - "rcshowhideanons": "$1 itilizatò anonim-ya", + "rcshowhideanons": "$1 itilizatò annonnim-yan", "rcshowhideanons-show": "Afiché", "rcshowhideanons-hide": "Maské", "rcshowhidepatr": "$1 modifikasyon sirvéyé", @@ -776,7 +776,7 @@ "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", @@ -809,14 +809,14 @@ "dellogpage": "Journal dé souprésyon", "rollbacklink": "révoké", "rollbacklinkcount": "révoké $1 {{PLURAL:$1|modifikasyon}}", - "protectlogpage": "Journal dé protèksyon", + "protectlogpage": "Journal dé protègsyon", "protectedarticle": "protéjé « [[$1]] »", - "modifiedarticleprotection": "modifyé nivo di protèksyon di « [[$1]] »", + "modifiedarticleprotection": "modifyé nivo-a di protègsyon di « [[$1]] »", "protect-default": "Otorizé tout itilizatò-ya", "restriction-edit": "Modifyé", "restriction-move": "Rounonmen", "namespace": "Lèspas di non", - "invert": "Envèrsé sélèksyon-an", + "invert": "Envèrsé sélègsyon-an", "tooltip-invert": "Koché sa kaz pou kaché modifikasyon-yan dé paj annan lèspas di non sélèksyoné (ké lèspas di non asosyé si koché)", "namespace_association": "Lèspas di non asosyé", "tooltip-namespace_association": "Koché sa kaz pou enkli égalman lèspas di non di diskisyon oben di sijè, ki asosyé à lèspas di non ki sélèksyoné", @@ -895,11 +895,11 @@ "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}}", @@ -928,13 +928,13 @@ "pageinfo-title": "Enfòrmasyon pou « $1 »", "pageinfo-header-basic": "Enfòrmasyon di baz", "pageinfo-header-edits": "Listorik dé modifikasyon", - "pageinfo-header-restrictions": "Protèksyon di paj-a", + "pageinfo-header-restrictions": "Protègsyon di paj-a", "pageinfo-header-properties": "Propriyété di paj-a", "pageinfo-display-title": "Tit afiché", "pageinfo-default-sort": "Klé di tri pa défo", "pageinfo-length": "Tay di paj-a (an ògtè)", "pageinfo-article-id": "Niméro di paj-a", - "pageinfo-language": "Langaj di kontni di paj-a", + "pageinfo-language": "Lanng di kontni di paj-a", "pageinfo-content-model": "Modèl di kontni di paj-a", "pageinfo-robot-policy": "Endèksasyon pa robo", "pageinfo-robot-index": "Otorizé", @@ -950,8 +950,8 @@ "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)", @@ -988,6 +988,7 @@ "exif-exposureprogram-1": "Manniyèl", "namespacesall": "tout", "monthsall": "tout", + "confirm-purge-title": "Prijé sa paj", "imgmultipagenext": "paj swivant →", "imgmultigo": "Aksédé !", "imgmultigoto": "Alé koté paj $1", diff --git a/languages/i18n/gl.json b/languages/i18n/gl.json index d964196644..4f8282a6d4 100644 --- a/languages/i18n/gl.json +++ b/languages/i18n/gl.json @@ -382,9 +382,9 @@ "customcssprotected": "Non ten os permisos necesarios para modificar esta páxina de CSS, dado que contén a configuración persoal doutro usuario.", "customjsonprotected": "Non ten os permisos necesarios para modificar esta páxina JSON xa que contén a configuración persoal doutro usuario.", "customjsprotected": "Non ten os permisos necesarios para modificar esta páxina de JavaScript, dado que contén a configuración persoal doutro usuario.", - "sitecssprotected": "Non ten permiso para editar esta páxina CSS xa que pode afectar a tódolos visitantes", - "sitejsonprotected": "Non ten permiso para editar esta páxina JSON xa que pode afectar a tódolos visitantes", - "sitejsprotected": "Non ten permiso para editar esta páxina JavaScript xa que pode afectar a tódolos visitantes", + "sitecssprotected": "Non ten permiso para editar esta páxina CSS xa que isto pode afectar a tódolos visitantes.", + "sitejsonprotected": "Non ten permiso para editar esta páxina JSON xa que isto pode afectar a tódolos visitantes.", + "sitejsprotected": "Non ten permiso para editar esta páxina JavaScript xa que isto pode afectar a tódolos visitantes.", "mycustomcssprotected": "Non ten os permisos necesarios para editar esta páxina de CSS.", "mycustomjsonprotected": "Non ten permisos para editar esta páxina JSON.", "mycustomjsprotected": "Non ten os permisos necesarios para editar esta páxina de JavaScript.", @@ -3560,6 +3560,7 @@ "redirect-file": "Nome de ficheiro", "redirect-logid": "Identificador de rexistro", "redirect-not-exists": "Non se atopou o valor", + "redirect-not-numeric": "Valor non numérico", "fileduplicatesearch": "Procurar ficheiros duplicados", "fileduplicatesearch-summary": "Procurar ficheiros duplicados a partir do valor de hash (un mecanismo de comprobación).", "fileduplicatesearch-filename": "Nome do ficheiro:", @@ -4117,7 +4118,7 @@ "edit-error-long": "Erros:\n\n$1", "revid": "revisión $1", "pageid": "identificador de páxina $1", - "interfaceadmin-info": "$1\n\nOs permisos para editar os ficheiros CSS/JS/JSON separáronse recentemente do dereito editinterface. Se non comprende porqué está vendo este erro, vexa [[mw:MediaWiki_1.32/interface-admin]].", + "interfaceadmin-info": "$1\n\nOs permisos para editar os ficheiros CSS/JS/JSON globais separáronse recentemente do dereito editinterface. Se non comprende porqué está vendo este erro, vexa [[mw:MediaWiki_1.32/interface-admin]].", "rawhtml-notallowed": "As marcas <html> non poden usarse fóra das páxinas normais.", "gotointerwiki": "Deixando {{SITENAME}}", "gotointerwiki-invalid": "O título especificado non é válido.", diff --git a/languages/i18n/gsw.json b/languages/i18n/gsw.json index 7554e128d6..0e4d71fd8a 100644 --- a/languages/i18n/gsw.json +++ b/languages/i18n/gsw.json @@ -638,7 +638,7 @@ "token_suffix_mismatch": "'''Dyyni Bearbeitig isch zruckgwise wore, wel Dyy Browser Zeiche im Bearbeite-Token verstimmlet het.\nS Spichere cha dr Inhalt vu dr Syte hii mache. Des git s e mänkmol, wänn eber e anonyme Proxy-Dienscht brucht, wu Fähler macht.'''", "edit_form_incomplete": "'''Dr Inhalt vum Bearbeitigsformular isch nit vollständig zum Server chuu. Bitte prief Dyy Bearbeitigen uf Vollständigkeit un versuech s nomol.'''", "editing": "Bearbeite vo «$1»", - "creating": "Am Aalege vu „$1“", + "creating": "„$1“ aalege", "editingsection": "Bearbeite vo «$1» (Absatz)", "editingcomment": "Bearbeite vu $1 (Neje Abschnitt)", "editconflict": "Bearbeitigs-Konflikt: «$1»", diff --git a/languages/i18n/he.json b/languages/i18n/he.json index fc7756e75b..924077c9e3 100644 --- a/languages/i18n/he.json +++ b/languages/i18n/he.json @@ -3587,6 +3587,7 @@ "redirect-file": "שם קובץ", "redirect-logid": "מזהה יומן", "redirect-not-exists": "הערך לא נמצא", + "redirect-not-numeric": "הערך אינו מספרי", "fileduplicatesearch": "חיפוש קבצים כפולים", "fileduplicatesearch-summary": "חיפוש קבצים כפולים על בסיס ערכי הגיבוב שלהם.", "fileduplicatesearch-filename": "קובץ:", diff --git a/languages/i18n/hr.json b/languages/i18n/hr.json index 805beca1f6..1557e56b5b 100644 --- a/languages/i18n/hr.json +++ b/languages/i18n/hr.json @@ -1283,6 +1283,8 @@ "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", @@ -1294,7 +1296,7 @@ "rcfilters-highlighted-filters-list": "Istaknuto: $1", "rcfilters-quickfilters": "Spremljeni filtri", "rcfilters-quickfilters-placeholder-title": "Još nema spremljenih filtara", - "rcfilters-quickfilters-placeholder-description": "Da biste spremili postavke filtra i rabili ih poslije, kliknite ispod na oznaku dočitnice u polju Aktivni filtri.", + "rcfilters-quickfilters-placeholder-description": "Da biste spremili postavke filtra i rabili ih poslije, kliknite ispod na oznaku vrpce u polju Aktivni filtri.", "rcfilters-savedqueries-defaultlabel": "Spremljeni filteri", "rcfilters-savedqueries-rename": "Preimenuj", "rcfilters-savedqueries-setdefault": "Postavi kao predodređeno", @@ -1391,6 +1393,9 @@ "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": "Stranice na koje se povezuje izabrana stranica", + "rcfilters-filter-showlinkedto-option-label": "Stranice koje povezuju na izabranu stranicu", "rcnotefrom": "Ispod {{PLURAL:$5|je izmjena|su izmjene}} od $3, $4 (prikazano ih do $1).", "rclistfromreset": "Vrati na zadano izbor datuma", "rclistfrom": "Prikaži nove promjene počevši od $3 $2", diff --git a/languages/i18n/hu.json b/languages/i18n/hu.json index 3e79a2eb76..6f2dac31f1 100644 --- a/languages/i18n/hu.json +++ b/languages/i18n/hu.json @@ -1223,6 +1223,9 @@ "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", @@ -1264,10 +1267,11 @@ "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", @@ -1807,9 +1811,9 @@ "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]]):", @@ -3367,6 +3371,7 @@ "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", @@ -4039,6 +4044,7 @@ "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 editinterface 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.", diff --git a/languages/i18n/hy.json b/languages/i18n/hy.json index d6c6350201..d759491d93 100644 --- a/languages/i18n/hy.json +++ b/languages/i18n/hy.json @@ -1799,6 +1799,7 @@ "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": "Այս էջի տպելու տարբերակ", diff --git a/languages/i18n/io.json b/languages/i18n/io.json index 0c1916f6ed..7df629bc27 100644 --- a/languages/i18n/io.json +++ b/languages/i18n/io.json @@ -362,6 +362,8 @@ "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.", @@ -523,14 +525,19 @@ "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.", @@ -547,13 +554,16 @@ "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", @@ -637,9 +647,15 @@ "noarticletext-nopermission": "Til nun ne existas texto en ica pagino.\nVu povas [[Special:Search/{{PAGENAME}}|serchar ica titulo]] en altra pagini, [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} serchar en la relata registri], o [{{fullurl:{{FULLPAGENAME}}|action=edit}} redaktar ica pagino], 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": "Atencez: Pos registragar, vu probable mustas renovigar la tempala-magazino di vua navigilo por vidar la chanji.\n* Firefox / Safari:Tenez Shift kliktante Reload, o presez sive Ctrl-F5 sive Ctrl-R (⌘-R ye Mac);\n* Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R en komputeri Mac)\n* Internet Explorer: Tenez Ctrl kliktante Refresh, o presez Ctrl-F5\n* Opera: Irez a Menu → Settings (Opera → Preferences ye komputeri Mac) e pose a Privacy & security → Clear browsing data → Cached images and files.", + "usercssyoucanpreview": "Sugestajo: Uzez la butono \"{{int:showpreview}}\" por probar vua nova stilo CSS ante konservar ol.", + "userjsonyoucanpreview": "Sugestajo: Uzes la butono \"{{int:showpreview}}\" por provar vua nova JSON ante konservar ol.", + "userjsyoucanpreview": "Sugestajo: 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": "Memorez ke vu nur previdas vua JSON (JavaScript Object Notation). Ol ankore ne konservesis!", "userjspreview": "'''Memorez ke vu nur previdas vua JavaScript di uzero. Ol ne registragesis ankore!'''", + "sitecsspreview": "Memorez ke vu nur previdas vua uzero-CSS. Ol ankore ne konservesis!", "updated": "(Aktualigita)", "note": "'''Noto:'''", "previewnote": "Atencez ke ico esas nur prevido. Ol ne registragesis ankore!", @@ -1723,6 +1739,7 @@ "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", diff --git a/languages/i18n/it.json b/languages/i18n/it.json index f7e84411b4..b6541f82fc 100644 --- a/languages/i18n/it.json +++ b/languages/i18n/it.json @@ -3552,6 +3552,7 @@ "redirect-file": "Nome del file", "redirect-logid": "ID registro", "redirect-not-exists": "Valore non trovato", + "redirect-not-numeric": "Valore non numerico", "fileduplicatesearch": "Ricerca dei file duplicati", "fileduplicatesearch-summary": "Ricerca di eventuali duplicati del file in base al valore di ''hash''.", "fileduplicatesearch-filename": "Nome del file:", diff --git a/languages/i18n/ja.json b/languages/i18n/ja.json index b0b566c5fb..c0b06f8022 100644 --- a/languages/i18n/ja.json +++ b/languages/i18n/ja.json @@ -92,7 +92,8 @@ "Yusuke1109", "Afaz", "Oxbqskeptzwizkgdcxakhnrb", - "Suyama" + "Suyama", + "고솜" ] }, "tog-underline": "リンクの下線:", @@ -3746,6 +3747,7 @@ "redirect-file": "ファイル名", "redirect-logid": "記録 ID", "redirect-not-exists": "値が見つかりません", + "redirect-not-numeric": "値が数字ではありません", "fileduplicatesearch": "重複ファイルの検索", "fileduplicatesearch-summary": "重複ファイルをハッシュ値に基づいて検索します。", "fileduplicatesearch-filename": "ファイル名:", @@ -4000,10 +4002,10 @@ "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": "(なし)", @@ -4311,7 +4313,7 @@ "edit-error-long": "エラー:\n\n\n\n$1", "revid": "版 $1", "pageid": "ページID $1", - "interfaceadmin-info": "$1\n\nサイト全体のCSS/JavaScriptの編集権限は、最近editinterface 権限から分離されました。なぜこのエラーが表示されるのかわからない場合は、[[mw:MediaWiki_1.32/interface-admin]]をご覧ください。", + "interfaceadmin-info": "$1\n\nサイト全体のCSS/JavaScriptの編集権限は、最近editinterface 権限から分離されました。なぜこのエラーが表示されたのかわからない場合は、[[mw:MediaWiki_1.32/interface-admin]]をご覧ください。", "rawhtml-notallowed": "<html>タグは通常ページ以外では使用できません。", "gotointerwiki": "{{SITENAME}}を離れる", "gotointerwiki-invalid": "指定したページは無効です。", diff --git a/languages/i18n/jv.json b/languages/i18n/jv.json index 083fd5f458..615763f2e3 100644 --- a/languages/i18n/jv.json +++ b/languages/i18n/jv.json @@ -37,7 +37,7 @@ "tog-watchmoves": "Wuwuh kaca lan barkas lih-lihanku menyang pawawanganku", "tog-watchdeletion": "Wuwuh kaca lan barkas busakanku menyang pawawanganku", "tog-watchuploads": "Wuwuh barkas anyar unggahanku menyang pawawanganku", - "tog-watchrollback": "Wuwuh kaca sing takpulihaké menyang pawawanganku", + "tog-watchrollback": "Wuwuh kaca kang dakpulihaké menyang pawawanganku", "tog-minordefault": "Tengeri kabèh besutan minangka besutan cilik sacara baku", "tog-previewontop": "Deleng pratuduh sadurungé mbesut kothak", "tog-previewonfirst": "Delelng pratuduh nalika mbesut pisanan", @@ -152,6 +152,8 @@ "index-category": "Kaca kaindhèks", "noindex-category": "Kaca ora kaindhèks", "broken-file-category": "Kaca mawa pranala barkas rusak", + "categoryviewer-pagedlinks": "($1) ($2)", + "category-header-numerals": "$1–$2", "about": "Bab", "article": "Kaca isi", "newwindow": "(buka mawa jendhéla anyar)", @@ -251,6 +253,9 @@ "versionrequired": "Dibutuhaké MediaWiki vèrsi $1", "versionrequiredtext": "MediaWiki vèrsi $1 dibutuhaké kanggo nggunakaké kaca iki. Mangga mirsani [[Special:Version|kaca iki]]", "ok": "Oké", + "pagetitle": "$1 - {{SITENAME}}", + "pagetitle-view-mainpage": "{{SITENAME}}", + "backlinksubtitle": "← $1", "retrievedfrom": "Dijupuk saka \"$1\"", "youhavenewmessages": "{{PLURAL:$3|Panjenengan duwé}} $1 ($2).", "youhavenewmessagesfromusers": "{{PLURAL:$4|Panjenengan duwé}} $1 saka {{PLURAL:$3|panganggo liya|$3 panganggo}} ($2).", @@ -282,6 +287,7 @@ "site-atom-feed": "Lebon atom $1", "page-rss-feed": "\"$1\" ''RSS Feed''", "page-atom-feed": "Pakan atom \"$1\"", + "feed-atom": "Atom", "red-link-title": "$1 (kaca ora ana)", "sort-descending": "Urutaké medhun", "sort-ascending": "Urutaké munggah", @@ -311,7 +317,7 @@ "readonly": "Umpak data kagembok", "enterlockreason": "Isi alesan ngreksa, kalebu rencana kapan pareksané bakal dibukak", "readonlytext": "Juru administrasi sistem sing ngunci iku medhar mangkéné: $1", - "missing-article": "Basis data ora bisa nemokaké tèks kaca sing kuduné ana, yaiku \"$1\" $2.\nBab iki bisasané disebabaké déning pranala daluwarsa menyang revisi sadurungé kaca sing wis dibusak.\nYèn dudu iki panyebabé, panjenengan manawa bisa nemokaké kasalahan (''bug'') jroning piranti alus (''software''). Mangga dilapuraké bab iki menyang [[Special:ListUsers/sysop|administrator]], kanthi nyebutaké alamat URL sing dituju", + "missing-article": "Basish dhatahé ora bisa nemokaké tulisan ing siji kaca kang kuduné ana, ya iku \"$1\" $2.\n\nMasalah iki sok ana amarga panjenengan ngeklik pranala sajarah kang lawas ing kaca kang wis kabusek.\n\nManawa ora amarga iku, panjenengan bokmanawa nemu ama ing piranti alusé.\nSumangga lapuraké ama mau menyang [[Special:ListUsers/sysop|pangurus]], kanthi nulisaké URL-é.", "missingarticle-rev": "(owahan#: $1)", "missingarticle-diff": "(Béda: $1, $2)", "readonly_lag": "Database wis dikunci mawa otomatis sawetara database sékundhèr lagi nglakoni sinkronisasi mawa database utama", @@ -332,16 +338,16 @@ "delete-hook-aborted": "Pambusakan dibatalaké déning ''hook''.\nOra ana alesané.", "no-null-revision": "Ora isa nggawe revisi 'null' anyar kanggo kaca \"$1\"", "badtitle": "Sesirah ala", - "badtitletext": "Sesirahing kaca sing disuwun ora trep, kosong, utawa salah nggayut menyang sesirah antarabasa utawa antarawiki.\nMungkin tulisané ngandhut pralambang cacah siji utawa luwih sing ora kena dianggo tumraping sesirah.", - "title-invalid-empty": "Sesirah kaca sing dikarepaké kosong utawa mung ngemu jenengé mandala-aran.", - "title-invalid-utf8": "Sesirah kaca sing dikarepaké ngemu reroncèn UTF-8 sing ora sah.", - "title-invalid-interwiki": "Sesirah kaca sing dikarepaké ngemu pranala interwiki sing ora bisa dicakaké dadi sesirah", + "badtitletext": "Sesirah kaca kang panjenengan suwun ora trep, kosong, utawa salah nggayut menyang sesirah antarabasa utawa antarawiki.\nTulisané bokmanawa ngemu karakter kang ora kena kaanggo ing sesirah.", + "title-invalid-empty": "Sesirah kaca kang panjenengan karsakaké kosong utawa mung ngemu jenengé mandala aran.", + "title-invalid-utf8": "Sesirah kaca kang panjenengan karsakaké ngemu reroncèn UTF-8 kang ora trep.", + "title-invalid-interwiki": "Sesirah kaca kang panjenengan karsakaké ngemu pranala interwiki kang ora bisa katrapaké ing sesirah.", "title-invalid-talk-namespace": "Sesirah kaca kang dikarepaké ngener ing kaca parembugan kang ora ana.", - "title-invalid-characters": "Sesirah kaca sing dikarepaké ngemu karakter sing ora sah: \"$1\".", + "title-invalid-characters": "Sesirah kaca kang panjenengan karsakaké ngemu karakter kang ora trep: \"$1\".", "title-invalid-relative": "Sesirah ngemu alamat rélatif. Sesirah kaca relatif (./, ../) iku ora sah amarga ora bisa ditekani lumantar pangluru.", - "title-invalid-magic-tilde": "Sesirah kaca sing dikarepaké ngemu reroncèn tilda (~~~) sing ora sah.", - "title-invalid-too-long": "Sesirah kaca sing dikarepaké kedawan. Kuduné ora munjuli $1 bèt sarana kodhé UTF-8.", - "title-invalid-leading-colon": "Sesirah kaca sing dikarepaké ngemu titik loro sing ora sah ing ngarepé.", + "title-invalid-magic-tilde": "Sesirah kaca kang panjenengan karsakaké ngemu reroncèn tildhe (~~~) kang ora trep.", + "title-invalid-too-long": "Sesirah kaca kang panjenengan karsakaké kedawan. Sesirahé ora kena munjuli {{PLURAL:$1|bèt|bèt}} ing pangodhe UTF-8.", + "title-invalid-leading-colon": "Sesirah kaca kang panjenengan karsakaké ngemu titik loro kang ora trep ing arepé.", "perfcached": "Dhata ing ngisor iki kasimpen ing telih lan mungkin durung dianyari. Paling akèh ana {{PLURAL:$1|sakasil|$1 kasil}} ing telih iku.", "perfcachedts": "Dhata ing ngisor iki kasimpen ing telih, lan pungkasan dianyari $1. Paling akèh ana {{PLURAL:$4|sakasil|$4 kasil}} ing telih iku.", "querypage-no-updates": "Update saka kaca iki lagi dipatèni. Data sing ana ing kéné saiki ora bisa bakal dibalèni unggah manèh.", @@ -353,7 +359,7 @@ "viewsourcetext": "Panjenengan bisa ndeleng lan nurun sumberé kaca iki.", "viewyourtext": "Panjenengan bisa ndeleng lan nurun sumberé besutané panjenengan menyang kaca iki.", "protectedinterface": "Kaca iki isiné tèks antarmuka sing dienggo software lan wis dikunci kanggo menghindari kasalahan.", - "editinginterface": "Pélik: Panjenengan lagi mbesut kaca sing kanggo ngisèni tèks mukantarané piranti alus.\nOwahan tumrap kaca iki bakal mrabawani cakriké mukantarané panganggo liya ing wiki iki.", + "editinginterface": "Pepéling: Panjenengan lagi mbesut kaca kang ngemu tulisan kanggo mukantarané piranti alus.\nNgowahi kaca iki bakal mrabawani cakrik mukantarané panganggo liya ing wiki iki.", "translateinterface": "Saperlu nambah utawa ngowah pertalan tumrap kabèh wiki, mangga anggoa [https://translatewiki.net/ translatewiki.net] minangka proyèk panglokaling MediaWiki.", "cascadeprotected": "Kaca iki wis direksa saka besutan amarga katransklusi ing {{PLURAL:$1|kaca, sing|kaca-kaca, sing}} kareksa mawa pilihan \"runut\" murub:\n$2", "namespaceprotected": "Panjenengan ora duwé idin kanggo mbesut kaca ing mandala aran $1.", @@ -429,7 +435,7 @@ "createacct-benefit-heading": "{{SITENAME}} digawé déning wong-wong kaya panjenengan.", "createacct-benefit-body1": "{{PLURAL:$1|besutan}}", "createacct-benefit-body2": "{{PLURAL:$1|kaca}}", - "createacct-benefit-body3": "{{PLURAL:$1|sing nyumbang}} mentas waé", + "createacct-benefit-body3": "{{PLURAL:$1|kang nyumbang}} mentas waé", "badretype": "Tembung wadi sing panjenengan isèkaké ora gathuk.", "usernameinprogress": "Panggawéning akun tumrap jeneng panganggo iki tembé lumaku.\nEntèni sadhéla.", "userexists": "Jeneng panganggo sing dilebokaké lagi dianggo.\nMangga pilih jeneng liya.", @@ -506,6 +512,7 @@ "botpasswords-existing": "Tembung wadiné bot sing cumepak", "botpasswords-createnew": "Gawé anyar tembung wadiné bot", "botpasswords-editexisting": "Besut tembung wadiné bot sing anyar", + "botpasswords-label-needsreset": "(tembung wadi kudu panjenengan ambali setèl)", "botpasswords-label-appid": "Jeneng bot:", "botpasswords-label-create": "Gawé", "botpasswords-label-update": "Anyari", @@ -576,6 +583,9 @@ "savechanges": "Simpen owahan", "publishpage": "Babar kaca", "publishchanges": "Babar owahan", + "savearticle-start": "Simpen kaca...", + "savechanges-start": "Simpen owahan...", + "publishpage-start": "Babar kaca...", "publishchanges-start": "Babar owahan...", "preview": "Pratuduh", "showpreview": "Deleng pratuduh", @@ -585,7 +595,7 @@ "missingsummary": "Pangéling-éling: Panjenengan ora ngisèni ringkesané besutan.\nManawa panjenengan mencèt \"$1\" manèh, besutané panjengan bakal kasimpen tanpa katerangan.", "selfredirect": "Pepéling: Panjenengan ngalih kaca iki menyang kaca iki dhéwé.\nPanjenengan mungkin salah wènèh paraning alihan utawa salah mbesut kaca.\nYèn panjenengan ngeklik \"$1\" manèh, kaca alihan bakal digawé.", "missingcommenttext": "Mangga awèh tanggepan.", - "missingcommentheader": "'''Pangéling:''' Sampéyan durung nyadhiyakaké judhul/jejer kanggo tanggepan iki.\nYèn Sampéyan klik \"$1\" manèh, suntingan Sampéyan bakal kasimpen tanpa kuwi.", + "missingcommentheader": "Pangéling-éling: Panjenengan durung mènèhi subyèk tumrap tanggapan iki.\nManawa panjenengan ngeklik \"$1\" manèh, besutané panjenengan bakal kasimpen tanpa subyèk.", "summary-preview": "Pratuduh ringkesan besutan:", "subject-preview": "Pratuduh jejer:", "previewerrortext": "Ana masalah nalika njajal mratuduhaké owahané panjenengan.", @@ -653,6 +663,7 @@ "template-semiprotected": "(semu kareksa)", "hiddencategories": "Kaca iki anggotaning {{PLURAL:$1|1 kategori wadi|$1 kategori wadi}}:", "edittools": "", + "edittools-upload": "-", "nocreatetext": "{{SITENAME}} matesi bisané panjenengan nggawé kaca anyar.\nPanjenengan bisa bali lan mbesut kaca sing ana, utawa [[Special:UserLogin|mlebu log utawa nggawé akun]].", "nocreate-loggedin": "Panjenengan ora kagungan idin kanggo nggawé kaca anyar.", "sectioneditnotsupported-title": "Panyuntingan bagéyan ora kasengkuyungan", @@ -679,6 +690,7 @@ "content-model-text": "tulisan barès", "content-model-javascript": "JavaScript", "content-model-css": "CSS", + "content-model-json": "JSON", "expensive-parserfunction-warning": "Pènget: Kaca iki ngandhut kakèhan panggunan fungsi ''parser'' sing larang.\n\nSajatiné kuduné duwé kurang saka {{PLURAL:$2|panggilan|panggilan}}, saiki ana {{PLURAL:$1|$1 panggilan|$1 panggilan}}.", "expensive-parserfunction-category": "Kaca-kaca mawa panggunan fungsi ''parser'' sing kakèhan", "post-expand-template-inclusion-warning": "Pènget: Cithakan klebu ukurané kegedhèn.\nSawetara cithakan bakal dilirwakaké.", @@ -823,7 +835,7 @@ "difference-title-multipage": "Béda antarané kaca \"$1\" lan \"$2\"", "difference-multipage": "(Prabédhan antar kaca)", "lineno": "Larik $1:", - "compareselectedversions": "Bandhingaké révisi sing kapilih", + "compareselectedversions": "Bandhingaké révisi kang panjenengan pilih", "showhideselectedversions": "Tampilaké/dhelikaké révisi kapilih", "editundo": "wurung", "diff-empty": "(Ora ana béda)", @@ -832,6 +844,7 @@ "diff-multi-manyusers": "({{PLURAL:$1|Siji révisi langsung|$1 révisi langsung}} déning {{PLURAL:$2|panganggo|panganggo}} $2 ora katuduhaké)", "difference-missing-revision": "{{PLURAL:$2|Sak pambenahan|$2 pambenahan}} saka prabédan iki ($1) {{PLURAL:$2|ora ditemokaké|ora ditemokaké}}.\n\nIki biasané kasebab pranala prabedan sing wis ora kanggo saka kaca isi wis dibusak.\nRinciané bisa ditemokaké nèng [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log busak].", "searchresults": "Kasiling golèk", + "search-filter-title-prefix-reset": "Golèk kabèh kaca", "searchresults-title": "Kasiling golèk \"$1\"", "titlematches": "Sesirah kaca cocog", "textmatches": "Tèks artikel sing cocog", @@ -860,7 +873,7 @@ "search-section": "(pérangan $1)", "search-category": "(kategori $1)", "search-file-match": "(cocog karo isi barkas)", - "search-suggest": "Apa sing panjenengan karepaké iki: $1", + "search-suggest": "Apa kang panjenengan karsakaké iki: $1", "search-rewritten": "Tuduhaké kasilé $1, nanging golèkaké $2.", "search-interwiki-caption": "Kasil saka proyèk-proyèk sababon", "search-interwiki-default": "Wohing panggolèk $1:", @@ -903,7 +916,7 @@ "prefs-editwatchlist-clear": "Resiki pawawanganing sampéyan", "prefs-watchlist-days": "Cacahé dina sing dituduhaké ing dhaftar pangawasan:", "prefs-watchlist-days-max": "Maksimum $1 {{PLURAL:$1|dina|dina}}", - "prefs-watchlist-edits": "Cacahé suntingan maksimum sing dituduhaké ing dhaftar pangawasan sing luwih jangkep:", + "prefs-watchlist-edits": "Cacah maksimum owahan kang kapacak ing pawawangan:", "prefs-watchlist-edits-max": "Gunggung maksimum: 1000", "prefs-watchlist-token": "Tokening pawawangan:", "prefs-misc": "Liya-liya", @@ -955,8 +968,10 @@ "youremail": "Layang-èl:", "username": "{{GENDER:$1|Jeneng panganggo}}:", "prefs-memberingroups": "{{GENDER:$2|Anggota}} saka {{PLURAL:$1|golongan}}:", + "prefs-memberingroups-type": "$1", "group-membership-link-with-expiry": "$1 (tekan $2)", "prefs-registration": "Wektu régistrasi:", + "prefs-registration-date-time": "$1", "yourrealname": "Jeneng asli:", "yourlanguage": "Basa sing dianggo:", "yourvariant": "Werna basa isi:", @@ -1004,12 +1019,15 @@ "saveusergroups": "Simpen golongan {{GENDER:$1|panganggo}}", "userrights-groupsmember": "Anggota saka:", "userrights-groupsmember-auto": "Anggota implisit saka:", + "userrights-groupsmember-type": "$1", "userrights-groups-help": "Panjenengan bisa ngowahi grup-grup sing ana panganggoné iki.\n* Kothak sing dicenthang tegesé panganggo iki ana sajroné grup iku.\n* Kothak sing ora dicenthang tegesé panganggo iku ora ana ing grup iku.\n* Tandha bintang * tegesé panjenengan ora bisa ngilangi grup iku yèn wis tau nambah, utawa sawalikané.", "userrights-reason": "Alesan:", "userrights-no-interwiki": "Panjenengan ora ana hak kanggo ngowahi hak panganggo ing wiki liyané.", "userrights-nodatabase": "Basis data $1 ora ana utawa ora lokal.", "userrights-changeable-col": "Grup sing bisa panjenengan owahi", "userrights-unchangeable-col": "Grup sing ora bisa diowahi panjenengan", + "userrights-irreversible-marker": "$1*", + "userrights-no-shorten-expiry-marker": "$1#", "userrights-expiry-current": "Kadaluwarsa $1", "userrights-expiry-none": "Ora kadaluwarsa", "userrights-expiry": "Kadaluwarsa:", @@ -1069,7 +1087,7 @@ "right-deleterevision": "Busak lan wurung busak owahan tinamtuné kaca", "right-deletedhistory": "Ndeleng sajarah èntri-èntri kabusak, tanpa bisa ndeleng apa sing dibusak", "right-deletedtext": "Deleng tèks sing dibusak lan owah-owahan antarané révisi sing dibusak", - "right-browsearchive": "Golèk kaca-kaca sing wis dibusak", + "right-browsearchive": "Golèk kaca kang wis kabusek", "right-undelete": "Wurung busak kaca", "right-suppressrevision": "Deleng, dhelikaké, lan wurung dhelikaké owahan tinamtu kaca-kacané panganggo sembarang", "right-viewsuppressed": "Deleng owahan sing didhelikaké saka panganggo sembarang", @@ -1079,9 +1097,9 @@ "right-hideuser": "Blokir jeneng panganggo, lan delikna saka umum", "right-ipblock-exempt": "Bypass pamblokiran IP, pamblokiran otomatis lan pamblokiran rangkéan", "right-unblockself": "Bukak blokirané dhéwéké", - "right-protect": "Owahi tataran rereksan lan besut kaca sing direksa-runtun", - "right-editprotected": "Besut kaca sing direksa kanthi \"{{int:protect-level-sysop}}\"", - "right-editsemiprotected": "Owah kaca-kaca sing direksa dadi \"{{int:protect-level-autoconfirmed}}\"", + "right-protect": "Owahi tataran rereksan lan besut kaca kang direksa-runtun", + "right-editprotected": "Besut kaca kang kareksa \"{{int:protect-level-sysop}}\"", + "right-editsemiprotected": "Owah kaca kang kareksa \"{{int:protect-level-autoconfirmed}}\"", "right-editcontentmodel": "Besut modhèl kontèn kaca", "right-editinterface": "Besut antarmuka panganggo", "right-editusercss": "Besut barkas-barkas CSS panganggo liya", @@ -1101,7 +1119,7 @@ "right-patrol": "Tandhani besutané wong liya yèn wis kapriksa", "right-autopatrol": "Gawé supaya suntingan-suntingan ditandhani minangka wis dipatroli", "right-patrolmarks": "Ndeleng tandha-tandha patroli owah-owahan anyar", - "right-unwatchedpages": "Tuduhna daftar kaca-kaca sing ora diawasi", + "right-unwatchedpages": "Deleng pratélan kaca kang ora ingawasan", "right-mergehistory": "Gabung sajarah kaca", "right-userrights": "Besut kabèh hak panganggo", "right-userrights-interwiki": "Besut hak-haking panganggo asal wiki jaba", @@ -1125,8 +1143,8 @@ "grant-editmycssjs": "Besut CSS/JavaScript panganggomu", "grant-editmyoptions": "Besut préferènsi panganggomu", "grant-editmywatchlist": "Besut pawawangané panjenengan", - "grant-editpage": "Besut kaca sing ana", - "grant-editprotected": "Besut kaca sing direksa", + "grant-editpage": "Besut kaca kang ana", + "grant-editprotected": "Besut kaca kang kareksa", "grant-highvolume": "Besutan gedhi", "grant-oversight": "Dhelikaké panganggo dalah révisiné", "grant-patrol": "Awasi owahané kaca", @@ -1137,7 +1155,7 @@ "grant-uploadeditmovefile": "Unggah, ganti, lan lih barkas", "grant-uploadfile": "Unggah barkas anyar", "grant-basic": "Hak pokok", - "grant-viewdeleted": "Deleng barkas lan kaca sing dibusak", + "grant-viewdeleted": "Deleng barkas lan kaca kang kabusek", "grant-viewmywatchlist": "Deleng pawawangané panjenengan", "grant-viewrestrictedlogs": "Deleng isian log sing winates", "newuserlogpage": "Log panganggo anyar", @@ -1167,7 +1185,7 @@ "action-deletelogentry": "busak isian log", "action-deletedhistory": "deleng sajarah sing dibusak sawijiné kaca", "action-deletedtext": "deleng tèks révisi sing dibusak", - "action-browsearchive": "nggolèki kaca-kaca sing wis dibusak", + "action-browsearchive": "golèk kaca kang wis kabusek", "action-undelete": "wurung busak kaca", "action-suppressrevision": "tinjo lan balèkaké révisi sing didhelikaké", "action-suppressionlog": "deleng log priangga iki", @@ -1178,7 +1196,7 @@ "action-importupload": "impor kaca iki saka pamunggahan berkas", "action-patrol": "nandhani besutan wong liya yèn wis kapriksa", "action-autopatrol": "nandhani besutané panjenengan dhéwé yèn wis kapriksa", - "action-unwatchedpages": "deleng pratélan kaca sing ingawasan", + "action-unwatchedpages": "deleng pratélan kaca kang ingawasan", "action-mergehistory": "nggabungaké sajarah kaca iki", "action-userrights": "besut kabèh hak panganggo", "action-userrights-interwiki": "besut hak aksès panganggo ing wiki liyané", @@ -1196,6 +1214,7 @@ "action-deletechangetags": "busak tag saka sasana dhata", "action-purge": "buwang kaca iki", "nchanges": "$1 {{PLURAL:$1|pangowahan|owah-owahan}}", + "ntimes": "$1×", "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|saka keri dhewe mrene}}", "enhancedrc-history": "sajarah", "recentchanges": "Owahan-owahan anyar", @@ -1212,15 +1231,22 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (uga delengen [[Special:NewPages|pratélané kaca-kaca anyar]])", "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Tuduhaké", + "rcfilters-tag-remove": "Busek '$1'", "rcfilters-legend-heading": "Pratélané cekakan:", "rcfilters-other-review-tools": "Piranti pamriksa liyané", "rcfilters-group-results-by-page": "Golongaké kasilé miturut kacané", "rcfilters-activefilters": "Saringan murub", + "rcfilters-activefilters-hide": "Dhelikaké", + "rcfilters-activefilters-show": "Tuduhaké", "rcfilters-advancedfilters": "Saringan lanjutan", "rcfilters-limit-title": "Kasil kang arep dituduhaké", + "rcfilters-limit-and-date-label": "$1 {{PLURAL:$1|owahan|owahan}}, $2", + "rcfilters-date-popup-title": "Dawané wektu kang arep panjenengan golèki", "rcfilters-days-title": "Dina-dina sing mentas waé", "rcfilters-hours-title": "Jam-jam sing mentas waé", "rcfilters-days-show-days": "$1 {{PLURAL:$1|dina|dina}}", + "rcfilters-days-show-hours": "$1 {{PLURAL:$1|jam|jam}}", + "rcfilters-highlighted-filters-list": "Kasuwur: $1", "rcfilters-quickfilters": "Saringan sumimpen", "rcfilters-quickfilters-placeholder-title": "Durung ana saringan kang kasimpen", "rcfilters-quickfilters-placeholder-description": "Saperlu nyimpen setèlaning saringan lan nganggo setèlan iku manèh ing tembé, kliken ikon markah buku ing babagan Saringan Murub ing ngisor.", @@ -1230,11 +1256,15 @@ "rcfilters-savedqueries-unsetdefault": "Wutung ndadèkaké baku", "rcfilters-savedqueries-remove": "Busak", "rcfilters-savedqueries-new-name-label": "Jeneng", + "rcfilters-savedqueries-new-name-placeholder": "Wedharaké ancasé saringané", "rcfilters-savedqueries-apply-label": "Gawé saringan", + "rcfilters-savedqueries-apply-and-setdefault-label": "Gawé saringan baku", "rcfilters-savedqueries-cancel-label": "Wurung", "rcfilters-savedqueries-add-new-title": "Simpen setèlané saringan sing saiki", + "rcfilters-savedqueries-already-saved": "Saringan iki wis kasimpen. Ganti setèlané panjenengan saperlu nggawé Saringan Kasimpen kang anyar.", "rcfilters-restore-default-filters": "Pulihaké saringan gawan", "rcfilters-clear-all-filters": "Resiki kabèh saringan", + "rcfilters-show-new-changes": "Deleng owah-owahan anyar dhéwé", "rcfilters-search-placeholder": "Owah-owahan saringan (anggo menu utawa golèk jeneng saringan)", "rcfilters-invalid-filter": "Saringan ora sah", "rcfilters-empty-filter": "Ora ana saringan sing aktif. Kabèh sumbangan katuduhaké.", @@ -1251,13 +1281,13 @@ "rcfilters-filter-editsbyself-description": "Pisumbangé panjenengan dhéwé.", "rcfilters-filter-editsbyother-label": "Owah-owahané liyan", "rcfilters-filter-editsbyother-description": "Kabèh owahan kajaba duwèké panjenengan.", - "rcfilters-filtergroup-userExpLevel": "Tataran pangalaman (mung kanggo panganggo kadhaftar)", + "rcfilters-filtergroup-userExpLevel": "Pandhaftaran lan pangalaman pangguna", "rcfilters-filter-user-experience-level-registered-label": "Kadhaftar", - "rcfilters-filter-user-experience-level-registered-description": "Pambesut sing mlebu log.", + "rcfilters-filter-user-experience-level-registered-description": "Pambesut kang mlebu log.", "rcfilters-filter-user-experience-level-unregistered-label": "Ora kadhaftar", - "rcfilters-filter-user-experience-level-unregistered-description": "Pambesut sing ora mlebu log.", + "rcfilters-filter-user-experience-level-unregistered-description": "Pambesut kang ora mlebu log.", "rcfilters-filter-user-experience-level-newcomer-label": "Wong neneka anyar", - "rcfilters-filter-user-experience-level-newcomer-description": "Kurang saka 10 besutan lan 4 dina kagiyatan.", + "rcfilters-filter-user-experience-level-newcomer-description": "Pambesut kadhartar mawa besutan kurang saka 10 utawa aktif kurang saka 4 dina.", "rcfilters-filter-user-experience-level-learner-label": "Wong sinau", "rcfilters-filter-user-experience-level-learner-description": "Luwih akèh pangalamané tinimbang \"Wong neneka anyar\" nanging durung ngèmperi \"Panganggo kawakan\".", "rcfilters-filter-user-experience-level-experienced-label": "Panganggo kawakan", @@ -1274,7 +1304,7 @@ "rcfilters-filter-minor-description": "Besutan sing ditandhani pangriptané minangka besutan cilik.", "rcfilters-filter-major-label": "Besutan ora cilik", "rcfilters-filter-major-description": "Besutan sing ora ditandhani minangka besutan cilik.", - "rcfilters-filtergroup-watchlist": "Kaca sing ana ing pawawangan", + "rcfilters-filtergroup-watchlist": "Kaca ing pawawangan", "rcfilters-filter-watchlist-watched-label": "Ana ing Pawawangan", "rcfilters-filter-watchlist-watched-description": "Owahané kaca-kaca ing Pawawangané panjenengan.", "rcfilters-filter-watchlist-watchednew-label": "Owah-owahané Pawawangan anyar", @@ -1604,7 +1634,7 @@ "mimesearch-summary": "Kaca iki nyedyaké fasilitas nyaring berkas miturut tipe MIME-né. Lebokna: contenttype/subtype, contoné image/jpeg.", "mimetype": "Tipe MIME:", "download": "undhuh", - "unwatchedpages": "Kaca sing ora diawasi", + "unwatchedpages": "Kaca kang ora ingawasan", "listredirects": "Daftar pengalihan", "unusedtemplates": "Cithakan sing ora kanggo", "unusedtemplatestext": "Kaca iki ngamot kabèh kaca ing bilik jeneng {{ns:template}} sing ora dianggo ing kaca ngendi waé.\nPriksanen dhisik pranala-pranala menyang cithakan iki sadurungé mbusak.", @@ -1635,21 +1665,21 @@ "statistics-users-active-desc": "Panganggo sing ngayahi aktivitas jroning {{PLURAL:$1|dia|$1 dina}} pungkasan", "pageswithprop": "Kaca mawa properti kaca", "pageswithprop-legend": "Kaca mawa properti kaca", - "pageswithprop-text": "Kaca iki mratélakaké kaca-kaca sing nganggo properti kaca mirunggan.", + "pageswithprop-text": "Kaca iki ngemu pratélan kaca kang nganggo properti kaca kang mirunggan.", "pageswithprop-prop": "Arané ubarampé:", "pageswithprop-submit": "Nuju", "pageswithprop-prophidden-long": "nilai properti teks dawa didhelikake ($1 kilobita)", "pageswithprop-prophidden-binary": "nilai properti biner didhelikake ($1 kilobita)", - "doubleredirects": "Alihan sing dhobel", - "doubleredirectstext": "Kaca iki ngandhut daftar kaca sing ngalih ing kaca pangalihan liyané.\nSaben baris ngandhut pranala menyang pangalihan kapisan lan kapindho, sarta tujuan saka pangalihan kapindho, sing biasané kaca tujuan sing \"sajatiné\", yakuwi pangalihan kapisan kuduné dialihaké menyang kaca tujuan iku.\nJeneng sing wis dicorèk tegesé wis rampung didandani.", + "doubleredirects": "Alihan kang dhobel", + "doubleredirectstext": "Kaca iki ngemu pratélan kaca kang ngener kaca alihan liyané.\nSaben larik ngemu pranala menyang kaca alihan kapisan lan kapindho, sarta jujuganing kaca alihan kapindho, kang adaté minagka kaca jujugan kang \"sajatiné\", ya iku kaca kang kuduné dadi jujugané kaca alihan kapisan.\nÈntri kang kacorèk tegesé wis kadandani.", "double-redirect-fixed-move": "[[$1]] wis kapindhahaké, saiki dadi kaca peralihan menyang [[$2]]", "double-redirect-fixed-maintenance": "Otomatis ndandani lih-lihan dhobel saka [[$1]] nyang [[$2]] nalika ana opèn-opènan.", "double-redirect-fixer": "Révisi pangalihan", - "brokenredirects": "Alihan sing rusak", - "brokenredirectstext": "Pengalihan ing ngisor iki tumuju menyang kaca sing ora ana:", + "brokenredirects": "Alihan kang rusak", + "brokenredirectstext": "Kaca alihan ing isor iki ngener kaca kang ora ana:", "brokenredirects-edit": "besut", "brokenredirects-delete": "busak", - "withoutinterwiki": "Kaca sing tanpa pranala basa", + "withoutinterwiki": "Kaca kang tanpa pranala basa", "withoutinterwiki-summary": "Kaca-kaca ing ngisor iki ora nggayut nyang vèrsi basa liyané.", "withoutinterwiki-legend": "Préfiks", "withoutinterwiki-submit": "Tuduhna", @@ -1664,25 +1694,25 @@ "nimagelinks": "Kanggo nèng {{PLURAL:$1|kaca|kaca}}", "ntransclusions": "kanggo nèng $1 {{PLURAL:$1|kaca|kaca}}", "specialpage-empty": "Ora ana sing perlu dilaporaké.", - "lonelypages": "Kaca sing lola", + "lonelypages": "Kaca kang lola", "lonelypagestext": "Kaca-kaca ing ngisor iki ora ana sing nyambung menyang kaca liyané ing {{SITENAME}}.", - "uncategorizedpages": "Kaca sing tanpa kategori", + "uncategorizedpages": "Kaca kang tanpa kategori", "uncategorizedcategories": "Kategori sing tanpa kategori", "uncategorizedimages": "Barkas sing tanpa kategori", "uncategorizedtemplates": "Cithakan sing durung diwèhi kategori", "unusedcategories": "Kategori sing ora kanggo", "unusedimages": "Barkas sing ora kanggo", "wantedcategories": "Kategori sing dipéngini", - "wantedpages": "Kaca sing dipéngini", + "wantedpages": "Kaca kang kapéngini", "wantedpages-badtitle": "Sesirah ora sah ing omboyakan kasil: $1", "wantedfiles": "Barkas sing dipéngini", - "wantedfiletext-cat": "Berkas iki dianggo nanging ora ana. Berkas saka panyimpenan asing mungkin kadaptar tinimbang ana kasunyatan. Saben ''positip salah'' bakal diorèk. Lan, kaca sing nyartakaké berkas sing ora ana bakal kadaptar nèng [[:$1]].", + "wantedfiletext-cat": "Barkas iki kaanggo, nanging ora ana. Barkas saka panyimpenan manca bokamanawa kacathet, sanajan ora ana. Saben ayahan kang salah, sanajan saka niyat kang becik, bakal kacorèk. Kaca kang ngemu barkas kang ora ana bakal kacathet ing [[:$1]].", "wantedfiletext-nocat": "Berkas iki dianggo nanging ora ana. Berkas saka panyimpenan asing mungkin kadaptar tinimbang ana kasunyatan. Saben ''positip salah'' bakal diorèk.", "wantedtemplates": "Cithakan sing dipéngini", - "mostlinked": "Kaca sing kerep dhéwé dituju", + "mostlinked": "Kaca kang akèh kajujug", "mostlinkedcategories": "Kategori sing kerep dhéwé dienggo", "mostlinkedtemplates": "Kaca paling akèh transklusi", - "mostcategories": "Kaca sing kategoriné akèh dhéwé", + "mostcategories": "Kaca kang kategoriné akèh dhéwé", "mostimages": "Barkas akèh dhéwé dienggo pranala", "mostinterwikis": "Kaca mawa interwiki paling akèh", "mostrevisions": "Kaca mawa pangowahan sing akèh dhéwé", @@ -1690,11 +1720,11 @@ "prefixindex-namespace": "Kabèh kaca mawa ater-ater (bilik jeneng $1)", "prefixindex-submit": "Tuduhaké", "prefixindex-strip": "Busak ater-ater saka pratélan", - "shortpages": "Kaca sing cekak", - "longpages": "Kaca sing dawa", - "deadendpages": "Kaca sing buntu", + "shortpages": "Kaca kang cendhak", + "longpages": "Kaca kang dawa", + "deadendpages": "Kaca kang buntu", "deadendpagestext": "Kaca-kaca ing ngisor iki ora nggayut nyang kaca liya ing {{SITENAME}}.", - "protectedpages": "Kaca sing direksa", + "protectedpages": "Kaca kang kareksa", "protectedpages-indef": "Namung rereksan tanpa watesan wektu", "protectedpages-cascade": "Amung kaca rineksan kang runtut", "protectedpages-noredirect": "Dhelikna alihan", @@ -1719,7 +1749,7 @@ "newpages": "Kaca anyar", "newpages-submit": "Tuduhaké", "newpages-username": "Jeneng panganggo:", - "ancientpages": "Kaca sing lawas dhéwé", + "ancientpages": "Kaca kang lawas dhéwé", "move": "Lih", "movethispage": "Lih kaca iki", "unusedimagestext": "Berkas-berkas sing kapacak iki ana nanging ora dienggo ing kaca apa waé.\nTulung digatèkaké yèn situs wèb liyané mbok-menawa bisa nyambung ing sawijining berkas sacara langsung mawa URL langsung, lan berkas-berkas kaya mengkéné iku mbok-menawa ana ing daftar iki senadyan ora dienggo aktif manèh.", @@ -1727,7 +1757,7 @@ "notargettitle": "Ora ana sasaran", "notargettext": "Panjenengan ora nemtokaké kaca utawa panganggo tujuan fungsi iki.", "nopagetitle": "Kaca tujuan ora ditemokaké", - "nopagetext": "Kaca sing panjenengan tuju ora ditemokaké.", + "nopagetext": "Kaca jujugan kang panjenengan karsakaké ora ana.", "pager-newer-n": "{{PLURAL:$1|1 luwih anyar|$1 luwih anyar}}", "pager-older-n": "{{PLURAL:$1|1 luwih lawas|$1 luwih lawas}}", "suppress": "Dhelikaké", @@ -1752,6 +1782,7 @@ "apisandbox-dynamic-error-exists": "Paramèter aran \"$1\" wis ana.", "apisandbox-deprecated-parameters": "Paramèter lawas", "apisandbox-fetch-token": "Isi otomatis tokené", + "apisandbox-add-multi": "Wuwuh", "apisandbox-submit-invalid-fields-title": "Sawenèh babagan ora trep", "apisandbox-submit-invalid-fields-message": "Jajal dandanana babagan sing ditandhani lan jajalen manèh.", "apisandbox-results": "Kasil", @@ -1760,6 +1791,7 @@ "apisandbox-results-error": "Ana masalah nalika ngamot wangsulan kanggo panyuwuné API: $1.", "apisandbox-request-selectformat-label": "Tuduhaké dhata suwunan minangka:", "apisandbox-request-url-label": "URL dikarepaké:", + "apisandbox-request-format-json-label": "JSON", "apisandbox-request-json-label": "Nyuwun JSON:", "apisandbox-request-time": "Suwéné panyuwunan: {{PLURAL:$1|$1 ms}}", "apisandbox-results-fixtoken": "Dandanana tokené lan balènana numpuk", @@ -1774,19 +1806,21 @@ "apisandbox-multivalue-all-values": "$1 (Kabèh aji)", "booksources": "Sumber buku", "booksources-search-legend": "Golèk sumber buku", + "booksources-isbn": "ISBN:", "booksources-search": "Golèk", "booksources-text": "Ing ngisor iki kapacak daftar pranala menyang situs liyané sing ngadol buku anyar lan bekas, lan mbok-menawa uga ndarbèni informasi sabanjuré ngenani buku-buku sing lagi panjenengan golèki:", "booksources-invalid-isbn": "ISBN sing diwènèhaké katonané ora trep; priksanen bokmanawa ana masalah nalika nurun sumber asli.", - "magiclink-tracking-rfc": "Kaca sing nganggo pranala ajaib RFC", + "magiclink-tracking-rfc": "Kaca kang nganggo pranala RFC", "magiclink-tracking-rfc-desc": "Kaca iki nganggo pranala ajaib RFC. Delengen [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] ngenani carané boyongan.", - "magiclink-tracking-pmid": "Kaca sing nganggo pranala ajaib PMID", - "magiclink-tracking-isbn": "Kaca sing nganggo pranala ajaib ISBN", + "magiclink-tracking-pmid": "Kaca kang nganggo pranala PMID", + "magiclink-tracking-isbn": "Kaca kang nganggo pranala ISBN", "specialloguserlabel": "Panampil:", "speciallogtitlelabel": "Paran (sesirah utawa {{ns:user}}:jeneng panganggo):", "log": "Log", "logeventslist-submit": "Tuduhaké", + "logeventslist-tag-log": "Log tenger", "all-logs-page": "Kabèh log umum", - "alllogstext": "Pitontonan gabungan log-log sing ana ing {{SITENAME}}.\nPanjenengan bisa nyiyutaké sesawangané kanthi milih sawijining jinis log, jeneng panganggo (sènsitif-case), utawa kaca sing gegayutan (uga sènsitif-case).", + "alllogstext": "Pitontonan gabungan log-log ing {{SITENAME}}.\nPanjenengan bisa nyiyutaké sesawangané kanthi milih siji jinis log, jeneng panganggo (sènsitif kapitalisasi), utawa kaca kang kaprabawan (uga sènsitif kapitalisasi).", "logempty": "Ora tinemu wiji kang cocog ing log", "log-title-wildcard": "Golèk sesirah sing diwiwiti tulisan iki", "showhideselectedlogentries": "Owah pakatonané èntri log sing dipilih", @@ -1798,7 +1832,7 @@ "allpages": "Kabèh kaca", "nextpage": "Kaca sabanjuré ($1)", "prevpage": "Kaca sadurungé ($1)", - "allpagesfrom": "Pitontonaké kaca sing diwiwiti:", + "allpagesfrom": "Pitontonaké kaca kang kawiwitan:", "allpagesto": "Tampilaké kaca dipungkasi ing:", "allarticles": "Kabèh kaca", "allinnamespace": "Kabèh kaca (mandala aran $1)", @@ -1857,9 +1891,12 @@ "listgrants": "Idin", "listgrants-grant": "Idin", "listgrants-rights": "Hak", + "listgrants-grant-display": "$1 ($2)", "trackingcategories": "Kategori panglacak", "trackingcategories-msg": "Kategori panglacak", "trackingcategories-name": "Jeneng layang", + "trackingcategories-nodesc": "Ora ana wedharané.", + "trackingcategories-disabled": "Kategori ora kaurubaké", "mailnologin": "Ora ana alamat kirim", "mailnologintext": "Panjenengan kudu [[Special:UserLogin|mlebu log]] lan duwé alamat layang-èl sing trep ing [[Special:Preferences|pilalané]] panjenengan kanggo nglayangi panganggo liyané.", "emailuser": "Kirimi panganggo iki layang-èl", @@ -1889,6 +1926,7 @@ "emailuserfooter": "Layang-e iki dikirimaké déning $1 marang $2 migunakaké fungsi \"Layangpanganggo\" ing {{SITENAME}}.", "usermessage-summary": "Tinggalaké layang sistem.", "usermessage-editor": "Pawartaning layang sistem", + "usermessage-template": "MediaWiki:UserMessage", "watchlist": "Pawawangan", "mywatchlist": "Pawawangan", "watchlistfor2": "Kanggo $1 $2", @@ -1907,7 +1945,7 @@ "notvisiblerev": "Révisi wis dibusak", "watchlist-details": "{{PLURAL:$1|Kaca cacah $1|Kaca cacah $1}} ana ing Pawawangané panjenengan (kalebu kaca-kaca parembugan).", "wlheader-enotif": "Wara-wara layang-èl diurubaké.", - "wlheader-showupdated": "Kaca-kaca sing wis owah wiwit ditiliki panjenengan kaping pungkasan, dituduhaké mawa '''aksara kandel'''", + "wlheader-showupdated": "Kaca kang wis owah kawit wektu pungkasan panjenengan priksa katuduhaké mawa hurup kandel.", "wlnote": "Ing ngisor iki {{PLURAL:$1|owahan pungkasan|$1 owahan pungkasan}} ing dalem {{PLURAL:$2|jam|$2 jam}} pungkasan, rikala $3, $4.", "wlshowlast": "Tuduhaké $1 jam $2 dina pungkasan", "watchlist-hide": "Dhelikaké", @@ -1924,7 +1962,7 @@ "watching": "Ngawasi...", "unwatching": "Ngilangi pangawasan...", "watcherrortext": "Ana masalah nalika ngganti setèlan pawawangané panjenengan tumrap \"$1\".", - "enotif_reset": "Tandhanana kabèh kaca sing wis ditiliki", + "enotif_reset": "Tandhani kabèh kaca kang wis daktiliki", "enotif_impersonal_salutation": "Panganggo {{SITENAME}}", "enotif_subject_deleted": "Halaman $1 di {{SITENAME}} telah dihapus oleh {{gender:$2|$2}}", "enotif_subject_created": "Halaman $1 di {{SITENAME}} telah dibuat oleh {{gender:$2|$2}}", @@ -1940,6 +1978,7 @@ "enotif_lastdiff": "Saperlu ndeleng owahan iki, tilikana $1", "enotif_anon_editor": "panganggo anonim $1", "enotif_body": "Sing minulya $WATCHINGUSERNAME,\n\nKaca $PAGETITLE ing {{SITENAME}} wis $CHANGEDORCREATED ing $PAGEEDITDATE déning $PAGEEDITOR, mangga mirsani $PAGETITLE_URL kanggo vèrsi pungkasan.\n\n$NEWPAGE\n\nSajarah suntingan: $PAGESUMMARY $PAGEMINOREDIT\n\nHubungana panyunting:\nmail: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nKita ora bakal ngandhani manèh yèn diowahi manèh, kejaba panjenengan wis mirsani kaca iku. Panjenengan uga bisa mbusak tandha notifikasi kanggo kabèh kaca pangawasan ing daftar pangawasan panjenengan.\n\n Sistém notifikasi {{SITENAME}}\n\n--\nKanggo ngowahi préferènsi ing daftar pangawasan panjenengan, mangga mirsani\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nUmpan balik lan pitulung sabanjuré:\n$HELPPAGE", + "enotif_minoredit": "Iki besutan cilik", "created": "kadamel", "changed": "kaubah", "deletepage": "Busak kaca", @@ -1958,6 +1997,9 @@ "dellogpage": "Log busak", "dellogpagetext": "Ing ngisor iki kapacak log pambusakan kaca sing anyar dhéwé.", "deletionlog": "log busak", + "log-name-create": "Log panggawéning kaca", + "log-description-create": "Ing isor iki pratélan kaca kang mentas kagawé.", + "logentry-create-create": "$1 {{GENDER:$2|nggawé}} kaca $3", "reverted": "Dibalèkaké ing revisi sadurungé", "deletecomment": "Alesan:", "deleteotherreason": "Alesan liya utawa tambahan:", @@ -1967,7 +2009,7 @@ "delete-toobig": "Kaca iki darbé sajarah besutan sing dawa, punjul $1 {{PLURAL:$1|owahan}}.\nMbusak kaca sing kaya mangkono wis ora diidinaké kanggo njagani supaya ora ana sing rusak ing {{SITENAME}}.", "delete-warning-toobig": "Kaca iki duwé sajarah besut sing dawa, punjul $1 {{PLURAL:$1|révisi}}.\nMbusak kaca iki bisa ngrusak lakuné basis dhata ing {{SITENAME}};\nkudu diayahi kanthi ngati-ati.", "deleteprotected": "Panjenengan ora bisa mbusak kaca iki amarga direksa.", - "deleting-backlinks-warning": "'''Awas:''' Kaca liyane mungkin ana sing nautake ing kaca sing arep sampeyan busak.", + "deleting-backlinks-warning": "Pepéling: [[Special:WhatLinksHere/{{FULLPAGENAME}}|Ana kaca liya]] kang nggayut utawa tranklud marang kaca kang arep panjenengan busek.", "rollback": "Pulihaké besutan", "rollbacklink": "balèkaké", "rollbacklinkcount": "balèkaké $1 {{PLURAL:$1|besutan|besutan}}", @@ -2412,7 +2454,7 @@ "tooltip-pt-mytalk": "Kaca parembugané {{GENDER:|panjenengan}}", "tooltip-pt-anontalk": "Parembug ing besutan-besutan saka alamat IP iki", "tooltip-pt-preferences": "Pilalané {{GENDER:|panjenengan}}", - "tooltip-pt-watchlist": "Pratélaning kaca sing panjenengan awasi owah-owahané", + "tooltip-pt-watchlist": "Pratélan kaca kang panjenengan awasi owah-owahané", "tooltip-pt-mycontris": "Pratélaning pisumbangé {{GENDER:|panjenengan}}", "tooltip-pt-anoncontribs": "Pratélan besutané alamat IP iki", "tooltip-pt-login": "Panjenengan prayogané mlebu log, sanajan ora kudu", @@ -2513,10 +2555,10 @@ "pageinfo-robot-policy": "Diindhèks déning robot", "pageinfo-robot-index": "Éntuk", "pageinfo-robot-noindex": "Ora éntuk", - "pageinfo-watchers": "Cacahing sing ngawasi kaca", + "pageinfo-watchers": "Cacahé kang ngawasi kaca", "pageinfo-visiting-watchers": "Cacahé pandeleng kaca sing nekani besutan anyar", "pageinfo-few-watchers": "{{PLURAL:$1|Kang ndeleng|Kang ndeleng}} kurang saka $1", - "pageinfo-redirects-name": "Cacahing alihan menyang kaca iki", + "pageinfo-redirects-name": "Cacahé alihan menyang kaca iki", "pageinfo-subpages-name": "Cacahing anak kaca saka kaca iki", "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|alihan|alihan}}; $3 {{PLURAL:$3|non-alihan|non-alihan}})", "pageinfo-firstuser": "Kang nggawé kaca", @@ -2526,7 +2568,7 @@ "pageinfo-edits": "Gunggunging besutan", "pageinfo-authors": "Gunggung kang nganggit", "pageinfo-recent-edits": "Cacahé besutan saiki (ing dalem $1 pungkasan)", - "pageinfo-recent-authors": "Cacahing sing nganggit dinané iki", + "pageinfo-recent-authors": "Cacahé kang nulis sawatara wektu iki", "pageinfo-magic-words": "{{PLURAL:$1|Tembung|Tembung}} mujarab ($1)", "pageinfo-hidden-categories": "{{PLURAL:$1|Kategori}} ndhelik ($1)", "pageinfo-templates": "{{PLURAL:$1|Cithakan|Cithakan}} transklusi ($1)", diff --git a/languages/i18n/kjp.json b/languages/i18n/kjp.json index 35c346bc38..d88229ff34 100644 --- a/languages/i18n/kjp.json +++ b/languages/i18n/kjp.json @@ -5,6 +5,9 @@ "Rul1902" ] }, + "underline-always": "ကိုဲၜၠင်", + "underline-never": "ၮင်းဖိုင့်အေႋ", + "editfont-serif": "ခေါဟ်ထိင်ႋပါ့ဖောင့်", "sunday": "အ်ုတုက်", "monday": "အ်ုစန်", "tuesday": "အ်ုညာႋ", @@ -55,6 +58,20 @@ "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": "ကဏ္ဍကါင်ဖါသယ်", @@ -70,51 +87,80 @@ "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": "အင်းၯူ့", - "aboutsite": "အ်ုကျံင် {{လက်မေံမၠိင်}}", - "aboutpage": "Project: အ်ုၯံင်အ်ုကျံင်", + "aboutsite": "အ်ုကျံင် {{SITENAME}}", + "aboutpage": "Project:အ်ုၯံင်အ်ုကျံင်", "copyrightpage": "{{ns:project}}: ပ္တုံဆာပၞံင့်", "currentevents": "အ်ုခါ့ယိုဝ် ကဲထင်းလေဝ်သယ်", "currentevents-url": "Project:အ်ုခါ့ယိုဝ် ကဲထင်းလေဝ်သယ်", "disclaimers": "တင်ဆ်ုခၠါင်", "disclaimerpage": "Project:ကိုဝ်မိင်ကိုဝ်စိင် ၜးတ်ုဒှ်", "edithelp": "အင်ႋတင်ႋ ဆ်ုမာၜိုင်", - "mainpage": "လိက်မေံယာ့", + "mainpage": "လိက်မေံၜၠါ်ခေါဟ်", "mainpage-description": "လက်မေံယာ့", "portal": "အ်ုထိုဝ်အ်ုမေံလင်ႋ", "portal-url": "Project:အ်ုထိုဝ်အ်ုမေံလင်ႋ", @@ -231,7 +277,7 @@ "currentrev-asof": "$1 ခဝ့် လါင်းခါင့်ထုက် အင်းတင်ထါင်", "revisionasof": "$1 မူးၮီခါ့ မူ", "revision-info": "$1 မူႋသင့်ၮှ် {{GENDER:$6|$2}}$7 ထါင်အင်းတင်ၮါင်", - "previousrevision": "မူလါင်းလီ", + "previousrevision": "← မူလါင်းလီ", "nextrevision": "သင့်ထုက် ဆ်ုအင်ႋတင်ႋ", "currentrevisionlink": "လါင်းခါင့် ထါင်အ်ုထိုဝ်", "cur": "အ်ုခါ့ယိုဝ်", diff --git a/languages/i18n/ko.json b/languages/i18n/ko.json index 388d4aeb89..91d54777ed 100644 --- a/languages/i18n/ko.json +++ b/languages/i18n/ko.json @@ -327,7 +327,7 @@ "confirmable-confirm": "{{GENDER:$1|}}확실합니까?", "confirmable-yes": "예", "confirmable-no": "아니오", - "thisisdeleted": "$1 문서를 보거나 되살리겠습니까?", + "thisisdeleted": "$1 문서를 보거나 복구하시겠습니까?", "viewdeleted": "$1 문서를 보겠습니까?", "restorelink": "{{PLURAL:$1|삭제된 편집 한 개|삭제된 편집 $1개}}", "feedlinks": "피드:", @@ -778,7 +778,7 @@ "edit-conflict": "편집 충돌.", "edit-no-change": "문서에 어떠한 바뀜도 없기 때문에 편집은 무시되었습니다.", "postedit-confirmation-created": "문서가 만들어졌습니다.", - "postedit-confirmation-restored": "문서가 되돌려졌습니다.", + "postedit-confirmation-restored": "문서가 복구되었습니다.", "postedit-confirmation-saved": "편집을 저장했습니다.", "postedit-confirmation-published": "편집이 게시되었습니다.", "edit-already-exists": "새 문서를 만들 수 없습니다.\n문서가 이미 존재합니다.", @@ -905,7 +905,7 @@ "revdelete-radio-set": "숨겨짐", "revdelete-radio-unset": "보임", "revdelete-suppress": "문서 내용을 관리자에게도 보이지 않게 숨기기", - "revdelete-unsuppress": "되살린 판에 대한 제한을 해제", + "revdelete-unsuppress": "복구된 판에 대한 제한을 해제", "revdelete-log": "이유:", "revdelete-submit": "선택한 {{PLURAL:$1|판}}에 적용", "revdelete-success": "판의 보이기 설정을 바꾸었습니다.", @@ -1060,7 +1060,7 @@ "prefs-email": "이메일 옵션", "prefs-rendering": "보이기", "saveprefs": "저장", - "restoreprefs": "모두 기본 설정으로 되돌리기(모든 부문)", + "restoreprefs": "모두 기본 설정으로 복구(모든 부문)", "prefs-editing": "편집", "searchresultshead": "검색", "stub-threshold": "토막글 링크의 형식으로 보여줄 최소 수치($1):", @@ -1417,7 +1417,7 @@ "rcfilters-savedqueries-cancel-label": "취소", "rcfilters-savedqueries-add-new-title": "현재의 필터 설정 저장", "rcfilters-savedqueries-already-saved": "이 필터는 이미 저장되어 있습니다. 새로운 저장된 필터를 만들려면 설정을 변경하십시오.", - "rcfilters-restore-default-filters": "기본 필터로 되돌림", + "rcfilters-restore-default-filters": "기본 필터로 복구", "rcfilters-clear-all-filters": "필터 모두 지우기", "rcfilters-show-new-changes": "최신 변경사항 보기", "rcfilters-search-placeholder": "필터 변경(메뉴를 사용하거나 필터 이름을 검색하세요)", @@ -2252,12 +2252,12 @@ "enotif_subject_deleted": "{{SITENAME}} $1 문서를 $2님이 {{GENDER:$2|삭제했습니다}}", "enotif_subject_created": "{{SITENAME}} $1 문서를 $2님이 {{GENDER:$2|만들었습니다}}", "enotif_subject_moved": "{{SITENAME}} $1 문서를 $2님이 {{GENDER:$2|이동팼습니다}}", - "enotif_subject_restored": "{{SITENAME}} $1 문서를 $2님이 {{GENDER:$2|되살렸습니다}}", + "enotif_subject_restored": "{{SITENAME}} $1 문서를 $2님이 {{GENDER:$2|복구했습니다}}", "enotif_subject_changed": "{{SITENAME}} $1 문서를 $2님이 {{GENDER:$2|바꾸었습니다}}", "enotif_body_intro_deleted": "{{SITENAME}} $1 문서를 $PAGEEDITDATE에 $2님이 {{GENDER:$2|삭제했으며}} $3 에서 볼 수 있습니다.", "enotif_body_intro_created": "{{SITENAME}} $1 문서를 $PAGEEDITDATE에 $2님이 {{GENDER:$2|만들었으며}} 현재 판은 $3 에서 볼 수 있습니다.", "enotif_body_intro_moved": "{{SITENAME}} $1 문서를 $PAGEEDITDATE에 $2님이 {{GENDER:$2|이동하였으며}} 현재 판은 $3 에서 볼 수 있습니다.", - "enotif_body_intro_restored": "{{SITENAME}} $1 문서를 $PAGEEDITDATE에 $2님이 {{GENDER:$2|되살렸으며}} 현재 판은 $3 에서 볼 수 있습니다.", + "enotif_body_intro_restored": "{{SITENAME}} $1 문서를 $PAGEEDITDATE에 $2님이 {{GENDER:$2|복구했으며}} 현재 판은 $3 에서 볼 수 있습니다.", "enotif_body_intro_changed": "{{SITENAME}} $1 문서를 $PAGEEDITDATE에 $2님이 {{GENDER:$2|바꾸었으며}} 현재 판은 $3 에서 볼 수 있습니다.", "enotif_lastvisited": "마지막으로 방문한 뒤 생긴 모든 바뀜을 보려면 $1을 보세요", "enotif_lastdiff": "이 바뀜을 보려면 $1을 보세요", @@ -2389,27 +2389,27 @@ "restriction-level-autoconfirmed": "준보호됨", "restriction-level-all": "모두", "undelete": "삭제된 문서 보기", - "undeletepage": "삭제된 문서를 보거나 되살리기", + "undeletepage": "삭제된 문서를 보고 복구하기", "undeletepagetitle": "아래 내용은 [[:$1|$1]] 문서의 삭제된 판입니다.", "viewdeletedpage": "삭제된 문서 보기", - "undeletepagetext": "다음 {{PLURAL:$1|문서는 삭제되었지만|문서 $1개는 삭제되었지만}} 아직 보관되어 있고 되살릴 수 있습니다.\n보관된 문서는 주기적으로 삭제될 것입니다.", - "undelete-fieldset-title": "문서 되살리기", - "undeleteextrahelp": "문서 역사 전체를 되살리려면 모든 체크박스의 선택을 해제하고 '''{{int:undeletebtn}}'''를 누르세요.\n특정한 버전만 되살리려면 되살리려는 버전을 선택하고 '''{{int:undeletebtn}}'''를 누르세요.", + "undeletepagetext": "다음 {{PLURAL:$1|문서는 삭제되었지만|문서 $1개는 삭제되었지만}} 아직 보관되어 있고 복구될 수 있습니다.\n보관된 문서는 주기적으로 청소될 것입니다.", + "undelete-fieldset-title": "판 복구", + "undeleteextrahelp": "문서 역사 전체를 복구하려면 모든 체크박스의 선택을 해제하고 {{int:undeletebtn}}를 누르세요.\n특정한 판만 복구하려면 복구하려는 판을 선택하고 {{int:undeletebtn}}를 누르세요.", "undeleterevisions": "{{PLURAL:$1|판|판들}} $1개가 보존되어 있습니다", - "undeletehistory": "문서를 되살리면 모든 역사가 같이 복구됩니다.\n문서가 삭제된 뒤 같은 이름의 문서가 만들어졌다면, 복구되는 역사는 지금 역사의 과거 부분에 나타날 것입니다.", + "undeletehistory": "문서를 복구하면 모든 역사가 같이 복구됩니다.\n문서가 삭제된 뒤 같은 이름의 문서가 만들어졌다면, 복구되는 역사는 지금 역사의 과거 부분에 나타날 것입니다.", "undeleterevdel": "복구하려는 문서의 최신판이 삭제되어 있는 경우 문서를 되살릴 수 없습니다.\n이러한 경우 삭제된 최신판 문서의 확인 상자를 선택 해제하거나 숨김을 해제해야 합니다.", "undeletehistorynoadmin": "이 문서는 삭제되었습니다.\n삭제된 이유와 삭제되기 전에 이 문서를 편집한 사용자가 아래에 나와 있습니다.\n삭제된 문서의 내용을 보려면 관리자 권한이 필요합니다.", "undelete-revision": "삭제된 $1 문서의 $4 $5 버전 (기여자 $3):", - "undeleterevision-missing": "해당 판이 잘못되었거나 존재하지 않습니다.\n잘못된 링크를 따라왔거나, 특정 판이 이미 되살렸거나 데이터베이스에서 제거되었을 수도 있습니다.", + "undeleterevision-missing": "해당 판이 잘못되었거나 존재하지 않습니다.\n잘못된 링크를 따라왔거나, 특정 판이 이미 복구되었거나 데이터베이스에서 제거되었을 수도 있습니다.", "undeleterevision-duplicate-revid": "{{PLURAL:$1|해당 판의|해당 판들의}} rev_id가 이미 사용 중이기 때문에 {{PLURAL:$1|한 개의 판|$1개의 판}}을 복구할 수 없습니다.", "undelete-nodiff": "이전의 판이 없습니다.", - "undeletebtn": "되살리기", - "undeletelink": "보기/되살리기", + "undeletebtn": "복구", + "undeletelink": "보기/복구", "undeleteviewlink": "보기", "undeleteinvert": "선택 반전", "undeletecomment": "이유:", "cannotundelete": "일부 또는 모든 항목의 되살리기를 실패했습니다:\n$1", - "undeletedpage": "$1 문서를 되살렸습니다.\n\n[[Special:Log/delete|삭제 기록]]에서 최근의 삭제 및 되살리기 기록을 볼 수 있습니다.", + "undeletedpage": "$1 문서가 복구되었습니다.\n\n[[Special:Log/delete|삭제 기록]]에서 최근의 삭제 및 복구 기록을 볼 수 있습니다.", "undelete-header": "최근에 삭제한 문서에 대한 기록은 [[Special:Log/delete|여기]]에서 볼 수 있습니다.", "undelete-search-title": "삭제된 문서 검색", "undelete-search-box": "삭제된 문서 검색", @@ -2420,7 +2420,7 @@ "undelete-filename-mismatch": "타임스탬프가 $1인 파일의 버전을 되살릴 수 없습니다: 파일 이름이 일치하지 않습니다.", "undelete-bad-store-key": "타임스탬프가 $1인 파일의 버전을 되살릴 수 없습니다: 파일이 삭제되기 전에 사라졌습니다.", "undelete-cleanup-error": "사용되지 않는 보존된 파일 \"$1\"을 삭제하는 데 오류가 발생했습니다.", - "undelete-missing-filearchive": "데이터베이스에 존재하지 않기 때문에 파일 보존 ID가 $1인 파일을 되살릴 수 없습니다.\n이미 되살렸을 수 있습니다.", + "undelete-missing-filearchive": "데이터베이스에 존재하지 않기 때문에 파일 보존 ID가 $1인 파일을 복구할 수 없습니다.\n이미 복구돠었을 수 있습니다.", "undelete-error": "문서를 되살리는 동안 오류", "undelete-error-short": "파일을 되살리는 동안 오류: $1", "undelete-error-long": "파일을 되살리는 동안 오류가 발생했습니다:\n\n$1", @@ -2563,7 +2563,7 @@ "blocklog-showlog": "이 사용자는 과거에 차단된 기록이 있습니다.\n해당 사용자의 차단 기록은 다음과 같습니다:", "blocklog-showsuppresslog": "이 사용자는 과거에 차단된 적이 있으며, 그 기록이 숨겨져 있습니다.\n해당 사용자의 차단 기록은 다음과 같습니다:", "blocklogentry": "님이 [[$1]]님을 $2 차단했습니다 $3", - "reblock-logentry": "님이 [[$1]]님의 차단 기간을 $2(으)로 바꾸었습니다 $3", + "reblock-logentry": " 님이 [[$1]] 님의 차단 기간을 $2(으)로 바꾸었습니다 $3", "blocklogtext": "이 목록은 사용자 차단/차단 해제 기록입니다.\n자동으로 차단된 IP 주소는 여기에 나오지 않습니다.\n[[Special:BlockList|여기]]에서 현재 차단된 사용자 목록을 볼 수 있습니다.", "unblocklogentry": "님이 $1님을 차단 해제했습니다", "block-log-flags-anononly": "IP만 막음", @@ -2795,7 +2795,7 @@ "tooltip-ca-protect": "문서 보호하기", "tooltip-ca-unprotect": "이 문서의 보호 설정을 바꾸기", "tooltip-ca-delete": "문서 삭제하기", - "tooltip-ca-undelete": "삭제되기 전에 이 문서의 완료한 편집 되살리기", + "tooltip-ca-undelete": "삭제되기 전에 이 문서의 완료된 편집을 복구", "tooltip-ca-move": "이 문서 이동", "tooltip-ca-watch": "이 문서를 주시문서 목록에 추가", "tooltip-ca-unwatch": "이 문서를 주시문서 목록에서 제거", @@ -3539,6 +3539,7 @@ "redirect-file": "파일 이름", "redirect-logid": "기록 ID", "redirect-not-exists": "값을 찾을 수 없습니다", + "redirect-not-numeric": "값이 숫자가 아닙니다", "fileduplicatesearch": "중복된 파일 검색", "fileduplicatesearch-summary": "파일 해시값을 이용해 중복 파일을 검색합니다.", "fileduplicatesearch-filename": "파일 이름:", @@ -3731,7 +3732,7 @@ "htmlform-user-not-valid": "$1은 올바른 사용자 이름이 아닙니다.", "logentry-delete-delete": "$1님이 $3 문서를 {{GENDER:$2|삭제했습니다}}", "logentry-delete-delete_redir": "$1님이 덮어쓰기를 통해 $3 문서를 {{GENDER:$2|삭제했습니다}}", - "logentry-delete-restore": "$1님이 $3 문서를 {{GENDER:$2|되살렸습니다}} ($4)", + "logentry-delete-restore": "$1님이 $3 문서를 {{GENDER:$2|복구했습니다}} ($4)", "logentry-delete-restore-nocount": "$1님이 $3 문서를 {{GENDER:$2|되살렸습니다}}", "restore-count-revisions": "{{PLURAL:$1|판 1개|판 $1개}}", "restore-count-files": "{{PLURAL:$1|파일 1개|파일 $1개}}", @@ -3754,9 +3755,9 @@ "revdelete-unrestricted": "관리자에 대한 제한을 해제함", "logentry-block-block": "$1님이 {{GENDER:$4|$3}}님을 $5 {{GENDER:$2|차단했습니다}} $6", "logentry-block-unblock": "$1님이 {{GENDER:$4|$3}}님의 {{GENDER:$2|차단을 해제했습니다}}", - "logentry-block-reblock": "$1님이 {{GENDER:$4|$3}}님의 차단 기간을 $5 차단으로 {{GENDER:$2|바꾸었습니다}} $6", + "logentry-block-reblock": "$1 님이 {{GENDER:$4|$3}} 님의 차단 기간을 $5(으)로 {{GENDER:$2|바꾸었습니다}} $6", "logentry-suppress-block": "$1님이 {{GENDER:$4|$3}} 사용자를 $5 {{GENDER:$2|차단했습니다}} $6", - "logentry-suppress-reblock": "$1 님이 {{GENDER:$4|$3}} 님의 차단 기간을 $5 차단으로 {{GENDER:$2|바꾸었습니다}} $6", + "logentry-suppress-reblock": "$1 님이 {{GENDER:$4|$3}} 님의 차단 기간을 $5(으)로 {{GENDER:$2|바꾸었습니다}} $6", "logentry-import-upload": "$1님이 $3 문서를 파일 올리기로 {{GENDER:$2|가져왔습니다}}", "logentry-import-upload-details": "$1님이 $3 문서 ({{PLURAL:$4|판}} $4개)를 파일 올리기로 {{GENDER:$2|가져왔습니다}}", "logentry-import-interwiki": "$1님이 $3 문서를 다른 위키에서 {{GENDER:$2|가져왔습니다}}", diff --git a/languages/i18n/lez.json b/languages/i18n/lez.json index 5b501c8285..5cd97ceb36 100644 --- a/languages/i18n/lez.json +++ b/languages/i18n/lez.json @@ -16,7 +16,8 @@ "Умар", "아라", "Amire80", - "Stjn" + "Stjn", + "Raa555" ] }, "tog-underline": "ЭлячӀунрин кӀаникай цӀар чӀугун", @@ -903,7 +904,7 @@ "file-info-size": "$1 × $2 пикселар, файлдин кьадар: $3, MIME жуьре: $4", "file-nohires": "Идалайни хъсан ери авайд туш", "svg-long-desc": "SVG файл, номилдаказ $1 $2 × пикселяр, файлдин кьадар: $3", - "show-big-image": "ЦӀарафа хвена тунвай жергедай", + "show-big-image": "Двулдин файл", "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": "Метамалуматар", diff --git a/languages/i18n/lt.json b/languages/i18n/lt.json index d65c445a78..0fdcede079 100644 --- a/languages/i18n/lt.json +++ b/languages/i18n/lt.json @@ -1898,6 +1898,7 @@ "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ų}}", diff --git a/languages/i18n/lv.json b/languages/i18n/lv.json index dcd8560c8f..e2ded5c056 100644 --- a/languages/i18n/lv.json +++ b/languages/i18n/lv.json @@ -372,6 +372,7 @@ "mypreferencesprotected": "Jums nav tiesību rediģēt savus iestatījumus.", "ns-specialprotected": "Nevar izmainīt īpašās lapas.", "titleprotected": "Šī lapa ir aizsargāta pret izveidošanu. To aizsargāja [[User:$1|$1]].\nNorādītais iemesls bija $2.", + "invalidtitle": "Nekorekts nosaukums", "invalidtitle-knownnamespace": "Nederīgs nosaukums ar vārdtelpu \"$2\" un tekstu \"$3\"", "invalidtitle-unknownnamespace": "Nederīgs nosaukums ar nezināmu vārdtelpas numuru \"$1\" un tekstu \"$2\"", "exception-nologin": "Neesat pieslēdzies", @@ -997,7 +998,7 @@ "grouppage-bureaucrat": "{{ns:project}}:Birokrāti", "grouppage-suppress": "{{ns:project}}:Cenzētāji", "right-read": "Lasīt lapas", - "right-edit": "Izmainīt lapas", + "right-edit": "Labot lapas", "right-createpage": "Izveidot lapas (kuras nav diskusiju lapas)", "right-createtalk": "Izveidot diskusiju lapas", "right-createaccount": "Izveidot jaunus dalībnieka kontus", @@ -1152,6 +1153,8 @@ "rcfilters-other-review-tools": "Citi pārskatīšanas rīki", "rcfilters-group-results-by-page": "Grupēt rezultātus pēc lapas", "rcfilters-activefilters": "Aktīvie filtri", + "rcfilters-activefilters-hide": "Paslēpt", + "rcfilters-activefilters-show": "Parādīt", "rcfilters-advancedfilters": "Paplašinātie filtri", "rcfilters-limit-title": "Rādāmie rezultāti", "rcfilters-limit-and-date-label": "$1 {{PLURAL:$1|izmaiņas|izmaiņa|izmaiņas}}, $2", @@ -1167,7 +1170,7 @@ "rcfilters-savedqueries-rename": "Pārsaukt", "rcfilters-savedqueries-setdefault": "Uzstādīt kā noklusēto", "rcfilters-savedqueries-unsetdefault": "Noņemt kā noklusēto", - "rcfilters-savedqueries-remove": "Noņemt", + "rcfilters-savedqueries-remove": "Dzēst", "rcfilters-savedqueries-new-name-label": "Nosaukums", "rcfilters-savedqueries-new-name-placeholder": "Apraksti filtra būtību", "rcfilters-savedqueries-apply-label": "Izveidot filtru", @@ -1248,6 +1251,7 @@ "rcfilters-watchlist-edit-watchlist-button": "Labot manu uzraugāmo lapu sarakstu", "rcfilters-watchlist-showupdated": "Izmaiņas lapās, kuras nav apmeklētas kopš izmaiņu veikšanas, ir trekninātā rakstā.", "rcfilters-preference-label": "Paslēpt uzlaboto pēdējo izmaiņu versiju", + "rcfilters-target-page-placeholder": "Ievadi lapas nosaukumu (vai kategoriju)", "rcnotefrom": "Zemāk {{PLURAL:$5|redzamas izmaiņas|redzama izmaiņa|redzamas izmaiņas}} kopš $3, $4 (parādītas ne vairāk kā $1).", "rclistfromreset": "Atiestatīt datuma izvēli", "rclistfrom": "Parādīt jaunas izmaiņas kopš $3 $2", @@ -1472,9 +1476,9 @@ "filehist-filesize": "Faila izmērs", "filehist-comment": "Komentārs", "imagelinks": "Faila lietojums", - "linkstoimage": "{{PLURAL:$1|Šajās $1 lapās ir saites|Šajā lapā ir saite|Šajās $1 lapās ir saites}} uz šo failu:", + "linkstoimage": "Šo failu izmanto {{PLURAL:$1|šajās $1 lapās|šajā $1 lapā|šajās $1 lapās}}:", "linkstoimage-more": "Uz šo failu ir saites vairāk nekā $1 {{PLURAL:$1|lapās|lapā|lapās}}.\nŠajā sarakstā ir tikai {{PLURAL:$1|pirmās $1 saistītās lapas|pirmā $1 saistītā lapa|pirmās $1 saistītās lapas}} uz šo failu.\nPieejams arī [[Special:WhatLinksHere/$2|pilns saraksts]].", - "nolinkstoimage": "Nevienā lapā nav norāžu uz šo attēlu.", + "nolinkstoimage": "Šo failu neizmanto nevienā lapā.", "morelinkstoimage": "Skatīt [[Special:WhatLinksHere/$1|vairāk saites]] uz šo failu.", "linkstoimage-redirect": "$1 (faila pāradresācija) $2", "duplicatesoffile": "{{PLURAL:$1|1=Šis fails ir šī faila dublikāts|Šie $1 faili ir šī faila dublikāti|Šis $1 fails ir šī faila dublikāts|Šie $1 faili ir šī faila dublikāti}} ([[Special:FileDuplicateSearch/$2|vairāk informācijas]]):", @@ -3016,6 +3020,7 @@ "expandtemplates": "Izvērst veidnes", "expand_templates_output": "Rezultāts", "expand_templates_ok": "Labi", + "expand_templates_remove_comments": "Noņemt komentārus", "expand_templates_remove_nowiki": "Cenzēt iezīmes rezultātā", "expand_templates_preview": "Pirmskats", "pagelanguage": "Mainīt lapas valodu", diff --git a/languages/i18n/mk.json b/languages/i18n/mk.json index 866d399d6e..91203e9738 100644 --- a/languages/i18n/mk.json +++ b/languages/i18n/mk.json @@ -1158,14 +1158,14 @@ "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": "Преместување на категориски страници", @@ -1179,7 +1179,7 @@ "right-purge": "Бришење од опслужувачки меѓусклад на страницата без барање потврда за тоа", "right-autoconfirmed": "Без ограничувања на стапки за IP-адреса", "right-bot": "Третиран како автоматски процес", - "right-nominornewtalk": "Ситните уредувања да не поттикнуваат потсетник за нова порака", + "right-nominornewtalk": "Ситните уредувања на разговорни страници да не поттикнуваат потсетник за нова порака", "right-apihighlimits": "Користење на помалку ограничени барања од извршникот", "right-writeapi": "Можност за запишување во извршникот", "right-delete": "Бришење страници", @@ -1269,7 +1269,7 @@ "grant-basic": "Основни права", "grant-viewdeleted": "Преглед на избришани податотеки и страници", "grant-viewmywatchlist": "Преглед на вашите набљудувања", - "grant-viewrestrictedlogs": "Погл. ограничени дневнички ставки", + "grant-viewrestrictedlogs": "Преглед на ограничени дневнички ставки", "newuserlogpage": "Дневник на регистрирања на корисници", "newuserlogpagetext": "Ова е дневник на регистрирани корисници.", "rightslog": "Дневник на корисничките права", @@ -3628,6 +3628,7 @@ "redirect-file": "Име на податотека", "redirect-logid": "Назнака на дневникот", "redirect-not-exists": "Вредноста не е најдена", + "redirect-not-numeric": "Вредноста не е бројчена", "fileduplicatesearch": "Барање на дуплирани податотеки", "fileduplicatesearch-summary": "Пребарување на дуплирани податотеки по тарабни вредности.", "fileduplicatesearch-filename": "Податотека:", @@ -4188,7 +4189,7 @@ "edit-error-long": "Грешки:\n\n$1", "revid": "преработка $1", "pageid": "назнака на страницата $1", - "interfaceadmin-info": "$1\n\nДозволата за уредување на податотеки од типовите CSS/JS/JSON низ цело вики неодамна е одвоено од правото editinterface. Ако не ви еј асно зошто ја добивате оваа грешка, погледајте ја страницата [[mw:MediaWiki_1.32/interface-admin]].", + "interfaceadmin-info": "$1\n\nДозволите за уредување на CSS/JS/JSON податотеки низ цело вики неодамна се одвоени од правото editinterface. Ако не разбирате зошто ја добивате оваа грешка, погл. [[mw:MediaWiki_1.32/interface-admin]].", "rawhtml-notallowed": "<html>-ознаките не може да се користат вон нормалните страници.", "gotointerwiki": "Го напуштате {{SITENAME}}", "gotointerwiki-invalid": "Укажаниот наслов е неважечки.", diff --git a/languages/i18n/mni.json b/languages/i18n/mni.json index 28d4714f9f..d8267439f3 100644 --- a/languages/i18n/mni.json +++ b/languages/i18n/mni.json @@ -524,6 +524,7 @@ "postedit-confirmation-saved": "ꯅꯪꯒꯤ ꯁꯦꯝꯒꯠꯄꯗꯨ ꯇꯨꯡꯁꯤꯟꯈꯔꯦ ꯫", "postedit-confirmation-published": "ꯅꯪꯒꯤ ꯁꯦꯝꯒꯠꯄꯗꯨ ꯐꯣꯡꯗꯣꯛꯈꯔꯦ ꯫", "content-model-wikitext": "ꯋꯤꯀꯤ ꯋꯥꯍꯩ ꯋꯥꯇꯥ", + "content-model-javascript": "ꯖꯥꯕꯥ ꯃꯌꯦꯛ", "content-json-empty-object": "ꯑꯍꯥꯡꯕꯥ ꯄꯣꯠꯁꯛ", "viewpagelogs": "ꯃꯁꯤꯒꯤ ꯂꯥꯃꯥꯏꯁꯤꯒꯤ ꯅꯧꯅ ꯆꯪꯉꯨ", "currentrev-asof": "$1 ꯒꯤ ꯅꯧꯅꯥ ꯑꯃꯨꯛꯍꯟꯅꯥ ꯌꯦꯡꯕꯥ ꯃꯤꯠꯌꯦꯡ", @@ -533,6 +534,7 @@ "nextrevision": "ꯑꯅꯧꯕꯥ ꯑꯃꯨꯛꯍꯟꯅꯥ ꯌꯦꯡꯕꯥ", "currentrevisionlink": "ꯈꯋꯥꯏꯗꯒꯤ ꯅꯧꯅꯥ ꯑꯃꯨꯛ ꯌꯦꯡꯕꯥ", "cur": "ꯍꯧ", + "next": "ꯃꯊꯪ", "last": "ꯃꯃꯥꯡꯒꯤ", "page_first": "ꯑꯍꯥꯟꯕ", "page_last": "ꯑꯔꯣꯏꯕ", @@ -543,8 +545,13 @@ "history-feed-title": "ꯄꯨꯋꯥꯔꯤ ꯑꯃꯨꯛ ꯍꯟꯅ ꯌꯦꯡꯕ", "history-feed-item-nocomment": "$2 ꯗ$1", "rev-delundel": "ꯑꯍꯣꯡꯕꯥ ꯎꯍꯟꯂꯤꯕꯥ", + "rev-showdeleted": "ꯎꯨꯠꯂꯨ", + "revisiondelete": "ꯀꯛꯊꯠꯄ/ꯀꯛꯊꯠꯇꯕ ꯑꯃꯨꯛꯍꯟꯅ ꯌꯦꯡꯕ", "revdelete-show-file-submit": "ꯍꯣꯏ", + "revdelete-radio-set": "ꯑꯔꯣꯠꯄ", "revdelete-radio-unset": "ꯎꯍꯟꯕ", + "pagehist": "ꯂꯃꯥꯏꯒꯤ ꯄꯨꯋꯥꯔꯤ", + "deletedhist": "ꯀꯛꯊꯠꯈꯤꯕꯒꯤ ꯄꯨꯋꯥꯔꯤ", "mergelog": "ꯂꯣꯒ ꯄꯨꯟꯁꯤꯟꯕ", "history-title": "Revision history of \"$1\"", "difference-title": "$1 ꯒꯤ ꯑꯃꯨꯛꯍꯟꯕꯥ ꯈꯦꯠꯅꯕꯥꯒꯤ ꯃꯔꯛ", diff --git a/languages/i18n/mnw.json b/languages/i18n/mnw.json index b51843c428..26c9db6315 100644 --- a/languages/i18n/mnw.json +++ b/languages/i18n/mnw.json @@ -2,13 +2,18 @@ "@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": "တ္ၚဲအၚာ", @@ -59,14 +64,28 @@ "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": "ကဏ္ဍဏအ် ပြဟ်ဟ်ဏအ် ဟွံမဲ ကု မုက်လိက် ဟွံသေင်မ္ဂး ပရူမွဲမွဲဏီရ", "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": "မုက်လိက် မသက္ကုလိက်", @@ -74,42 +93,69 @@ "about": "ပရူ", "newwindow": "(ပံက် ပ္ဍဲ မုက်ဗတင် တၟိ)", "cancel": "တးပဲါ", + "mypage": "မုက်လိက်", "mytalk": "ဓရီုကျာ", + "anontalk": "ဓရီုကျာ", "navigation": "သ္ၚိအင်", "and": " ကေုာံ", + "faq": "FAQ", "namespaces": "ဒၞာဲယၟု", "variants": "မူတၞဟ်", "navigation-heading": "သ္ၚိအင် မေန်နူ", + "errorpagetitle": "ဗၠေတ်", "returnto": "ကလေင်အာ ဇရေင် $1", "tagline": "နူ {{SITENAME}}", "help": "ရီု", "search": "ဂၠာဲ", "searchbutton": "ဂၠာဲ", + "go": "အာ", "searcharticle": "အာ", "history": "ဝှာင် လၟေင်အပြံင်အလှာဲ", "history_short": "အရာမဗှ်လဝ်တုဲ", + "history_small": "လၟေင်မပြံင်လှာဲလဝ်", "printableversion": "မူလိက် မပြေန်ပ္တိတ်ဂွံ", "permalink": "ဌာန်ဒတန်လေန် လၟိုန်", + "print": "ပတိတ်", "view": "ဗဗဵု", "view-foreign": "ဗဵု ပ္ဍဲ $1", "edit": "ပလေဝ်ဒါန်", + "edit-local": "စုတ် ပရူပရာဒေသ", "create": "ခၞံကၠောန်", "create-local": "စုတ် ပရူပရာဒေသ", "delete": "ပလီု", + "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": "ဂၠာဲ", + "pool-timeout": "အခိၚ်အိုတ်အာယျ မၚ်မံၚ်သွက်ဂွံလုပ်", + "pool-errorunknown": "ဟွံတီ ဗီုလဵုဗၠေတ်", + "pool-servererror": "ပရေၚ်ကမၠောန်မအောန်ကဵုဆိုက်ဗ္ဒက်ဂှ် ဟွံသၟဟ်အစောန် ($1)", + "poolcounter-usage-error": "သုၚ်စောဲ ဗၠေတ်:$1", "aboutsite": "ပရူ {{SITENAME}}", "aboutpage": "Project:ပရူ", "copyright": "လိက်ဂှ် မံက် ပ္ဍဲ $1 ယဝ်ရတင်ယောင်ယာ မွဲမွဲ ဟွံမွဲမ္ဂး၊၊", @@ -119,12 +165,17 @@ "disclaimers": "ဒဒှ်မဟွံဆက်စပ်", "disclaimerpage": "Project:ဒဒှ်မဟွံဆက်စပ် နာနာ", "edithelp": "အရီုအဗင် ပ္ဍဲအရာမပလေဝ်ဒါန်", + "helppage-top-gethelp": "ရီု", "mainpage": "မုက်လိက်တမ်", "mainpage-description": "မုက်လိက်တမ်", + "policy-url": "ပရဝ်ဂျေတ်:မူဝါဒ", "portal": "ပါင်မုက် ဂကောံ", "portal-url": "Project:ပါင်မုက် ဂကောံ", "privacy": "ပဝ်လသဳ မဆေင်ကဵု အခေါင်အရာပူဂဵု", "privacypage": "Project:ပဝ်လသဳ အခေါင်ပူဂဵု", + "badaccess": "တင်သၠးအခေါင် ဗၠေတ်", + "badaccess-group0": "ညးလွဟ် ဟွံကလိဂွံအခေါၚ်သွက်ဂွံပသောၚ်သ္အး ကမၠောန်ညးလွဟ်မအာတ်လဝ်အခေါၚ်ဂှ်", + "ok": "ခိုဟ်", "retrievedfrom": "ကလေင်သီကေတ်လဝ် နူ \"$1\"", "youhavenewmessages": "{{PLURAL:$3|မၞး ကလိဂွံ}} $1 ($2).", "youhavenewmessagesfromusers": "{{PLURAL:$4|မၞး ကလိဂွံ}} $1 နူ {{PLURAL:$3| မဒှ် ညးလွပ်တၞဟ်မွဲ|$3 ညးလွပ်ဂမၠိုင်}} ($2).", @@ -137,6 +188,15 @@ "viewsourcelink": "ထ္ၜး တမ်ရိုဟ်", "editsectionhint": "ဒၞာဲ မပလေဝ်ဒါန် - $1", "toc": "မာတိကာ", + "showtoc": "ထ္ၜး", + "hidetoc": "ဗဒန်", + "collapsible-collapse": "ဒေါမ်", + "collapsible-expand": "သၠဲ", + "confirmable-confirm": "ဒှ်{{GENDER:$1|ညးလွပ်}} ချိုတ်ပၠိုတ်ဟာ", + "confirmable-yes": "ယွံ", + "confirmable-no": "ဟအှ်ေ", + "thisisdeleted": "ဗဵု ဟွံသေၚ် ကလၚ်စွံ $1 ဟာ", + "viewdeleted": "ဗဵု $1 ဟာ", "site-atom-feed": "$1 ဒၞာဲ ဗလးပတိတ်", "page-atom-feed": "\"$1\" ဒၞာဲ ဗလးပတိတ်", "red-link-title": "$1(မုက်လဝ်ဏအ် ဟွံပြာကတ်)", @@ -151,20 +211,31 @@ "mainpage-nstab": "မုက်လိက်တမ်", "nosuchspecialpage": "မုက်လိက် တၟေင် ညံင်ရဴဏအ် ဟွံမဲ", "nospecialpagetext": "မၞး အာတ်မိက်လဝ် မုက်လိက်တၟေင် မဟွံမဲမွဲရ၊၊\n\nစရင် မုက်လိက်တၟေင် မနွံတအ်ဂှ် ဂွံဆဵုကေတ် ပ္ဍဲ [[Special:SpecialPages|{{int:specialpages}}]].", + "error": "ဗၠေတ်", + "databaseerror-function": "ကမၠောန်: $1", + "databaseerror-error": "ဗၠေတ်: $1", "badtitle": "က္ဍိုပ်လိက် ဟွံခိုဟ်", "badtitletext": "မုက်လိက် မအာတ်မိက်လဝ်ဂှ် ဟွံသၟဟ်အစောမ်၊ သၠာတ်သၠးဒၟံင် ဟွံသေင်မ္ဂး ဆက်စၠောအ်လေန်လဝ် ကုအရေဝ်ဘာသာနာနာ ဟွံသေင်မ္ဂး က္ဍိုပ်လိက် အပ္ဍဲအကြာဝဳကဳ ဟွံဒးရ၊၊\nဟိုတ်နူ စကာလဝ် မလိက် နဒဒှ်က္ဍိုပ်လိက်ဟွံဂွံ ပါလုပ်ဒၟံင် မွဲမ ဟွံသေင်မ္ဂး မဂၠိုင် ကုမ လေဝ် ဒှ်မာန်ရ၊၊", "viewsource": "ထ္ၜး တမ်ရိုဟ်", "viewsource-title": "ဗဵု တမ်ရိုဟ် သွက် $1", "viewsourcetext": "မၞး ဗဵု ကေုာံ စၠောအ်ကပ်ပဳကေတ် တမ်ရိုဟ် မုက်လိက်ဏအ် ဂွံရ၊၊", + "exception-nologin": "ဟွံ လုပ်လံက်အေန်လဝ်", + "yourname": "ယၟုညးလွပ်:", "userlogin-yourname": "ယၟုညးလွပ်", "userlogin-yourname-ph": "စုတ် ယၟုညးလွပ်", + "createacct-another-username-ph": "စုတ် ယၟုညးလွပ်", + "yourpassword": "မအက္ခရ်ဓလုက်", "userlogin-yourpassword": "မလိက်ပၞုက်", "userlogin-yourpassword-ph": "စုတ် မလိက်ပၞုက် မၞးညိ", "createacct-yourpassword-ph": "စုတ် မလိက်ပၞုက် မွဲညိ", + "yourpasswordagain": "ကလေၚ်တက် မအက္ခရ်ဓလုက်:", "createacct-yourpasswordagain": "ပဒတန် မလိက်ပၞုက်ညိ", "createacct-yourpasswordagain-ph": "စုတ် မလိက်ပၞုက် မွဲဝါပၠန်ညိ", "userlogin-remembermypassword": "လုပ်လံက်အေန်လဝ် အဲညိ၊၊", "login": "လုပ်လံက်အေန်", + "logout": "တိတ်", + "userlogout": "တိတ်", + "notloggedin": "ဟွံ လုပ်လံက်အေန်လဝ်", "userlogin-noaccount": "ဟွံကလိဂွံ အကံက်ဏီ?", "userlogin-joinproject": "လုပ်ပံင်တောဲ {{SITENAME}}", "createaccount": "ခၞံကၠောန် အကံက်", @@ -172,7 +243,11 @@ "userlogin-helplink2": "အရီုအဗင် သွက်ဂွံ လုပ်လံက်အေန်", "createacct-emailoptional": "ဌာန်ဒၟံင် အဳမေဝ် (သ္ဒးစုတ်ဟေင်)", "createacct-email-ph": "စုတ် ဌာန်ဒၟံင် အဳမေဝ် မၞးညိ", + "createacct-realname": "ယၟု ဍာံ (optional)", + "createacct-reason": "ဟိုတ်", + "createacct-reason-ph": "မုဟိုတ်မၞးဂွံခၞံကၠောန်အကံက်တၞဟ်ခြာရော", "createacct-submit": "ခၞံကၠောန် အကံက် မၞးညိ", + "createacct-another-submit": "ခၞံကၠောန် အကံက်", "createacct-benefit-heading": "{{SITENAME}} ဂှ် ကၠောန်လဝ် နကဵု မၞိဟ် ညံင်ရဴမၞးကီုရ၊၊", "createacct-benefit-body1": "{{PLURAL:$1|တင်ပလေဝ်ဒါန်|တင်ပလေဝ်ဒါန်ဂမၠိုင်}}", "createacct-benefit-body2": "{{PLURAL:$1|မုက်လိက်|မုက်လိက်ဂမၠိုင်}}", @@ -182,6 +257,7 @@ "pt-login-button": "လုပ်လံက်အေန်", "pt-createaccount": "ခၞံကၠောန် အကံက်", "pt-userlogout": "တိတ်", + "resetpass-submit-cancel": "တးပဲါ", "passwordreset": "ကလေင်စုတ် မလိက်ပၞုက်", "bold_sample": "မလိက် တီု", "bold_tip": "မလိက် တီု", @@ -203,6 +279,8 @@ "minoredit": "ဣဏအ်ဂှ် ဒှ်အရာ မပလေဝ်ဒါန် ညိည", "watchthis": "မင်မဲ မုက်လိက်ဏအ်", "savearticle": "ဂိုင်သိပ် မုက်လိက်", + "savearticle-start": "ဂိုင်သိပ် မုက်လိက်", + "publishchanges-start": "ပတိတ်တြး ပြံင်လှာဲအာ", "preview": "နမူနာ", "showpreview": "ထ္ၜး နမူနာ", "showdiff": "ထ္ၜး အရာမပြံင်လှာဲ", diff --git a/languages/i18n/mr.json b/languages/i18n/mr.json index b3fd486ca9..47a072252f 100644 --- a/languages/i18n/mr.json +++ b/languages/i18n/mr.json @@ -658,7 +658,7 @@ "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": "तुमचे सदस्यनाव अथवा 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कृपया या संदर्भातील चर्चेमध्ये वरील सर्व तपशिल उद्घृत करा.", "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 करा.", @@ -672,7 +672,7 @@ "accmailtext": "[[User talk:$1|$1]] यांसाठी अनियतक्रमाने निर्मित केलेला परवलीचा शब्द $2 यांना पाठवण्यात आला आहे.\n\nया नवीन खात्यासाठीचा परवलीचा शब्द,सनोंद-प्रवेश घेतल्यावर [[Special:ChangePassword|परवलीचा शब्द बदला]] येथे बदलता येईल.", "newarticle": "(नवीन लेख)", "newarticletext": "आपण सध्या अस्तित्त्वात नसलेल्या पानाच्या दुव्याचा मागोवा घेत आला आहात.\nहे पान नव्याने तयार करण्यासाठी खालील पेटीत टंकन करणे सुरु करा(अधिक माहितीसाठी [$1 साहाय्य पान] बघा).\n\nजर आपण येथे चुकून आला असाल तर ब्राउझरच्या परत(बॅक) कळीवर टिचकी द्या.", - "anontalkpagetext": "हे चर्चापान अशा अज्ञात सदस्यासाठी आहे, ज्यांनी खाते तयार केलेले नाही किंवा त्याचा वापर करत नाहीत. \nत्यांच्या ओळखीसाठी आम्ही आंतरजाल अंकपत्ता वापरतो आहोत. असा अंकपत्ता बऱ्याच लोकांचा एकच असू शकतो. \nजर आपण अज्ञात सदस्य असाल आणि आपल्याला काही अप्रासंगिक संदेश मिळाला असेल तर कृपया [[Special:CreateAccount| खाते तयार करा]] किंवा [[Special:CreateAccount|सनोंद-प्रवेश करा]] ज्यामुळे, पुढे असे गैरसमज होणार नाहीत.", + "anontalkpagetext": "हे चर्चापान अशा अज्ञात सदस्यासाठी आहे, ज्यांनी खाते तयार केलेले नाही किंवा त्याचा वापर करत नाहीत. \nत्यांच्या ओळखीसाठी आम्ही आंतरजाल अंकपत्ता वापरतो आहोत. असा अंकपत्ता बऱ्याच लोकांचा एकच असू शकतो. \nजर आपण अज्ञात सदस्य असाल आणि आपल्याला काही अप्रासंगिक संदेश मिळाला असेल तर कृपया [[Special:CreateAccount| खाते तयार करा]] किंवा [[Special:CreateAccount|सनोंद-प्रवेश करा]] ज्यामुळे, पुढे असे गैरसमज होणार नाहीत.", "noarticletext": "या लेखात सध्या काहीही मजकूर नाही.\nतुम्ही विकिपीडियावरील इतर लेखांमध्ये या [[Special:Search/{{PAGENAME}}| मथळ्याचा शोध घेऊ शकता]], [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} इतर नोंदी शोधा],\nकिंवा हा लेख [{{fullurl:{{FULLPAGENAME}}|action=edit}}तयार करू शकता].", "noarticletext-nopermission": "सध्या या लेखात काहीही मजकूर नाही.\nतुम्ही विकिपीडियावरील इतर लेखांमध्ये [[Special:Search/{{PAGENAME}}| या मथळ्याचा शोध घेऊ शकता]], [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAME}}}}आपण या लेखाच्या इतर नोंदी शोधा],परंतु, आपणास हा लेख लिहीण्याची परवानगी देण्यात येउ शकत नाही.", "missing-revision": "\"{{FULLPAGENAME}}\" या लेखाचे #$1 हे संस्करण अस्तित्वात नाही.वगळल्या गेलेल्या लेखपानाच्या जुन्या इतिहास-दुव्याचे अनुसरण केल्यामुळे असे होते.याबाबत विस्तृत माहिती [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} वगळलेल्या नोंदी]येथे बघता येईल.", @@ -1457,7 +1457,7 @@ "recentchangeslinked-feed": "या पृष्ठासंबंधीचे बदल", "recentchangeslinked-toolbox": "या पृष्ठासंबंधीचे बदल", "recentchangeslinked-title": "\"$1\" च्या संदर्भातील बदल", - "recentchangeslinked-summary": "हे पृष्ठ एखाद्या विशिष्ट पानाशी, (किंवा एखाद्या विशिष्ट वर्गात असणाऱ्या पानांशी), जोडलेल्या पानांवरील बदल दर्शविते.\nआपल्या [[Special:Watchlist|निरीक्षणसूचीत]] ही पाने ठळक दिसतील.", + "recentchangeslinked-summary": "हे पृष्ठ एखाद्या विशिष्ट पानाशी, (किंवा एखाद्या विशिष्ट वर्गात असणाऱ्या पानांशी), जोडलेल्या पानांवरील बदल दर्शविते.एखाद्या वर्गातील पाने पाहाण्यासाठी तो वर्ग लिहा\nआपल्या [[Special:Watchlist|निरीक्षणसूचीत]] ही पाने ठळक दिसतील.", "recentchangeslinked-page": "पृष्ठ नाव:", "recentchangeslinked-to": "याऐवजी दिलेल्या पानाला जोडलेल्या पानांवरील बदल दाखवा", "recentchanges-page-added-to-category": "[[:$1]] हे पान या वर्गास जोडले", @@ -1686,7 +1686,7 @@ "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|अधिक माहिती]]", diff --git a/languages/i18n/my.json b/languages/i18n/my.json index e2f900fd33..9712ebf7c2 100644 --- a/languages/i18n/my.json +++ b/languages/i18n/my.json @@ -68,6 +68,7 @@ "tog-ccmeonemails": "ကျွန်ုပ် အခြားအသုံးပြုသူများထံပို့သော အီးမေးမိတ္တူကို ကျွန်ုပ်ထံ ပြန်ပို့ရန်", "tog-diffonly": "ကွဲပြားမှုများအောက်ရှိ စာမျက်နှာတွင်ပါဝင်သည်များကို မပြပါနှင့်", "tog-showhiddencats": "ဝှက်ထားသော ကဏ္ဍများကို ပြရန်", + "tog-norollbackdiff": "နောက်ပြန်ပြင်ဆင်ခြင်း လုပ်ဆောင်ပြီးပါက ကွဲပြားမှုကိုမပြပါနှင့်။", "tog-useeditwarning": "မသိမ်းရသေးသော ပြောင်းလဲမှုများ နှင့် တည်းဖြတ်ဆဲစာမျက်နှာမှ ထွက်သွားလျှင် သတိပေးပါ", "tog-prefershttps": "လော့ဂ်အင်ဝင်ချိန်တွင် လုံခြုံသော ဆက်သွယ်မှုကို အမြဲတမ်း အသုံးပြုရန်", "underline-always": "အမြဲ", @@ -381,13 +382,13 @@ "login-security": "သင်၏ အထောက်အထားကို အတည်ပြုပါ", "nav-login-createaccount": "အကောင့်ထဲဝင်ရန် / အကောင့်ဖန်တီးရန်", "logout": "ထွက်ရန်", - "userlogout": "ထွက်ရန်", + "userlogout": "ထွက်လိုက်ပြီ", "notloggedin": "အကောင့် မဝင်ထားပါ", "userlogin-noaccount": "အကောင့် မရှိဘူးလား။", "userlogin-joinproject": "{{SITENAME}} ကို ချိတ်ဆက်ရန်", "createaccount": "အကောင့် ဖန်တီးရန်", "userlogin-resetpassword-link": "စကားဝှက် မေ့နေသလား။", - "userlogin-helplink2": "log in အကူအညီ", + "userlogin-helplink2": "လော့ဂ်အင် အကူအညီ", "userlogin-loggedin": "သင်သည် {{GENDER:$1|$1}} အနေဖြင့် လော့အင်ဝင်ထားပြီး ဖြစ်သည်။ အခြားအသုံးပြုသူ အနေဖြင့် ဝင်ရောက်ရန် အောက်ပါပုံစံကို အသုံးပြုပါ။", "userlogin-reauth": "သင် {{GENDER:$1|}}ဖြစ်ကြောင်း အတည်ပြုရန်အတွက် အကောင့်ထဲ ထပ်မံဝင်ရောက်ရပါမည်။", "userlogin-createanother": "အခြားအကောင့် ဖန်တီးရန်", @@ -561,12 +562,12 @@ "blockednoreason": "အကြောင်းပြချက် မပေးထားပါ", "whitelistedittext": "စာမျက်နှာများကို တည်းဖြတ်ရန် $1ရမည်။", "nosuchsectiontitle": "အပိုင်းကို ရှာမရနိုင်ပါ", - "loginreqtitle": "login ဝင်ထားရန် လိုသည်", + "loginreqtitle": "လော့ဂ်အင်ဝင်ထားရန် လိုသည်", "loginreqlink": "အကောင့်ဝင်ရန်", "loginreqpagetext": "အခြားစာမျက်နှာများကို ကြည့်ရန် $1ရမည်။", "accmailtitle": "စကားဝှက်ကို ပို့ပြီးပြီ", "newarticle": "(အသစ်)", - "newarticletext": "သင်သည် မရှိသေးသော စာမျက်နှာလင့် ကို ရောက်လာခြင်းဖြစ်သည်။\nစာမျက်နှာအသစ်စတင်ရန် အောက်မှ သေတ္တာထဲတွင် စတင်ရိုက်ထည့်ပါ (နောက်ထပ် သတင်းအချက်အလက်များအတွက်[$1 အကူအညီ စာမျက်နှာ]ကို ကြည့်ပါ)။\nမတော်တဆရောက်လာခြင်း ဖြစ်ပါက ဘရောက်ဆာ၏ နောက်ပြန်ပြန်သွားသော back ခလုတ်ကို နှိပ်ပါ။", + "newarticletext": "သင်သည် မရှိသေးသော စာမျက်နှာလင့် ကို ရောက်လာခြင်းဖြစ်သည်။\nစာမျက်နှာအသစ်စတင်ရန် အောက်မှ သေတ္တာထဲတွင် စတင်ရိုက်ထည့်ပါ (နောက်ထပ် သတင်းအချက်အလက်များအတွက် [$1 အကူအညီ စာမျက်နှာ]ကို ကြည့်ပါ)။\nမတော်တဆရောက်လာခြင်း ဖြစ်ပါက ဘရောက်ဆာ၏ နောက်ပြန်ပြန်သွားသော back ခလုတ်ကို နှိပ်ပါ။", "anontalkpagetext": "----\nဤသည်မှာ အကောင့်မဖန်တီးသော သို့မဟုတ် အကောင့်မရှိသော အမည်မသိ အသုံးပြုသူတစ်ဦးအတွက် ဆွေးနွေးချက် စာမျက်နှာ ဖြစ်သည်။\nသို့အတွက် ကျွန်ုပ်တို့အနေဖြင့် အိုင်ပီလိပ်စာဂဏန်းကိုသာ သူ/သူမ အားခွဲခြားနိုင်ရန် အသုံးပြုရပါသည်။\nထိုသို့သော အိုင်ပီလိပ်စာများကို အသုံးပြုသူများစွာမှ မျှဝေသုံးစွဲနေနိုင်ပါသည်။\nသင်သည် အမည်မသိ အသုံးပြုသူတစ်ဦးဖြစ်ပြီး မသက်ဆိုင်သော သုံးသပ်ဆွေးနွေးချက်များက သင့်အား အနှောက်အယှက်ဖြစ်စေပါက၊ ကျေးဇူးပြု၍ [[Special:CreateAccount|အကောင့်တစ်ခု ဖန်တီးပါ]] သို့မဟုတ် [[Special:UserLogin|လော့ဂ်အင်ဝင်ရောက်ပြီး]] အခြား အမည်မသိအသုံးပြုသူများနှင့် ရောထွေးနေနိုင်ခြင်းကို ရှောင်ကြဉ်နိုင်ပါသည်။", "noarticletext": "ဤစာမျက်နှာတွင် ယခုလက်ရှိတွင် မည်သည့်စာသားမှ မရှိပါ။\nသင်သည် အခြားစာမျက်နှာများတွင် [[Special:Search/{{PAGENAME}}|ဤစာမျက်နှာ၏ ခေါင်းစဉ်ကို ရှာနိုင်သည်]]၊ [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ဆက်စပ်ရာ မှတ်တမ်းများကို ရှာနိုင်သည်]၊ သို့မဟုတ် [{{fullurl:{{FULLPAGENAME}}|action=edit}} ဤစာမျက်နှာကို ဖန်တီးနိုင်သည်]။", "noarticletext-nopermission": "ဤစာမျက်နှာတွင် ယခုလက်ရှိတွင် မည်သည့်စာသားမှ မရှိပါ။\nသင်သည် အခြားစာမျက်နှာများတွင် [[Special:Search/{{PAGENAME}}|ဤစာမျက်နှာ၏ ခေါင်းစဉ်ကို ရှာနိုင်သည်]]၊ သို့မဟုတ် [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ဆက်စပ်ရာ မှတ်တမ်းများကို ရှာနိုင်သည်]။ သို့သော် ဤစာမျက်နှာကို ဖန်တီးရန် သင့်တွင် အခွင့်အရေး မရှိပါ။", @@ -578,11 +579,14 @@ "note": "မှတ်စု:", "previewnote": "ဤသည်မှာ နမူနာ ကြည့်နေခြင်းသာဖြစ်ကြောင်း မမေ့ပါနှင့်။\nသင်ပြောင်းလဲထားသည်များကို မသိမ်းရသေးပါ။", "continue-editing": "တည်းဖြတ်ဧရိယာသို့ သွားရန်", + "session_fail_preview": "စိတ်မကောင်းပါ၊ session data ဆုံးရှုံးမှုကြောင့် သင်၏တည်းဖြတ်မှုကို မလုပ်ဆောင်ပေးနိုင်ပါ။ \n\nသင်သည် အကောင့်မှ ထွက်လိုက်တာဖြစ်နိုင်သည်။ အကောင့်ထဲသို့ ဝင်ထားနေခြင်းဖြစ်အောင် အတည်ပြုပြီး ထပ်မံကြိုးစားကြည့်ပါ။\nအကယ်၍ အလုပ်မဖြစ်သေးပါက [[Special:UserLogout|အကောင့်မှထွက်]]ပြီးနောက် ထပ်မံလော့ဂ်အင်ဝင်ရောက်ပါ။ သင်၏ဘရောက်ဆာက ဤဝဘ်ဆိုဒ်မှ cookie ကို ခွင့်ပြုထားကြောင့် စစ်ဆေးပေးပါ။", + "edit_form_incomplete": "တည်းဖြတ်မှုပုံစံအချို့မှာ ဆာဗာသို့ မရောက်ရှိခဲ့ပါ၊ သင်၏တည်းဖြတ်မှုများမှာ ပုံစံမပျက်ရှိနေသည်ကို နှစ်ခါစစ်ဆေးပြီး ထပ်မံကြိုးစားပါ။", "editing": "$1 ကို တည်းဖြတ်နေသည်", "creating": "$1 ကို ဖန်တီးနေသည်", "editingsection": "$1 (အပိုင်း) ကို ပြင်ဆင်နေသည်။", "editingcomment": "$1 (အပိုင်းသစ်) ကို ပြင်ဆင်နေသည်။", "editconflict": "အငြင်းပွားမှုကို တည်းဖြတ်ရန် - $1", + "explainconflict": "သင် စတင်တည်းဖြတ်ကတည်းက တစ်စုံတစ်ယောက်မှ ဤစာမျက်နှာကို ပြောင်းလဲခဲ့သည်။ အပေါ်ပိုင်းဧရိယာတွင် လက်ရှိတည်ရှိနေသော စာမျက်နှာစာသား ပါဝင်သည်။ သင်၏ပြောင်းလဲချက်များကို အောက်ပိုင်းစာသားဧရိယာတွင် ပြသပေးထားသည်။ သင်၏ပြောင်းလဲချက်များကို ရှိနှင့်ပြီးသားစာသားတွင် ပေါင်းစပ်ရမည်ဖြစ်ပါသည်။ \"$1\" ကို သင်နှိပ်လိုက်ပါက အပေါ်ပိုင်းဧရိယာရှိ စာသားသာလျင် သိမ်းဆည်းသွားမည်ဖြစ်ပါသည်။", "yourtext": "သင့်စာသား", "storedversion": "သိမ်းဆည်းထားသောမူ", "yourdiff": "ကွဲပြားချက်များ", @@ -604,7 +608,7 @@ "sectioneditnotsupported-text": "အပိုင်းလိုက်တည်းဖြတ်ခြင်းကို ဤစာမျက်နှာတွင် မရနိုင်ပါ။", "permissionserrors": "ခွင့်ပြုချက်အမှား", "permissionserrorstext": "အောက်ပါ {{PLURAL:$1|အကြောင်းပြချက်|အကြောင်းပြချက်များ}}ကြောင့် ထိုအရာအတွက် ခွင့်ပြုချက်မရှိပါ -", - "permissionserrorstext-withaction": "အောက်ပါ အကြောင်းပြချက် {{PLURAL:$1|ခု|ခု}} ကြောင့် $2 အတွက် ခွင့်ပြုချက်မရှိပါ -", + "permissionserrorstext-withaction": "အောက်ပါ {{PLURAL:$1|အကြောင်းပြချက်|အကြောင်းပြချက်များ}}ကြောင့် $2 အတွက် ခွင့်ပြုချက်မရှိပါ:", "recreate-moveddeleted-warn": "'''သတိပေးချက်။ သင်သည် ယခင်က ဖျက်ထားသော စာမျက်နှာတစ်ခုကို ပြန်လည်ဖန်တီးနေသည်။'''\n\nသင့်အနေနှင့် ဤစာမျက်နှာကို ဆက်လက်တည်းဖြတ်ရန် သင့်တော်မည် မသင့်တော်မည်ကို စဉ်းစားသင့်သည်။\nဖျက်ထားခြင်း နှင့် ရွှေ့ထားခြင်းတို့၏ မှတ်တမ်းကို သင့်အတွက် အလွယ်တကူ ကိုးကားနိုင်ရန် ဖော်ပြထားသည်။", "moveddeleted-notice": "ဤစာမျက်နှာကို ဖျက်ထားသည်။\nဖျက်ထားခြင်း၊ ကာကွယ်ထားခြင်းနှင့် ရွှေ့ပြောင်းထားခြင်းတို့နှင့် ပတ်သက်သော မှတ်တမ်းကို ကိုးကားနိုင်ရန် အောက်တွင် ဖော်ပြထားသည်။", "moveddeleted-notice-recent": "စိတ်မကောင်းပါ၊ ဤစာမျက်နှာ မကြာသေးခင်က (လွန်ခဲ့သော ၂၄ နာရီအတွင်း) ဖျက်ပစ်ခဲ့သည်။ စာမျက်နှာအတွက် ဖျက်ပစ်ခြင်း၊ ကာကွယ်ခြင်းနှင့် ရွေ့ပြောင်းခြင်း မှတ်တမ်းများကို ကိုးကားချက်အဖြစ် အောက်တွင် ဖော်ပြထားသည်။", @@ -631,6 +635,7 @@ "post-expand-template-argument-warning": "'''သတိပေးချက် -''' ဤစာမျက်နှာတွင် ပမာဏအားဖြင့် ကြီးမားကျယ်ပြန့်သော template argument တစ်ခုပါဝင်သည်။\nယင်း arguments များကို ဖယ်ထုတ်လိုက်သည်။", "post-expand-template-argument-category": "ဖယ်ထုတ်ထားသော template arguments များပါဝင်သည့် စာမျက်နှာများ", "parser-template-loop-warning": "တမ်းပလိတ်များ လှည့်ပတ်ဆက်စပ် နေသည်ကို တွေ့ရသည်။ [[$1]]", + "undo-success": "တည်းဖြတ်မှုကို နောက်ပြန်ဆုတ်နိုင်ပါသည်။ သင် လုပ်ဆောင်လိုသည့်အရာကို အတည်ပြုစစ်ဆေးနိုင်ရန် အောက်တွင်ပြထားသော နှိုင်းယှဉ်ချက်ကို စစ်ဆေးပါ၊ ပြီးလျင် နောက်သို့ပြန်ပြင်ရန် ပြောင်းလဲမှုများကို သိမ်းဆည်းပါ။", "undo-failure": "ကြားဖြတ် တည်းဖြတ်မှုများကြောင့် တည်းဖြတ်မှုကို နောက်ပြန် မပြင်နိုင်တော့ပါ။", "undo-summary": "[[Special:Contributions/$2|$2]] ([[User talk:$2|ဆွေးနွေး]]) ၏ တည်းဖြတ်မူ $1 ကို ပြန်လည်ပယ်ဖျက်လိုက်သည်", "cantcreateaccount-text": "ဤအိုင်ပီလိပ်စာ ($1) မှ အကောင့်ဖန်တီးခြင်းကို [[User:$3|$3]] က ပိတ်ပင်ထားသည်။ \n\n$3 က ပေးထားသော အကြောင်းပြချက်မှာ $2", @@ -648,7 +653,7 @@ "next": "နောက်ထပ်", "last": "ယခုမတိုင်မီ", "page_first": "ပထမဆုံး", - "page_last": "အနောက်ဆုံး", + "page_last": "နောက်ဆုံး", "histlegend": "တည်းဖြတ်မူများကို နှိုင်းယှဉ်ရန် radio boxes လေးများကို မှတ်သားပြီးနောက် Enter ရိုက်ချပါ သို့ အောက်ခြေမှ ခလုတ်ကို နှိပ်ပါ။
    \nLegend: ({{int:cur}}) = နောက်ဆုံးမူနှင့် ကွဲပြားချက် ({{int:last}}) = ယင်းရှေ့မူနှင့် ကွဲပြားချက်, {{int:minoreditletter}} = အရေးမကြီးသော ပြုပြင်မှု.", "history-fieldset-title": "ယခင်မူများ ရှာဖွေရန်", "history-show-deleted": "ဖျက်ထားသော မူများသာ", @@ -1160,6 +1165,8 @@ "rcfilters-watchlist-markseen-button": "ပြောင်းလဲမှုများအားလုံးကို ကြည့်ရှုပြီးကြောင်း မှတ်သားရန်", "rcfilters-watchlist-edit-watchlist-button": "သင့်စောင့်ကြည့်စာရင်းရှိ စာမျက်နှာများစာရင်းအား တည်းဖြတ်ရန်", "rcfilters-watchlist-showupdated": "သင်နောက်ဆုံးကြည့်ရှုခဲ့ပြီးနောက် ပြောင်းလဲမှုရှိခဲ့သော စာမျက်နှာများကို စာလုံးမဲ ဖြင့် ပြသထားသည်။", + "rcfilters-preference-label": "လတ်တလောအပြောင်းအလဲများ၏ မွမ်းမံထားသောဗားရှင်းကို ဝှက်ရန်", + "rcfilters-watchlist-preference-label": "စောင့်ကြည့်စာရင်း၏ မွမ်းမံထားသောဗားရှင်းကို ဝှက်ရန်", "rcfilters-target-page-placeholder": "စာမျက်နှာနာမည် (သို့မဟုတ် ကဏ္ဍ) ရိုက်ထည့်ပါ", "rcnotefrom": "အောက်ပါတို့မှာ $3၊ $4 မှစ၍ {{PLURAL:$5|ပြောင်းလဲမှု|ပြောင်းလဲမှုများ}} ဖြစ်သည် ($1 အထိ ပြထား)။", "rclistfromreset": "ရက်စွဲရွေးချယ်မှုအား ပြန်စရန်", @@ -1507,6 +1514,8 @@ "booksources": "မှီငြမ်း စာအုပ်များ", "booksources-search-legend": "စာအုပ်ရင်းမြစ်များကို ရှာရန်", "booksources-search": "ရှာဖွေရန်", + "booksources-text": "အောက်ပါတို့သည် အသုံးပြုပြီးသားနှင့် စာအုပ်သစ်များကို ရောင်းချသော အခြားဆိုဒ်လင့်ခ်များစာရင်းဖြစ်သည်၊ သင်ရှာဖွေနေသော စာအုပ်များနှင့်ပတ်သက်သည့် အခြားသတင်းအချက်အလက်လည်း ရှိနိုင်ပါသည်:", + "booksources-invalid-isbn": "ပေးထားသော ISBN မှာ ဆီလျော်သည့်ပုံစံ မရှိပါ၊ မူလရင်းမြစ်မှ ကော်ပီကူးခြင်းအမှားများအတွက် စစ်ဆေးကြည့်ပါ။", "specialloguserlabel": "ဆောင်ရွက်သူ -", "speciallogtitlelabel": "ရည်ရွယ်ရာ (ခေါင်းစဉ် သို့ {{ns:user}}:အသုံးပြုသူအတွက် အသုံးပြုအမည်):", "log": "မှတ်​တမ်း​များ​", @@ -1795,7 +1804,7 @@ "nocontribs": "ဤသတ်မှတ်ချက်များနှင့် ကိုက်ညီသည့် ပြောင်းလဲမှုများ မရှိပါ။", "uctop": "(လက်ရှိ)", "month": "အဆိုပါ လမှစ၍ ( အဆိုပါလထက်လည်း စောသော) :", - "year": "အဆိုပါ နှစ်မှစ၍ ( အဆိုပါနှစ်ထက်လည်း စောသော) :", + "year": "အဆိုပါ နှစ်မှစ၍ (အဆိုပါနှစ်ထက်လည်း စောသော):", "date": "အဆိုပါရက်စွဲမှစ၍ (ယင်းထက်လည်း စောသော):", "sp-contributions-newbies": "အကောင့်အသစ်များ၏ ပံ့ပိုးမှုများကိုသာ ပြရန်", "sp-contributions-newbies-sub": "အကောင့်အသစ်များအတွက်", @@ -2009,6 +2018,7 @@ "importbadinterwiki": "ညံ့ဖျင်းသော အင်တာဝီကီလင့်", "importsuccess": "ထည့်သွင်းခြင်း ပြီးဆုံးပါပြီ။", "import-noarticle": "မည်သည့်စာမျက်နှာမှ ထည့်သွင်းခြင်းမရှိပါ။", + "import-token-mismatch": "session data ဆုံးရှုံးမှု ဖြစ်ပါသည်။\n\nသင်သည် အကောင့်မှ ထွက်လိုက်တာဖြစ်နိုင်သည်။ အကောင့်ထဲသို့ ဝင်ထားနေခြင်းဖြစ်အောင် အတည်ပြုပြီး ထပ်မံကြိုးစားကြည့်ပါ။\nအကယ်၍ အလုပ်မဖြစ်သေးပါက [[Special:UserLogout|အကောင့်မှထွက်]]ပြီးနောက် ထပ်မံလော့ဂ်အင်ဝင်ရောက်ပါ။ သင်၏ဘရောက်ဆာက ဤဝဘ်ဆိုဒ်မှ cookie ကို ခွင့်ပြုထားကြောင့် စစ်ဆေးပေးပါ။", "importlogpage": "ထည့်သွင်းသည့် မှတ်တမ်း", "importlogpagetext": "အခြားဝီကီများမှ အက်ဒမင်ဆိုင်ရာ တည်းဖြတ်မှုရာဇဝင်နှင့် စာမျက်နှာ တင်သွင်းမှုများ", "tooltip-pt-userpage": "{{GENDER:|သင်၏ အသုံးပြုသူ}} စာမျက်နှာ", @@ -2310,6 +2320,7 @@ "exif-dc-contributor": "ဆောင်ရွက်ပေးထားသူများ", "exif-dc-source": "ရင်းမြစ် မီဒီယာ", "exif-dc-type": "မီဒီယာ အမျိုးအစား", + "exif-rating-rejected": "ငြင်းပယ်ခဲ့သည်", "exif-iimcategory-ace": "အနုပညာ၊ ယဥ်ကျေးမှုနှင့် ဖြေဖျော်ရေး", "exif-iimcategory-clj": "ရာဇဝတ်မှုနှင့် ဥပဒေ", "exif-iimcategory-dis": "ဘေးအန္တရာယ်များနှင့် မတော်တဆမှုများ", @@ -2536,6 +2547,8 @@ "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|ပိတ်ပင်ခဲ့သည်}}", @@ -2675,6 +2688,7 @@ "authmanager-realname-label": "အမည်ရင်း", "authmanager-realname-help": "အသုံးပြုသူ၏ အမည်ရင်း", "authmanager-provider-temporarypassword": "ယာယီစကားဝှက်", + "authprovider-resetpass-skip-label": "ကျော်ရန်", "cannotauth-not-allowed-title": "ခွင့်ပြုချက် ငြင်းပယ်လိုက်သည်", "cannotauth-not-allowed": "သင်သည် ဤစာမျက်နှာကို အသုံးပြုခွင့်မရှိပါ", "edit-error-short": "အမှား - $1", @@ -2687,5 +2701,6 @@ "passwordpolicies-summary": "ဤသည်မှာ ဤဝီကီရှိ အသုံးပြုသူအုပ်စုများအတွက် အကျုံးဝင်သော စကားဝှက် မူဝါဒများ ဖြစ်သည်။", "passwordpolicies-group": "အုပ်စု", "passwordpolicies-policies": "မူဝါဒများ", + "passwordpolicies-policy-minimalpasswordlength": "စကားဝှက်တွင် အနည်းဆုံး {{PLURAL:$1|စကားလုံး|စကားလုံးများ}} $1 ခုရှိရမည်။", "passwordpolicies-policy-passwordcannotmatchusername": "စကားဝှက်သည် အသုံးပြုသူအမည်နှင့် မတူညီရပါ" } diff --git a/languages/i18n/nan.json b/languages/i18n/nan.json index 2fe2bc0842..379fa5c23f 100644 --- a/languages/i18n/nan.json +++ b/languages/i18n/nan.json @@ -914,6 +914,7 @@ "deletecomment": "Lí-iû:", "rollback": "Kā siu-kái ká tńg khì", "rollbacklink": "ká tńg khì", + "rollbacklinkcount": "Ká tńg $1 kái {{PLURAL:$1|pian-chi̍p|pian-chi̍p}}", "rollbackfailed": "Ká bē tńg khì", "cantrollback": "Bô-hoat-tō· kā siu-kái ká-tńg--khì; téng ūi kòng-hiàn-chiá sī chit ia̍h î-it ê chok-chiá.", "alreadyrolled": "Bô-hoat-tō· kā [[User:$2|$2]] ([[User talk:$2|Thó-lūn]]) tùi [[:$1]] ê siu-kái ká-tńg-khì; í-keng ū lâng siu-kái a̍h-sī ká-tńg chit ia̍h. Téng 1 ūi siu-kái-chiá sī [[User:$3|$3]] ([[User talk:$3|Thó-lūn]]).", diff --git a/languages/i18n/nap.json b/languages/i18n/nap.json index bc1eb578c8..68cea82a1e 100644 --- a/languages/i18n/nap.json +++ b/languages/i18n/nap.json @@ -364,8 +364,9 @@ "customcssprotected": "Nun v'è permesso 'a cagnà sta paggena CSS, pecché cuntene 'e mpustaziune perzunale 'e n'at'utente.", "customjsonprotected": "Nun v'è permesso 'a cagnà sta paggena JSON, pecché cuntene 'e mpustaziune perzunale 'e n'at'utente.", "customjsprotected": "Nun v'è permesso 'a cagnà sta paggena JavaScript, pecché cuntene 'e mpustaziune perzunale 'e n'at'utente.", - "sitecssprotected": "Nun téne premmesse pe' puté cagnà sta paggena CSS pecché putesse dà prubbleme a 'e vvisite", - "sitejsonprotected": "Nun téne premmesse pe' puté cagnà sta paggena JSON pecché putesse dà prubbleme a 'e vvisite", + "sitecssprotected": "Nun téne premmesse pe' puté cagnà sta paggena CSS pecché putesse dà prubbleme a 'e vvisite.", + "sitejsonprotected": "Nun téne premmesse pe' puté cagnà sta paggena JSON pecché putesse dà prubbleme a 'e vvisite.", + "sitejsprotected": "Nun téne premmesse pe' puté cagnà sta paggena JavaScript pecché putesse dà prubbleme a 'e vvisite.", "mycustomcssprotected": "Nun v'è permesso 'a cagnà sta paggena CSS.", "mycustomjsonprotected": "Nun v'è permesso 'a cagnà sta paggena JSON.", "mycustomjsprotected": "Nun v'è licenzia pe cagnà sta paggena JavaScript.", @@ -917,8 +918,11 @@ "diff-multi-otherusers": "({{PLURAL:$1|Na virzione ntermedia|$1 verziune ntermedie}} 'a {{PLURAL:$2|n'at'utente|$2 n'ati ddoj'utente}} nun è mmustata)", "diff-multi-manyusers": "({{PLURAL:$1|Na virzione ntermedia|$1 verziune ntermedie}} 'a cchiù 'e $2 {{PLURAL:$2|utente|utente}} nun è mmustata)", "diff-paragraph-moved-tonew": "'O paragrafo è stato spustat. Facite clic pe' puté cagnà dint'a nova posiziona.", + "diff-paragraph-moved-toold": "'O paragrafo è stato spustat. Facite clic pe' puté cagnà dint' 'o posto viecchio.", "difference-missing-revision": "{{PLURAL:$2|Na virziona|$2 verziune}} 'e sta differenza ($1) {{PLURAL:$2|nun è stata truvata|nun so' state truvate}}.\n\nChest'è succiesso quanno s'è secutato nu diff obsoleto a na paggena scancellata.\n'E dettaglie se ponno truvà dint'a [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 'o riggistro 'e scancellamiente].", "searchresults": "Risultato d''a recerca", + "search-filter-title-prefix": "Ascià surtanto dint' 'e paggene c' 'o titolo c'accumencia pe' \"$1\"", + "search-filter-title-prefix-reset": "Ascìa tutt' 'e paggene", "searchresults-title": "Ascià risultate ppe \"$1\"", "titlematches": "Currispunnenze d' 'o titolo d' 'e paggene", "textmatches": "Currispunnenze d' 'o testo d' 'e paggene", @@ -990,9 +994,10 @@ "prefs-editwatchlist-clear": "Sbacanta l'elenco 'e paggene cuntrullate", "prefs-watchlist-days": "Nummero 'e juorne 'a mmustà dint'a l'elenco 'e cuntrollo:", "prefs-watchlist-days-max": "Massimo $1 {{PLURAL:$1|juorno|juorne}}", - "prefs-watchlist-edits": "Numero massimo 'e cagnamiente 'a mmustà ch' 'e funziune avanzate:", + "prefs-watchlist-edits": "Numero massimo 'e cagnamiente 'a mmustà dint' a l'elenco 'e paggene cuntrullate:", "prefs-watchlist-edits-max": "Nummero massimo: 1000", "prefs-watchlist-token": "Token 'e l'elenco 'e cuntrollo:", + "prefs-watchlist-managetokens": "Gestisce 'e tokén", "prefs-misc": "Varje", "prefs-resetpass": "Cagna 'a password", "prefs-changeemail": "Cagna o lèva l'indirizzo e-mail", @@ -1008,9 +1013,10 @@ "stub-threshold-disabled": "Stutato", "recentchangesdays": "Nummero 'e juorne a mmustà dint'a l'urdeme cagnamiente:", "recentchangesdays-max": "Massimo $1 {{PLURAL:$1|juorno|juorne}}", - "recentchangescount": "Nummero predefinito 'e cagnamiente 'a mmustà:", - "prefs-help-recentchangescount": "Chesto ntenne ll'urdeme cagnamiente, 'e cronologgie 'e paggena, e riggistre.", - "prefs-help-watchlist-token2": "Chest'è 'a chiave segreta pe se ffà 'o feed web 'e l'elenco 'e cuntrolo d' 'o vuosto.\nSi coccheruno 'a cunoscesse, allora putesse vedé l'elenco 'e cuntrollo, picciò nun 'a spartite. [[Special:ResetTokens|Cliccate ccà se tenite necessità d' 'a rimpizzà]].", + "recentchangescount": "Nummero predefinito 'e cagnamiente 'a mmustà dint' 'e paggene 'e cagnamiente 'e mo, cronologgie e riggistre:", + "prefs-help-recentchangescount": "Nummero massimo: 1000", + "prefs-help-watchlist-token2": "Chest'è 'a chiave segreta pe se ffà 'o feed web 'e l'elenco 'e cuntrolo d' 'o vuosto.\nSi coccheruno 'a cunoscesse, allora putesse vedé l'elenco vuost' 'e cuntrollo, picciò nun 'a spartite.\nSi ve serve, [[Special:ResetTokens|facite clic ccà p' 'a rimpizzà]].", + "prefs-help-tokenmanagement": "Putite vedé e mpustà n'ata vota 'a chiave segreta pe' l'utenza d' 'a vosta pe' ve puté fà trasì dint' 'o feed web 'e paggene cuntrullate 'a vuje. Chi canuscesse sta chiave putesse leggere 'e paggene cuntrullate vuoste, picciò, tenit' 'a mente e nun 'a spartí.", "savedprefs": "'E preferenze songo state sarvate.", "savedrights": "'E dritte 'e gruppe 'utente {{GENDER:$1|$1}} sto state sarvate.", "timezonelegend": "Fuso orario:", @@ -1030,13 +1036,16 @@ "timezoneregion-indian": "Oceano Indiano", "timezoneregion-pacific": "Oceano Pacifeco", "allowemail": "Abbìa 'a ricezione 'e mmasciate mannate 'a l'ati utente", + "email-allow-new-users-label": "Abbìa 'a ricezione 'e mmasciate 'a l'ati utente nuove nuove", + "email-blacklist-label": "Nun permettere chist' utente 'e me mannà masciate:", "prefs-searchoptions": "Ascìa", "prefs-namespaces": "Namespace", "default": "predefinito", "prefs-files": "File", "prefs-custom-css": "CSS personalizzato", + "prefs-custom-json": "JSON personalizzato", "prefs-custom-js": "JavaScript personalizzato", - "prefs-common-config": "CSS/JavaScript spartuto pe' tutt' 'e skin:", + "prefs-common-config": "CSS/JSON/JavaScript spartuto pe' tutt' 'e skin:", "prefs-reset-intro": "Putisse ausà sta paggena pe' rimpizzà 'e preferenze proprie comme chille predefinite d' 'o sito.\nL'operazione nun se può annullà.", "prefs-emailconfirm-label": "Cunferma 'e ll'e-mail:", "youremail": "E-mail:", @@ -1068,9 +1077,11 @@ "prefs-dateformat": "Furmato data", "prefs-timeoffset": "Ore 'e differenza", "prefs-advancedediting": "Opziune generale", + "prefs-developertools": "Strumiente p' 'e sviluppature", "prefs-editor": "Editore", "prefs-preview": "Anteprimma", "prefs-advancedrc": "Opziune avanzate", + "prefs-opt-out": "Stuta miglioramente", "prefs-advancedrendering": "Opziune avanzate", "prefs-advancedsearchoptions": "Opziune avanzate", "prefs-advancedwatchlist": "Opziune avanzate", @@ -1113,6 +1124,7 @@ "group-autoconfirmed": "Utente autocunfermate", "group-bot": "Bot", "group-sysop": "Ammenistrature", + "group-interface-admin": "Ammenistrature 'e ll'interfaccia", "group-bureaucrat": "Burocrate", "group-suppress": "Soppressure", "group-all": "(tutte)", @@ -1120,12 +1132,14 @@ "group-autoconfirmed-member": "{{GENDER:$1|utente autocunfermato|utente autocunfermata|utente autocunfermato/a}}", "group-bot-member": "{{GENDER:$1|bot}}", "group-sysop-member": "{{GENDER:$1|ammenistratore|ammenistratrice|ammenistratore/trice}}", + "group-interface-admin-member": "{{GENDER:$1|ammenistratore|ammenistratrice|ammenistratore/trice}} 'e ll'interfaccia", "group-bureaucrat-member": "{{GENDER:$1|burocrate}}", "group-suppress-member": "{{GENDER:$1|suppressure|supprimitrice}}", "grouppage-user": "{{ns:project}}:Utente", "grouppage-autoconfirmed": "{{ns:project}}:Utente autocunfermate", "grouppage-bot": "{{ns:project}}:Bot", "grouppage-sysop": "{{ns:project}}:Ammenistrature", + "grouppage-interface-admin": "{{ns:project}}:Ammenistrature 'e ll'interfaccia", "grouppage-bureaucrat": "{{ns:project}}:Burocrate", "grouppage-suppress": "{{ns:project}}:Suppressure", "right-read": "Liegge paggene", @@ -1174,8 +1188,13 @@ "right-editcontentmodel": "Cagna 'o modello 'e cuntenute 'e na paggena", "right-editinterface": "Modifeca 'a nterfaccia utente", "right-editusercss": "Cagna 'e file CSS 'e l'at'utente", + "right-edituserjson": "Cagna 'e file JSON 'e l'at'utente", "right-edituserjs": "Cagna 'e file JS e l'at'utente", + "right-editsitecss": "Cagna 'e CSS p' 'o sito sano", + "right-editsitejson": "Cagna 'e JSON p' 'o sito sano", + "right-editsitejs": "Cagna 'e JavaScript p' 'o sito sano", "right-editmyusercss": "Cagna 'e proprie file CSS", + "right-editmyuserjson": "Cagna 'e proprie file JSON", "right-editmyuserjs": "Cagna 'e proprie file JavaScript", "right-viewmywatchlist": "Vide l'elenco 'e cuntrollo proprio", "right-editmywatchlist": "Cagna l'elenco 'e cuntrollo proprio. Vedete ca cocch'azione putesse jògnere ancora paggene senza stu deritto.", @@ -1215,10 +1234,11 @@ "grant-createaccount": "Crìa cunte", "grant-createeditmovepage": "Créa, cagna e móve paggene", "grant-delete": "Scancella paggene, verziune, trasute 'e riggistro", - "grant-editinterface": "Cagna 'o namespace MediaWiki e CSS/JavaScript 'e ll'utente", - "grant-editmycssjs": "Cagna 'e CSS/JavaScript 'e ll'utenza d' 'a vosta", + "grant-editinterface": "Cagna 'o namespace MediaWiki 'e ll'utente/JSON p' 'o sito sano", + "grant-editmycssjs": "Cagna 'e CSS/JSON/JavaScript 'e ll'utenza d' 'a vosta", "grant-editmyoptions": "Cagna 'e preferenze utente proprie", "grant-editmywatchlist": "Cagna l'elenco 'e cuntrolo 'o tuojo", + "grant-editsiteconfig": "Cagna 'e CSS/JS p' 'o sito sano", "grant-editpage": "Cagna 'e paggene esistente", "grant-editprotected": "Cagna 'e paggine prutette", "grant-highvolume": "Cagnamiente massive", @@ -1258,7 +1278,9 @@ "action-writeapi": "usa l'API 'n scrittura", "action-delete": "scancèlla chesta paggena", "action-deleterevision": "scancellà 'e verziune", + "action-deletelogentry": "scancellà riggistro", "action-deletedhistory": "vide 'a cronologgia scancellata 'e sta paggena", + "action-deletedtext": "vide 'a verziona d' 'o testo scancellato", "action-browsearchive": "ascìa dint' 'e paggene scancellate", "action-undelete": "arripiglia chesta paggena", "action-suppressrevision": "rivedé e arripiglià 'e cagnamiente annascunnute", @@ -1276,6 +1298,7 @@ "action-userrights-interwiki": "cagna 'e deritte 'e ll'utente int'a l'ati wiki", "action-siteadmin": "blocca o sblocca 'o database", "action-sendemail": "manna e-mail", + "action-editmyoptions": "cagna 'e preferenze proprie", "action-editmywatchlist": "cagna l'elenco 'e cuntrolo 'o tuojo", "action-viewmywatchlist": "vide l'elenco 'e cuntrollo proprio", "action-viewmyprivateinfo": "vide 'e date perzunale", @@ -1293,6 +1316,9 @@ "recentchanges-legend": "Opzione urdeme cagnamiénte", "recentchanges-summary": "Ncopp'a chesta paggena song' appresentate ll'urdeme cagnamiente fatte ê cuntenute d\"o sito.", "recentchanges-noresult": "Nisciuno cagnamiento dint'o periodo dato ca soddisfà sti criterie.", + "recentchanges-timeout": "Sta ricerca è ammaturata mo. Si tu vulisse, putisse tentà n'ati parametre 'e cerca.", + "recentchanges-network": "Pe' bbìa 'e n'errore tecnico, nun se pò carecà nisciuno risultato. Facite agghiurnamento d' 'a paggena.", + "recentchanges-notargetpage": "Azzeccate ncoppa 'o nomme 'e na paggena pe' puté vedé 'e cagnamiente 'e chesta paggena.", "recentchanges-feed-description": "Ncoppa chistu feed song' appresentate ll'urdeme cagnamiente fatte ê cuntenute d\"o sito.", "recentchanges-label-newpage": "Chisto cagno ha criato na paggena nova", "recentchanges-label-minor": "Chisto è nu cagnamiénto piccerillo", @@ -1302,6 +1328,44 @@ "recentchanges-legend-heading": "Liggenda:", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (vide [[Special:NewPages|'e paggene nove]])", "recentchanges-submit": "Faje vedé", + "rcfilters-tag-remove": "Léva '$1'", + "rcfilters-legend-heading": "Elenco abbreviaziune:", + "rcfilters-other-review-tools": "Ate strumiente 'e cuntrollo", + "rcfilters-group-results-by-page": "Arricetta risultate pe' paggena", + "rcfilters-activefilters": "Filtre appicciate", + "rcfilters-activefilters-hide": "Annascunne", + "rcfilters-activefilters-show": "Faje vedé", + "rcfilters-activefilters-hide-tooltip": "Annascunne l'area 'e filtre appicciate", + "rcfilters-activefilters-show-tooltip": "Fà vedé l'area 'e filtre appicciate", + "rcfilters-advancedfilters": "Filtre avanzate", + "rcfilters-limit-title": "Risultate 'a fà vedé", + "rcfilters-limit-and-date-label": "$1 {{PLURAL:$1|cagnamiento|cagnamiente}}, $2", + "rcfilters-date-popup-title": "Periodo 'e tiempo a cercà", + "rcfilters-days-title": "Ùrdeme juorne", + "rcfilters-hours-title": "Ùrdeme ore", + "rcfilters-days-show-days": "$1 {{PLURAL:$1|juorno|juorne}}", + "rcfilters-days-show-hours": "$1 {{PLURAL:$1|ora|ore}}", + "rcfilters-highlighted-filters-list": "Evidenziato: $1", + "rcfilters-quickfilters": "Filtre riggistrate", + "rcfilters-quickfilters-placeholder-title": "Nisciuno filtro riggistrato", + "rcfilters-savedqueries-defaultlabel": "Filtre riggistrate", + "rcfilters-savedqueries-rename": "Renommena", + "rcfilters-savedqueries-setdefault": "Mpustà comme predefinito", + "rcfilters-savedqueries-unsetdefault": "Léva cumme predefinito", + "rcfilters-savedqueries-remove": "Scancèlla", + "rcfilters-savedqueries-new-name-label": "Nomme", + "rcfilters-savedqueries-apply-label": "Crea filtro", + "rcfilters-savedqueries-cancel-label": "Scancella", + "rcfilters-clear-all-filters": "Pulezza tutt' 'e filtre", + "rcfilters-show-new-changes": "Vide 'e cagnamiente cchiù nnove", + "rcfilters-invalid-filter": "Filtro invalido", + "rcfilters-filterlist-title": "Filtre", + "rcfilters-filterlist-whatsthis": "Cumme funzionano?", + "rcfilters-highlightbutton-title": "Evidenzia risultate", + "rcfilters-filterlist-noresults": "Nisciuno filtro truvato", + "rcfilters-filtergroup-authorship": "Autore d' 'o cuntribbuto", + "rcfilters-filtergroup-lastRevision": "Ùrdeme verziune", + "rcfilters-filter-lastrevision-label": "Verzione 'e mmo", "rcnotefrom": "Ccà abbascio {{PLURAL:$5|è alencato 'o cagnamiento appurtato|song' alincate 'e cagnamiente appurtate}} 'a $3, $4 (mmustate nfin'a $1).", "rclistfrom": "Faje vedé 'e cagnamiénte fatte a partì 'a $3 $2", "rcshowhideminor": "$1 'e cagnamiénte piccerille", diff --git a/languages/i18n/nb.json b/languages/i18n/nb.json index 359d8b78cb..05206d840e 100644 --- a/languages/i18n/nb.json +++ b/languages/i18n/nb.json @@ -3546,6 +3546,7 @@ "redirect-file": "Filnavn", "redirect-logid": "Logg-ID", "redirect-not-exists": "Verdi er ikke funnet", + "redirect-not-numeric": "Verdien er ikke numerisk", "fileduplicatesearch": "Søk etter duplikatfiler", "fileduplicatesearch-summary": "Søk etter duplikatfiler basert på dets hash-verdi.", "fileduplicatesearch-filename": "Filnavn:", diff --git a/languages/i18n/nl.json b/languages/i18n/nl.json index 5831b8232e..186de49a92 100644 --- a/languages/i18n/nl.json +++ b/languages/i18n/nl.json @@ -3559,6 +3559,7 @@ "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:", @@ -4116,7 +4117,7 @@ "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 editinterface 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 editinterface 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.", diff --git a/languages/i18n/nn.json b/languages/i18n/nn.json index 71640d54e9..b3fc56c9e1 100644 --- a/languages/i18n/nn.json +++ b/languages/i18n/nn.json @@ -1235,6 +1235,10 @@ "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.", @@ -2483,6 +2487,7 @@ "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", @@ -2494,6 +2499,7 @@ "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", @@ -2531,6 +2537,10 @@ "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", @@ -3269,6 +3279,8 @@ "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", diff --git a/languages/i18n/or.json b/languages/i18n/or.json index 1751fdd5b4..340a33a44e 100644 --- a/languages/i18n/or.json +++ b/languages/i18n/or.json @@ -2868,7 +2868,7 @@ "version-skin-colheader-name": "ସ୍କିନ", "version-ext-colheader-version": "ସଂସ୍କରଣ", "version-ext-colheader-license": "ଲାଇସେନ୍ସ", - "version-ext-colheader-description": "ବର୍ଣନା", + "version-ext-colheader-description": "ବର୍ଣ୍ଣନା", "version-ext-colheader-credits": "ଲେଖକମାନେ", "version-license-title": "$1 ପାଇଁ ଲାଇସେନ୍ସ", "version-license-not-found": "ଏହି ଏକ୍ସଟେନସନରେ କୌଣସି ସବିଶେଷ ସୂଚନା ନାହିଁ ।", diff --git a/languages/i18n/pfl.json b/languages/i18n/pfl.json index 20164c0b58..3aa864ae49 100644 --- a/languages/i18n/pfl.json +++ b/languages/i18n/pfl.json @@ -366,7 +366,7 @@ "note": "'''Hiwes:'''", "previewnote": "'''Deng'g drõõ, dasses nua e Vorschau isch.'''\nDoi Ännarunge sinn noch nedd gschbaischadd worre!", "editing": "An de Said $1 schaffe", - "creating": "Magschd $1", + "creating": "$1 aaleche", "editingsection": "$1 schaffe (Deel)", "editingcomment": "$1 schaffe (Deel)", "editconflict": "Schdraid ums Ännare: $1", diff --git a/languages/i18n/pl.json b/languages/i18n/pl.json index 1e73153253..f92f2ea901 100644 --- a/languages/i18n/pl.json +++ b/languages/i18n/pl.json @@ -1266,7 +1266,7 @@ "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", diff --git a/languages/i18n/ps.json b/languages/i18n/ps.json index 41b39162ca..4c7e4660cb 100644 --- a/languages/i18n/ps.json +++ b/languages/i18n/ps.json @@ -86,7 +86,7 @@ "june": "جون", "july": "جولای", "august": "اگسټ", - "september": "سېپتمبر", + "september": "سپټمبر", "october": "اکتوبر", "november": "نومبر", "december": "ډيسمبر", @@ -122,7 +122,7 @@ "june-date": "جون $1", "july-date": "جولای $1", "august-date": "اگست $1", - "september-date": "سېپتمبر $1", + "september-date": "سپټمبر $1", "october-date": "اکتوبر $1", "november-date": "نومبر $1", "december-date": "دېسمبر $1", diff --git a/languages/i18n/pt-br.json b/languages/i18n/pt-br.json index 9a0b8f6710..1f5dadee34 100644 --- a/languages/i18n/pt-br.json +++ b/languages/i18n/pt-br.json @@ -3644,6 +3644,7 @@ "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:", @@ -4201,7 +4202,7 @@ "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 editinterface. 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 editinterface. 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.", diff --git a/languages/i18n/pt.json b/languages/i18n/pt.json index 3fe7135259..a02bd931d5 100644 --- a/languages/i18n/pt.json +++ b/languages/i18n/pt.json @@ -3560,6 +3560,7 @@ "redirect-file": "Nome do ficheiro", "redirect-logid": "Identificador da entrada do registo", "redirect-not-exists": "Valor não encontrado", + "redirect-not-numeric": "Valor não numérico", "fileduplicatesearch": "Pesquisa de ficheiros duplicados", "fileduplicatesearch-summary": "Pesquisa de ficheiros duplicados baseada no resumo criptográfico.", "fileduplicatesearch-filename": "Nome do ficheiro:", diff --git a/languages/i18n/qqq.json b/languages/i18n/qqq.json index 4bb5fc411e..4a8f365ab0 100644 --- a/languages/i18n/qqq.json +++ b/languages/i18n/qqq.json @@ -4100,6 +4100,7 @@ "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}}", diff --git a/languages/i18n/roa-tara.json b/languages/i18n/roa-tara.json index 7fdfdbb120..cf05767936 100644 --- a/languages/i18n/roa-tara.json +++ b/languages/i18n/roa-tara.json @@ -364,7 +364,11 @@ "customcssprotected": "Non ge tine 'u permesse pe cangià sta pàgene de CSS, purcè tène otre configurazione personale.", "customjsonprotected": "Non ge tine 'u permesse pe cangià sta pàgene de JSON, purcè tène otre configurazione personale.", "customjsprotected": "Non ge tine 'u permesse pe cangià sta pàgene de Javascript, purcè tène otre configurazione personale.", + "sitecssprotected": "Non ge tìne le permesse pe cangià sta pàgene CSS purcé pò avè effette sus a tutte le visitature.", + "sitejsonprotected": "Non ge tìne le permesse pe cangià sta pàgene JSON purcé pò avè effette sus a tutte le visitature.", + "sitejsprotected": "Non ge tìne le permesse pe cangià sta pàgene JavaScript purcé pò avè effette sus a tutte le visitature.", "mycustomcssprotected": "Non ge tìne le permesse pe cangià sta pàgene CSS", + "mycustomjsonprotected": "Non ge tìne le permesse pe cangià sta pàgene JSON.", "mycustomjsprotected": "Non ge tìne le permesse pe cangià sta pàgene JavaScript", "myprivateinfoprotected": "Non ge tìne le permesse pe cangià le 'mbormaziune private tune.", "mypreferencesprotected": "Non ge tìne le permesse pe cangià le preferenze tune.", diff --git a/languages/i18n/ru.json b/languages/i18n/ru.json index 9d90fb4f8c..aec7c7b54f 100644 --- a/languages/i18n/ru.json +++ b/languages/i18n/ru.json @@ -410,7 +410,7 @@ "sort-descending": "Упорядочить по убыванию", "sort-ascending": "Упорядочить по возрастанию", "nstab-main": "Статья", - "nstab-user": "Участник", + "nstab-user": "{{GENDER:{{ROOTPAGENAME}}|Участник|Участница}}", "nstab-media": "Мультимедиа", "nstab-special": "Служебная страница", "nstab-project": "О проекте", @@ -843,8 +843,8 @@ "permissionserrorstext-withaction": "У вас нет прав на выполнение действия «$2» по {{PLURAL:$1|1=следующей причине|следующим причинам}}:", "contentmodelediterror": "Вы не можете редактировать эту версию, поскольку модель её содержания — $1, отличающаяся от текущей модели содержания страницы — $2.", "recreate-moveddeleted-warn": "Внимание: Вы пытаетесь воссоздать страницу, которая ранее удалялась.\n\nПроверьте, действительно ли вам нужно воссоздавать эту страницу.\nНиже для справки приведены журналы удаления и переименований этой страницы.", - "moveddeleted-notice": "Эта страница была удалена.\nНиже для справки приведены журналы удаления, защиты и перемещения для этой страницы.", - "moveddeleted-notice-recent": "К сожалению, эта страница была недавно удалена (в течение последних 24 часов).\nНиже для справки приведены журналы удаления, защиты и перемещения для этой страницы.", + "moveddeleted-notice": "Эта страница была удалена.\nНиже для справки приведены журналы удаления, защиты и переименования для этой страницы.", + "moveddeleted-notice-recent": "К сожалению, эта страница была недавно удалена (в течение последних 24 часов).\nНиже для справки приведены журналы удаления, защиты и переименования для этой страницы.", "log-fulllog": "Просмотреть журнал целиком", "edit-hook-aborted": "Правка отменена процедурой-перехватчиком.\nДополнительных разъяснений не приведено.", "edit-gone-missing": "Невозможно обновить страницу.\nВероятно, она была удалена.", @@ -3792,6 +3792,7 @@ "redirect-file": "Название файла", "redirect-logid": "ID журнала", "redirect-not-exists": "Значение не найдено", + "redirect-not-numeric": "Значение не числовое", "fileduplicatesearch": "Поиск одинаковых файлов", "fileduplicatesearch-summary": "Поиск одинаковых файлов по хэш-коду.", "fileduplicatesearch-filename": "Имя файла:", diff --git a/languages/i18n/rue.json b/languages/i18n/rue.json index 1a81188139..e8a9b6efce 100644 --- a/languages/i18n/rue.json +++ b/languages/i18n/rue.json @@ -935,6 +935,7 @@ "right-move": "Переменованя сторінок", "right-move-subpages": "Переменованя сторінок і їх підсторінок", "right-move-rootuserpages": "Переменованя корінёвых сторінок хоснователїв", + "right-move-categorypages": "Переменованя сторінок катеґорій", "right-movefile": "Переменовати файлы", "right-suppressredirect": "Нестворіня напрямлїня про переменоваю сторінкы", "right-upload": "Наладовованя файлів", @@ -993,6 +994,7 @@ "right-siteadmin": "Замыкана і одомыканя датабазы", "right-override-export-depth": "Експорт сторінок включаючі звязаны сторінкы з глубков до 5", "right-sendemail": "Посыланя пошты іншым хоснователям", + "right-applychangetags": "Придаваня [[Special:Tags|значок]] до властных змін", "newuserlogpage": "Лоґ вытварянь хоснователїв", "newuserlogpagetext": "Тото є список ново реґістрованых хоснователїв.", "rightslog": "Лоґ хосновательскых прав", @@ -1006,6 +1008,7 @@ "action-move": "Переменовати тоту сторінку", "action-move-subpages": "переменованя той сторінкы зо вшыткыма єй підсторінками", "action-move-rootuserpages": "переменовати корінёвы сторінкы хостователїв", + "action-move-categorypages": "переменованя сторінок катеґорій", "action-movefile": "переменовати тот файл", "action-upload": "наладовати тот файл", "action-reupload": "переписати тот екзістуючій файл", diff --git a/languages/i18n/sd.json b/languages/i18n/sd.json index 3b49cb0e2d..3df66d9fbd 100644 --- a/languages/i18n/sd.json +++ b/languages/i18n/sd.json @@ -316,7 +316,7 @@ "viewsourcetext": "توهان هن صفحي جو ڪوڊ ڏسي ۽ نقل ڪري سگھو ٿا.", "protectedinterface": "هي صفحو سافٽ ويئر جو انٽرفيس متعين ڪري ٿو ۽ غلط استعال کان بچڻ لاءِ ان کي تحفظيو ويو آهي.\nتمام وڪي ۾ ترجمو شامل ڪرڻ لاءِ يا هن ۾ تبديلي ڪرڻ لاءِ ميڊياوڪي ترجمو [https://translatewiki.net/ translatewiki.net] استعمال ڪيو.", "namespaceprotected": "توهان کي نانءُپولار $1 جا صفحا سنوارڻ جا اختيار ناهن.", - "sitecssprotected": "اوهان وٽ CSS صفحي کي ترميم ڪرڻ جا اختيار ناهن، ڇو ته اهڙيون ترميمون سڄي سائيٽ کي متاثر ڪري سگھن ٿيون.", + "sitecssprotected": "اوهان وٽ سيـ.ايسـ.ايسـ صفحي کي ترميم ڪرڻ جا اختيار ناهن، ڇو تہ اهڙيون ترميمون سڀني گھمندڙن کي متاثر ڪري سگھن ٿيون.", "mycustomcssprotected": "توهان کي هيءُ CSS صفحو سنوارڻ جي اجازت نہ آهي.", "mycustomjsprotected": "توهان کي هيءُ جاوا اسڪرپٽ صفحو سنوارڻ جي اجازت حاصل ڪانهي.", "myprivateinfoprotected": "توهان کي پنهنجي ذاتي معلومات سنوارڻ جي اجازت حاصل نہ آهي.", @@ -458,12 +458,12 @@ "resetpass-submit-loggedin": "ڳجھولفظ بدلايو", "resetpass-submit-cancel": "رد", "resetpass-wrong-oldpass": "ناقابلِڪار هاڻوڪو يا عارضي ڳجھولفظ. \nتوھان پنھنجو ڳجھولفظ اڳ ۾ ئي بدلائي چڪا آھيو يا نئين ڳجھي لفظ لاءِ درخواست ڏئي چڪا آھيو.", - "resetpass-recycled": "مھرباني ڪري پنھنجي ھاڻوڪي ڳجھي لفظ کان ڪو مختلف ڳجھولفظ چونڊيو.", + "resetpass-recycled": "مھرباني ڪري پنھنجي ھاڻوڪي ڳجھي-لفظ کان ڪو مختلف ڳجھولفظ بدلايو.", "resetpass-temp-emailed": "توهان برقٽپال ذريعي اماڻيل عارضي ڳجھي لفظ سان داخل ٿيا آهيو. داخل ٿيڻ کي مڪمل ڪرڻ لاءِ توهان کي هتي نئون ڳجھولفظ طَي ڪرڻو ئي پوندو:", "resetpass-temp-password": "عارضي ڳجھولفظ:", "resetpass-expired": "توهان جو ڳجھولفظ مدي خارج ٿي چڪو آهي. نئون ڳجھولفظ مقرر ڪريو ۽ داخل ٿيو.", "resetpass-expired-soft": "توهان جو ڳجھو لفظ مدي خارج ٿي چڪو آهي. مهرباني ڪري نئون ڳجھو لفظ چونڊيو، يا ساڳيو ڪم ڪنهن ٻي وقت ڪرڻ لاءِ \"{{int:authprovider-resetpass-skip-label}}\" تي ڪلڪ ڪريو.", - "resetpass-validity-soft": "توهان جو ڳجھولفظ ناقابل ڪار آهي: $1\nمهرباني ڪري نئون ڳجھولفظ چونڊيو، يا ساڳيو ڪم ڪنهن ٻي وقت ڪرڻ لاءِ \"{{int:authprovider-resetpass-skip-label}}\" تي ڪلڪ ڪريو.", + "resetpass-validity-soft": "توهان جو ڳجھولفظ ناقابلڪار آهي: $1\n\nمھرباني ڪري نئون ڳجھولفظ چونڊيو، يا ان کي پوءِ بدلائڻ لاءِ \"{{int:authprovider-resetpass-skip-label}}\" تي ٽڙڪ ڪريو.", "passwordreset": "ڳجھولفظ مَٽايو", "passwordreset-text-one": "برقٽپال ذريعي عارضي ڳجھولفظ حاصل ڪرڻ لاءِ هيءُ فارم پُر ڪريو.", "passwordreset-disabled": "هن وڪيءَ تي ڳجھولفظ ٻيھر مقرر ڪرڻ وارو چارو غير فعال بڻايو ويو آهي.", @@ -1180,8 +1180,8 @@ "filehist-filesize": "فائيل ماپ", "filehist-comment": "تاثر", "imagelinks": "فائيل جو استعمال", - "linkstoimage": "ھن فائيل سان {{PLURAL:$1|ھيٺيون صفحو ڳنڍيل آھي |$1 ھيٺيان صفحا ڳنڍيل آھن}}:", - "nolinkstoimage": "هن فائيل سان ڪي بہ صفحا ڳنڍيل ناهن.", + "linkstoimage": "ھن فائيل کي {{PLURAL:$1|ھيٺيون صفحو استعمال ڪري ٿو|$1 ھيٺيان صفحا استعمال ڪن ٿا}}:", + "nolinkstoimage": "ڪي بہ صفحا ناھن جيڪي ھن فائيل کي استعمال ڪندا ھجن.", "sharedupload": "هيءَ فائيل $1 کان آهي ۽ ان کي ٻيون رٿائون به استعمال ڪري سگھن ٿيون.", "sharedupload-desc-here": "ھي فائيل $1 مان آھي ۽ ٻين رٿائن پاران پڻ استعمال ٿي سگھي ٿو. تشريح انجي [[$2 جو تشريحي صفحو]] ھيٺان ڏنل آھي.", "filepage-nofile": "ھن نالي سان ڪوبہ فائيل وجود نٿو رکي.", diff --git a/languages/i18n/sl.json b/languages/i18n/sl.json index be9789d549..a265794db9 100644 --- a/languages/i18n/sl.json +++ b/languages/i18n/sl.json @@ -3464,6 +3464,7 @@ "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:", diff --git a/languages/i18n/sr-ec.json b/languages/i18n/sr-ec.json index 47ce3528a7..084077eff2 100644 --- a/languages/i18n/sr-ec.json +++ b/languages/i18n/sr-ec.json @@ -171,7 +171,7 @@ "category-file-count": "{{PLURAL:$2|1=Ова категорија садржи само следећу датотеку.|{{PLURAL:$1|1=Следећа датотека је|Следеће $1 датотеке су|Следећих $1 датотека је}} у овој категорији, од укупно $2.}}", "category-file-count-limited": "{{PLURAL:$1|1=Следећа датотека је|Следеће $1 датотеке су|Следећих $1 датотека је}} у овој категорији.", "listingcontinuesabbrev": "наст.", - "index-category": "Пописане странице", + "index-category": "Индексиране странице", "noindex-category": "Непописане странице", "broken-file-category": "Странице са неисправним везама до датотека", "categoryviewer-pagedlinks": "$1 ($2)", @@ -197,7 +197,7 @@ "tagline": "Извор: {{SITENAME}}", "help": "Помоћ", "search": "Претрага", - "search-ignored-headings": " #
    \n# Наслови који ће бити занемарени при претрази.\n# Промене су видљиве одмах након што се страница са насловом попише.\n# Можете изнудити поновно пописивање „нултом” изменом.\n# Синтакса је следећа:\n#  * Сваки ред који започиње знаком „#” је коментар.\n#  * Сваки не празни ред је тачан наслов који ће бити занемарен, с тим да се разликују мала и велика слова и све остало\nРеференце\nСпољашње везе\nТакође погледајте\n #
    ", + "search-ignored-headings": " #
    \n# Наслови који ће бити занемарени при претрази.\n# Промене су видљиве одмах након што се страница са насловом индексира.\n# Можете изнудити поновно индексирање „нултом” изменом.\n# Синтакса је следећа:\n#  * Сваки ред који започиње знаком „#” је коментар.\n#  * Сваки не празни ред је тачан наслов који ће бити занемарен, с тим да се разликују мала и велика слова и све остало\nРеференце\nСпољашње везе\nТакође погледајте\n #
    ", "searchbutton": "Претражи", "go": "Иди", "searcharticle": "Иди", @@ -373,8 +373,8 @@ "title-invalid-magic-tilde": "Тражени наслов странице садржи неважећи след магичног знака тилда (~~~).", "title-invalid-too-long": "Тражени назив странице је предугачак. Не сме бити дужи од $1 {{PLURAL:$1|бајта|бајтова}} у UTF-8 кодирању.", "title-invalid-leading-colon": "Тражени наслов странице садржи неважећу двотачку на почетку.", - "perfcached": "Следећи подаци су кеширани и можда нису ажурирани. У кешу {{PLURAL:$1|је доступан највише један резултат|су доступна највише $1 резултата|је доступно највише $1 резултата}}.", - "perfcachedts": "Следећи подаци су кеширани и последњи пут ажурирани на датум $2 у $3 ч. У кешу {{PLURAL:$4|је доступан највише један резултат|су доступна највише $4 резултата|је доступно највише $4 резултата}}.", + "perfcached": "Следећи подаци су кеширани и можда нису ажурирани. У кеш меморији {{PLURAL:$1|је доступан највише један резултат|су доступна највише $1 резултата|је доступно највише $1 резултата}}.", + "perfcachedts": "Следећи подаци су кеширани и последњи пут ажурирани на датум $2 у $3 ч. У кеш меморији {{PLURAL:$4|је доступан највише један резултат|су доступна највише $4 резултата|је доступно највише $4 резултата}}.", "querypage-no-updates": "Ажурирање ове странице је тренутно онемогућено.\nПодаци који се овде налазе могу бити застарели.", "viewsource": "Изворник", "viewsource-title": "Изворник странице $1", @@ -411,7 +411,7 @@ "virus-badscanner": "Лоша конфигурација: непознати скенер за вирусе: $1", "virus-scanfailed": "скенирање није успело (код $1)", "virus-unknownscanner": "непознати антивирус:", - "logouttext": "Сада сте одјављени.\n\nЗапамтите да неке странице могу наставити да се приказују као да сте још увек пријављени, све док не очистите кеш свог прегледача.", + "logouttext": "Сада сте одјављени.\n\nЗапамтите да неке странице могу наставити да се приказују као да сте још увек пријављени, све док не очистите кеш меморију свог прегледача.", "cannotlogoutnow-title": "Одјава тренутно није могућа", "cannotlogoutnow-text": "Одјава није могућа током употребе $1.", "welcomeuser": "Добро дошли, $1!", @@ -508,7 +508,7 @@ "acct_creation_throttle_hit": "Посетиоци овог викија који користе вашу IP адресу су већ отворили {{PLURAL:$1|1=један налог|$1 налога}} претходни $2, што је највећи дозвољени број у том временском периоду.\nЗбог тога посетиоци с ове IP адресе тренутно не могу отворити више налога.", "emailauthenticated": "Ваша имејл-адреса је потврђена на дан $2 у $3 ч.", "emailnotauthenticated": "Ваша имејл-адреса још није потврђена.\nНиједан имејл неће да буде послат ни у једном од следећих случајева.", - "noemailprefs": "Наведите имејл-адресу у својим подешавањима за оспособљавање ових могућности.", + "noemailprefs": "Наведите имејл-адресу у подешавањима за оспособљавање ових функција.", "emailconfirmlink": "Потврдите своју имејл-адресу", "invalidemailaddress": "Имејл-адреса не може да буде прихваћена јер је у неважећем облику.\nУнесите исправну адресу или оставите празно поље.", "cannotchangeemail": "Имејл-адресе налога не могу да се промене на овом викију.", @@ -521,7 +521,7 @@ "login-abort-generic": "Неуспешна пријава – прекинуто", "login-migrated-generic": "Ваш налог је мигриран и ваше корисничко више не постоји на овом викију.", "loginlanguagelabel": "Језик: $1", - "suspicious-userlogout": "Ваш захтев за одјаву је одбијен јер изгледа да га је послао покварени прегледач или кеширани посредник.", + "suspicious-userlogout": "Ваш захтев за одјаву је одбијен јер изгледа да га је послао покварени прегледач или кеширани прокси.", "createacct-another-realname-tip": "Право име је опционално.\nАко одаберете да га наведете, биће коришћено за приписивање вашег рада.", "pt-login": "Пријави ме", "pt-login-button": "Пријави ме", @@ -573,7 +573,7 @@ "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": "Привремена лозинка:", @@ -605,7 +605,7 @@ "changeemail-no-info": "Морате бити пријављени да бисте приступили овој страници.", "changeemail-oldemail": "Актуелна имејл-адреса:", "changeemail-newemail": "Нова имејл-адреса:", - "changeemail-newemail-help": "Ово поље би требало да оставите празно ако желите да уклоните вашу имејл адресу. Нећете бити у могућности да ресетујете заборављену лозинку и нећете примати мејлове од овог викија ако је имејл адреса уклоњена.", + "changeemail-newemail-help": "Ово поље треба да оставите празно ако желите да уклоните своју имејл-адресу. Нећете бити у могућности да ресетујете заборављену лозинку и нећете примати имејлове са овог викија ако је имејл-адреса уклоњена.", "changeemail-none": "(ништа)", "changeemail-password": "Ваша лозинка за пројекат {{SITENAME}}:", "changeemail-submit": "Промени имејл", @@ -663,8 +663,8 @@ "subject-preview": "Преглед теме:", "previewerrortext": "Дошло је до грешке при покушају прегледа промена.", "blockedtitle": "Корисник је блокиран", - "blockedtext": "Ваше корисничко име или IP адреса је блокирана.\n\nБлокаду је {{GENDER:$4|извршио|извршила}} $1.\nРазлог је $2.\n\n* Почетак блокаде: $8\n* Истек блокаде: $6\n* Блокирани: $7\n\nМожете да контактирате {{GENDER:$4|корисника|корисницу}} $1 или другог [[{{MediaWiki:Grouppage-sysop}}|администратора]] да бисте дискутовали о блокади.\nНе можете да користите могућност „{{int:emailuser}}” осим ако сте навели валидну имејл адресу у својим [[Special:Preferences|подешавањима налога]] и нисте блокирани од коришћења исте.\nВаша актуелна IP адреса је $3, а ID блокаде #$5.\nНаведите све горње детаље при прављењу било каквих упита.", - "autoblockedtext": "Ваша IP адреса је аутоматски блокирана јер ју је користио други корисник, кога је {{GENDER:$4|блокирао|блокирала}} $1.\nРазлог:\n\n:$2\n\n* Почетак блокаде: $8\n* Крај блокаде: $6\n* Име корисника: $7\n\nМожете да контактирате {{GENDER:$4|корисника|корисницу}} $1 или другог [[{{MediaWiki:Grouppage-sysop}}|администратора]] да бисте расправљали о блокади.\n\nЗапамтите да не можете да користите могућност „{{int:emailuser}}“ осим ако сте навели ваљану имејл адресу у својим [[Special:Preferences|подешавањима]].\n\nВаша актуелна IP адреса је $3, а ID блокаде $5.\nУкључите све горње детаље при прављењу било каквих упита.", + "blockedtext": "Ваше корисничко име или IP адреса је блокирана.\n\nБлокаду је {{GENDER:$4|извршио|извршила}} $1.\nРазлог је $2.\n\n* Почетак блокаде: $8\n* Истек блокаде: $6\n* Блокирани: $7\n\nМожете да контактирате {{GENDER:$4|корисника|корисницу}} $1 или другог [[{{MediaWiki:Grouppage-sysop}}|администратора]] да бисте дискутовали о блокади.\nНе можете да користите функцију „{{int:emailuser}}” осим ако сте навели валидну имејл-адресу у својим [[Special:Preferences|подешавањима налога]] и нисте блокирани од коришћења исте.\nВаша тренутна IP адреса је $3, а ID блокаде #$5.\nНаведите све горње детаље при прављењу било каквих упита.", + "autoblockedtext": "Ваша IP адреса је аутоматски блокирана јер ју је користио други корисник, кога је {{GENDER:$4|блокирао|блокирала}} $1.\nРазлог:\n\n:$2\n\n* Почетак блокаде: $8\n* Крај блокаде: $6\n* Име корисника: $7\n\nМожете да контактирате {{GENDER:$4|корисника|корисницу}} $1 или другог [[{{MediaWiki:Grouppage-sysop}}|администратора]] да бисте расправљали о блокади.\n\nЗапамтите да не можете да користите функцију „{{int:emailuser}}“ осим ако сте навели важећу имејл-адресу у својим [[Special:Preferences|подешавањима]].\n\nВаша тренутна IP адреса је $3, а ID блокаде $5.\nУкључите све горње детаље при прављењу било каквих упита.", "blockednoreason": "разлог није наведен", "whitelistedittext": "$1 да бисте уређивали странице.", "confirmedittext": "Морате да потврдите своју имејл адресу пре уређивања страница.\nПоставите и потврдите имејл адресу преко [[Special:Preferences|подешавања]].", @@ -684,7 +684,7 @@ "userpage-userdoesnotexist": "Кориснички налог „$1“ није отворен.\nРазмислите да ли заиста желите да направите/уредите ову страницу.", "userpage-userdoesnotexist-view": "Кориснички налог „$1“ није отворен.", "blocked-notice-logextract": "Овај корисник је тренутно блокиран.\nНајновији унос у дневнику блокирања је наведен испод као референца:", - "clearyourcache": "Напомена: Након чувања, можда ћете морати да очистите кеш прегледача како бисте видели промене.\n* Фајерфокс / Сафари: Држите Shift и кликните на Освежи или притисните Ctrl-F5 или Ctrl-R (⌘-R на Меку)\n* Гугл кроум: Притисните Ctrl-Shift-R (⌘-Shift-R на Меку)\n* Интернет експлорер: Држите Ctrl и кликните на Освежи или притисните Ctrl-F5\n* Опера: Идите на Алатке → Подешавања (Опера → Подешавања на Меку) и затим Приватност и безбедност → Очистите податке о прегледима → Кеширане слике и датотеке.", + "clearyourcache": "Напомена: Након чувања, можда ћете морати да очистите кеш меморију прегледача како бисте видели промене.\n* Фајерфокс / Сафари: Држите Shift и кликните на Освежи или притисните Ctrl-F5 или Ctrl-R (⌘-R на Меку)\n* Гугл кроум: Притисните Ctrl-Shift-R (⌘-Shift-R на Меку)\n* Интернет експлорер: Држите Ctrl и кликните на Освежи или притисните Ctrl-F5\n* Опера: Идите на Алатке → Подешавања (Опера → Подешавања на Меку) и затим Приватност и безбедност → Очистите податке о прегледима → Кеширане слике и датотеке.", "usercssyoucanpreview": "Савет: Кориситите дугме „{{int:showpreview}}“ да испробате свој нови CSS пре него што га сачувате.", "userjsonyoucanpreview": "Савет: Користите дугме \"{{int:showpreview}}\" да испробате свој нови JSON пре него што га сачувате.", "userjsyoucanpreview": "Савет: Кориситите дугме „{{int:showpreview}}“ да испробате свој нови јаваскрипт пре него што га сачувате.", @@ -847,7 +847,7 @@ "rev-showdeleted": "прикажи", "revisiondelete": "Брисање/враћање измена", "revdelete-nooldid-title": "Неважећа одредишна измена", - "revdelete-nooldid-text": "Нисте навели одредишну измену на којој треба да се изврши ова функција, та измена не постоји, или покушавате да сакријете актуелну измену.", + "revdelete-nooldid-text": "Нисте навели одредишну измену на којој треба да се изврши ова функција, та измена не постоји, или покушавате да сакријете тренутну измену.", "revdelete-no-file": "Тражена датотека не постоји.", "revdelete-show-file-confirm": "Јесте ли сигурни да желите да видите избрисану измену датотеке „$1“ од $2; $3?", "revdelete-show-file-submit": "Да", @@ -881,20 +881,20 @@ "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-no-change": "Упозорење: ставка од $1, $2 већ поседује затражена подешавања видљивости.", "revdelete-concurrent-change": "Грешка при мењању ставке од $1, $2: њен статус је у међувремену променио други корисник.\nПроверите дневник.", - "revdelete-only-restricted": "Грешка при сакривању ставке од $1, $2: не можете сакрити ставке од администратора без избора других могућности видљивости.", + "revdelete-only-restricted": "Грешка при сакривању ставке од дана $1, $2: Не можете сакрити ставке од приказа администраторима без избора једне од других опција видљивости.", "revdelete-reason-dropdown": "*Уобичајени разлози за брисање\n** Кршење ауторског права\n** Неприкладан коментар или лични подаци\n** Неприкладно корисничко име\n** Увредљиви подаци", "revdelete-otherreason": "Други/додатни разлог:", "revdelete-reasonotherlist": "Други разлог", "revdelete-edit-reasonlist": "Уреди разлоге за брисање", "revdelete-offender": "Аутор измене:", "suppressionlog": "Дневник сакривања", - "suppressionlogtext": "Испод се налази списак брисања и блокирања који укључује садржај сакривен од администратора. Погледајте [[Special:BlockList|списак блокирања]] за списак актуелних операција забрана и блокирања.", + "suppressionlogtext": "Испод се налази списак брисања и блокирања који укључује садржај сакривен од администратора. Погледајте [[Special:BlockList|списак блокирања]] за списак тренутних операција забрана и блокирања.", "mergehistory": "Спајање историја странице", "mergehistory-header": "Ова страница вам омогућава да спојите измене неке изворне странице у нову страницу.\nЗапамтите да ће ова промена оставити непромењен садржај историје странице.", "mergehistory-box": "Споји измене две странице:", @@ -993,7 +993,7 @@ "powersearch-togglenone": "Ништа", "powersearch-remember": "Запамти избор за будуће претраге", "search-external": "Спољашња претрага", - "searchdisabled": "Претрага је онемогућена.\nУ међувремену можете тражити преко Гугла.\nУпамтите да његови пописи овог викија могу бити застарели.", + "searchdisabled": "Претрага је онемогућена.\nУ међувремену можете тражити преко Гугла.\nУпамтите да његови индекси овог викија могу бити застарели.", "search-error": "Дошло је до грешке приликом претраге: $1", "search-warning": "Упозорење приликом претраге: $1", "preferences": "Подешавања", @@ -1003,7 +1003,7 @@ "prefs-skin": "Тема", "skin-preview": "прегледај", "datedefault": "Свеједно", - "prefs-labs": "Пробне могућности", + "prefs-labs": "Експерименталне функције", "prefs-user-pages": "Корисничке странице", "prefs-personal": "Кориснички профил", "prefs-rc": "Скорашње измене", @@ -1365,7 +1365,7 @@ "rcfilters-limit-and-date-label": "$1 {{PLURAL:$1|промена|промене|промена}}, $2", "rcfilters-date-popup-title": "Временски период за претрагу", "rcfilters-days-title": "Недавни дани", - "rcfilters-hours-title": "Скорашњи сати", + "rcfilters-hours-title": "Недавни сати", "rcfilters-days-show-days": "$1 {{PLURAL:$1|дан|дана}}", "rcfilters-days-show-hours": "$1 {{PLURAL:$1|сат|сата}}", "rcfilters-highlighted-filters-list": "Истакнуто: $1", @@ -1595,7 +1595,7 @@ "file-thumbnail-no": "Име датотеке почиње са $1.\nИзгледа да се ради о слици умањене величине (сличица).\nАко имате ову слику у пуној резолуцији, отпремите је, у противном, промените име датотеке.", "fileexists-forbidden": "Датотека с овим називом већ постоји и не може се заменити.\nАко и даље желите да пошаљете датотеку, вратите се и изаберите други назив.\n[[File:$1|thumb|center|$1]]", "fileexists-shared-forbidden": "Датотека са овим именом већ постоји у заједничкој остави.\nАко још увек желите да отпремите датотеку, вратите се и користите ново име.\n[[File:$1|thumb|center|$1]]", - "fileexists-no-change": "Датотека је дупликат актуелне верзије [[:$1]].", + "fileexists-no-change": "Датотека је дупликат тренутне верзије [[:$1]].", "fileexists-duplicate-version": "Датотека је дупликат {{PLURAL:$2|старе верзије|старих верзија}} [[:$1]].", "file-exists-duplicate": "Ово је дупликат {{PLURAL:$1|следеће датотеке|следећих датотека}}:", "file-deleted-duplicate": "Датотека која је идентична овој ([[:$1]]) је раније била избрисана.\nТребате да проверите историју брисања те датотеке пре него што наставите са њеним поновним оптремањем.", @@ -1658,7 +1658,7 @@ "upload-form-label-infoform-categories": "Категорије", "upload-form-label-infoform-date": "Датум", "upload-form-label-own-work-message-generic-local": "Ја потврђујем да отпремам ову датотеку поштујући услове коришћења услуге и лиценцирање на {{SITENAME}}.", - "upload-form-label-not-own-work-message-generic-local": "Ако нисте у могућности да отпремите ову датотеку под условима {{SITENAME}}, молимо вас да затворите овај дијалог и покушате другом методом.", + "upload-form-label-not-own-work-message-generic-local": "Ако нисте у могућности да отпремите ову датотеку под правилима пројекта {{SITENAME}}, затворите овај дијалог и покушате другом методом.", "upload-form-label-not-own-work-local-generic-local": "Такође можете покушати [[Special:Upload|подразумевану страницу за отпремање]].", "backend-fail-stream": "Не могу да емитујем датотеку $1.", "backend-fail-backup": "Не могу да направим резерву датотеке $1.", @@ -1700,7 +1700,7 @@ "zip-file-open-error": "Дошло је до грешке при отварању датотеке за проверу ZIP архиве.", "zip-wrong-format": "Наведена датотека није формата ZIP.", "zip-bad": "Датотека је оштећена или је нечитљива ZIP датотека.\nБезбедносна провера не може да се изврши како треба.", - "zip-unsupported": "Датотека је формата ZIP који користи могућности које не подржава Медијавики.\nБезбедносна провера не може да се изврши како треба.", + "zip-unsupported": "Датотека је формата ZIP који користи функције ZIP које Медијавики не подржава.\nНе може се правилно проверити у вези безбедности.", "uploadstash": "Отпремање низа датотека", "uploadstash-summary": "Ова страница пружа приступ датотекама које су отпремљене или се отпремају, али још нису објављене. Ове датотеке нису видљиве никоме, осим кориснику који их је отпремио.", "uploadstash-clear": "Очисти сакривене датотеке", @@ -1724,7 +1724,7 @@ "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": "Датотека је празна", @@ -1781,7 +1781,7 @@ "filehist-deleteall": "избриши све", "filehist-deleteone": "избриши", "filehist-revert": "врати", - "filehist-current": "актуелна", + "filehist-current": "тренутна", "filehist-datetime": "Датум/време", "filehist-thumb": "Сличица", "filehist-thumbtext": "Минијатура за верзију на дан $1", @@ -2058,11 +2058,11 @@ "allpages-bad-ns": "{{SITENAME}} нема именски простор „$1“.", "allpages-hide-redirects": "Сакриј преусмерења", "cachedspecial-viewing-cached-ttl": "Гледате кеширану верзију ове странице, која може бити стара и до $1.", - "cachedspecial-viewing-cached-ts": "Гледате кеширану верзију ове странице, која можда није потпуно актуелна.", + "cachedspecial-viewing-cached-ts": "Гледате кеширану верзију ове странице, која можда није потпуно тренутна.", "cachedspecial-refresh-now": "Погледај најновију.", "categories": "Категоријe", "categories-submit": "Прикажи", - "categoriespagetext": "{{PLURAL:$1|1=Следећа категорија постоји|Следеће категорије постоје}} на викију, и можда су/нису корисне.\nПогледајте и [[Special:WantedCategories|тражене категорије]].", + "categoriespagetext": "{{PLURAL:$1|1=Следећа категорија постоји на викију и можда је/није неискоришћена.|Следеће категорије постоје на викију и можда су/нису неискоришћене.}}\nТакође погледајте [[Special:WantedCategories|тражене категорије]].", "categoriesfrom": "Прикажи категорије почев од:", "deletedcontributions": "Избрисани кориснички доприноси", "deletedcontributions-title": "Избрисани кориснички доприноси", @@ -2297,9 +2297,9 @@ "protect_expiry_old": "Време истека је у прошлости.", "protect-unchain-permissions": "Откључај даљња подешавања заштите", "protect-text": "Овде можете да погледате и промените ниво заштите странице $1.", - "protect-locked-blocked": "Не можете да мењате нивое заштите док сте блокирани.\nОво су актуелна подешавања странице '''$1''':", - "protect-locked-dblock": "Нивои заштите се не могу мењати јер је активна база података закључана.\nОво су актуелна подешавања странице '''$1''':", - "protect-locked-access": "Ваш налог нема дозволу да мења нивое заштите странице.\nОво су актуелна подешавања странице '''$1''':", + "protect-locked-blocked": "Не можете да мењате нивое заштите док сте блокирани.\nОво су тренутна подешавања странице $1:", + "protect-locked-dblock": "Нивои заштите се не могу мењати јер је активна база података закључана.\nОво су тренутна подешавања странице $1:", + "protect-locked-access": "Ваш налог нема дозволу да мења нивое заштите странице.\nОво су тренутна подешавања странице $1:", "protect-cascadeon": "Ова страница је тренутно заштићена јер је укључена у {{PLURAL:$1|следећу страницу која има|следеће странице које имају}} укључену преносиву заштиту.\nПромене нивоа заштите ове странице неће да утичу на преносиву заштиту.", "protect-default": "Допуштено свим корисницима", "protect-fallback": "Дозвољено само корисницима са дозволом „$1“", @@ -2386,7 +2386,7 @@ "contribsub2": "За {{GENDER:$3|$1}} ($2)", "contributions-userdoesnotexist": "Кориснички налог „$1“ није отворен.", "nocontribs": "Нису пронађене промене које одговарају овим критеријумима.", - "uctop": "(актуелна)", + "uctop": "(тренутна)", "month": "од месеца (и раније):", "year": "од године (и раније):", "date": "Од датума (и раније):", @@ -2451,7 +2451,7 @@ "blockipsuccesssub": "Блокирање је успело", "blockipsuccesstext": "[[Special:Contributions/$1|$1]] је {{GENDER:$1|блокиран|блокирана}}.
    \nПогледајте [[Special:BlockList|списак]] за преглед блокада.", "ipb-blockingself": "Блокираћете самог себе! Заиста то желите?", - "ipb-confirmhideuser": "Управо ћете блокирати корисника с укљученом могућношћу „сакриј корисника“. Овим ће корисничко име бити сакривено у свим списковима и извештајима. Желите ли то да урадите?", + "ipb-confirmhideuser": "Управо ћете блокирати корисника са укљученом функцијом „сакриј корисника”. Овим ће корисничко име бити сакривено у свим списковима и уносима у дневнику. Заиста желите то да урадите?", "ipb-confirmaction": "Ако сте сигурни да желите наставити означите поље „{{int:ipb-confirm}}“ на дну странице.", "ipb-edit-dropdown": "Уреди разлоге блокирања", "ipb-unblock-addr": "Деблокирај $1", @@ -2509,7 +2509,7 @@ "blocklog-showsuppresslog": "{{GENDER:$1|Овај корисник је раније блокиран и сакривен|Ова корисница је раније блокирана и сакривена}}.\nДневник сакривања је наведен испод као референца:", "blocklogentry": "је блокирао [[$1]] са временом истицања од $2 $3", "reblock-logentry": "је {{GENDER:|променио|променила}} подешавања блокирања за {{GENDER:$1|корисника|корисницу}} [[$1]] са временом истека од $2 ($3)", - "blocklogtext": "Ово је дневник радњи блокирања и деблокирања корисника.\nАутоматски блокиране IP адресе нису наведене.\nПогледајте [[Special:BlockList|списак блокирања]] за списак актуелних операција забрана и блокирања.", + "blocklogtext": "Ово је дневник радњи блокирања и деблокирања корисника.\nАутоматски блокиране IP адресе нису наведене.\nПогледајте [[Special:BlockList|списак блокирања]] за списак тренутних операција забрана и блокирања.", "unblocklogentry": "је деблокирао $1", "block-log-flags-anononly": "само анонимни корисници", "block-log-flags-nocreate": "онемогућено отварање налога", @@ -2618,9 +2618,9 @@ "move-over-sharedrepo": "[[:$1]] се налази на дељеном складишту. Ако преместите датотеку на овај наслов, то ће заменити дељену датотеку.", "file-exists-sharedrepo": "Наведени назив датотеке се већ користи у дељеном складишту.\nИзаберите други назив.", "export": "Извоз страница", - "exporttext": "Можете да извезете текст и историју измена одређене странице или скупа страница уклљених у XML формату.\nОво онда може да буде увезено у други вики који користи Медијавики софтвер преко [[Special:Import|странице за увоз]].\n\nДа бисте извезли странице, унесите називе у оквиру испод, с једним насловом по реду, и изаберите да ли желите актуелну измену и све остале, или само актуелну измену с подацима о последњој измени.\n\nУ другом случају, можете користити и везе, на пример [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] за страницу [[{{MediaWiki:Mainpage}}]].", + "exporttext": "Можете да извезете текст и историју измена одређене странице или скупа страница уклљених у XML формату.\nОво онда може да буде увезено у други вики који користи Медијавики софтвер преко [[Special:Import|странице за увоз]].\n\nДа бисте извезли странице, унесите називе у оквиру испод, с једним насловом по реду, и изаберите да ли желите тренутну измену и све остале, или само тренутну измену с подацима о последњој измени.\n\nУ другом случају, можете користити и везе, на пример [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] за страницу [[{{MediaWiki:Mainpage}}]].", "exportall": "Извези све странице", - "exportcuronly": "Укључи само актуелну измену, не целу историју", + "exportcuronly": "Укључи само тренутну измену, не целу историју", "exportnohistory": "----\n'''Напомена:''' извоз пуне историје страница преко овог обрасца је онемогућено из техничких разлога.", "exportlistauthors": "Укључи целокупан списак доприносилаца за сваку страницу", "export-submit": "Извези", @@ -2723,7 +2723,7 @@ "tooltip-pt-anontalk": "Дискусија о уређивањима са ове IP адресе", "tooltip-pt-preferences": "{{GENDER:|Ваша}} подешавања", "tooltip-pt-watchlist": "Списак страница које надгледате", - "tooltip-pt-mycontris": "Списак {{GENDER:|Ваших}} доприноса", + "tooltip-pt-mycontris": "Списак {{GENDER:|ваших}} доприноса", "tooltip-pt-anoncontribs": "Списак измена направљених са ове IP адресе", "tooltip-pt-login": "Предлажемо вам да се пријавите, иако то није обавезно", "tooltip-pt-login-private": "Морате да се пријавите да бисте користили овај Вики", @@ -2881,7 +2881,7 @@ "markedaspatrolled": "Означено као патролирано", "markedaspatrolledtext": "Изабрана измена странице [[:$1]] означена је као патролирана.", "rcpatroldisabled": "Патролирање скорашњих измена је онемогућено", - "rcpatroldisabledtext": "Могућност патролирања скорашњих измена је актуелно онемогућена.", + "rcpatroldisabledtext": "Функција патролирања скорашњих измена је тренутно онемогућена.", "markedaspatrollederror": "Не могу да означим као патролирано.", "markedaspatrollederrortext": "Морате навести измену да бисте је означили као патролирану.", "markedaspatrollederror-noautopatrol": "Не можете да означите своје промене као патролиране.", @@ -3048,7 +3048,7 @@ "exif-pixelxdimension": "Ширина слике", "exif-pixelydimension": "Висина слике", "exif-usercomment": "Кориснички коментари", - "exif-relatedsoundfile": "Повезани звучни запис", + "exif-relatedsoundfile": "Сродне звучне датотеке", "exif-datetimeoriginal": "Датум и време сликања", "exif-datetimedigitized": "Датум и време дигитализације", "exif-subsectime": "Део секунде у којем је сликано", @@ -3078,7 +3078,7 @@ "exif-focalplaneyresolution": "Резолуција фокусне равни Y", "exif-focalplaneresolutionunit": "Јединица за резолуцију фокусне равни", "exif-subjectlocation": "Положај објекта", - "exif-exposureindex": "Попис експозиције", + "exif-exposureindex": "Индекс експозиције", "exif-sensingmethod": "Начин сензора", "exif-filesource": "Изворна датотека", "exif-scenetype": "Тип сцене", @@ -3387,20 +3387,20 @@ "monthsall": "све", "confirmemail": "Потврда имејл-адресе", "confirmemail_noemail": "Нисте поставили важећу имејл-адресу у [[Special:Preferences|корисничким подешавањима]].", - "confirmemail_text": "{{SITENAME}} захтева да потврдите имејл адресу пре него што почнете да користите могућности имејла.\nКликните на дугме испод за слање поруке на вашу адресу.\nУ поруци ће се налазити веза са потврдним кодом;\nунесите је у прегледач да бисте потврдили да је ваша имејл адреса важећа.", + "confirmemail_text": "{{SITENAME}} захтева да проверите ваљаност имејл-адресе пре него што почнете да користите функцију имејла.\nАктивирајте дугме испод да бисте послали мејл за потврду на своју адресу.\nМејл ће укључивати везу са кодом;\nучитајте везу у свом прегледачу да бисте потврдили да је ваша имејл-адреса важећа.", "confirmemail_pending": "Код за потврду вам је већ послат имејлом.\nАко сте недавно отворили налог, можда треба да сачекате неколико минута да пристигне пре него што поново затражите нови код.", "confirmemail_send": "Пошаљи код за потврду", "confirmemail_sent": "Потврдна порука је послата.", - "confirmemail_oncreate": "Послат је код за потврду на вашу имејл адресу.\nОвај код није потребан за пријављивање, али вам треба да бисте укључили могућности имејла на викију.", + "confirmemail_oncreate": "Кôд за потврду је послат на вашу имејл-адресу.\nОвај кôд није неопходан за пријављивање, али ћете морати да га наведете пре омогућавања било каквих функција заснованих на имејлу на викију.", "confirmemail_sendfailed": "{{SITENAME}} не може да пошаље имејл потврду.\nПроверите да ли је имејл адреса правилно написана.\n\nГрешка: $1", "confirmemail_invalid": "Неважећи код за потврду.\nКод је можда истекао.", "confirmemail_needlogin": "Морате бити $1 да бисте потврдили своју имејл-адресу.", "confirmemail_success": "Ваша имејл-адреса је потврђена.\nСада можете да се [[Special:UserLogin|пријавите]] и уживате у викију.", "confirmemail_loggedin": "Ваша имејл-адреса је сада потврђена.", "confirmemail_subject": "{{SITENAME}} – потврда имејл-адресе", - "confirmemail_body": "Неко, вероватно Ви, са IP адресе $1,\nрегистровао је налог „$2“ са овом имејл адресом на пројекту {{SITENAME}}.\n\nДа бисте потврдили да овај налог стварно припада вама и активирали могућности имејла на пројекту {{SITENAME}}, отворите ова у прегледачу:\n\n$3\n\nАко ви *нисте* регистровали налог, пратите ову везу\nда бисте отказали потврду имејл адресе:\n\n$5\n\nОвај код за потврду истиче у $4.", - "confirmemail_body_changed": "Неко, вероватно Ви, с IP адресе $1,\nпроменио је имејл адресу налога „$2“ у ову адресу на пројекту {{SITENAME}}.\n\nДа бисте потврдили да овај налог стварно припада вама и поново активирали могућности имејла, отворите следећу везу у прегледачу:\n\n$3\n\nАко налог *не* припада вама, пратите следећу везу да откажете потврду имејл адресе:\n\n$5\n\nОвај код за потврду истиче $6 у $7", - "confirmemail_body_set": "Неко, вероватно Ви, с IP адресе $1,\nпроменио је имејл адресу налога „$2“ у ову адресу на {{SITENAME}}.\n\nДа бисмо потврдили да овај налог стварно припада вама и поново активирали\nмогућности имејла на {{SITENAME}}, отворите следећу везу у прегледачу:\n\n$3\n\nАко налог *не* припада вама, пратите следећу везу да откажете потврду имејл адресе:\n\n$5\n\nОвај код за потврду истиче $4.", + "confirmemail_body": "Неко, вероватно Ви, са IP адресе $1,\nрегистровао је налог „$2“ са овом имејл адресом на пројекту {{SITENAME}}.\n\nДа бисте потврдили да овај налог стварно припада вама и активирали функцију имејла на пројекту {{SITENAME}}, отворите ова у прегледачу:\n\n$3\n\nАко ви *нисте* регистровали налог, пратите ову везу\nда бисте отказали потврду имејл адресе:\n\n$5\n\nОвај код за потврду истиче у $4.", + "confirmemail_body_changed": "Неко, вероватно Ви, с IP адресе $1,\nпроменио је имејл адресу налога „$2“ у ову адресу на пројекту {{SITENAME}}.\n\nДа бисте потврдили да овај налог стварно припада вама и поново активирали функцију имејла, отворите следећу везу у прегледачу:\n\n$3\n\nАко налог *не* припада вама, пратите следећу везу да откажете потврду имејл адресе:\n\n$5\n\nОвај код за потврду истиче $6 у $7", + "confirmemail_body_set": "Неко, вероватно Ви, с IP адресе $1,\nпроменио је имејл адресу налога „$2“ у ову адресу на {{SITENAME}}.\n\nДа бисмо потврдили да овај налог стварно припада вама и поново активирали\nфункцију имејла на {{SITENAME}}, отворите следећу везу у прегледачу:\n\n$3\n\nАко налог *не* припада вама, пратите следећу везу да откажете потврду имејл адресе:\n\n$5\n\nОвај код за потврду истиче $4.", "confirmemail_invalidated": "Потврда имејл адресе је отказана", "invalidateemail": "Отказивање потврде имејла", "notificationemail_subject_changed": "Регистрована имејл адреса на пројекту {{SITENAME}} је промењена", @@ -3418,8 +3418,8 @@ "unit-pixel": "п", "confirm-purge-title": "Освежи ову страницу", "confirm_purge_button": "У реду", - "confirm-purge-top": "Очистити кеш ове странице?", - "confirm-purge-bottom": "Освежавање странице чисти кеш и намеће најновију измену.", + "confirm-purge-top": "Очистити кеш меморију ове странице?", + "confirm-purge-bottom": "Освежавање странице чисти кеш меморију и намеће најновију измену.", "confirm-watch-button": "У реду", "confirm-watch-top": "Додати ову страницу у списак надгледања?", "confirm-unwatch-button": "У реду", @@ -3517,7 +3517,7 @@ "watchlistedit-clear-removed": "{{PLURAL:$1|1 наслов је уклоњен|$1 наслова су уклоњена|$1 наслова је уклоњено}}:", "watchlistedit-too-many": "Има превише страница за приказ овде.", "watchlisttools-clear": "очисти списак надгледања", - "watchlisttools-view": "погледај релевантне промене", + "watchlisttools-view": "погледај сродне промене", "watchlisttools-edit": "погледај и уреди списак надгледања", "watchlisttools-raw": "уреди сиров списак надгледања", "iranian-calendar-m1": "Фарвардин", @@ -3638,6 +3638,7 @@ "redirect-file": "Назив датотеке", "redirect-logid": "ID дневника", "redirect-not-exists": "Вредност није пронађена", + "redirect-not-numeric": "Вредност није нумеричка", "fileduplicatesearch": "Претрага дупликата датотека", "fileduplicatesearch-summary": "Претрага дуплираних датотека према хеш вредности.", "fileduplicatesearch-filename": "Назив датотеке:", @@ -3986,7 +3987,7 @@ "mediastatistics-header-unknown": "Непознато", "mediastatistics-header-bitmap": "Битмап слике", "mediastatistics-header-drawing": "Цртежи (векторске слике)", - "mediastatistics-header-audio": "Звук", + "mediastatistics-header-audio": "Звучни снимци", "mediastatistics-header-video": "Видеи", "mediastatistics-header-multimedia": "Обогаћени медији", "mediastatistics-header-office": "Канцеларија", @@ -4099,7 +4100,7 @@ "authmanager-authn-not-in-progress": "Потврда идентитета није у току или је дошло до губитка података о сесији. Почните испочетка.", "authmanager-authn-no-primary": "Не могу да проверим пружене акредитиве.", "authmanager-authn-no-local-user": "Пружени акредитиви нису повезани ни са једним корисником на овом викију.", - "authmanager-authn-no-local-user-link": "Пружени су важећи акредитиви, али нису повезани ни с једним корисником на овом викију. Пријавите се на неки други начин или направите нови кориснички налог, што ће вам дати могућност да повежете претходне акредитиве на нови налог.", + "authmanager-authn-no-local-user-link": "Пружени акредитиви су важећи, али нису повезани ни са једним корисником на овом викију. Пријавите се на неки други начин или отворите нови кориснички налог, што ће вам дати опцију да повежете претходне акредитиве на нови налог.", "authmanager-authn-autocreate-failed": "Не могу да аутоматски направим локални налог: $1", "authmanager-change-not-supported": "Не могу да променим пружене акредитиве јер их ништа не би користило.", "authmanager-create-disabled": "Отварање налога је онемогућено.", diff --git a/languages/i18n/sr-el.json b/languages/i18n/sr-el.json index 36266a0a71..57b246feec 100644 --- a/languages/i18n/sr-el.json +++ b/languages/i18n/sr-el.json @@ -567,7 +567,7 @@ "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:", @@ -657,8 +657,8 @@ "subject-preview": "Pregled teme:", "previewerrortext": "Došlo je do greške pri pokušaju pregleda promena.", "blockedtitle": "Korisnik je blokiran", - "blockedtext": "Vaše korisničko ime ili IP adresa je blokirana.\n\nBlokiranje je {{GENDER:$4|izvršio|izvršila}} $1.\nRazlog je $2.\n\n* Početak blokiranja: $8\n* Istek blokiranja: $6\n* Blokirani: $7\n\nMožete da kontaktirate {{GENDER:$4|korisnika|korisnicu}} $1 ili drugog [[{{MediaWiki:Grouppage-sysop}}|administratora]] da biste razgovarali o blokiranju.\nNe možete da koristite mogućnost „{{int:emailuser}}” osim ako ste naveli validnu imejl adresu u svojim [[Special:Preferences|podešavanjima naloga]] i niste blokirani od korišćenja iste.\nVaša aktuelna IP adresa je $3, a ID blokade #$5.\nNavedite sve gornje detalje pri pravljenju bilo kakvih upita.", - "autoblockedtext": "Vaša IP adresa je automatski blokirana jer ju je koristio drugi korisnik, koga je {{GENDER:$4|blokirao|blokirala}} $1.\nRazlog:\n\n:$2\n\n* Početak blokade: $8\n* Kraj blokade: $6\n* Ime korisnika: $7\n\nMožete da kontaktirate {{GENDER:$4|korisnika|korisnicu}} $1 ili drugog [[{{MediaWiki:Grouppage-sysop}}|administratora]] da biste raspravljali o blokadi.\n\nZapamtite da ne možete da koristite mogućnost „{{int:emailuser}}“ osim ako ste naveli valjanu imejl adresu u svojim [[Special:Preferences|podešavanjima]].\n\nVaša aktuelna IP adresa je $3, a ID blokade $5.\nUključite sve gornje detalje pri pravljenju bilo kakvih upita.", + "blockedtext": "Vaše korisničko ime ili IP adresa je blokirana.\n\nBlokiranje je {{GENDER:$4|izvršio|izvršila}} $1.\nRazlog je $2.\n\n* Početak blokiranja: $8\n* Istek blokiranja: $6\n* Blokirani: $7\n\nMožete da kontaktirate {{GENDER:$4|korisnika|korisnicu}} $1 ili drugog [[{{MediaWiki:Grouppage-sysop}}|administratora]] da biste razgovarali o blokiranju.\nNe možete da koristite mogućnost „{{int:emailuser}}” osim ako ste naveli validnu imejl adresu u svojim [[Special:Preferences|podešavanjima naloga]] i niste blokirani od korišćenja iste.\nVaša trenutna IP adresa je $3, a ID blokade #$5.\nNavedite sve gornje detalje pri pravljenju bilo kakvih upita.", + "autoblockedtext": "Vaša IP adresa je automatski blokirana jer ju je koristio drugi korisnik, koga je {{GENDER:$4|blokirao|blokirala}} $1.\nRazlog:\n\n:$2\n\n* Početak blokade: $8\n* Kraj blokade: $6\n* Ime korisnika: $7\n\nMožete da kontaktirate {{GENDER:$4|korisnika|korisnicu}} $1 ili drugog [[{{MediaWiki:Grouppage-sysop}}|administratora]] da biste raspravljali o blokadi.\n\nZapamtite da ne možete da koristite mogućnost „{{int:emailuser}}“ osim ako ste naveli valjanu imejl adresu u svojim [[Special:Preferences|podešavanjima]].\n\nVaša trenutna IP adresa je $3, a ID blokade $5.\nUključite sve gornje detalje pri pravljenju bilo kakvih upita.", "blockednoreason": "nije naveden razlog", "whitelistedittext": "Za uređivanje stranice je potrebno da budete $1.", "confirmedittext": "Morate da potvrdite svoju imejl adresu pre uređivanja stranica.\nPostavite i potvrdite imejl adresu preko [[Special:Preferences|podešavanja]].", @@ -841,7 +841,7 @@ "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 „$1“ od $2; $3?", "revdelete-show-file-submit": "Da", @@ -875,7 +875,7 @@ "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.", @@ -888,7 +888,7 @@ "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:", @@ -1195,7 +1195,7 @@ "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", @@ -1234,7 +1234,7 @@ "right-sendemail": "slanje imejla drugim korisnicima", "right-managechangetags": "pravljenje i (de)aktiviranje [[Special:Tags|oznaka]]", "right-applychangetags": "primenjivanje [[Special:Tags|oznaka]] na nečije promene", - "right-changetags": "dodavanje i uklanjanje raznih [[Special:Tags|oznaka]] na pojedinačnim izmenama i unosima u evidencijama", + "right-changetags": "dodavanje i uklanjanje raznih [[Special:Tags|oznaka]] na pojedinačnim izmenama i unosima u dnevnicima", "right-deletechangetags": "brisanje [[Special:Tags|oznaka]] iz baze podataka", "grant-generic": "Skup prava „$1“", "grant-group-page-interaction": "Uređivanje stranica", @@ -1272,7 +1272,7 @@ "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", @@ -1589,7 +1589,7 @@ "file-thumbnail-no": "Ime datoteke počinje sa $1.\nIzgleda da se radi o slici umanjene veličine (sličica).\nAko imate ovu sliku u punoj rezoluciji, otpremite je, u protivnom, promenite ime datoteke.", "fileexists-forbidden": "Datoteka s ovim nazivom već postoji i ne može se zameniti.\nAko i dalje želite da pošaljete datoteku, vratite se i izaberite drugi naziv.\n[[File:$1|thumb|center|$1]]", "fileexists-shared-forbidden": "Datoteka sa ovim imenom već postoji u zajedničkoj ostavi.\nAko još uvek želite da otpremite datoteku, vratite se i koristite novo ime.\n[[File:$1|thumb|center|$1]]", - "fileexists-no-change": "Datoteka je duplikat aktuelne verzije [[:$1]].", + "fileexists-no-change": "Datoteka je duplikat trenutne verzije [[:$1]].", "fileexists-duplicate-version": "Datoteka je duplikat {{PLURAL:$2|stare verzije|starih verzija}} [[:$1]].", "file-exists-duplicate": "Ovo je duplikat {{PLURAL:$1|sledeće datoteke|sledećih datoteka}}:", "file-deleted-duplicate": "Datoteka koja je identična ovoj ([[:$1]]) je ranije bila izbrisana.\nTrebate da proverite istoriju brisanja te datoteke pre nego što nastavite sa njenim ponovnim optremanjem.", @@ -1718,7 +1718,7 @@ "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", @@ -1775,7 +1775,7 @@ "filehist-deleteall": "izbriši sve", "filehist-deleteone": "izbriši", "filehist-revert": "vrati", - "filehist-current": "aktuelna", + "filehist-current": "trenutna", "filehist-datetime": "Datum/vreme", "filehist-thumb": "Sličica", "filehist-thumbtext": "Minijatura za verziju na dan $1", @@ -2291,9 +2291,9 @@ "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 $1.", - "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“", @@ -2380,18 +2380,18 @@ "contribsub2": "Za {{GENDER:$3|$1}} ($2)", "contributions-userdoesnotexist": "Korisnički nalog „$1“ nije otvoren.", "nocontribs": "Nisu pronađene promene koje odgovaraju ovim kriterijumima.", - "uctop": "(aktuelna)", + "uctop": "(trenutna)", "month": "od meseca (i ranije):", "year": "od godine (i ranije):", "date": "Od datuma (i ranije):", "sp-contributions-newbies": "Prikaži samo doprinose novih naloga", "sp-contributions-newbies-sub": "Za nove korisnike", "sp-contributions-newbies-title": "Doprinosi novih korisnika", - "sp-contributions-blocklog": "evidencija blokiranja", + "sp-contributions-blocklog": "dnevnik blokiranja", "sp-contributions-suppresslog": "izbrisani doprinosi {{GENDER:$1|korisnika|korisnice}}", "sp-contributions-deleted": "izbrisani doprinosi {{GENDER:$1|korisnika|korisnice}}", "sp-contributions-uploads": "otpremanja", - "sp-contributions-logs": "evidencije", + "sp-contributions-logs": "dnevnici", "sp-contributions-talk": "razgovor", "sp-contributions-userrights": "upravljanje pravima {{GENDER:$1|korisnika|korisnice}}", "sp-contributions-blocked-notice": "Ovaj korisnik je trenutno blokiran. \nPoslednji unos u evidenciji blokiranja je naveden ispod kao referenca:", @@ -2503,7 +2503,7 @@ "blocklog-showsuppresslog": "{{GENDER:$1|Ovaj korisnik je ranije blokiran i sakriven|Ova korisnica je ranije blokirana i sakrivena}}.\nIstorija sakrivanja se nalazi ispod:", "blocklogentry": "je blokirao [[$1]] sa vremenom isticanja od $2 $3", "reblock-logentry": "{{GENDER:|je promenio|je promenila}} podešavanja za blokiranje {{GENDER:$1|korisnika|korisnice}} [[$1]] sa vremenom isteka od $2 ($3)", - "blocklogtext": "Ovo je dnevnik radnji blokiranja i deblokiranja korisnika.\nAutomatski blokirane IP adrese nisu navedene.\nPogledajte [[Special:BlockList|spisak blokiranja]] za spisak aktuelnih operacija zabrana i blokiranja.", + "blocklogtext": "Ovo je dnevnik radnji blokiranja i deblokiranja korisnika.\nAutomatski blokirane IP adrese nisu navedene.\nPogledajte [[Special:BlockList|spisak blokiranja]] za spisak trenutnih operacija zabrana i blokiranja.", "unblocklogentry": "je deblokirao $1", "block-log-flags-anononly": "samo anonimni korisnici", "block-log-flags-nocreate": "onemogućeno otvaranje naloga", @@ -2612,9 +2612,9 @@ "move-over-sharedrepo": "[[:$1]] se nalazi na deljenom skladištu. Ako premestite datoteku na ovaj naslov, to će zameniti deljenu datoteku.", "file-exists-sharedrepo": "Navedeni naziv datoteke se već koristi u deljenom skladištu.\nIzaberite drugi naziv.", "export": "Izvoz stranica", - "exporttext": "Možete da izvezete tekst i istoriju izmena određene stranice ili skupa stranica uklljenih u XML formatu.\nOvo onda može da bude uvezeno u drugi viki koji koristi Medijaviki softver preko [[Special:Import|stranice za uvoz]].\n\nDa biste izvezli stranice, unesite nazive u okviru ispod, s jednim naslovom po redu, i izaberite da li želite aktuelnu izmenu i sve ostale, ili samo aktuelnu izmenu s podacima o poslednjoj izmeni.\n\nU drugom slučaju, možete koristiti i link, na primer [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] za stranicu [[{{MediaWiki:Mainpage}}]].", + "exporttext": "Možete da izvezete tekst i istoriju izmena određene stranice ili skupa stranica uklljenih u XML formatu.\nOvo onda može da bude uvezeno u drugi viki koji koristi Medijaviki softver preko [[Special:Import|stranice za uvoz]].\n\nDa biste izvezli stranice, unesite nazive u okviru ispod, s jednim naslovom po redu, i izaberite da li želite trenutnu izmenu i sve ostale, ili samo trenutnu izmenu s podacima o poslednjoj izmeni.\n\nU drugom slučaju, možete koristiti i link, na primer [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] za stranicu [[{{MediaWiki:Mainpage}}]].", "exportall": "Izvezi sve stranice", - "exportcuronly": "Uključi samo aktuelnu izmenu, ne celu istoriju", + "exportcuronly": "Uključi samo trenutnu izmenu, ne celu istoriju", "exportnohistory": "----\n'''Napomena:''' izvoz pune istorije stranica preko ovog obrasca je onemogućeno iz tehničkih razloga.", "exportlistauthors": "Uključi celokupan spisak doprinosilaca za svaku stranicu", "export-submit": "Izvezi", @@ -2875,7 +2875,7 @@ "markedaspatrolled": "Označeno kao patrolirano", "markedaspatrolledtext": "Izabrana izmena stranice [[:$1]] označena je kao patrolirana.", "rcpatroldisabled": "Patroliranje skorašnjih izmena je onemogućeno", - "rcpatroldisabledtext": "Mogućnost patroliranja skorašnjih izmena je aktuelno onemogućena.", + "rcpatroldisabledtext": "Mogućnost patroliranja skorašnjih izmena je trenutno onemogućena.", "markedaspatrollederror": "Ne mogu da označim kao patrolirano.", "markedaspatrollederrortext": "Morate navesti izmenu da biste je označili kao patroliranu.", "markedaspatrollederror-noautopatrol": "Ne možete da označite svoje promene kao patrolirane.", @@ -3646,7 +3646,7 @@ "specialpages-group-maintenance": "Izveštaji održavanja", "specialpages-group-other": "Ostale posebne stranice", "specialpages-group-login": "Prijava / registracija", - "specialpages-group-changes": "Nedavne promene i evidencije", + "specialpages-group-changes": "Nedavne promene i dnevnici", "specialpages-group-media": "Izveštaji o multimedijalnom sadržaju i otpremanja", "specialpages-group-users": "Korisnici i korisnička prava", "specialpages-group-highuse": "Najčešće korišćene stranice", diff --git a/languages/i18n/sv.json b/languages/i18n/sv.json index 622880df94..d8139a7919 100644 --- a/languages/i18n/sv.json +++ b/languages/i18n/sv.json @@ -3542,6 +3542,7 @@ "redirect-file": "Filnamn", "redirect-logid": "Logg-ID", "redirect-not-exists": "Värdet hittades inte", + "redirect-not-numeric": "Värdet är inte numeriskt", "fileduplicatesearch": "Sök efter dubblettfiler", "fileduplicatesearch-summary": "Sök efter dubblettfiler baserat på filernas hash-värden.", "fileduplicatesearch-filename": "Filnamn:", diff --git a/languages/i18n/ta.json b/languages/i18n/ta.json index c4590dcf91..e2a152bdbf 100644 --- a/languages/i18n/ta.json +++ b/languages/i18n/ta.json @@ -53,7 +53,8 @@ "Rakeshonwiki", "Kaartic", "Fitoschido", - "Matěj Suchánek" + "Matěj Suchánek", + "UY Scuti" ] }, "tog-underline": "அடிக்கோடிட்டத்தை இணை:", diff --git a/languages/i18n/tr.json b/languages/i18n/tr.json index e74b81be8e..6bca5642f5 100644 --- a/languages/i18n/tr.json +++ b/languages/i18n/tr.json @@ -464,6 +464,7 @@ "ns-specialprotected": "{{ns:special}} alanadı içindeki sayfalar değiştirilemez.", "titleprotected": "[[User:$1|$1]] tarafından oluşturulması engellenmesi için bu sayfa koruma altına alınmıştır.\nVerilen sebep: $2.", "filereadonlyerror": "\"$2\" dosya deposundaki \"$1\" dosyası salt okunur modda olduğundan dolayı değiştirmek için açılamıyor.\n\nKilitleyen sistem yöneticisinin bu konudaki nedeni: \"$3\".", + "invalidtitle": "Geçersiz başlık", "invalidtitle-knownnamespace": "\"$2\" alan adı için \"$3\" metni geçersiz bir başlık", "invalidtitle-unknownnamespace": "Bilinmeyen $1 ad alanı sayısı ve geçersiz \"$2\" başlık", "exception-nologin": "Giriş yapılmamış", @@ -517,7 +518,7 @@ "createacct-emailoptional": "E-posta adresi (isteğe bağlı)", "createacct-email-ph": "E-posta adresinizi girin", "createacct-another-email-ph": "E-posta adresinizi girin", - "createaccountmail": "Geçici bir rastgele şifre kullanabilir ve bu şifreyi belirtilen e-posta adresine gönderebilirsiniz", + "createaccountmail": "Geçici bir rastgele parola kullanabilir ve bu parolayı belirtilen e-posta adresine gönderebilirsiniz", "createaccountmail-help": "Parolayı öğrenmeden başka bir kişi için hesap oluşturmak amacıyla kullanılabilir.", "createacct-realname": "Gerçek adı (isteğe bağlı)", "createacct-reason": "Gerekçe", @@ -537,8 +538,8 @@ "loginerror": "Oturum açma hatası.", "createacct-error": "Hesap oluşturma hatası", "createaccounterror": "Hesap oluşturulamıyor: $1", - "nocookiesnew": "Kullanıcı hesabı oluşturuldu ama oturum açamadınız.\nOturum açmak için {{SITENAME}} çerezleri kullanır.\nÇerez kullanımı devredışı.\nLütfen çerez kullanımını açınız ve yeni kullanıcı adınız ve şifrenizle oturum açınız.", - "nocookieslogin": "{{SITENAME}} sitesinde oturum açabilmek için çerezlerinizin açık olması gerekiyor. Sizin çerezleriniz kapalı. Lütfen açınız ve bir daha deneyiniz.", + "nocookiesnew": "Kullanıcı hesabı oluşturuldu, ama oturum açmış durumda değilsiniz.\n{{SITENME}}, kullanıcı oturumlarını açmak için tanımlama bilgilerinden yararlanır.\nTanımlama bilgilerini devre dışı bıraktınız.\nLütfen etkinleştirin ve ardından yeni kullanıcı adı ve parolanızla oturum açın.", + "nocookieslogin": "{{SITENAME}}, kullanıcı oturumlarını açmak için tanımlama bilgilerinden yararlanır.\nTanımlama bilgilerini devre dışı bıraktınız.\nLütfen etkinleştirip yeniden deneyin.", "nocookiesfornew": "Kullanıcı hesabı oluşturulamadı, sorunun kaynağını da tespit edemedik.\nÇerezlerin açık olduğundan emin olun ve bu sayfayı yeniden yükleyip tekrar deneyin.", "createacct-loginerror": "Hesap başarılı şekilde oluşturuldu ancak otomatik olarak oturumunuz açılmadı. Lütfen [[Special:UserLogin|manuel giriş]] sayfasına gidin.", "noname": "Geçerli bir kullanıcı adı girmediniz.", @@ -552,7 +553,7 @@ "wrongpasswordempty": "Boş parola girdiniz. Lütfen tekrar deneyiniz.", "passwordtooshort": "Parolalar en az {{PLURAL:$1|1 karakter|$1 karakter}} uzunluğunda olmalı.", "passwordtoolong": "Parolalar $1 karakterden uzun olamaz.", - "passwordtoopopular": "Yaygın olarak seçilen şifreler kullanılamaz. Lütfen tahmin edilmesi daha zor bir şifre seçin.", + "passwordtoopopular": "Yaygın olarak seçilen parolalar kullanılamaz. Lütfen tahmin edilmesi daha zor bir parola seçin.", "password-name-match": "Parolanız kullanıcı adınızdan farklı olmalıdır.", "password-login-forbidden": "Bu kullanıcı adı ve parolanın kullanımı yasaklanmıştır.", "mailmypassword": "Parolayı sıfırla", @@ -576,7 +577,7 @@ "accountcreated": "Hesap açıldı", "accountcreatedtext": "[[{{ns:User}}:$1|$1]]([[{{ns:User talk}}:$1|msj]]) için kullanıcı hesabı oluşturuldu.", "createaccount-title": "{{SITENAME}} için hesap oluşturma", - "createaccount-text": "Birisi {{SITENAME}} sitesinde ($4) sizin e-posta adresinizi kullarak, şifresi \"$3\" olan, \"$2\" isimli bir hesap oluşturdu.\n\nSiteye giriş yapmalı ve parolanızı değiştirmelisiniz.\n\nEğer kullanıcı hesabını yanlışlıkla oluşturmuş iseniz, bu mesajı yoksayabilirsiniz.", + "createaccount-text": "Birisi {{SITENAME}} sitesinde ($4) sizin e-posta adresinizi kullarak, parolası \"$3\" olan, \"$2\" isimli bir hesap oluşturdu.\n\nSiteye giriş yapmalı ve parolanızı değiştirmelisiniz.\n\nEğer kullanıcı hesabını yanlışlıkla oluşturmuş iseniz, bu mesajı yoksayabilirsiniz.", "login-throttled": "Yakın zamanda çok fazla oturum açma girişiminde bulundunuz.\nLütfen yeniden denemeden önce $1 süreyle bekleyin.", "login-abort-generic": "Giriş başarısız - Durduruldu", "login-migrated-generic": "Hesabınız aktarılmış ve kullanıcı adınız artık bu vikide yok.", @@ -602,7 +603,7 @@ "changepassword-success": "Parolanız değiştirildi!", "changepassword-throttled": "Çok fazla yeni oturum açma girişiminde bulundunuz.\nLütfen tekrar denemeden önce $1 bekleyin.", "botpasswords": "Bot parolaları", - "botpasswords-summary": "Bot şifreleri, hesabın ana giriş kimlik bilgilerini kullanmadan API aracılığıyla bir kullanıcı hesabına erişime izin verir. Bir bot şifresi ile giriş yaptığınızda mevcut kullanıcı hakları kısıtlanabilir.\n\nBunu neden yapmak isteyebileceğinizi bilmiyorsanız, yapmayınız. Hiç kimse sizden bunlardan birini üretip onlara vermenizi istememelidir.", + "botpasswords-summary": "Bot parolaları, hesabın ana giriş kimlik bilgilerini kullanmadan API aracılığıyla bir kullanıcı hesabına erişime izin verir. Bir bot parolası ile giriş yaptığınızda mevcut kullanıcı hakları kısıtlanabilir.\n\nBunu neden yapmak isteyebileceğinizi bilmiyorsanız, yapmayınız. Hiç kimse sizden bunlardan birini üretip onlara vermenizi istememelidir.", "botpasswords-disabled": "Bot parolaları devre dışı.", "botpasswords-no-central-id": "Bot parolaları kullanmak için, merkezi bir hesap ile oturum açmalısınız.", "botpasswords-existing": "Mevcut bot parolaları", @@ -627,11 +628,11 @@ "botpasswords-updated-body": "\"$2\" adlı {{GENDER:$2|kullanıcının}} \"$1\" adlı botunun bot parolası güncellendi.", "botpasswords-deleted-title": "Bot parolası silindi", "botpasswords-deleted-body": "\"$2\" adlı {{GENDER:$2|kullanıcının}} \"$1\" adlı botunun bot parolası silindi.", - "botpasswords-newpassword": "$1 ile giriş yapılan yeni parola: $2. Lütfen bunu ileride başvurmak için kaydedin.
    (Kullanıcı adının, nihai kullanıcı adıyla aynı olmasını gerektiren eski botlar için kullanıcı adı olarak $3 ve şifre olarak da $4 kullanabilirsiniz.)", + "botpasswords-newpassword": "$1 ile giriş yapılan yeni parola: $2. Lütfen bunu ileride başvurmak için kaydedin.
    (Kullanıcı adının, nihai kullanıcı adıyla aynı olmasını gerektiren eski botlar için kullanıcı adı olarak $3 ve parola olarak da $4 kullanabilirsiniz.)", "botpasswords-no-provider": "BotPasswordsSessionProvider kullanılamaz.", "botpasswords-restriction-failed": "Bot parolası kısıtlamaları bu oturum açma işlemini önlemektedir.", "botpasswords-invalid-name": "Belirtilen kullanıcı adı bot parolası ayırıcısı içermiyor (\"$1\").", - "botpasswords-not-exist": "\"$1\" kullanıcısının \"$2\" adında bir bot şifresine sahip değil.", + "botpasswords-not-exist": "\"$1\" kullanıcısının \"$2\" adında bir bot parolasına sahip değil.", "botpasswords-needs-reset": "\"$1\" {{GENDER:$1|kullanıcısına}} ait \"$2\" adlı bot için bot parolası sıfırlanmalı.", "resetpass_forbidden": "Parolalar değiştirilememektedir", "resetpass_forbidden-reason": "Parolalar değiştirilemez: $1", @@ -655,14 +656,14 @@ "passwordreset-domain": "Domain:", "passwordreset-email": "E-posta adresi:", "passwordreset-emailtitle": "{{SITENAME}} hesap detayları", - "passwordreset-emailtext-ip": "Birisi, (muhtemelen siz, $1 IP adresinden) {{SITENAME}} ($4) için hesap bilgilerinizin \nhatırlatılmasını istedi. Aşağıdaki kullanıcı {{PLURAL:$3|hesabı|hesapları}} bu e-posta adresiyle ilişkili:\n\n$2\n\n{{PLURAL:$3|Bu geçici şifre|Bu geçici şifreler}} {{PLURAL:$5|bir gün|$5 gün}} geçerlidir.\nBu geçici parola ile giriş yapın ve yeni bir şifre seçin. Şifre değişimini siz istemediyseniz veya şifrenizi hatırladıysanız ve artık şifrenizi değiştirmek istemiyorsanız; bu iletiyi önemsemeyerek eski şifrenizi kullanmaya devam edebilirsiniz.", - "passwordreset-emailtext-user": "$1 adlı kullanıcı, {{SITENAME}} ($4) için hesap bilgilerinizin hatırlatılmasını istedi. Aşağıdaki kullanıcı {{PLURAL:$3|hesabı|hesapları}} bu e-posta adresiyle ilişkili:\n\n$2\n\n{{PLURAL:$3|Bu geçici şifre|Bu geçici şifreler}} {{PLURAL:$5|bir gün|$5 gün}} geçerlidir.\nBu geçici parola ile giriş yapın ve yeni bir şifre seçin. Bu talep bir başkasına aitse veya şifrenizi hatırladıysanız ve artık şifrenizi değiştirmek istemiyorsanız; bu iletiyi önemsemeyerek eski şifrenizi kullanmaya devam edebilirsiniz.", + "passwordreset-emailtext-ip": "Birisi ($1 numaralı IP adresini kullanarak muhtemelen siz), {{SITENAME}} ($4) için \nparolanızın sıfırlanmasını istedi. Aşağıdaki kullanıcı {{PLURAL:$3|hesabı|hesapları}} \nbu e-posta adresiyle ilişkilidir:\n\n$2\n\n{{PLURAL:$3|Bu geçici parolanın|Bu geçici parolaların}} süresi {{PLURAL:$5|bir gün|$5 gün}} sonra dolacaktır.\nŞu an oturum açarak yeni bir parola seçmeniz gerekmektedir. Bu istekte bulunan \nbir başkasıysa ya da özgün parolanızı hatırladıysanız ve artık değiştirmek \nistemiyorsanız, bu iletiyi göz ardı edebilir ve eski parolanızı kullanmaya \ndevam edebilirsiniz.", + "passwordreset-emailtext-user": "{{SITENAME}} kullanıcısı $1, {{SITENAME}} ($4) parolanızı sıfırlama isteğinde bulundu.\nAşağıdaki kullanıcı {{PLURAL:$3|hesabı|hesapları}} bu e-posta adresiyle ilişkilidir:\n\n$2\n\n{{PLURAL:$3|Bu geçici parolanın|Bu geçici parolaların}} süresi {{PLURAL:$5|bir gün|$5 gün}} sonra dolacaktır.\nŞu an oturum açarak yeni bir parola seçmeniz gerekmektedir. Bu istekte bulunan \nbir başkasıysa ya da özgün parolanızı hatırladıysanız ve artık değiştirmek \nistemiyorsanız, bu iletiyi göz ardı edebilir ve eski parolanızı kullanmaya devam edebilirsiniz.", "passwordreset-emailelement": "Kullanıcı adı: \n$1\n\nGeçici şifre: \n$2", "passwordreset-emailsentemail": "Eğer bu e-posta adresi hesabınızın bağlı olduğu adres ise, bir parola sıfırlama e-postası gönderilecektir.", "passwordreset-emailsentusername": "Eğer bu e-posta adresi hesabınızın bağlı olduğu adres ise, bir parola sıfırlama e-postası gönderilecektir.", "passwordreset-nocaller": "Bir ziyaretçi sağlanmalıdır", "passwordreset-nosuchcaller": "Ziyaretçi mevcut değil: $1", - "passwordreset-ignored": "Şifre sıfırlama işlenmedi. Belki de herhangi bir sağlayıcı yapılandırılmadı?", + "passwordreset-ignored": "Parola sıfırlama işlenmedi. Belki herhangi bir sağlayıcı yapılandırılmamıştır?", "passwordreset-invalidemail": "Geçersiz e-posta adresi", "passwordreset-nodata": "Ne bir kullanıcı adı ne de bir e-posta adresi verildi.", "changeemail": "E-posta adresini değiştir veya çıkar", @@ -670,7 +671,7 @@ "changeemail-no-info": "Bu sayfaya doğrudan erişmek için oturum açmanız gereklidir.", "changeemail-oldemail": "Mevcut E-posta adresi:", "changeemail-newemail": "Yeni E-posta adresi:", - "changeemail-newemail-help": "E-posta adresinizi silmek istiyorsanız bu alan boş bırakılmalıdır. E-posta adresi silindikten sonra unutulan şifreyi sıfırlayamazsınız ve bu Viki'den e-posta alamazsınız.", + "changeemail-newemail-help": "E-posta adresinizi silmek istiyorsanız bu alan boş bırakılmalıdır. E-posta adresi silindikten sonra unutulan parolayı sıfırlayamazsınız ve bu vikiden e-posta alamazsınız.", "changeemail-none": "(yok)", "changeemail-password": "{{SITENAME}} parolanız:", "changeemail-submit": "E-posta'yı değiştir", @@ -859,6 +860,8 @@ "parser-unstrip-loop-warning": "Yineleme döngüsü algılandı", "unstrip-depth-warning": "($1) yineleme sınırı aşıldı", "unstrip-depth-category": "Sızıntı derinliği sınırının aşıldığı sayfalar", + "unstrip-size-warning": "($1) yineleme sınırı aşıldı", + "unstrip-size-category": "Sızıntı derinliği sınırının aşıldığı sayfalar", "converter-manual-rule-error": "Elle yapılandırma dil dönüşüm kuralı hatası tespit edildi", "undo-success": "Bu değişiklik geri alınabilir. Lütfen aşağıdaki karşılaştırmayı kontrol edin, gerçekten bu değişikliği yapmak istediğinizden emin olun ve sayfayı kaydederek bir önceki değişikliği geriye alın.", "undo-failure": "Değişikliklerin çakışması nedeniyle geri alma işlemi başarısız oldu.", @@ -1224,16 +1227,16 @@ "group-autoconfirmed-member": "{{GENDER:$1|otomatik onaylanmış kullanıcı}}", "group-bot-member": "{{GENDER:$1|bot}}", "group-sysop-member": "{{GENDER:$1|hizmetli}}", - "group-interface-admin-member": "arayüz yöneticisi", + "group-interface-admin-member": "{{GENDER:$1|arayüz yöneticisi}}", "group-bureaucrat-member": "{{GENDER:$1|bürokrat}}", - "group-suppress-member": "{{GENDER:$1|gözetmen}}", + "group-suppress-member": "{{GENDER:$1|suppressor}}", "grouppage-user": "{{ns:project}}:Kullanıcılar", "grouppage-autoconfirmed": "{{ns:project}}:Otomatik onaylanmış kullanıcılar", "grouppage-bot": "{{ns:project}}:Botlar", "grouppage-sysop": "{{ns:project}}:Hizmetliler", - "grouppage-interface-admin": "Project:Arayüz yöneticileri", + "grouppage-interface-admin": "{{ns:project}}:Arayüz yöneticileri", "grouppage-bureaucrat": "{{ns:project}}:Bürokratlar", - "grouppage-suppress": "{{ns:project}}:Gözetmen", + "grouppage-suppress": "{{ns:project}}:Suppress", "right-read": "Sayfaları oku", "right-edit": "Sayfaları düzenle", "right-createpage": "Sayfa oluştur (tartışma sayfası olmayan)", @@ -1247,7 +1250,7 @@ "right-move-categorypages": "Kategori sayfaları taşı", "right-movefile": "Dosyaları taşı", "right-suppressredirect": "Bir sayfayı taşırken eski isimden yönlendirme oluşturma", - "right-upload": "Dosyaları yükle", + "right-upload": "Dosya yükle", "right-reupload": "Mevcut dosyaların üstüne yaz", "right-reupload-own": "Kendisinin yüklediği bir dosyanın üzerine yaz", "right-reupload-shared": "Paylaşılan ortam deposundaki dosyaları yerel olarak geçersiz kıl", @@ -1257,7 +1260,7 @@ "right-bot": "Otomatik bir işlem gibi muamele gör", "right-nominornewtalk": "Kullanıcı tartışma sayfalarında yaptığı küçük değişiklikler kullanıcıya yeni mesaj bildirimiyle bildirilmez", "right-apihighlimits": "API sorgularında yüksek sınır kullan", - "right-writeapi": "API yaz kullanımı", + "right-writeapi": "Yazma API'sini kullan", "right-delete": "Sayfaları sil", "right-bigdelete": "Uzun tarihli sayfaları sil", "right-deletelogentry": "Belirli günlük girdilerini sil ve geri getir", @@ -1303,7 +1306,7 @@ "right-patrolmarks": "Son değişiklikler gözleme işaretlerini gör", "right-unwatchedpages": "İzlenmeyen sayfaların bir listesini gör", "right-mergehistory": "Sayfalarının tarihlerini birleştir", - "right-userrights": "Tüm kullanıcı haklarını değiştirmek", + "right-userrights": "Tüm kullanıcı haklarını değiştir", "right-userrights-interwiki": "Diğer vikilerdeki kullanıcıların kullanıcı haklarını değiştir", "right-siteadmin": "Veritabanını kilitle ve kilidi aç", "right-override-export-depth": "Sayfaları, derinlik 5'e kadar bağlantılı sayfalarla beraber, dışa aktar", @@ -1311,7 +1314,7 @@ "right-managechangetags": "[[Special:Tags|Etiket]] oluşturma ve (de)aktive etme", "right-applychangetags": "Değişiklikleriyle beraber [[Special:Tags|etiketleri]] uygula", "right-changetags": "Tekil sürümler ve günlük kayıtlarına rastgele [[Special:Tags|etiket]] ekleme veya çıkarma", - "right-deletechangetags": "Veritabanından [[Special:Tags|etiketleri]] silin", + "right-deletechangetags": "Veritabanından [[Special:Tags|etiketleri]] sil", "grant-generic": "\"$1\" hak paketi", "grant-group-page-interaction": "Sayfalarla etkileşim kur", "grant-group-file-interaction": "Medya ile etkileşim kur", @@ -1324,10 +1327,11 @@ "grant-createaccount": "Hesap oluştur", "grant-createeditmovepage": "Sayfaları oluşturma, düzenleme ve taşıma", "grant-delete": "Sayfaları, sürümleri ve günlük girdileri sil", - "grant-editinterface": "MediaWiki alanadını ve kullanıcı CSS/JSON/JavaScript'ini düzenle", + "grant-editinterface": "MediaWiki alanadını, sitewide'ı ve kullanıcı JSON'unu düzenle", "grant-editmycssjs": "Kullanıcı CSS/JSON/JavaScript'ini düzenle", "grant-editmyoptions": "Kullanıcı tercihlerini Düzenle", "grant-editmywatchlist": "İzleme listeni düzenle", + "grant-editsiteconfig": "Sitewide ve kullanıcı CSS/JS değiştir", "grant-editpage": "Mevcut sayfaları düzenle", "grant-editprotected": "Korumalı sayfaları Düzenle", "grant-highvolume": "Yüksek hacimli düzenleme", @@ -1335,6 +1339,7 @@ "grant-patrol": "Sayfadaki değişiklikleri incele", "grant-privateinfo": "Özel bilgilere eriş", "grant-protect": "Sayfaları koru ve korumasını kaldır", + "grant-rollback": "Geri alma sayfalarını düzenle", "grant-sendemail": "Diğer kullanıcılara e-posta gönder", "grant-uploadeditmovefile": "Dosya yükle, yenisiyle değiştir ve taşı", "grant-uploadfile": "Dosya yükle", @@ -1490,6 +1495,8 @@ "rcfilters-filter-reviewstatus-unpatrolled-description": "Devriye onayından el ile ya da otomatik olarak geçmemiş düzenlemeler.", "rcfilters-filter-reviewstatus-unpatrolled-label": "Devriye onayından geçmemiş", "rcfilters-filter-reviewstatus-manual-description": "Devriye onayından el ile geçmiş düzenlemeler.", + "rcfilters-filter-reviewstatus-manual-label": "Manuel olarak devriye edilmiş", + "rcfilters-filter-reviewstatus-auto-description": "İşleri otomatik olarak devriye olarak işaretlenen gelişmiş kullanıcılara göre düzenler.", "rcfilters-filtergroup-significance": "Önem", "rcfilters-filter-minor-label": "Küçük düzenlemeler", "rcfilters-filter-minor-description": "Yazarın küçük olarak etiketlediği düzenlemeler.", @@ -1539,6 +1546,7 @@ "rcfilters-watchlist-preference-help": "2017 arayüz tasarımını ve bu andan sonra eklenen tüm araçları geri alır.", "rcfilters-target-page-placeholder": "Bir sayfa (ya da kategori) adı girin", "rcnotefrom": "$3, $4 tarihinden itibaren yapılan {{PLURAL:$5|değişiklik|değişiklik}} aşağıdadır ($1 tarhine kadar olanlar gösterilmektedir).", + "rclistfromreset": "Tarih seçimini sıfırla", "rclistfrom": "$3 $2 tarihinden itibaren yeni değişiklikleri göster", "rcshowhideminor": "Küçük değişiklikleri $1", "rcshowhideminor-show": "göster", @@ -1584,6 +1592,7 @@ "recentchangeslinked-to": "Belirtilen sayfadan verilenler yerine, sayfaya verilen bağlantıları göster.", "recentchanges-page-added-to-category": "[[:$1]] kategoriye eklendi", "recentchanges-page-removed-from-category": "[[:$1]] kategoriden çıkarıldı", + "autochange-username": "MediaWiki otomatik değişimi", "upload": "Dosya yükle", "uploadbtn": "Dosya yükle", "reuploaddesc": "Yükleme formuna geri dön.", @@ -1651,11 +1660,11 @@ "uploaddisabledtext": "Dosya yüklemeleri devredışı bırakılmıştır.", "php-uploaddisabledtext": "PHP dosyası yüklemeleri devre dışıdır. Lütfen file_uploads ayarını kontrol edin.", "uploadscripted": "Bu dosya bir internet tarayıcısı tarafından hatalı çevrilebilecek bir HTML veya script kodu içermektedir.", - "upload-scripted-pi-callback": "xml-stylesheet işleme talimatları içeren bir dosyalar yüklenemez.", + "upload-scripted-pi-callback": "XML-stylesheet işleme talimatları içeren bir dosyalar yüklenemez.", "uploaded-script-svg": "Yüklenen SVG dosyasında komutlanabilir (scriptable) öğe bulundu: \"$1\"", "uploaded-hostile-svg": "Yüklenen SVG dosyasının \"style\" öğesinde güvensiz CSS bulundu.", "uploaded-event-handler-on-svg": "SVG dosyalarında event-handler özniteliğini $1=\"$2\" şeklinde ayarlanmasına izin verilmiyor.", - "uploaded-href-unsafe-target-svg": "Yüklenen SVG dosyasında <$1 $2=\"$3\"> güvensiz hedefine href bulundu.", + "uploaded-href-unsafe-target-svg": "Yüklenen SVG dosyasında <$1 $2=\"$3\"> güvensiz hedefine href veri: URI bulundu.", "uploaded-animate-svg": "\"animate\" etiketi bulundu, href'i değiştiriyor olabilir. Yüklenen SVG dosyasındaki \"from\" özniteliği kullanılıyor <$1 $2=\"$3\">", "uploadscriptednamespace": "Bu SVG dosyası geçersiz \"$1\" alan adını içermektedir.", "uploadinvalidxml": "Yüklenen dosyadaki XML işlenemedi.", @@ -1713,7 +1722,7 @@ "backend-fail-read": "$1 dosyası okunamadı.", "backend-fail-create": "$1 dosyası yazılamadı.", "backend-fail-maxsize": "Dosya {{PLURAL:$2|bir bayt|$2 bayt}} daha büyük olduğu için \"$1\" dosyasına yazılamadı.", - "backend-fail-readonly": "Depolama arkaplan uygulaması \"$1\" şu anda salt okunur. Verilen gerekçe: \"''$2''\"", + "backend-fail-readonly": "Depolama arkaplan uygulaması \"$1\" şu anda salt okunur. Verilen gerekçe: $2", "backend-fail-synced": "\"$1\" dosyası dahili depolama arkaplan uygulamaları içinde tutarsız bir durumda", "backend-fail-connect": "\"$1\" depolama arkaplan uygulamasına bağlanılamıyor.", "backend-fail-internal": "\"$1\" depolama arkaplan uygulamasında bilinmeyen bir hata oluştu.", @@ -1726,7 +1735,7 @@ "lockmanager-fail-closelock": "\"$1\" için kilit dosyası kapatılamıyor.", "lockmanager-fail-deletelock": "\"$1\" için kilit dosyası silinemiyor.", "lockmanager-fail-acquirelock": "\"$1\" için kilit alınamıyor.", - "lockmanager-fail-openlock": "\"$1\" için kilit dosyası açılamıyor.", + "lockmanager-fail-openlock": "\"$1\" için kilit dosyası açılamıyor. Yükleme dizininizin doğru şekilde yapılandırıldığından ve web sunucunuzun bu dizine yazma izninin olduğundan emin olun. Daha fazla bilgilendirme için: https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgUploadDirectory", "lockmanager-fail-releaselock": "\"$1\" için kilit serbest bırakılamıyor.", "lockmanager-fail-db-bucket": "$1 kovasında yeterli kilit veri tabanına iletişim sağlanamadı.", "lockmanager-fail-db-release": "$1 veritabanında kilitler serbest bırakılamıyor.", @@ -1740,12 +1749,14 @@ "uploadstash-summary": "Bu sayfa yüklenmiş(veya yüklenmekte olan) ama henüz viki'de yayınlanmamış dosyalara erişmeyi sağlar. Bu dosyalar sadece yükleyeni tarafından görülebilir.", "uploadstash-clear": "Geçici düzenlenebilir dosyaları sil", "uploadstash-nofiles": "Hiç geçici düzenlenebilir dosyanız yok.", - "uploadstash-badtoken": "İşlemin gerçekleştirilmesi başarısız oldu, muhtemelen düzenleme yetkileriniz zaman aşımına uğradı. Yeniden deneyin.", + "uploadstash-badtoken": "İşlemin gerçekleştirilmesi başarısız oldu, muhtemelen düzenleme yetkileriniz zaman aşımına uğradı. Lütfen yeniden deneyin.", "uploadstash-errclear": "Dosyaların silinmesi başarısız oldu.", "uploadstash-refresh": "Dosya listelerini yenile", + "uploadstash-bad-path-unknown-type": "Bilinmeyen tür \"$1\".", + "uploadstash-bad-path-unrecognized-thumb-name": "Tanınmayan başparmak adı.", "invalid-chunk-offset": "Geçersiz öbek ofset", "img-auth-accessdenied": "Erişim engellendi", - "img-auth-nopathinfo": "Eksik PATH_INFO.\nSunucunuz bu bilgiyi geçirmek için ayarlanmamış.\nCGI-tabanlı ve img_auth desteklenmiyor olabilir.\nhttps://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization sayfasına bakın.", + "img-auth-nopathinfo": "Eksik path bilgilendirmesi.\nSunucunuz REQUEST_URI and/or PATH_INFO değişlenlerini geçirmek için ayarlanmış olmalıdır.\nEğer etkinse, $wgUsePathInfo'i etkinleştirmeyi deneyin.\nhttps://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization sayfasına bakın.", "img-auth-notindir": "İstenen yol yapılandırılmış yükleme dizininde değil.", "img-auth-badtitle": "\"$1\" ile geçerli bir başlık yapılamıyor.", "img-auth-nologinnWL": "Giriş yapmadınız ve \"$1\" beyaz listede değil.", @@ -1761,6 +1772,7 @@ "http-timed-out": "HTTP isteği zaman aşımına uğradı.", "http-curl-error": "URL alınırken hata: $1", "http-bad-status": "HTTP isteği sırasında bir sorun oluştu: $1 $2", + "http-internal-error": "HTTP dahili hata.", "upload-curl-error6": "URL'ye ulaşılamadı", "upload-curl-error6-text": "Belirtilen URL'ye erişilemiyor.\nLütfen URL'nin doğru ve sitenin açık olduğunu kontrol edin.", "upload-curl-error28": "Yüklemede zaman aşımı", @@ -1893,7 +1905,7 @@ "doubleredirects": "Yönlendirmeye olan yönlendirmeler", "doubleredirectstext": "Bu sayfa diğer yönlendirme sayfalarına yönlendirme yapan sayfaları listeler.\nHer satırın içerdiği bağlantılar; birinci ve ikinci yönlendirme, ayrıca ikinci yönlendirmenin hedefi, ki bu genelde birinci yönlendirmenin göstermesi gereken \"gerçek\" hedef sayfasıdır.\nÜstü çizili girdiler çözülmüştür.", "double-redirect-fixed-move": "[[$1]] taşındı.\nYönlendirme otomatik olarak güncellendi ve [[$2]] sayfasına yönlendirildi.", - "double-redirect-fixed-maintenance": "[[$1]] sayfasından [[$2]] sayfasına yapılan çift yönlendirme otomatik olarak düzeltiliyor.", + "double-redirect-fixed-maintenance": "[[$1]] sayfasından [[$2]] sayfasına yapılan çift yönlendirme otomatik olarak düzeltiliyor", "double-redirect-fixer": "Yönlendirme tamircisi", "brokenredirects": "Var olmayan sayfalara yönlendirmeler", "brokenredirectstext": "Aşağıdaki yönlendirmeler varolmayan sayfalara bağlantı veriyor:", @@ -1948,6 +1960,7 @@ "deadendpages": "Başka sayfalara bağlantısı olmayan sayfalar", "deadendpagestext": "Aşağıdaki sayfalar, {{SITENAME}} sitesinde diğer sayfalara bağlantı vermiyor.", "protectedpages": "Koruma altındaki sayfalar", + "protectedpages-filters": "Süzgeçler:", "protectedpages-indef": "Sadece süresiz korumalar", "protectedpages-summary": "Bu sayfa şu anda koruma altında olan mevcut sayfaları listeler. Oluşturulması korunan başlıkların listesi için [[{{#special:ProtectedTitles}}|{{int:protectedtitles}}]] sayfasına bakın.", "protectedpages-cascade": "Sadece ardışık korumalar", @@ -1991,6 +2004,8 @@ "querypage-disabled": "Bu özel sayfa, performansa dayalı nedenlerle devre dışı bırakılır.", "apihelp": "API yardımı", "apihelp-no-such-module": "\"$1\" modülü bulunamadı.", + "apisandbox": "API deneme tahtası", + "apisandbox-api-disabled": "API bu sitede devre dışı bırakılmış.", "apisandbox-submit": "İstek yap", "apisandbox-reset": "Temizle", "apisandbox-retry": "Tekrar dene", @@ -2013,6 +2028,8 @@ "apisandbox-request-time": "İstek zamanı: $1", "apisandbox-continue": "Devam et", "apisandbox-continue-clear": "Temizle", + "apisandbox-multivalue-all-namespaces": "$1 (Tüm isim alanları)", + "apisandbox-multivalue-all-values": "$1 (Tüm değerler)", "booksources": "Kaynak kitaplar", "booksources-search-legend": "Kitap kaynaklarını ara", "booksources-isbn": "ISBN:", @@ -2035,8 +2052,10 @@ "log-title-wildcard": "Bu metinle başlayan başlıklar ara", "showhideselectedlogentries": "Seçili günlük girdilerinin görünürlüğünü değiştir", "log-edit-tags": "Seçili kayıtların etiketlerini düzenle", + "checkbox-select": "Seçilmiş: $1", "checkbox-all": "Tüm", "checkbox-none": "Hiçbiri", + "checkbox-invert": "Ekle", "allpages": "Tüm sayfalar", "nextpage": "Sonraki sayfa ($1)", "prevpage": "Önceki sayfa ($1)", @@ -2212,6 +2231,7 @@ "dellogpage": "Silme günlüğü", "dellogpagetext": "Aşağıda en son silme işlemlerinin bir listesi bulunmaktadır.", "deletionlog": "silme günlüğü", + "log-name-create": "Sayfa oluşturma günlüğü", "logentry-create-create": "$1, $3 adlı sayfayı {{GENDER:$2|oluşturdu}}", "reverted": "Önceki sürüm geri getirildi", "deletecomment": "Neden:", @@ -2237,6 +2257,7 @@ "sessionfailure-title": "Oturum başarısızlığı", "sessionfailure": "Giriş oturumunuzla ilgili bir sorun var gibi görünüyor;\nbu eylem, oturum gaspına karşı önlem olarak iptal edildi.\nLütfen \"geri\" gidin ve geldiğiniz sayfayı yeniden yükleyin, sonra tekrar deneyin.", "changecontentmodel": "Bir sayfanın içerik modelini değiştir", + "changecontentmodel-legend": "İçerik modelini değiştir", "changecontentmodel-title-label": "Sayfa başlığı", "changecontentmodel-model-label": "Yeni içerik modeli", "changecontentmodel-reason-label": "Gerekçe:", @@ -2425,6 +2446,7 @@ "ipb-unblock": "Bir kullanıcı adı veya IP adresinin engellemesini kaldır", "ipb-blocklist": "Mevcut olan engellemeleri göster", "ipb-blocklist-contribs": "{{GENDER:$1|$1}} için katkılar", + "ipb-blocklist-duration-left": "$1 ayrıldı", "unblockip": "Kullanıcının engellemesini kaldır", "unblockiptext": "Daha önceden engellenmiş bir IP adresine ya da kullanıcı adına yazma erişimini geri vermek için aşağıdaki formu kullanın.", "ipusubmit": "Bu engellemeyi kaldır", @@ -2433,6 +2455,7 @@ "unblocked-id": "$1 engeli çıkarıldı", "unblocked-ip": "[[Special:Contributions/$1|$1]] adlı kullanıcının engeli kaldırıldı.", "blocklist": "Engellenmiş kullanıcılar", + "autoblocklist": "Otomatik engellemeler", "autoblocklist-submit": "Ara", "autoblocklist-legend": "Otomatik engellenenleri listele", "autoblocklist-total-autoblocks": "Toplam otomatik engellenen kişi sayısı: $1", @@ -2630,6 +2653,7 @@ "import-mapping-namespace": "Bir ad alanının içine aktar:", "import-mapping-subpage": "Şu sayfanın alt sayfaları olarak içe aktar:", "import-upload-filename": "Dosya adı:", + "import-upload-username-prefix": "Interwiki öneki:", "import-comment": "Yorum:", "importtext": "Lütfen dosyayı [[Special:Export|dışa aktarım yardımcı yazılımıyla]] kaynak vikiden dışa aktarın.\nBilgisayarınıza kaydedin ve buraya yükleyin.", "importstart": "Sayfalar aktarmaktadır...", @@ -2807,6 +2831,7 @@ "pageinfo-category-pages": "Sayfa sayısı", "pageinfo-category-subcats": "Alt kategori sayısı", "pageinfo-category-files": "Dosya sayısı", + "pageinfo-user-id": "Kullanıcı ID'si", "pageinfo-file-hash": "Hash değeri", "markaspatrolleddiff": "Kontrol edilmiş olarak işaretle", "markaspatrolledtext": "Kontrol edilmiş olarak işaretle", @@ -2821,6 +2846,7 @@ "markedaspatrollederrornotify": "Kontrol edildi olarak işaretleme başarısız oldu.", "patrol-log-page": "Devriye günlüğü", "patrol-log-header": "Bu gözlenmiş revizyonların günlüğüdür.", + "confirm-markpatrolled-button": "TAMAM", "deletedrevision": "$1 sayılı eski sürüm silindi.", "filedeleteerror-short": "$1 dosyanın silinmesinde hata oldu", "filedeleteerror-long": "Dosyayı silerken hatalarla karşılaşıldı:\n\n$1", @@ -2859,6 +2885,7 @@ "newimages-label": "Dosya adı (ya da bir parçası):", "newimages-showbots": "Bot yüklemelerini göster", "newimages-hidepatrolled": "Denetlenmiş yüklemeleri gizle", + "newimages-mediatype": "Medya türü:", "noimages": "Görecek bir şey yok.", "ilsubmit": "Ara", "bydate": "kronolojik sırayla", @@ -3359,6 +3386,7 @@ "version-specialpages": "Özel sayfalar", "version-parserhooks": "Derleyici çengelleri", "version-variables": "Değişkenler", + "version-editors": "Editörler", "version-antispam": "Yığın mesaj (spam) önleme", "version-other": "Diğer", "version-mediahandlers": "Ortam işleyiciler", @@ -3407,6 +3435,7 @@ "redirect-page": "Sayfa kimliği", "redirect-revision": "Sayfa revizyonu", "redirect-file": "Dosya adı", + "redirect-logid": "ID günlüğü", "redirect-not-exists": "Değer bulunamadı", "fileduplicatesearch": "Benzer dosyaları ara", "fileduplicatesearch-summary": "Sağlama değeri tabanında benzer dosyaları ara.", @@ -3514,7 +3543,7 @@ "tags-edit-revision-legend": "{{PLURAL:$1|Bu sürüme|Bu $1 sürüme}} etiket ekle veya kaldır.", "tags-edit-logentry-legend": "{{PLURAL:$1|Bu günlük kaydına|Bu $1 günlük kaydına}} etiket ekle veya kaldır", "tags-edit-existing-tags": "Mevcut etiketler:", - "tags-edit-existing-tags-none": "\"Hiçbiri\"", + "tags-edit-existing-tags-none": "Hiçbiri", "tags-edit-new-tags": "Yeni etiketler:", "tags-edit-add": "Bu etiketleri ekleyin:", "tags-edit-remove": "Bu etiketleri kaldır:", @@ -3712,13 +3741,15 @@ "expand_templates_preview_fail_html": "{{SITENAME}} işlenmemiş HTML koduna izin verdiği ve oturum verilerinde kayıp yaşandığı için, ön izleme, JavaScript saldırılarına karşı önlem olarak gizlendi.\n\nEğer meşru bir ön izleme girişimi idiyse, tekrar deneyiniz.\nYine de çalışmıyorsa, [[Special:UserLogout|oturum kapamayı]] ve tekrar açmayı deneyin.", "expand_templates_preview_fail_html_anon": "{{SITENAME}} işlenmemiş HTML koduna izin verdiği ve oturum verilerinde kayıp yaşandığı için, ön izleme, JavaScript saldırılarına karşı önlem olarak gizlendi.\n\nEğer meşru bir ön izleme girişimi idiyse, lütfen [[Special:UserLogin|oturum açarak]] tekrar deneyin.", "expand_templates_input_missing": "En azından bazı giriş viki metni sağlamak zorundasınız.", - "pagelanguage": "Sayfa dilini değiştir", + "pagelanguage": "Sayfanın dilini değiştir", "pagelang-name": "Sayfa", "pagelang-language": "Dil", "pagelang-use-default": "Varsayılan dili kullan", "pagelang-select-lang": "Dil seçin", - "right-pagelang": "Sayfa dilini değiştir", - "action-pagelang": "sayfa dilini değiştir", + "pagelang-reason": "Sebep", + "pagelang-submit": "Gönder", + "right-pagelang": "Sayfanın dilini değiştir", + "action-pagelang": "sayfanın dilini değiştir", "log-name-pagelang": "Dil değişimi günlüğü", "log-description-pagelang": "Bu, sayfalardaki dil değişikliklerinin kayıt günlüğüdür.", "logentry-pagelang-pagelang": "$1, $3 sayfasının dilini $4 dilinden $5 diline {{GENDER:$2|çevirdi}}.", @@ -3809,8 +3840,11 @@ "log-action-filter-protect-protect": "Koruma", "log-action-filter-protect-modify": "Koruma değişikliği", "log-action-filter-protect-unprotect": "Korunmayan", + "log-action-filter-protect-move_prot": "Taşıma koruması", "log-action-filter-upload-upload": "Yeni yükleme", "log-action-filter-upload-overwrite": "Yeniden yükle", + "authmanager-authplugin-setpass-bad-domain": "Geçersiz alanadı.", + "authmanager-userdoesnotexist": "\"$1\" kullanıcı hesabı kayıtlı değil.", "authmanager-email-label": "E-posta", "authmanager-email-help": "E-posta adresi", "authmanager-realname-label": "Gerçek ad", @@ -3818,11 +3852,24 @@ "authmanager-provider-temporarypassword": "Geçici parola", "authprovider-resetpass-skip-label": "Atla", "authprovider-resetpass-skip-help": "Parola sıfırlamayı atla.", - "passwordpolicies": "Şifre politikaları", + "authform-notoken": "Eksik token", + "authform-wrongtoken": "Yanlış token", + "specialpage-securitylevel-not-allowed-title": "İzin verilmedi", + "credentialsform-account": "Hesap adı:", + "edit-error-short": "Hata: $1", + "edit-error-long": "Hatalar:\n\n$1", + "revid": "revizyon $1", + "pageid": "sayfa ID'si $1", + "gotointerwiki": "Ayrılınıyor {{SITENAME}}", + "pagedata-title": "Sayfa verisi", + "passwordpolicies": "Parola politikaları", "passwordpolicies-summary": "Bu, bu vikide tanımlanan kullanıcı grupları için etkili parola ilkelerinin bir listesidir.", - "passwordpolicies-policy-minimalpasswordlength": "Şifre en az $1 karakter uzunluğunda olmalı", - "passwordpolicies-policy-passwordcannotmatchusername": "Şifre kullanıcı adıyla aynı olamaz", + "passwordpolicies-group": "Grup", + "passwordpolicies-policies": "Politikalar", + "passwordpolicies-policy-minimalpasswordlength": "Parola en az $1 karakter uzunluğunda olmalıdır", + "passwordpolicies-policy-minimumpasswordlengthtologin": "Şifre giriş yapabilmek için en az $1 karakter uzunluğunda olmalı", + "passwordpolicies-policy-passwordcannotmatchusername": "Parola kullanıcı adıyla aynı olamaz", "passwordpolicies-policy-passwordcannotmatchblacklist": "Şifre özellikle kara listeye alınmış şifrelerle aynı olamaz", - "passwordpolicies-policy-maximalpasswordlength": "Şifre $1 karakterden az olmalı", - "passwordpolicies-policy-passwordcannotbepopular": "Şifre, $1 popüler şifrenin listesinde olamaz" + "passwordpolicies-policy-maximalpasswordlength": "Parola $1 karakterden kısa olmalı", + "passwordpolicies-policy-passwordcannotbepopular": "Parola, $1 popüler parola listesinde olamaz" } diff --git a/languages/i18n/uk.json b/languages/i18n/uk.json index 99a5b0bee9..9dd9197b9c 100644 --- a/languages/i18n/uk.json +++ b/languages/i18n/uk.json @@ -1232,7 +1232,7 @@ "right-reupload": "перезаписування існуючих файлів", "right-reupload-own": "перезаписування існуючих файлів, завантажених тим самим користувачем", "right-reupload-shared": "підміна файлів зі спільного сховища локальними", - "right-upload_by_url": "Завантаження файлів за URL-адресами", + "right-upload_by_url": "завантаження файлів за URL-адресами", "right-purge": "очищення кешу сторінки без необхідності підтвердження", "right-autoconfirmed": "без обмежень швидкості за IP", "right-bot": "автоматична обробка", @@ -1286,7 +1286,7 @@ "right-mergehistory": "об'єднання історій редагувань сторінок", "right-userrights": "зміна всіх прав користувачів", "right-userrights-interwiki": "зміна прав користувачів у інших вікі", - "right-siteadmin": "Блокування і розблокування бази даних", + "right-siteadmin": "блокування і розблокування бази даних", "right-override-export-depth": "експорт сторінок, включаючи пов'язані сторінки з глибиною до 5", "right-sendemail": "надсилання електронної пошти іншим користувачам", "right-managechangetags": "створення та (де)активування [[Special:Tags|міток]]", diff --git a/languages/i18n/yue.json b/languages/i18n/yue.json index 2c50814d1f..eb5ec222c2 100644 --- a/languages/i18n/yue.json +++ b/languages/i18n/yue.json @@ -385,6 +385,7 @@ "ns-specialprotected": "特別頁係唔可以編輯嘅。", "titleprotected": "呢個標題已經俾[[User:$1|$1]]保護咗防止去開。原因係$2。", "filereadonlyerror": "改唔到檔案 \"$1\",因為檔案庫 \"$2\" 而家係唯讀。\n\n負責鎖嘅系統管理員嘅解釋:\"$3\"。", + "invalidtitle": "冇效嘅標題", "invalidtitle-knownnamespace": "名域 \"$2\" 同版名 \"$3\" 無效嘅標題", "invalidtitle-unknownnamespace": "未知名域號碼 \"$1\" 同版名 \"$2\" 無效嘅標題", "exception-nologin": "未簽到", diff --git a/languages/i18n/zh-hans.json b/languages/i18n/zh-hans.json index ce13ba8b19..a47816c851 100644 --- a/languages/i18n/zh-hans.json +++ b/languages/i18n/zh-hans.json @@ -3624,6 +3624,7 @@ "redirect-file": "文件名", "redirect-logid": "日志ID", "redirect-not-exists": "没找到相应值", + "redirect-not-numeric": "输入的数值并不是数字", "fileduplicatesearch": "搜索重复文件", "fileduplicatesearch-summary": "根据哈希(hash)值搜索重复文件。", "fileduplicatesearch-filename": "文件名:", diff --git a/languages/i18n/zh-hant.json b/languages/i18n/zh-hant.json index d85da95f74..ec27bf0dbf 100644 --- a/languages/i18n/zh-hant.json +++ b/languages/i18n/zh-hant.json @@ -802,7 +802,7 @@ "permissionserrorstext-withaction": "由於下列{{PLURAL:$1|原因}},您沒有權限進行 $2 的動作:", "contentmodelediterror": "您無法編輯此修訂,因為它的內容模型為$1,與目前使用的頁面內容模型$2不同。", "recreate-moveddeleted-warn": "警告:您正重新建立先前已刪除的頁面。\n\n您應考慮是否繼續編輯此頁。\n在此提供刪除與移動日誌方便作為參考:", - "moveddeleted-notice": "此頁面已刪除。\n下方提供此頁面的刪除、保護和移動日誌以便參考。", + "moveddeleted-notice": "此頁面已遭刪除。\n請參考下方關於此頁面的刪除、保護和移動日誌。", "moveddeleted-notice-recent": "對不起,此頁面剛剛被刪除(在最近24小時內)。頁面的刪除、保護和移動日誌在下方提供以供參考。", "log-fulllog": "檢視完整日誌", "edit-hook-aborted": "編輯已被 Hook 中止。\n且未回應無任何說明。", @@ -999,7 +999,7 @@ "lineno": "行 $1:", "compareselectedversions": "比較已選擇的修訂", "showhideselectedversions": "變更已選擇修訂的顯示設定", - "editundo": "復原", + "editundo": "撤銷", "diff-empty": "(無差異)", "diff-multi-sameuser": "(未顯示同一使用者於中間所作的 $1 次修訂)", "diff-multi-otherusers": "(未顯示由 $2 位使用者於中間所作的 $1 次修訂)", @@ -3567,6 +3567,7 @@ "redirect-file": "檔案名稱", "redirect-logid": "日誌 ID", "redirect-not-exists": "查無值", + "redirect-not-numeric": "值不是數字", "fileduplicatesearch": "搜尋重複檔案", "fileduplicatesearch-summary": "依據雜湊值 (Hash) 來搜尋重複的檔案。", "fileduplicatesearch-filename": "檔案名稱:", diff --git a/languages/i18n/zh-hk.json b/languages/i18n/zh-hk.json index 0ee129335e..d64859f57c 100644 --- a/languages/i18n/zh-hk.json +++ b/languages/i18n/zh-hk.json @@ -111,7 +111,7 @@ "rev-deleted-comment": "(註釋已除)", "rev-deleted-event": "(日誌已除)", "revdelete-suppress-text": "壓制'''只'''應用於以下的情況:\n* 不合適的個人資料\n*: ''地址、電話號碼、身份證號碼等。''", - "editundo": "復原", + "editundo": "撤銷", "prefs-user-pages": "用戶頁面", "username": "{{GENDER:$1|用戶名稱}}:", "prefs-help-gender": "可選:用於軟件中的性別指定。此項資料將會被公開。", diff --git a/maintenance/Maintenance.php b/maintenance/Maintenance.php index b446cc12b7..6219476282 100644 --- a/maintenance/Maintenance.php +++ b/maintenance/Maintenance.php @@ -1669,7 +1669,6 @@ class FakeMaintenance extends Maintenance { protected $mSelf = "FakeMaintenanceScript"; public function execute() { - return; } } diff --git a/maintenance/benchmarks/benchmarkTidy.php b/maintenance/benchmarks/benchmarkTidy.php index e9a30f9b1f..558fec8ceb 100644 --- a/maintenance/benchmarks/benchmarkTidy.php +++ b/maintenance/benchmarks/benchmarkTidy.php @@ -69,7 +69,7 @@ class BenchmarkTidy extends Benchmarker { print "Median: $median ms\n"; print "Mean: $mean ms\n"; print "Maximum: $max ms\n"; - print "Memory usage: " . $contLang->formatSize( memory_get_usage( true ) ) . "\n"; + print "Memory usage: " . $contLang->formatSize( memory_get_usage( true ) ) . "\n"; print "Peak memory usage: " . $contLang->formatSize( memory_get_peak_usage( true ) ) . "\n"; } diff --git a/maintenance/cleanupInvalidDbKeys.php b/maintenance/cleanupInvalidDbKeys.php index b9334348d4..a1820b89aa 100644 --- a/maintenance/cleanupInvalidDbKeys.php +++ b/maintenance/cleanupInvalidDbKeys.php @@ -286,7 +286,6 @@ TEXT } $this->outputStatus( "\n" ); - return; } /** diff --git a/maintenance/compareParserCache.php b/maintenance/compareParserCache.php index b12974b06e..2cafc1b31a 100644 --- a/maintenance/compareParserCache.php +++ b/maintenance/compareParserCache.php @@ -44,6 +44,7 @@ class CompareParserCache extends Maintenance { $withcache = 0; $withdiff = 0; $parserCache = MediaWikiServices::getInstance()->getParserCache(); + $renderer = MediaWikiServices::getInstance()->getRevisionRenderer(); while ( $pages-- > 0 ) { $row = $dbr->selectRow( 'page', // @todo Title::selectFields() or Title::getQueryInfo() or something @@ -69,17 +70,16 @@ class CompareParserCache extends Maintenance { $title = Title::newFromRow( $row ); $page = WikiPage::factory( $title ); - $revision = $page->getRevision(); - $content = $revision->getContent( Revision::RAW ); - + $revision = $page->getRevision()->getRevisionRecord(); $parserOptions = $page->makeParserOptions( 'canonical' ); $parserOutputOld = $parserCache->get( $page, $parserOptions ); if ( $parserOutputOld ) { $t1 = microtime( true ); - $parserOutputNew = $content->getParserOutput( - $title, $revision->getId(), $parserOptions, false ); + $parserOutputNew = $renderer->getRenderedRevision( $revision, $parserOptions ) + ->getRevisionParserOutput(); + $sec = microtime( true ) - $t1; $totalsec += $sec; diff --git a/maintenance/createCommonPasswordCdb.php b/maintenance/createCommonPasswordCdb.php index 0aa8ce89f7..7f12252704 100644 --- a/maintenance/createCommonPasswordCdb.php +++ b/maintenance/createCommonPasswordCdb.php @@ -94,7 +94,7 @@ class CreateCommonPasswordCdb extends Maintenance { continue; } if ( isset( $alreadyWritten[$line] ) ) { - $this->output( "Password '$line' already written (line " . ( $i + 1 ) .")\n" ); + $this->output( "Password '$line' already written (line " . ( $i + 1 ) . ")\n" ); $skipped++; continue; } diff --git a/maintenance/dumpIterator.php b/maintenance/dumpIterator.php index e9a6bc58bf..751932d73f 100644 --- a/maintenance/dumpIterator.php +++ b/maintenance/dumpIterator.php @@ -146,12 +146,10 @@ abstract class DumpIterator extends Maintenance { /* Stub function for processing additional options */ public function checkOptions() { - return; } /* Stub function for giving data about what was computed */ public function conclusions() { - return; } /* Core function which does whatever the maintenance script is designed to do */ diff --git a/maintenance/edit.php b/maintenance/edit.php index 60ed2523ef..a279cda0d7 100644 --- a/maintenance/edit.php +++ b/maintenance/edit.php @@ -34,12 +34,14 @@ class EditCLI extends Maintenance { $this->addDescription( 'Edit an article from the command line, text is from stdin' ); $this->addOption( 'user', 'Username', false, true, 'u' ); $this->addOption( 'summary', 'Edit summary', false, true, 's' ); + $this->addOption( 'remove', 'Remove a slot (requires --slot).', false, false ); $this->addOption( 'minor', 'Minor edit', false, false, 'm' ); $this->addOption( 'bot', 'Bot edit', false, false, 'b' ); $this->addOption( 'autosummary', 'Enable autosummary', false, false, 'a' ); $this->addOption( 'no-rc', 'Do not show the change in recent changes', false, false, 'r' ); $this->addOption( 'nocreate', 'Don\'t create new pages', false, false ); $this->addOption( 'createonly', 'Only create new pages', false, false ); + $this->addOption( 'slot', 'Slot role name', false, true ); $this->addArg( 'title', 'Title of article to edit' ); } @@ -48,10 +50,12 @@ class EditCLI extends Maintenance { $userName = $this->getOption( 'user', false ); $summary = $this->getOption( 'summary', '' ); + $remove = $this->hasOption( 'remove' ); $minor = $this->hasOption( 'minor' ); $bot = $this->hasOption( 'bot' ); $autoSummary = $this->hasOption( 'autosummary' ); $noRC = $this->hasOption( 'no-rc' ); + $slot = $this->getOption( 'slot', 'main' ); if ( $userName === false ) { $wgUser = User::newSystemUser( 'Maintenance script', [ 'steal' => true ] ); @@ -78,17 +82,36 @@ class EditCLI extends Maintenance { $page = WikiPage::factory( $title ); - # Read the text - $text = $this->getStdin( Maintenance::STDIN_ALL ); - $content = ContentHandler::makeContent( $text, $title ); + if ( $remove ) { + if ( $slot === 'main' ) { + $this->fatalError( "Cannot remove main slot! Use --slot to specify." ); + } + + $content = false; + } else { + # Read the text + $text = $this->getStdin( Maintenance::STDIN_ALL ); + $content = ContentHandler::makeContent( $text, $title ); + } # Do the edit $this->output( "Saving... " ); - $status = $page->doEditContent( $content, $summary, - ( $minor ? EDIT_MINOR : 0 ) | + $updater = $page->newPageUpdater( $wgUser ); + + $flags = ( $minor ? EDIT_MINOR : 0 ) | ( $bot ? EDIT_FORCE_BOT : 0 ) | ( $autoSummary ? EDIT_AUTOSUMMARY : 0 ) | - ( $noRC ? EDIT_SUPPRESS_RC : 0 ) ); + ( $noRC ? EDIT_SUPPRESS_RC : 0 ); + + if ( $content === false ) { + $updater->removeSlot( $slot ); + } else { + $updater->setContent( $slot, $content ); + } + + $updater->saveRevision( CommentStoreComment::newUnsavedComment( $summary ), $flags ); + $status = $updater->getStatus(); + if ( $status->isOK() ) { $this->output( "done\n" ); $exit = 0; diff --git a/maintenance/includes/DeleteLocalPasswords.php b/maintenance/includes/DeleteLocalPasswords.php index e3f8926969..02c8bedd4d 100644 --- a/maintenance/includes/DeleteLocalPasswords.php +++ b/maintenance/includes/DeleteLocalPasswords.php @@ -157,7 +157,7 @@ ERROR protected function getUserBatches() { if ( !is_null( $this->user ) ) { $this->output( "\t ... querying '$this->user'\n" ); - yield [ $this->user ]; + yield [ [ $this->user ] ]; return; } @@ -169,7 +169,7 @@ ERROR 'user', 'user_name', [ - 'user_name > ' .$dbw->addQuotes( $lastUsername ), + 'user_name > ' . $dbw->addQuotes( $lastUsername ), ], __METHOD__, [ diff --git a/maintenance/jsduck/eg-iframe.html b/maintenance/jsduck/eg-iframe.html index 7913aab83b..3b83ea67fb 100644 --- a/maintenance/jsduck/eg-iframe.html +++ b/maintenance/jsduck/eg-iframe.html @@ -38,10 +38,7 @@ window.$VARS = { baseModules: [] }; - - function startUp() { - mw.config = new mw.Map(); - } + window.RLQ = []; @@ -49,11 +46,11 @@ - - - - - + + + + + - - - - - + + + + - - - - - - - - -Loading the library -------------------- - -While the distribution directory is chock-full of files, you will normally load only the following three: - -* `oojs-ui.js`, containing the full library; -* One of `oojs-ui-wikimediaui.css` or `oojs-ui-apex.css`, containing theme-specific styles; and -* One of `oojs-ui-wikimediaui.js` or `oojs-ui-apex.js`, containing theme-specific code - -You can load additional icon packs from files named `oojs-ui-wikimediaui-icons-*.css` or `oojs-ui-apex-icons-*.css`. - -The remaining files make it possible to load only parts of the whole library. - -Furthermore, every CSS file has a right-to-left (RTL) version available, to be used on pages using right-to-left languages if your environment doesn't automatically flip them as needed. - - -Issue tracker -------------- - -Found a bug or missing feature? Please report it in our [issue tracker Phabricator](https://phabricator.wikimedia.org/maniphest/task/edit/form/1/?projects=PHID-PROJ-dgmoevjqeqlerleqzzx5)! - - -Contributing ------------- - -We are always delighted when people contribute patches. To setup your development environment: - - -1. Clone the repo: `$ git clone https://phabricator.wikimedia.org/diffusion/GOJU/oojs-ui.git oojs-ui` - -2. Move into the library directory:
    `$ cd oojs-ui` - -3. Install [composer](https://getcomposer.org/download/) and make sure running `composer` will execute it (*e.g.* add it to `$PATH` in POSIX environments). - -4. Install dev dependencies:
    `$ npm install` - -5. Build the library (you can alternatively use `grunt quick-build` if you don't need to rebuild the PNGs):
    `$ grunt build` - -6. You can see a suite of demos in `/demos` by executing:
    `$ npm run-script demos` - -7. You can also copy the distribution files from the dist directory into your project. - - -We use [Gerrit](https://gerrit.wikimedia.org/) for code review, and [Phabricator](https://phabricator.wikimedia.org) to track issues. To contribute patches or join discussions all you need is a [developer account](https://wikitech.wikimedia.org/w/index.php?title=Special:CreateAccount&returnto=Help%3AGetting+Started). - -* If you've found a bug, or wish to request a feature [raise a ticket on Phabricator](https://phabricator.wikimedia.org/maniphest/task/edit/form/1/?projects=PHID-PROJ-dgmoevjqeqlerleqzzx5). -* To submit your patch, follow [the "getting started" quick-guide](https://www.mediawiki.org/wiki/Gerrit/Getting_started). We try to review patches within a week. -* We automatically lint and style-check changes to JavaScript, PHP, LESS/CSS, Ruby and JSON files. You can test these yourself with `npm test` and `composer test` locally before pushing changes. SVG files should be squashed in advance of committing with [SVGO](https://github.com/svg/svgo) using `svgo --pretty --disable=removeXMLProcInst --disable=cleanupIDs `. - -A new version of the library is released most weeks on Tuesdays. - -Community ---------- - -Get updates, ask questions and join the discussion with maintainers and contributors: - -* Join the Wikimedia Developers mailing list, [wikitech-l](https://lists.wikimedia.org/mailman/listinfo/wikitech-l). -* Chat with the maintainers on `#wikimedia-dev` on `irc.freenode.net`. -* Ask questions on [StackOverflow](https://stackoverflow.com/tags/oojs-ui/info). -* Watchlist the [documentation](https://www.mediawiki.org/wiki/OOUI) on MediaWiki to stay updated. - - -Versioning ----------- - -We use the [Semantic Versioning guidelines](http://semver.org/). - -Releases will be numbered in the following format: - -`..` - - -Release ----------- - -Release process: -
    -
    -    $ cd path/to/oojs-ui/
    -    $ git remote update
    -    $ git checkout -B release -t origin/master
    -
    -    # Ensure tests pass
    -    $ npm install && composer update && npm test && composer test
    -
    -    # Avoid using "npm version patch" because that creates
    -    # both a commit and a tag, and we shouldn't tag until after
    -    # the commit is merged.
    -
    -    # Update release notes
    -    # Copy the resulting list into a new section at the top of History.md and edit
    -    # into five sub-sections, in order:
    -    # * Breaking changes
    -    # * Deprecations
    -    # * Features
    -    # * Styles
    -    # * Code
    -    $ git log --format='* %s (%aN)' --no-merges --reverse v$(node -e 'console.log(require("./package.json").version);')...HEAD | grep -v "Localisation updates from" | sort
    -    $ edit History.md
    -
    -    # Update the version number
    -    $ edit package.json
    -
    -    $ git add -p
    -    $ git commit -m "Tag vX.X.X"
    -    $ git review
    -
    -    # After merging:
    -    $ git remote update
    -    $ git checkout origin/master
    -    $ git tag "vX.X.X"
    -    $ npm run publish-build && git push --tags && npm publish
    -
    -
    diff --git a/resources/lib/oojs-ui/i18n/ace.json b/resources/lib/oojs-ui/i18n/ace.json deleted file mode 100644 index 0fdc1a8930..0000000000 --- a/resources/lib/oojs-ui/i18n/ace.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Si Gam Acèh" - ] - }, - "ooui-outline-control-move-down": "Pinah item u yup", - "ooui-outline-control-move-up": "Pinah item u ateuëh", - "ooui-toolbar-more": "Lom" -} diff --git a/resources/lib/oojs-ui/i18n/af.json b/resources/lib/oojs-ui/i18n/af.json deleted file mode 100644 index 14990f945e..0000000000 --- a/resources/lib/oojs-ui/i18n/af.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Naudefj", - "Fwolff", - "Fitoschido" - ] - }, - "ooui-outline-control-move-down": "Skuif item af", - "ooui-outline-control-move-up": "Skuif item op", - "ooui-outline-control-remove": "Verwyder item", - "ooui-toolbar-more": "Meer", - "ooui-toolgroup-expand": "Meer", - "ooui-toolgroup-collapse": "Minder", - "ooui-dialog-message-accept": "Regso", - "ooui-dialog-message-reject": "Kanselleer", - "ooui-dialog-process-error": "Iets het verkeerd gegaan", - "ooui-dialog-process-dismiss": "Sluit", - "ooui-dialog-process-retry": "Probeer weer", - "ooui-dialog-process-continue": "Gaan voort", - "ooui-selectfile-button-select": "Kies 'n lêer", - "ooui-selectfile-not-supported": "Lêers kan nie gekies word nie", - "ooui-selectfile-placeholder": "Geen lêer is gekies nie", - "ooui-selectfile-dragdrop-placeholder": "Laat val die lêer hier", - "ooui-field-help": "Hulp" -} diff --git a/resources/lib/oojs-ui/i18n/ais.json b/resources/lib/oojs-ui/i18n/ais.json deleted file mode 100644 index 42eb8c2e95..0000000000 --- a/resources/lib/oojs-ui/i18n/ais.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Bunukwiki", - "Benel" - ] - }, - "ooui-outline-control-move-down": "miliad kasacacay tasasa’", - "ooui-outline-control-move-up": "miliad kasacacay tapabaw", - "ooui-outline-control-remove": "misipu kasacacay", - "ooui-toolbar-more": "yadah", - "ooui-toolgroup-expand": "yadah", - "ooui-toolgroup-collapse": "ma’ngadis mangalep", - "ooui-item-remove": "milimad", - "ooui-dialog-message-accept": "malucekay", - "ooui-dialog-message-reject": "palawpes", - "ooui-dialog-process-error": "tahkal ku caykapulitaay a mungangaw", - "ooui-dialog-process-dismiss": "edeben", - "ooui-dialog-process-retry": "pitaneng henay aca", - "ooui-dialog-process-continue": "palalid", - "ooui-selectfile-button-select": "mipili’ cacay a tangan", - "ooui-selectfile-not-supported": "la’cus midama mipili’ay a tangan", - "ooui-selectfile-placeholder": "caay henay mipili’ tu tangan", - "ooui-selectfile-dragdrop-placeholder": "mutengteng tangan katukuh itini" -} diff --git a/resources/lib/oojs-ui/i18n/am.json b/resources/lib/oojs-ui/i18n/am.json deleted file mode 100644 index bfe9d5c3b8..0000000000 --- a/resources/lib/oojs-ui/i18n/am.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Elfalem" - ] - } -} diff --git a/resources/lib/oojs-ui/i18n/ar.json b/resources/lib/oojs-ui/i18n/ar.json deleted file mode 100644 index ce7f9998e5..0000000000 --- a/resources/lib/oojs-ui/i18n/ar.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Ciphers", - "Claw eg", - "Elfalem", - "Jdforrester", - "Mido", - "OsamaK", - "زكريا", - "مشعل الحربي", - "ترجمان05", - "Abanima", - "محمد أحمد عبد الفتاح", - "Hiba Alshawi", - "Meno25", - "ديفيد" - ] - }, - "ooui-outline-control-move-down": "انقل العنصر للأسفل", - "ooui-outline-control-move-up": "انقل العنصر للأعلى", - "ooui-outline-control-remove": "أزل العنصر", - "ooui-toolbar-more": "مزيد", - "ooui-toolgroup-expand": "مزيد", - "ooui-toolgroup-collapse": "أقل", - "ooui-item-remove": "إزالة", - "ooui-dialog-message-accept": "موافق", - "ooui-dialog-message-reject": "ألغ", - "ooui-dialog-process-error": "حدث خطأ", - "ooui-dialog-process-dismiss": "أغلق", - "ooui-dialog-process-retry": "حاول مرة أخرى", - "ooui-dialog-process-continue": "استمر", - "ooui-selectfile-button-select": "اختر ملفا", - "ooui-selectfile-not-supported": "اختيار الملفات غير مدعوم", - "ooui-selectfile-placeholder": "لم يتم اختيار أي ملف", - "ooui-selectfile-dragdrop-placeholder": "اترك الملف هنا", - "ooui-field-help": "مساعدة" -} diff --git a/resources/lib/oojs-ui/i18n/arc.json b/resources/lib/oojs-ui/i18n/arc.json deleted file mode 100644 index de5b7aff36..0000000000 --- a/resources/lib/oojs-ui/i18n/arc.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Basharh" - ] - } -} diff --git a/resources/lib/oojs-ui/i18n/arq.json b/resources/lib/oojs-ui/i18n/arq.json deleted file mode 100644 index 61eb384406..0000000000 --- a/resources/lib/oojs-ui/i18n/arq.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Bachounda" - ] - }, - "ooui-outline-control-move-down": "هبط الشيئ للتحت", - "ooui-outline-control-move-up": "طلع الشيئ للفوق", - "ooui-outline-control-remove": "أمحي العنصر", - "ooui-toolbar-more": "زيادة", - "ooui-toolgroup-expand": "زيادة", - "ooui-toolgroup-collapse": "قليل", - "ooui-dialog-message-accept": "مليح", - "ooui-dialog-message-reject": "رجَع", - "ooui-dialog-process-error": "حاجه ما خدمتش مليح", - "ooui-dialog-process-dismiss": "أرفضها", - "ooui-dialog-process-retry": "عاود جرب", - "ooui-dialog-process-continue": "واصل", - "ooui-selectfile-not-supported": "تحديد الفيشيات ما هوش محدد", - "ooui-selectfile-placeholder": "ما اختاريتش حتا ملف" -} diff --git a/resources/lib/oojs-ui/i18n/as.json b/resources/lib/oojs-ui/i18n/as.json deleted file mode 100644 index 54a4244135..0000000000 --- a/resources/lib/oojs-ui/i18n/as.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Gitartha.bordoloi", - "Dibya Dutta", - "IKHazarika" - ] - }, - "ooui-outline-control-move-down": "সমল তললৈ স্থানান্তৰ কৰক", - "ooui-outline-control-move-up": "সমল ওপৰলৈ স্থানান্তৰ কৰক", - "ooui-outline-control-remove": "সমল আঁতৰাওক", - "ooui-toolbar-more": "অধিক", - "ooui-toolgroup-expand": "অধিক", - "ooui-toolgroup-collapse": "কম দেখাওক", - "ooui-dialog-message-accept": "বাৰু", - "ooui-dialog-message-reject": "বাতিল কৰক", - "ooui-dialog-process-error": "কিবা ত্ৰুটি হৈছে", - "ooui-dialog-process-dismiss": "বাতিল", - "ooui-dialog-process-retry": "পুনৰ চেষ্টা কৰক", - "ooui-dialog-process-continue": "অব্যাহত ৰাখক", - "ooui-selectfile-button-select": "ফাইল নিৰ্বাচন কৰক", - "ooui-selectfile-not-supported": "নথি নিৰ্বাচন সমৰ্থন কৰা নাই", - "ooui-selectfile-placeholder": "কোনো নথি নিৰ্বাচিত কৰা হোৱা নাই", - "ooui-selectfile-dragdrop-placeholder": "ইয়াত ফাইল এৰক" -} diff --git a/resources/lib/oojs-ui/i18n/ast.json b/resources/lib/oojs-ui/i18n/ast.json deleted file mode 100644 index b62f8f39fd..0000000000 --- a/resources/lib/oojs-ui/i18n/ast.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Basharh", - "Bishnu Saikia", - "Xuacu" - ] - }, - "ooui-outline-control-move-down": "Mover abaxo l'elementu", - "ooui-outline-control-move-up": "Mover arriba l'elementu", - "ooui-outline-control-remove": "Desaniciar elementu", - "ooui-toolbar-more": "Más", - "ooui-toolgroup-expand": "Más", - "ooui-toolgroup-collapse": "Menos", - "ooui-item-remove": "Desaniciar", - "ooui-dialog-message-accept": "Aceutar", - "ooui-dialog-message-reject": "Encaboxar", - "ooui-dialog-process-error": "Daqué funcionó mal", - "ooui-dialog-process-dismiss": "Descartar", - "ooui-dialog-process-retry": "Vuelvi a intentalo", - "ooui-dialog-process-continue": "Siguir", - "ooui-selectfile-button-select": "Seleicionar un ficheru", - "ooui-selectfile-not-supported": "Nun hai encontu pa la seleición de ficheros", - "ooui-selectfile-placeholder": "Nun se seleicionó nengún ficheru", - "ooui-selectfile-dragdrop-placeholder": "Soltar el ficheru equí", - "ooui-field-help": "Ayuda" -} diff --git a/resources/lib/oojs-ui/i18n/awa.json b/resources/lib/oojs-ui/i18n/awa.json deleted file mode 100644 index f78ed3269e..0000000000 --- a/resources/lib/oojs-ui/i18n/awa.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "@metadata": { - "authors": [ - "1AnuraagPandey" - ] - }, - "ooui-toolbar-more": "अउर" -} diff --git a/resources/lib/oojs-ui/i18n/az.json b/resources/lib/oojs-ui/i18n/az.json deleted file mode 100644 index 96b95d1aad..0000000000 --- a/resources/lib/oojs-ui/i18n/az.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Cekli829", - "Interfase", - "Jduranboger", - "Wertuose" - ] - }, - "ooui-outline-control-move-down": "Bəndi aşağı apar", - "ooui-outline-control-move-up": "Bəndi yuxarı apar", - "ooui-outline-control-remove": "Bəndi sil", - "ooui-toolbar-more": "Daha artıq", - "ooui-toolgroup-collapse": "Daha az" -} diff --git a/resources/lib/oojs-ui/i18n/azb.json b/resources/lib/oojs-ui/i18n/azb.json deleted file mode 100644 index 313122ce89..0000000000 --- a/resources/lib/oojs-ui/i18n/azb.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Sadiqr" - ] - }, - "ooui-dialog-message-reject": "وازگئچ", - "ooui-dialog-process-continue": "داوام ائت", - "ooui-selectfile-button-select": "بیر فایل سئچ", - "ooui-selectfile-placeholder": "هئچ فایل سئچیلمه‌ییب" -} diff --git a/resources/lib/oojs-ui/i18n/ba.json b/resources/lib/oojs-ui/i18n/ba.json deleted file mode 100644 index d8c99aafdf..0000000000 --- a/resources/lib/oojs-ui/i18n/ba.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "@metadata": { - "authors": [ - "AiseluRB", - "Amire80", - "Assele", - "Haqmar", - "Sagan", - "Рустам Нурыев", - "Азат Хәлилов" - ] - }, - "ooui-outline-control-move-down": "Элементты аҫҡа күсерергә", - "ooui-outline-control-move-up": "Элементты өҫкә күсерергә", - "ooui-outline-control-remove": "Биттәрҙе юйырға", - "ooui-toolbar-more": "Тағы", - "ooui-toolgroup-expand": "Күберәк", - "ooui-toolgroup-collapse": "Аҙыраҡ", - "ooui-dialog-message-accept": "Тамам", - "ooui-dialog-message-reject": "Кире алырға", - "ooui-dialog-process-error": "Нимәлер килеп сыҡманы.", - "ooui-dialog-process-dismiss": "Йәшерергә", - "ooui-dialog-process-retry": "Ҡабатлап ҡарарға.", - "ooui-dialog-process-continue": "Дауам итергә", - "ooui-selectfile-button-select": "Файлды һайлағыҙ", - "ooui-selectfile-not-supported": "Файл һайлау хупланмай.", - "ooui-selectfile-placeholder": "Файл һайланмаған", - "ooui-selectfile-dragdrop-placeholder": "Файлды бында күсерегеҙ" -} diff --git a/resources/lib/oojs-ui/i18n/bcc.json b/resources/lib/oojs-ui/i18n/bcc.json deleted file mode 100644 index a340a881ff..0000000000 --- a/resources/lib/oojs-ui/i18n/bcc.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Baloch Afghanistan" - ] - }, - "ooui-dialog-message-accept": "اوکی", - "ooui-dialog-process-retry": "پدا کوشش کورتین" -} diff --git a/resources/lib/oojs-ui/i18n/bcl.json b/resources/lib/oojs-ui/i18n/bcl.json deleted file mode 100644 index bc2251e8b2..0000000000 --- a/resources/lib/oojs-ui/i18n/bcl.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Geopoet", - "Sky Harbor" - ] - }, - "ooui-outline-control-move-down": "Balyuhon an aytem paibaba", - "ooui-outline-control-move-up": "Balyuhon an aytem paitaas", - "ooui-toolbar-more": "Kadugangan" -} diff --git a/resources/lib/oojs-ui/i18n/be-tarask.json b/resources/lib/oojs-ui/i18n/be-tarask.json deleted file mode 100644 index 59415a2ea1..0000000000 --- a/resources/lib/oojs-ui/i18n/be-tarask.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "@metadata": { - "authors": [ - "EugeneZelenko", - "Wizardist", - "Чаховіч Уладзіслаў", - "Zedlik", - "Red Winged Duck", - "Renessaince" - ] - }, - "ooui-outline-control-move-down": "Перасунуць элемэнт ніжэй", - "ooui-outline-control-move-up": "Перасунуць элемэнт вышэй", - "ooui-outline-control-remove": "Выдаліць пункт", - "ooui-toolbar-more": "Болей", - "ooui-toolgroup-expand": "Болей", - "ooui-toolgroup-collapse": "Меней", - "ooui-item-remove": "Выдаліць", - "ooui-dialog-message-accept": "Добра", - "ooui-dialog-message-reject": "Скасаваць", - "ooui-dialog-process-error": "Нешта пайшло ня так", - "ooui-dialog-process-dismiss": "Прапусьціць", - "ooui-dialog-process-retry": "Паспрабаваць зноў", - "ooui-dialog-process-continue": "Працягваць", - "ooui-selectfile-button-select": "Абраць файл", - "ooui-selectfile-not-supported": "Выбар файлу не падтрымліваецца", - "ooui-selectfile-placeholder": "Ніводзін файл не абраны", - "ooui-selectfile-dragdrop-placeholder": "Перацягніце файл сюды", - "ooui-field-help": "Дапамога" -} diff --git a/resources/lib/oojs-ui/i18n/be.json b/resources/lib/oojs-ui/i18n/be.json deleted file mode 100644 index 7b4e54686d..0000000000 --- a/resources/lib/oojs-ui/i18n/be.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Чаховіч Уладзіслаў", - "Artificial123", - "Goshaproject", - "Mechanizatar" - ] - }, - "ooui-outline-control-move-down": "Перамясціць элемент ўніз", - "ooui-outline-control-move-up": "Перамясціць элемент уверх", - "ooui-outline-control-remove": "Выдаліць элемент", - "ooui-toolbar-more": "Яшчэ", - "ooui-toolgroup-expand": "Яшчэ", - "ooui-toolgroup-collapse": "Менш", - "ooui-dialog-message-accept": "ОК", - "ooui-dialog-message-reject": "Адмяніць", - "ooui-dialog-process-error": "Штось пайшло не так…", - "ooui-dialog-process-dismiss": "Прапусціць", - "ooui-dialog-process-retry": "Паспрабаваць яшчэ раз", - "ooui-dialog-process-continue": "Працягнуць", - "ooui-selectfile-button-select": "Выбраць файл", - "ooui-selectfile-not-supported": "Выбраны файл не падтрымліваецца", - "ooui-selectfile-placeholder": "Файл не выбраны" -} diff --git a/resources/lib/oojs-ui/i18n/bg.json b/resources/lib/oojs-ui/i18n/bg.json deleted file mode 100644 index afa167243d..0000000000 --- a/resources/lib/oojs-ui/i18n/bg.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "@metadata": { - "authors": [ - "DCLXVI", - "Hristofor.mirchev", - "පසිඳු කාවින්ද", - "Mitzev", - "Aquilax", - "Vodnokon4e", - "StanProg" - ] - }, - "ooui-outline-control-move-down": "Преместване на елемента надолу", - "ooui-outline-control-move-up": "Преместване на елемента нагоре", - "ooui-outline-control-remove": "Премахване на обекта", - "ooui-toolbar-more": "Още", - "ooui-toolgroup-expand": "Още", - "ooui-toolgroup-collapse": "По-малко", - "ooui-dialog-message-accept": "OK", - "ooui-dialog-message-reject": "Отказ", - "ooui-dialog-process-error": "Нещо се обърка", - "ooui-dialog-process-dismiss": "Затваряне", - "ooui-dialog-process-retry": "Опитайте отново", - "ooui-dialog-process-continue": "Продължаване", - "ooui-selectfile-button-select": "Избиране на файл", - "ooui-selectfile-not-supported": "Избраният файл не се поддържа", - "ooui-selectfile-placeholder": "Не е избран файл", - "ooui-selectfile-dragdrop-placeholder": "Пуснете файла тук", - "ooui-field-help": "Помощ" -} diff --git a/resources/lib/oojs-ui/i18n/bho.json b/resources/lib/oojs-ui/i18n/bho.json deleted file mode 100644 index 9697db02be..0000000000 --- a/resources/lib/oojs-ui/i18n/bho.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "@metadata": { - "authors": [ - "SatyamMishra" - ] - }, - "ooui-outline-control-move-down": "आइटम नीचे घसकाईं", - "ooui-outline-control-move-up": "आइटम ऊपर घसकाईं", - "ooui-outline-control-remove": "आइटम हटाईं", - "ooui-toolbar-more": "अउरी", - "ooui-toolgroup-expand": "अउरी", - "ooui-toolgroup-collapse": "कम", - "ooui-dialog-message-accept": "ओके", - "ooui-dialog-message-reject": "कैंसिल", - "ooui-dialog-process-error": "कुछ गड़बड़ी हो गइल", - "ooui-dialog-process-dismiss": "रद्द", - "ooui-dialog-process-retry": "दोबारा कोसिस करीं", - "ooui-dialog-process-continue": "जारी राखीं", - "ooui-selectfile-button-select": "एगो फाइल चुनीं", - "ooui-selectfile-not-supported": "फाइल के चुनाव के सपोर्ट नइखे", - "ooui-selectfile-placeholder": "कौनों फाइल नइखे चुनल गइल", - "ooui-selectfile-dragdrop-placeholder": "फाइल इहाँ ड्रॉप करीं" -} diff --git a/resources/lib/oojs-ui/i18n/bn.json b/resources/lib/oojs-ui/i18n/bn.json deleted file mode 100644 index 237b029425..0000000000 --- a/resources/lib/oojs-ui/i18n/bn.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Aftab1995", - "Bellayet", - "Jayantanth", - "Nasir8891", - "Runab", - "Sayak Sarkar", - "Aftabuzzaman", - "RYasmeen (WMF)", - "NahidSultan", - "আফতাবুজ্জামান", - "Titodutta" - ] - }, - "ooui-outline-control-move-down": "আইটেম নিচে স্থানান্তর", - "ooui-outline-control-move-up": "আইটেম উপরে স্থানান্তর", - "ooui-outline-control-remove": "আইটেম সরান", - "ooui-toolbar-more": "আরও", - "ooui-toolgroup-expand": "আরও", - "ooui-toolgroup-collapse": "কম দেখাও", - "ooui-item-remove": "সরান", - "ooui-dialog-message-accept": "ঠিক আছে", - "ooui-dialog-message-reject": "বাতিল", - "ooui-dialog-process-error": "কিছু একটায় ত্রুটি হয়েছে", - "ooui-dialog-process-dismiss": "বাতিল করুন", - "ooui-dialog-process-retry": "আবার চেষ্টা করুন", - "ooui-dialog-process-continue": "অগ্রসর হোন", - "ooui-selectfile-button-select": "একটি ফাইল নির্বাচন করুন", - "ooui-selectfile-not-supported": "চিত্র নির্বাচন সমর্থিত নয়", - "ooui-selectfile-placeholder": "কোন চিত্র নির্বাচিত হয়নি", - "ooui-selectfile-dragdrop-placeholder": "এখানে ফাইল ছাড়ুন", - "ooui-field-help": "সাহায্য" -} diff --git a/resources/lib/oojs-ui/i18n/bqi.json b/resources/lib/oojs-ui/i18n/bqi.json deleted file mode 100644 index a0e53b3684..0000000000 --- a/resources/lib/oojs-ui/i18n/bqi.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Mogoeilor" - ] - }, - "ooui-outline-control-move-down": "ڤا دڤۈن بوردن آیتم", - "ooui-outline-control-move-up": "ڤارو بردن آیتم", - "ooui-outline-control-remove": "ڤورداشتن آیتم", - "ooui-toolbar-more": "بیشتر", - "ooui-toolgroup-expand": "بیشتر", - "ooui-toolgroup-collapse": "کمتر", - "ooui-dialog-message-accept": "خۈڤإ", - "ooui-dialog-message-reject": "أنجومشيڤ کردن", - "ooui-dialog-process-error": "یأ چي ايچو إشتوا إ", - "ooui-dialog-process-retry": "ز نۉ تلاش کونين", - "ooui-dialog-process-continue": "ديندا گرهڌن", - "ooui-selectfile-button-select": "گولإڤورچين کردن جانیا", - "ooui-selectfile-not-supported": "گول ڤورچی کردن جانیا کونشتکاری نڤابیڌ", - "ooui-selectfile-placeholder": "هيژ جانيایي گولإ ڤورچين نڤابيڌإ", - "ooui-selectfile-dragdrop-placeholder": "جانيانأ ڤأنين ايچو" -} diff --git a/resources/lib/oojs-ui/i18n/br.json b/resources/lib/oojs-ui/i18n/br.json deleted file mode 100644 index 498d13331b..0000000000 --- a/resources/lib/oojs-ui/i18n/br.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Fohanno", - "Fulup", - "Y-M D", - "Maoris", - "Gwendal" - ] - }, - "ooui-outline-control-move-down": "Lakaat an elfenn da ziskenn", - "ooui-outline-control-move-up": "Lakaat an elfenn da bignat", - "ooui-outline-control-remove": "Tennañ an elfenn", - "ooui-toolbar-more": "Muioc'h", - "ooui-toolgroup-expand": "Muioc'h", - "ooui-toolgroup-collapse": "Nebeutoc'h", - "ooui-item-remove": "Dilemel", - "ooui-dialog-message-accept": "Mat eo", - "ooui-dialog-message-reject": "Nullañ", - "ooui-dialog-process-error": "Un dra bennak a-dreuz a zo bet", - "ooui-dialog-process-dismiss": "Disteurel", - "ooui-dialog-process-retry": "Klask en-dro", - "ooui-dialog-process-continue": "Kenderc'hel", - "ooui-selectfile-button-select": "Diuzañ ur restr", - "ooui-selectfile-not-supported": "N'eo ket skoret an diuzañ restroù", - "ooui-selectfile-placeholder": "N'eus bet diuzet restr ebet", - "ooui-selectfile-dragdrop-placeholder": "Lezel ar restr amañ", - "ooui-field-help": "Skoazell" -} diff --git a/resources/lib/oojs-ui/i18n/bs.json b/resources/lib/oojs-ui/i18n/bs.json deleted file mode 100644 index 2bc85233e8..0000000000 --- a/resources/lib/oojs-ui/i18n/bs.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "@metadata": { - "authors": [ - "DzWiki", - "Semso98", - "Srdjan m" - ] - }, - "ooui-outline-control-move-down": "Premjesti stavku dolje", - "ooui-outline-control-move-up": "Premjesti stavku gore", - "ooui-outline-control-remove": "Ukloni stavku", - "ooui-toolbar-more": "Više", - "ooui-toolgroup-expand": "Više", - "ooui-toolgroup-collapse": "Manje", - "ooui-item-remove": "Ukloni", - "ooui-dialog-message-accept": "U redu", - "ooui-dialog-message-reject": "Otkaži", - "ooui-dialog-process-error": "Nešto nije u redu", - "ooui-dialog-process-dismiss": "Odbaci", - "ooui-dialog-process-retry": "Pokušaj ponovo", - "ooui-dialog-process-continue": "Nastavi", - "ooui-selectfile-button-select": "Izaberite datoteku", - "ooui-selectfile-not-supported": "Izbor datoteke nije podržan", - "ooui-selectfile-placeholder": "Datoteka nije izabrana", - "ooui-selectfile-dragdrop-placeholder": "Prevucite datoteku ovdje" -} diff --git a/resources/lib/oojs-ui/i18n/ca.json b/resources/lib/oojs-ui/i18n/ca.json deleted file mode 100644 index e1d8753b5f..0000000000 --- a/resources/lib/oojs-ui/i18n/ca.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Alvaro Vidal-Abarca", - "Amire80", - "Arnaugir", - "Pginer", - "QuimGil", - "SMP", - "Vriullop", - "Toniher", - "Edustus", - "Davidpar", - "Maceleiro", - "Kippelboy", - "Macofe", - "Fitoschido" - ] - }, - "ooui-outline-control-move-down": "Baixa l'element", - "ooui-outline-control-move-up": "Puja l'element", - "ooui-outline-control-remove": "Esborra l'ítem", - "ooui-toolbar-more": "Més", - "ooui-toolgroup-expand": "Més", - "ooui-toolgroup-collapse": "Menys", - "ooui-item-remove": "Suprimeix", - "ooui-dialog-message-accept": "D'acord", - "ooui-dialog-message-reject": "Cancel·la", - "ooui-dialog-process-error": "Alguna cosa no ha funcionat", - "ooui-dialog-process-dismiss": "Descarta", - "ooui-dialog-process-retry": "Torneu-ho a provar", - "ooui-dialog-process-continue": "Continua", - "ooui-selectfile-button-select": "Seleccioneu un fitxer", - "ooui-selectfile-not-supported": "El tipus de fitxer no és compatible", - "ooui-selectfile-placeholder": "No s'ha seleccionat cap fitxer", - "ooui-selectfile-dragdrop-placeholder": "Deseu els arxius aquí", - "ooui-field-help": "Ajuda" -} diff --git a/resources/lib/oojs-ui/i18n/cdo.json b/resources/lib/oojs-ui/i18n/cdo.json deleted file mode 100644 index cb46b4371c..0000000000 --- a/resources/lib/oojs-ui/i18n/cdo.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Yejianfei" - ] - }, - "ooui-outline-control-move-down": "下移項目", - "ooui-outline-control-move-up": "上移項目", - "ooui-outline-control-remove": "移除項目", - "ooui-toolbar-more": "更価", - "ooui-toolgroup-expand": "更価", - "ooui-toolgroup-collapse": "更少", - "ooui-dialog-message-accept": "確定", - "ooui-dialog-message-reject": "取消", - "ooui-dialog-process-error": "什乇出毛病了", - "ooui-dialog-process-dismiss": "關閉", - "ooui-dialog-process-retry": "重試", - "ooui-dialog-process-continue": "繼續", - "ooui-selectfile-button-select": "選擇蜀萆文件", - "ooui-selectfile-not-supported": "𣍐支持選擇其文件", - "ooui-selectfile-placeholder": "未選文件", - "ooui-selectfile-dragdrop-placeholder": "共文件拖遘嚽塊" -} diff --git a/resources/lib/oojs-ui/i18n/ce.json b/resources/lib/oojs-ui/i18n/ce.json deleted file mode 100644 index 3f8dfb13ec..0000000000 --- a/resources/lib/oojs-ui/i18n/ce.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Amire80", - "Умар" - ] - }, - "ooui-outline-control-move-down": "Лаха яккха элемент", - "ooui-outline-control-move-up": "Лаккха яккха элемент", - "ooui-outline-control-remove": "ДӀадаха меттиг", - "ooui-toolbar-more": "Кхин", - "ooui-toolgroup-expand": "Дукха", - "ooui-toolgroup-collapse": "КӀезиг", - "ooui-dialog-message-accept": "ХӀаъ", - "ooui-dialog-message-reject": "Цаоьшу", - "ooui-dialog-process-continue": "Кхин дӀа", - "ooui-selectfile-button-select": "Харжа файл", - "ooui-selectfile-placeholder": "Файл хаьржина яц" -} diff --git a/resources/lib/oojs-ui/i18n/ckb.json b/resources/lib/oojs-ui/i18n/ckb.json deleted file mode 100644 index 999fae047a..0000000000 --- a/resources/lib/oojs-ui/i18n/ckb.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Calak", - "Muhammed taha", - "Serwan", - "Pirehelokan", - "Sarchia" - ] - }, - "ooui-toolbar-more": "زیاتر", - "ooui-toolgroup-expand": "زیاتر", - "ooui-toolgroup-collapse": "کەمتر", - "ooui-dialog-message-accept": "باشە", - "ooui-dialog-message-reject": "پاشگەزبوونەوە", - "ooui-dialog-process-error": "ھەڵەیەک ڕووی داوە", - "ooui-dialog-process-dismiss": "لێگەڕان", - "ooui-dialog-process-retry": "دیسان ھەوڵ بدە", - "ooui-dialog-process-continue": "درێژە بدە", - "ooui-selectfile-button-select": "پەڕگەیەک دەستنیشان بکە", - "ooui-selectfile-placeholder": "ھیچ فایلێک ھەڵنەبژێراوە", - "ooui-selectfile-dragdrop-placeholder": "پەڕگەکان بخەرە ئێرە" -} diff --git a/resources/lib/oojs-ui/i18n/co.json b/resources/lib/oojs-ui/i18n/co.json deleted file mode 100644 index 01d181d7b9..0000000000 --- a/resources/lib/oojs-ui/i18n/co.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Paulu" - ] - }, - "ooui-outline-control-move-down": "Fà falà l'ogettu", - "ooui-outline-control-move-up": "Fà cullà l'ogettu" -} diff --git a/resources/lib/oojs-ui/i18n/crh-cyrl.json b/resources/lib/oojs-ui/i18n/crh-cyrl.json deleted file mode 100644 index ccc0026981..0000000000 --- a/resources/lib/oojs-ui/i18n/crh-cyrl.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Don Alessandro" - ] - }, - "ooui-toolbar-more": "Даа зияде" -} diff --git a/resources/lib/oojs-ui/i18n/crh-latn.json b/resources/lib/oojs-ui/i18n/crh-latn.json deleted file mode 100644 index 7ad7b0bbc9..0000000000 --- a/resources/lib/oojs-ui/i18n/crh-latn.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Don Alessandro" - ] - }, - "ooui-toolbar-more": "Daa ziyade" -} diff --git a/resources/lib/oojs-ui/i18n/cs.json b/resources/lib/oojs-ui/i18n/cs.json deleted file mode 100644 index 5b78b1fd11..0000000000 --- a/resources/lib/oojs-ui/i18n/cs.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Chmee2", - "Jkjk", - "Juandev", - "Koo6", - "Littledogboy", - "Michaelbrabec", - "Mormegil", - "Polda18", - "Tchoř", - "ශ්වෙත", - "Vojtěch Dostál", - "Matěj Suchánek", - "Martin Urbanec" - ] - }, - "ooui-outline-control-move-down": "Přesunout položku dolů", - "ooui-outline-control-move-up": "Přesunout položku nahoru", - "ooui-outline-control-remove": "Odstranit položku", - "ooui-toolbar-more": "Další", - "ooui-toolgroup-expand": "Více", - "ooui-toolgroup-collapse": "Méně", - "ooui-item-remove": "Odebrat", - "ooui-dialog-message-accept": "OK", - "ooui-dialog-message-reject": "Storno", - "ooui-dialog-process-error": "Něco se pokazilo", - "ooui-dialog-process-dismiss": "Zavřít", - "ooui-dialog-process-retry": "Zkusit znovu", - "ooui-dialog-process-continue": "Pokračovat", - "ooui-selectfile-button-select": "Vybrat soubor", - "ooui-selectfile-not-supported": "Výběr souboru není podporován", - "ooui-selectfile-placeholder": "Nebyl vybrán žádný soubor", - "ooui-selectfile-dragdrop-placeholder": "Umístěte soubor sem", - "ooui-field-help": "Pomoc" -} diff --git a/resources/lib/oojs-ui/i18n/cu.json b/resources/lib/oojs-ui/i18n/cu.json deleted file mode 100644 index d627de06eb..0000000000 --- a/resources/lib/oojs-ui/i18n/cu.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "@metadata": { - "authors": [ - "ОйЛ" - ] - }, - "ooui-toolbar-more": "вѧщє", - "ooui-toolgroup-expand": "вѧщє", - "ooui-dialog-process-error": "нѣчьто ꙁълѣ сѧ авило" -} diff --git a/resources/lib/oojs-ui/i18n/cy.json b/resources/lib/oojs-ui/i18n/cy.json deleted file mode 100644 index a6238e082f..0000000000 --- a/resources/lib/oojs-ui/i18n/cy.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Lloffiwr", - "Robin Owain", - "ОйЛ", - "DChan (WMF)", - "Jdforrester", - "Ed g2s" - ] - }, - "ooui-outline-control-move-down": "Symud yr eitem i lawr", - "ooui-outline-control-move-up": "Symud yr eitem i fyny", - "ooui-outline-control-remove": "Tynnu'r eitem", - "ooui-toolbar-more": "Rhagor", - "ooui-toolgroup-expand": "Mwy", - "ooui-toolgroup-collapse": "Llai", - "ooui-item-remove": "Tynnu", - "ooui-dialog-message-accept": "Iawn", - "ooui-dialog-message-reject": "Canslo", - "ooui-dialog-process-error": "Aeth rhywbeth o’i le", - "ooui-dialog-process-dismiss": "Gadael", - "ooui-dialog-process-retry": "Ailgeisio", - "ooui-dialog-process-continue": "Parhau", - "ooui-selectfile-button-select": "Dewis ffeil", - "ooui-selectfile-not-supported": "Nid oes modd dewis ffeil", - "ooui-selectfile-placeholder": "Dim ffeil wedi'i dewis", - "ooui-selectfile-dragdrop-placeholder": "Gollwng ffeil yma", - "ooui-field-help": "Cymorth" -} diff --git a/resources/lib/oojs-ui/i18n/da.json b/resources/lib/oojs-ui/i18n/da.json deleted file mode 100644 index 0a75f1f393..0000000000 --- a/resources/lib/oojs-ui/i18n/da.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Cgtdk", - "Christian List", - "EileenSanda", - "Laketown", - "Palnatoke", - "Simeondahl", - "Tehnix", - "Macofe", - "Peter Alberti", - "Joedalton", - "Saederup92" - ] - }, - "ooui-outline-control-move-down": "Flyt ned", - "ooui-outline-control-move-up": "Flyt op", - "ooui-outline-control-remove": "Fjern element", - "ooui-toolbar-more": "Mere", - "ooui-toolgroup-expand": "Mere", - "ooui-toolgroup-collapse": "Færre", - "ooui-item-remove": "Fjern", - "ooui-dialog-message-accept": "OK", - "ooui-dialog-message-reject": "Afbryd", - "ooui-dialog-process-error": "Noget gik galt", - "ooui-dialog-process-retry": "Prøv igen", - "ooui-dialog-process-continue": "Fortsæt", - "ooui-selectfile-button-select": "Vælg en fil", - "ooui-selectfile-placeholder": "Ingen filer er valgt", - "ooui-selectfile-dragdrop-placeholder": "Smid filen her", - "ooui-field-help": "Hjælp" -} diff --git a/resources/lib/oojs-ui/i18n/de.json b/resources/lib/oojs-ui/i18n/de.json deleted file mode 100644 index 2b01df96df..0000000000 --- a/resources/lib/oojs-ui/i18n/de.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "@metadata": { - "authors": [ - "APPER", - "G.Hagedorn", - "Inkowik", - "Jcornelius", - "Jdforrester", - "Kghbln", - "Metalhead64", - "Murma174", - "Se4598", - "Tomabrafix" - ] - }, - "ooui-outline-control-move-down": "Element nach unten verschieben", - "ooui-outline-control-move-up": "Element nach oben verschieben", - "ooui-outline-control-remove": "Element entfernen", - "ooui-toolbar-more": "Mehr", - "ooui-toolgroup-expand": "Mehr", - "ooui-toolgroup-collapse": "Weniger", - "ooui-item-remove": "Entfernen", - "ooui-dialog-message-accept": "Okay", - "ooui-dialog-message-reject": "Abbrechen", - "ooui-dialog-process-error": "Etwas ist schief gelaufen", - "ooui-dialog-process-dismiss": "Ausblenden", - "ooui-dialog-process-retry": "Erneut versuchen", - "ooui-dialog-process-continue": "Fortfahren", - "ooui-selectfile-button-select": "Eine Datei auswählen", - "ooui-selectfile-not-supported": "Die Dateiauswahl wird nicht unterstützt", - "ooui-selectfile-placeholder": "Keine Datei ausgewählt", - "ooui-selectfile-dragdrop-placeholder": "Dateien hier ablegen", - "ooui-field-help": "Hilfe" -} diff --git a/resources/lib/oojs-ui/i18n/diq.json b/resources/lib/oojs-ui/i18n/diq.json deleted file mode 100644 index bf6b087337..0000000000 --- a/resources/lib/oojs-ui/i18n/diq.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Erdemaslancan", - "Gorizon", - "Kghbln", - "Marmase", - "Mirzali", - "Se4598", - "Kumkumuk" - ] - }, - "ooui-outline-control-move-down": "Bendi bere cêr", - "ooui-outline-control-move-up": "Bendi bere cor", - "ooui-outline-control-remove": "Obcey wedare", - "ooui-toolbar-more": "Zewbi", - "ooui-toolgroup-expand": "Dehana", - "ooui-toolgroup-collapse": "Deha tayn", - "ooui-dialog-message-accept": "TEMAM", - "ooui-dialog-message-reject": "Bıtexelne", - "ooui-dialog-process-error": "Tayê çi ğelet şi...", - "ooui-dialog-process-dismiss": "Racın", - "ooui-dialog-process-retry": "Fına bıcerbın", - "ooui-dialog-process-continue": "Dewam ke", - "ooui-selectfile-button-select": "Yu dosya weçinê", - "ooui-selectfile-not-supported": "Dosya weçinayış desteg nêvine na", - "ooui-selectfile-placeholder": "Dosya nêwçineya", - "ooui-selectfile-dragdrop-placeholder": "Dosya tiyara ake" -} diff --git a/resources/lib/oojs-ui/i18n/dsb.json b/resources/lib/oojs-ui/i18n/dsb.json deleted file mode 100644 index 7ad3f200c7..0000000000 --- a/resources/lib/oojs-ui/i18n/dsb.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Michawiki" - ] - }, - "ooui-outline-control-move-down": "Element dołoj pśesunuś", - "ooui-outline-control-move-up": "Element górjej pśesunuś", - "ooui-outline-control-remove": "Zapisk wótpóraś", - "ooui-toolbar-more": "Wěcej" -} diff --git a/resources/lib/oojs-ui/i18n/dty.json b/resources/lib/oojs-ui/i18n/dty.json deleted file mode 100644 index 21742b697d..0000000000 --- a/resources/lib/oojs-ui/i18n/dty.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "@metadata": { - "authors": [ - "जनक राज भट्ट" - ] - }, - "ooui-outline-control-move-down": "वस्तुलाई तल साददे", - "ooui-outline-control-move-up": "वस्तुलाई मथि साददे", - "ooui-outline-control-remove": "वस्तुलाई हटुन्या", - "ooui-toolbar-more": "झिक्क", - "ooui-toolgroup-expand": "झिक्क", - "ooui-toolgroup-collapse": "थोका", - "ooui-dialog-message-accept": "हुन्छ", - "ooui-dialog-message-reject": "रद्द", - "ooui-dialog-process-dismiss": "खारेज गद्दे", - "ooui-dialog-process-retry": "दोसरया प्रयास गर", - "ooui-dialog-process-continue": "जारी राख्या" -} diff --git a/resources/lib/oojs-ui/i18n/egl.json b/resources/lib/oojs-ui/i18n/egl.json deleted file mode 100644 index 624ecaa32e..0000000000 --- a/resources/lib/oojs-ui/i18n/egl.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Lévi", - "Gloria sah" - ] - }, - "ooui-outline-control-move-down": "Spôsta in bâs", - "ooui-outline-control-move-up": "Spôsta in êlt", - "ooui-outline-control-remove": "Armōv l'elemèint", - "ooui-toolbar-more": "Êter", - "ooui-dialog-message-accept": "'D acòrdi", - "ooui-dialog-message-reject": "Scanślèr" -} diff --git a/resources/lib/oojs-ui/i18n/el.json b/resources/lib/oojs-ui/i18n/el.json deleted file mode 100644 index bbc5d64681..0000000000 --- a/resources/lib/oojs-ui/i18n/el.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Astralnet", - "Dipa1965", - "Evropi", - "FocalPoint", - "Geraki", - "Glavkos", - "Nikosguard", - "Tifa93", - "Stam.nikos", - "Nikosgranturismogt" - ] - }, - "ooui-outline-control-move-down": "Μετακίνηση στοιχείου προς τα κάτω", - "ooui-outline-control-move-up": "Μετακίνηση στοιχείου προς τα επάνω", - "ooui-outline-control-remove": "Αφαίρεση στοιχείου", - "ooui-toolbar-more": "Περισσότερα", - "ooui-toolgroup-expand": "Περισσότερα", - "ooui-toolgroup-collapse": "Λιγότερα", - "ooui-item-remove": "Αφαίρεση", - "ooui-dialog-message-accept": "ΟΚ", - "ooui-dialog-message-reject": "Ακύρωση", - "ooui-dialog-process-error": "Κάτι πήγε στραβά", - "ooui-dialog-process-dismiss": "Απόρριψη", - "ooui-dialog-process-retry": "Δοκιμάστε ξανά", - "ooui-dialog-process-continue": "Συνέχεια", - "ooui-selectfile-button-select": "Επιλέξτε ένα αρχείο", - "ooui-selectfile-not-supported": "Επιλογή αρχείου δεν υποστηρίζεται", - "ooui-selectfile-placeholder": "Κανένα αρχείο δεν είναι επιλεγμένο", - "ooui-selectfile-dragdrop-placeholder": "Σύρετε το αρχείο εδώ", - "ooui-field-help": "Βοήθεια" -} diff --git a/resources/lib/oojs-ui/i18n/eml.json b/resources/lib/oojs-ui/i18n/eml.json deleted file mode 100644 index 6d9e8bf0b6..0000000000 --- a/resources/lib/oojs-ui/i18n/eml.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Gloria sah", - "Lévi" - ] - }, - "ooui-outline-control-move-down": "Spôsta in bâs", - "ooui-outline-control-move-up": "Spôsta in êlta", - "ooui-outline-control-remove": "Tór vìa 'l elemèint", - "ooui-toolbar-more": "Êter", - "ooui-dialog-message-accept": "'D acòrdi", - "ooui-dialog-message-reject": "Scanślèr" -} diff --git a/resources/lib/oojs-ui/i18n/en-ca.json b/resources/lib/oojs-ui/i18n/en-ca.json deleted file mode 100644 index 1a8e31bee2..0000000000 --- a/resources/lib/oojs-ui/i18n/en-ca.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Skyllful" - ] - }, - "ooui-outline-control-move-down": "Move item down", - "ooui-outline-control-move-up": "Move item up", - "ooui-outline-control-remove": "Remove item", - "ooui-toolbar-more": "More", - "ooui-toolgroup-expand": "More", - "ooui-toolgroup-collapse": "Less", - "ooui-dialog-message-accept": "OK", - "ooui-dialog-message-reject": "Cancel", - "ooui-dialog-process-error": "Something went wrong", - "ooui-dialog-process-dismiss": "Dismiss", - "ooui-dialog-process-retry": "Try again", - "ooui-dialog-process-continue": "Continue", - "ooui-selectfile-not-supported": "File(s) not supported", - "ooui-selectfile-placeholder": "No file selected", - "ooui-selectfile-dragdrop-placeholder": "Drop file here (or click to browse your computer)" -} diff --git a/resources/lib/oojs-ui/i18n/en-gb.json b/resources/lib/oojs-ui/i18n/en-gb.json deleted file mode 100644 index 5bdc6f47b8..0000000000 --- a/resources/lib/oojs-ui/i18n/en-gb.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Pierpao" - ] - }, - "ooui-dialog-message-accept": "OK", - "ooui-dialog-message-reject": "Cancel", - "ooui-dialog-process-dismiss": "Dismiss", - "ooui-dialog-process-retry": "Try again", - "ooui-dialog-process-continue": "Continue", - "ooui-selectfile-button-select": "Select a file", - "ooui-selectfile-not-supported": "File selection is not supported", - "ooui-selectfile-placeholder": "No file is selected" -} diff --git a/resources/lib/oojs-ui/i18n/en.json b/resources/lib/oojs-ui/i18n/en.json deleted file mode 100644 index 7ccd746d77..0000000000 --- a/resources/lib/oojs-ui/i18n/en.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Trevor Parscal", - "Ed Sanders", - "James D. Forrester", - "Raimond Spekking", - "Erik Moeller", - "Moriel Schottlender", - "Yuki Shira", - "Siebrand Mazeland", - "Rob Moen", - "Timo Tijhof", - "Roan Kattouw", - "Christian Williams", - "Amir E. Aharoni" - ] - }, - "ooui-outline-control-move-down": "Move item down", - "ooui-outline-control-move-up": "Move item up", - "ooui-outline-control-remove": "Remove item", - "ooui-toolbar-more": "More", - "ooui-toolgroup-expand": "More", - "ooui-toolgroup-collapse": "Fewer", - "ooui-item-remove": "Remove", - "ooui-dialog-message-accept": "OK", - "ooui-dialog-message-reject": "Cancel", - "ooui-dialog-process-error": "Something went wrong", - "ooui-dialog-process-dismiss": "Dismiss", - "ooui-dialog-process-retry": "Try again", - "ooui-dialog-process-continue": "Continue", - "ooui-selectfile-button-select": "Select a file", - "ooui-selectfile-not-supported": "File selection is not supported", - "ooui-selectfile-placeholder": "No file is selected", - "ooui-selectfile-dragdrop-placeholder": "Drop file here", - "ooui-field-help": "Help" -} diff --git a/resources/lib/oojs-ui/i18n/eo.json b/resources/lib/oojs-ui/i18n/eo.json deleted file mode 100644 index d27da01340..0000000000 --- a/resources/lib/oojs-ui/i18n/eo.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Happy5214", - "KuboF", - "Shirayuki", - "Yekrats", - "Kvardek du", - "Psychoslave", - "Fitoschido" - ] - }, - "ooui-outline-control-move-down": "Movi eron suben", - "ooui-outline-control-move-up": "Movi eron supren", - "ooui-outline-control-remove": "Forigi eron", - "ooui-toolbar-more": "Pli", - "ooui-toolgroup-expand": "Pli", - "ooui-toolgroup-collapse": "Mapli", - "ooui-dialog-message-accept": "Bone", - "ooui-dialog-message-reject": "Nuligi", - "ooui-dialog-process-error": "Io rompiĝis", - "ooui-dialog-process-dismiss": "Elimini", - "ooui-dialog-process-retry": "Reprovi", - "ooui-dialog-process-continue": "Daŭrigi", - "ooui-selectfile-button-select": "Elekti dosieron", - "ooui-selectfile-not-supported": "Dosieroselekto ne estas subtenata.", - "ooui-selectfile-placeholder": "Vi ne selektis dosieron", - "ooui-selectfile-dragdrop-placeholder": "Ĵetu dosieron ĉi tie.", - "ooui-field-help": "Helpo" -} diff --git a/resources/lib/oojs-ui/i18n/es.json b/resources/lib/oojs-ui/i18n/es.json deleted file mode 100644 index 35943b0263..0000000000 --- a/resources/lib/oojs-ui/i18n/es.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Armando-Martin", - "Aruizdr", - "Benfutbol10", - "DJ Nietzsche", - "Erdemaslancan", - "Fitoschido", - "Imre", - "Invadinado", - "Jdforrester", - "Jduranboger", - "PoLuX124", - "Ralgis", - "Thehelpfulone", - "Gloria sah", - "Macofe" - ] - }, - "ooui-outline-control-move-down": "Bajar elemento", - "ooui-outline-control-move-up": "Subir elemento", - "ooui-outline-control-remove": "Eliminar elemento", - "ooui-toolbar-more": "Más", - "ooui-toolgroup-expand": "Más", - "ooui-toolgroup-collapse": "Menos", - "ooui-item-remove": "Quitar", - "ooui-dialog-message-accept": "Aceptar", - "ooui-dialog-message-reject": "Cancelar", - "ooui-dialog-process-error": "Algo salió mal", - "ooui-dialog-process-dismiss": "Descartar", - "ooui-dialog-process-retry": "Intentar de nuevo", - "ooui-dialog-process-continue": "Continuar", - "ooui-selectfile-button-select": "Selecciona un archivo", - "ooui-selectfile-not-supported": "No se admite la selección de archivos", - "ooui-selectfile-placeholder": "Ningún archivo seleccionado", - "ooui-selectfile-dragdrop-placeholder": "Suelta el archivo aquí", - "ooui-field-help": "Ayuda" -} diff --git a/resources/lib/oojs-ui/i18n/et.json b/resources/lib/oojs-ui/i18n/et.json deleted file mode 100644 index 326baaff1c..0000000000 --- a/resources/lib/oojs-ui/i18n/et.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Avjoska", - "Pikne", - "Suwa" - ] - }, - "ooui-outline-control-move-down": "Liiguta üksust allapoole", - "ooui-outline-control-move-up": "Liiguta üksust ülespoole", - "ooui-outline-control-remove": "Eemalda üksus", - "ooui-toolbar-more": "Veel", - "ooui-toolgroup-expand": "Veel", - "ooui-toolgroup-collapse": "Vähem", - "ooui-dialog-message-accept": "Sobib", - "ooui-dialog-message-reject": "Loobu", - "ooui-dialog-process-error": "Midagi läks valesti", - "ooui-dialog-process-dismiss": "Sule", - "ooui-dialog-process-retry": "Proovi uuesti", - "ooui-dialog-process-continue": "Jätka", - "ooui-selectfile-button-select": "Vali fail", - "ooui-selectfile-not-supported": "Faili valiku tugi puudub", - "ooui-selectfile-placeholder": "Faili ei ole valitud", - "ooui-selectfile-dragdrop-placeholder": "Lohista fail siia" -} diff --git a/resources/lib/oojs-ui/i18n/eu.json b/resources/lib/oojs-ui/i18n/eu.json deleted file mode 100644 index f87d11fd63..0000000000 --- a/resources/lib/oojs-ui/i18n/eu.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "@metadata": { - "authors": [ - "An13sa", - "Unai Fdz. de Betoño", - "Xabier Armendaritz", - "Subi", - "Sator", - "Mikel Ibaiba", - "Fitoschido" - ] - }, - "ooui-outline-control-move-down": "Mugitu itema beherantz", - "ooui-outline-control-move-up": "Mugitu itema gorantz", - "ooui-outline-control-remove": "Elementua kendu", - "ooui-toolbar-more": "Gehiago", - "ooui-toolgroup-expand": "Gehiago", - "ooui-toolgroup-collapse": "Gutxiago", - "ooui-item-remove": "Ezabatu", - "ooui-dialog-message-accept": "Ados", - "ooui-dialog-message-reject": "Utzi", - "ooui-dialog-process-error": "Zerbaitek huts egin du", - "ooui-dialog-process-dismiss": "Utzi", - "ooui-dialog-process-retry": "Saiatu berriro", - "ooui-dialog-process-continue": "Jarraitu", - "ooui-selectfile-button-select": "Fitxategi bat aukeratu", - "ooui-selectfile-not-supported": "Fitxategi aukeraketa ez da onartzen", - "ooui-selectfile-placeholder": "Ez da fitxategirik hautatu", - "ooui-selectfile-dragdrop-placeholder": "Fitxategia hemen utzi", - "ooui-field-help": "Laguntza" -} diff --git a/resources/lib/oojs-ui/i18n/fa.json b/resources/lib/oojs-ui/i18n/fa.json deleted file mode 100644 index e6e44637b7..0000000000 --- a/resources/lib/oojs-ui/i18n/fa.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Dalba", - "Ebraminio", - "Jdforrester", - "Ladsgroup", - "Mjbmr", - "Nojan Madinehi", - "Reza1615", - "Taha", - "درفش کاویانی", - "Armin1392", - "Alirezaaa", - "Leyth", - "الناز", - "فلورانس", - "Alireza Ivaz" - ] - }, - "ooui-outline-control-move-down": "انتقال مورد به پایین", - "ooui-outline-control-move-up": "انتقال مورد به بالا", - "ooui-outline-control-remove": "حذف مورد", - "ooui-toolbar-more": "بیشتر", - "ooui-toolgroup-expand": "بیشتر", - "ooui-toolgroup-collapse": "کمتر", - "ooui-item-remove": "حذف", - "ooui-dialog-message-accept": "تأیید", - "ooui-dialog-message-reject": "لغو", - "ooui-dialog-process-error": "مشکلی وجود دارد", - "ooui-dialog-process-dismiss": "رد", - "ooui-dialog-process-retry": "دوباره امتحان کنید", - "ooui-dialog-process-continue": "ادامه", - "ooui-selectfile-button-select": "یک فایل انتخاب کنید", - "ooui-selectfile-not-supported": "انتخاب پرونده پشتیبانی نمی‌شود", - "ooui-selectfile-placeholder": "هیچ پرونده‌ای انتخاب نشده است", - "ooui-selectfile-dragdrop-placeholder": "فایل را اینجا رها کنید", - "ooui-field-help": "راهنما" -} diff --git a/resources/lib/oojs-ui/i18n/fi.json b/resources/lib/oojs-ui/i18n/fi.json deleted file mode 100644 index 4c38f00899..0000000000 --- a/resources/lib/oojs-ui/i18n/fi.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Beluga", - "Crt", - "Harriv", - "Linnea", - "Nedergard", - "Nike", - "Olli", - "Pxos", - "Samoasambia", - "Silvonen", - "Skalman", - "Stryn", - "VezonThunder", - "Alluk.", - "Pyscowicz" - ] - }, - "ooui-outline-control-move-down": "Siirrä kohdetta alaspäin", - "ooui-outline-control-move-up": "Siirrä kohdetta ylöspäin", - "ooui-outline-control-remove": "Poista kohde", - "ooui-toolbar-more": "Lisää", - "ooui-toolgroup-expand": "Näytä lisää", - "ooui-toolgroup-collapse": "Näytä vähemmän", - "ooui-item-remove": "Poista", - "ooui-dialog-message-accept": "OK", - "ooui-dialog-message-reject": "Peru", - "ooui-dialog-process-error": "Jokin meni pieleen", - "ooui-dialog-process-dismiss": "Hylkää", - "ooui-dialog-process-retry": "Yritä uudelleen", - "ooui-dialog-process-continue": "Jatka", - "ooui-selectfile-button-select": "Valitse tiedosto", - "ooui-selectfile-not-supported": "Tiedoston valitsemista ei tueta", - "ooui-selectfile-placeholder": "Tiedostoa ei ole valittu", - "ooui-selectfile-dragdrop-placeholder": "Pudota tiedosto tähän", - "ooui-field-help": "Ohje" -} diff --git a/resources/lib/oojs-ui/i18n/fo.json b/resources/lib/oojs-ui/i18n/fo.json deleted file mode 100644 index 6230cc9b4f..0000000000 --- a/resources/lib/oojs-ui/i18n/fo.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "@metadata": { - "authors": [ - "EileenSanda" - ] - }, - "ooui-outline-control-move-down": "Flyt lutin niður", - "ooui-outline-control-move-up": "Flyt lutin upp", - "ooui-outline-control-remove": "Tak ein lut burtur", - "ooui-toolbar-more": "Meira", - "ooui-toolgroup-expand": "Meira", - "ooui-toolgroup-collapse": "Færri", - "ooui-dialog-message-accept": "OK", - "ooui-dialog-message-reject": "Avbrót", - "ooui-dialog-process-error": "Okkurt gekk galið", - "ooui-dialog-process-dismiss": "Lat aftur", - "ooui-dialog-process-retry": "Royn aftur", - "ooui-dialog-process-continue": "Halt fram" -} diff --git a/resources/lib/oojs-ui/i18n/fr.json b/resources/lib/oojs-ui/i18n/fr.json deleted file mode 100644 index a42687536e..0000000000 --- a/resources/lib/oojs-ui/i18n/fr.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Automatik", - "Benoit Rochon", - "Boniface", - "Brunoperel", - "Crochet.david", - "DavidL", - "Dereckson", - "Gomoko", - "Guillom", - "Hello71", - "Jean-Frédéric", - "Linedwell", - "Ltrlg", - "Metroitendo", - "NemesisIII", - "Nicolas NALLET", - "Npettiaux", - "Rastus Vernon", - "Seb35", - "Sherbrooke", - "Tpt", - "Trizek", - "Urhixidur", - "Verdy p", - "Wyz", - "SnowedEarth", - "Jdforrester", - "Wladek92", - "Harmonia Amanda", - "The RedBurn" - ] - }, - "ooui-outline-control-move-down": "Descendre l’élément", - "ooui-outline-control-move-up": "Monter l’élément", - "ooui-outline-control-remove": "Supprimer l’élément", - "ooui-toolbar-more": "Plus", - "ooui-toolgroup-expand": "Plus", - "ooui-toolgroup-collapse": "Moins", - "ooui-item-remove": "Supprimer", - "ooui-dialog-message-accept": "OK", - "ooui-dialog-message-reject": "Annuler", - "ooui-dialog-process-error": "Quelque chose s'est mal passé", - "ooui-dialog-process-dismiss": "Fermer", - "ooui-dialog-process-retry": "Réessayer", - "ooui-dialog-process-continue": "Continuer", - "ooui-selectfile-button-select": "Sélectionner un fichier", - "ooui-selectfile-not-supported": "La sélection de fichier n’est pas prise en charge", - "ooui-selectfile-placeholder": "Aucun fichier sélectionné", - "ooui-selectfile-dragdrop-placeholder": "Déposer le fichier ici", - "ooui-field-help": "Aide" -} diff --git a/resources/lib/oojs-ui/i18n/frr.json b/resources/lib/oojs-ui/i18n/frr.json deleted file mode 100644 index 54d0fb22d4..0000000000 --- a/resources/lib/oojs-ui/i18n/frr.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "@metadata": { - "authors": [ - "ChrisPtDe", - "Murma174" - ] - }, - "ooui-outline-control-move-down": "Element efter onern sküüw", - "ooui-outline-control-move-up": "Element efter boowen sküüw", - "ooui-outline-control-remove": "Element wechnem", - "ooui-toolbar-more": "Muar" -} diff --git a/resources/lib/oojs-ui/i18n/fur.json b/resources/lib/oojs-ui/i18n/fur.json deleted file mode 100644 index 83c2fd9ea3..0000000000 --- a/resources/lib/oojs-ui/i18n/fur.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Klenje", - "Tocaibon" - ] - }, - "ooui-outline-control-move-down": "sposte sot", - "ooui-outline-control-move-up": "sposte in su", - "ooui-toolbar-more": "Altri" -} diff --git a/resources/lib/oojs-ui/i18n/fy.json b/resources/lib/oojs-ui/i18n/fy.json deleted file mode 100644 index a552c22c95..0000000000 --- a/resources/lib/oojs-ui/i18n/fy.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Robin0van0der0vliet", - "Jdforrester", - "Robin van der Vliet" - ] - }, - "ooui-toolbar-more": "Mear", - "ooui-toolgroup-expand": "Mear", - "ooui-toolgroup-collapse": "Minder", - "ooui-item-remove": "Fuortsmite", - "ooui-dialog-message-accept": "OK", - "ooui-dialog-message-reject": "Annulearje", - "ooui-field-help": "Help" -} diff --git a/resources/lib/oojs-ui/i18n/gd.json b/resources/lib/oojs-ui/i18n/gd.json deleted file mode 100644 index 6a83c9c027..0000000000 --- a/resources/lib/oojs-ui/i18n/gd.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "@metadata": { - "authors": [ - "GunChleoc" - ] - }, - "ooui-outline-control-move-down": "Gluais nì sìos", - "ooui-outline-control-move-up": "Gluais nì suas", - "ooui-outline-control-remove": "Thoir air falbh an nì", - "ooui-toolbar-more": "Barrachd", - "ooui-dialog-message-accept": "Ceart ma-thà", - "ooui-dialog-message-reject": "Sguir dheth" -} diff --git a/resources/lib/oojs-ui/i18n/gl.json b/resources/lib/oojs-ui/i18n/gl.json deleted file mode 100644 index 22174f796a..0000000000 --- a/resources/lib/oojs-ui/i18n/gl.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Alison", - "Kscanne", - "Toliño", - "Elisardojm", - "Banjo", - "Fitoschido" - ] - }, - "ooui-outline-control-move-down": "Mover o elemento abaixo", - "ooui-outline-control-move-up": "Mover o elemento arriba", - "ooui-outline-control-remove": "Eliminar o elemento", - "ooui-toolbar-more": "Máis", - "ooui-toolgroup-expand": "Máis", - "ooui-toolgroup-collapse": "Menos", - "ooui-item-remove": "Eliminar", - "ooui-dialog-message-accept": "Aceptar", - "ooui-dialog-message-reject": "Cancelar", - "ooui-dialog-process-error": "Algo foi mal", - "ooui-dialog-process-dismiss": "Agochar", - "ooui-dialog-process-retry": "Inténteo de novo", - "ooui-dialog-process-continue": "Continuar", - "ooui-selectfile-button-select": "Seleccionar un ficheiro", - "ooui-selectfile-not-supported": "Non está soportada a selección de ficheiros", - "ooui-selectfile-placeholder": "Non se seleccionou ningún ficheiro", - "ooui-selectfile-dragdrop-placeholder": "Solte un ficheiro aquí", - "ooui-field-help": "Axuda" -} diff --git a/resources/lib/oojs-ui/i18n/glk.json b/resources/lib/oojs-ui/i18n/glk.json deleted file mode 100644 index e602062163..0000000000 --- a/resources/lib/oojs-ui/i18n/glk.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "@metadata": { - "authors": [ - "V6rg", - "شیخ" - ] - }, - "ooui-outline-control-move-down": "مأسمکه جابجا بۊکۊن جير", - "ooui-outline-control-move-up": "مأسمکه جابجا بۊکۊن جؤر", - "ooui-outline-control-remove": "مأسمکه حذفأکۊن", - "ooui-toolbar-more": "ويشتر", - "ooui-toolgroup-expand": "ويشتر", - "ooui-toolgroup-collapse": "کمتر", - "ooui-dialog-message-accept": "خؤ", - "ooui-dialog-message-reject": "لغو", - "ooui-dialog-process-error": "ىک مؤشکلي هنأ", - "ooui-dialog-process-dismiss": "وأبدي", - "ooui-dialog-process-retry": "هندئه حقسأى بۊکۊنين", - "ooui-dialog-process-continue": "ايدامه", - "ooui-selectfile-button-select": "ىکته فاىله دؤجين بۊکۊنين", - "ooui-selectfile-not-supported": "نشأنه فاىله دؤجين گۊدن", - "ooui-selectfile-placeholder": "هيچ فاىلي دؤجين نۊبؤ", - "ooui-selectfile-dragdrop-placeholder": "فاىله ائره رها بکۊنين" -} diff --git a/resources/lib/oojs-ui/i18n/gom-latn.json b/resources/lib/oojs-ui/i18n/gom-latn.json deleted file mode 100644 index afd471002d..0000000000 --- a/resources/lib/oojs-ui/i18n/gom-latn.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "@metadata": { - "authors": [ - "The Discoverer" - ] - }, - "ooui-toolbar-more": "Anik", - "ooui-toolgroup-expand": "Anik", - "ooui-dialog-message-reject": "Rodd'dd kor", - "ooui-dialog-process-retry": "Porot proyotn kor", - "ooui-selectfile-button-select": "Ek fayl nivodd", - "ooui-selectfile-placeholder": "Khuimchech fayl nivddunk nam", - "ooui-selectfile-dragdrop-placeholder": "Fayl hanga udoi" -} diff --git a/resources/lib/oojs-ui/i18n/gor.json b/resources/lib/oojs-ui/i18n/gor.json deleted file mode 100644 index 9fcf1390cc..0000000000 --- a/resources/lib/oojs-ui/i18n/gor.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Marwan Mohamad", - "Fitoschido" - ] - }, - "ooui-outline-control-move-down": "Heyiya botu ode tibawa", - "ooui-outline-control-move-up": "Heyiya botu ode yitaato", - "ooui-outline-control-remove": "Yinggila botu", - "ooui-toolbar-more": "Pe'eentapo", - "ooui-toolgroup-expand": "Pe'eentapo", - "ooui-toolgroup-collapse": "ngoolo botu", - "ooui-dialog-message-accept": "Jo", - "ooui-dialog-message-reject": "Bataliya", - "ooui-dialog-process-error": "Woluwo u yilotalawa", - "ooui-dialog-process-dismiss": "He'uti", - "ooui-dialog-process-retry": "Yimontali pooli", - "ooui-dialog-process-continue": "Turusi", - "ooui-selectfile-button-select": "Tulawota berkas tuwawu", - "ooui-selectfile-not-supported": "Berkas tilulawoto ja motuhatawa", - "ooui-selectfile-placeholder": "Diya'a berkas u letulawoto", - "ooui-selectfile-dragdrop-placeholder": "Dutuwa berkas teeya", - "ooui-field-help": "Wubodu" -} diff --git a/resources/lib/oojs-ui/i18n/gu.json b/resources/lib/oojs-ui/i18n/gu.json deleted file mode 100644 index e7dfeb2043..0000000000 --- a/resources/lib/oojs-ui/i18n/gu.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Ashok modhvadia", - "KartikMistry", - "The Discoverer", - "NehalDaveND", - "Dsvyas" - ] - }, - "ooui-outline-control-move-down": "વસ્તુ નીચે ખસેડો", - "ooui-outline-control-move-up": "વસ્તુ ઉપર ખસેડો", - "ooui-outline-control-remove": "વસ્તુ હટાવો", - "ooui-toolbar-more": "વધુ", - "ooui-toolgroup-expand": "વધુ", - "ooui-toolgroup-collapse": "ઓછા", - "ooui-dialog-message-accept": "બરાબર", - "ooui-dialog-message-reject": "રદ કરો", - "ooui-dialog-process-error": "કંઇક ગરબડ થઇ", - "ooui-dialog-process-dismiss": "વિસર્જન", - "ooui-dialog-process-retry": "ફરી પ્રયત્ન કરો", - "ooui-dialog-process-continue": "ચાલુ રાખો", - "ooui-selectfile-button-select": "ફાઈલ પસંદ કરો", - "ooui-selectfile-not-supported": "ફાઇલ પસંદગીની જોગવાઈ નથી", - "ooui-selectfile-placeholder": "કોઇ ફાઇલ પસંદ નથી કરાઈ", - "ooui-selectfile-dragdrop-placeholder": "અહીં ફાઇલ મૂકો" -} diff --git a/resources/lib/oojs-ui/i18n/he.json b/resources/lib/oojs-ui/i18n/he.json deleted file mode 100644 index e40820d6df..0000000000 --- a/resources/lib/oojs-ui/i18n/he.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Amire80", - "ExampleTomer", - "Guycn2", - "Matanya", - "Mooeypoo", - "Orsa", - "Shimmin Beg", - "אור שפירא", - "חיים", - "ערן", - "פוילישער", - "קיפודנחש" - ] - }, - "ooui-outline-control-move-down": "להזיז את הפריט מטה", - "ooui-outline-control-move-up": "להזיז את הפריט מעלה", - "ooui-outline-control-remove": "להסיר את הפריט", - "ooui-toolbar-more": "עוד", - "ooui-toolgroup-expand": "יותר", - "ooui-toolgroup-collapse": "פחות", - "ooui-item-remove": "הסרה", - "ooui-dialog-message-accept": "אישור", - "ooui-dialog-message-reject": "ביטול", - "ooui-dialog-process-error": "משהו השתבש", - "ooui-dialog-process-dismiss": "לוותר", - "ooui-dialog-process-retry": "לנסות שוב", - "ooui-dialog-process-continue": "המשך", - "ooui-selectfile-button-select": "נא לבחור קובץ", - "ooui-selectfile-not-supported": "בחירת קבצים אינה נתמכת", - "ooui-selectfile-placeholder": "לא נבחר שום קובץ", - "ooui-selectfile-dragdrop-placeholder": "נא לשחרר את הקובץ כאן", - "ooui-field-help": "עזרה" -} diff --git a/resources/lib/oojs-ui/i18n/hi.json b/resources/lib/oojs-ui/i18n/hi.json deleted file mode 100644 index 2bb5559dc6..0000000000 --- a/resources/lib/oojs-ui/i18n/hi.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Ansumang", - "Devayon", - "Rajesh", - "Siddhartha Ghai", - "Goelujjwal", - "Ankita-ks", - "Param Mudgal", - "Sfic", - "Rishi.Singh" - ] - }, - "ooui-outline-control-move-down": "प्रविष्टि नीचे ले जाएँ", - "ooui-outline-control-move-up": "प्रविष्टि ऊपर ले जाएँ", - "ooui-outline-control-remove": "आइटम हटाएँ", - "ooui-toolbar-more": "अधिक", - "ooui-toolgroup-expand": "अधिक", - "ooui-toolgroup-collapse": "कम", - "ooui-item-remove": "हटायें", - "ooui-dialog-message-accept": "ठीक है", - "ooui-dialog-message-reject": "रद्द करें", - "ooui-dialog-process-error": "कुछ गलत हुअा है", - "ooui-dialog-process-dismiss": "ख़ारिज करें", - "ooui-dialog-process-retry": "पुनः प्रयास करें", - "ooui-dialog-process-continue": "जारी रखें", - "ooui-selectfile-button-select": "फ़ाइल चुनें", - "ooui-selectfile-not-supported": "फ़ाइल का चयन समर्थित नहीं है", - "ooui-selectfile-placeholder": "कोई फाइल चुनी नही गई हेै", - "ooui-selectfile-dragdrop-placeholder": "फ़ाइल यहाँ डालें" -} diff --git a/resources/lib/oojs-ui/i18n/hif-latn.json b/resources/lib/oojs-ui/i18n/hif-latn.json deleted file mode 100644 index 9e903ca5f1..0000000000 --- a/resources/lib/oojs-ui/i18n/hif-latn.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Thakurji" - ] - }, - "ooui-outline-control-move-down": "Item ke niche karo", - "ooui-outline-control-move-up": "Item ke uppar karo", - "ooui-outline-control-remove": "Item ke hatao", - "ooui-toolbar-more": "Aur", - "ooui-toolgroup-expand": "Aur", - "ooui-toolgroup-collapse": "Kamtii", - "ooui-dialog-message-accept": "OK", - "ooui-dialog-message-reject": "Cancel karo", - "ooui-dialog-process-error": "Koi chij wrong hoe gais", - "ooui-dialog-process-dismiss": "Dismiss karo", - "ooui-dialog-process-retry": "Fir se try karo", - "ooui-dialog-process-continue": "Continue", - "ooui-selectfile-button-select": "Ek file ke select karo", - "ooui-selectfile-not-supported": "File selection ke support nai karaa jaawe hai", - "ooui-selectfile-placeholder": "Koi file ke nai select karaa gais hai", - "ooui-selectfile-dragdrop-placeholder": "Hian pe file ke girao" -} diff --git a/resources/lib/oojs-ui/i18n/hr.json b/resources/lib/oojs-ui/i18n/hr.json deleted file mode 100644 index 90bb1a60cc..0000000000 --- a/resources/lib/oojs-ui/i18n/hr.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "@metadata": { - "authors": [ - "MaGa", - "Roberta F.", - "SpeedyGonsales", - "Zeljko.filipin", - "Bugoslav" - ] - }, - "ooui-outline-control-move-down": "Premjesti stavku dolje", - "ooui-outline-control-move-up": "Premjesti stavku gore", - "ooui-outline-control-remove": "Ukloni", - "ooui-toolbar-more": "Više", - "ooui-toolgroup-expand": "Više", - "ooui-toolgroup-collapse": "Manje", - "ooui-item-remove": "Ukloni", - "ooui-dialog-message-accept": "U redu", - "ooui-dialog-message-reject": "Odustani", - "ooui-dialog-process-error": "Nešto nije u redu", - "ooui-dialog-process-dismiss": "Zatvori", - "ooui-dialog-process-retry": "Pokušajte ponovo", - "ooui-dialog-process-continue": "Nastavi", - "ooui-selectfile-button-select": "Odaberi datoteku", - "ooui-selectfile-not-supported": "Izbor datoteke nije podržan", - "ooui-selectfile-placeholder": "Datoteka nije označena", - "ooui-selectfile-dragdrop-placeholder": "Povucite datoteku ovdje", - "ooui-field-help": "Pomoć" -} diff --git a/resources/lib/oojs-ui/i18n/hrx.json b/resources/lib/oojs-ui/i18n/hrx.json deleted file mode 100644 index 1534af7664..0000000000 --- a/resources/lib/oojs-ui/i18n/hrx.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Midnight Gambler" - ] - }, - "ooui-toolbar-more": "Meahr", - "ooui-toolgroup-expand": "Meahr", - "ooui-dialog-message-accept": "OK", - "ooui-dialog-message-reject": "Abbreche", - "ooui-dialog-process-dismiss": "Ausblenne" -} diff --git a/resources/lib/oojs-ui/i18n/hsb.json b/resources/lib/oojs-ui/i18n/hsb.json deleted file mode 100644 index 00894e4e37..0000000000 --- a/resources/lib/oojs-ui/i18n/hsb.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "@metadata": { - "authors": [ - "J budissin", - "Michawiki" - ] - }, - "ooui-outline-control-move-down": "Zapisk dele přesunyć", - "ooui-outline-control-move-up": "Zapisk horje přesunyć", - "ooui-outline-control-remove": "Zapisk wotstronić", - "ooui-toolbar-more": "Wjace", - "ooui-toolgroup-expand": "Wjace", - "ooui-toolgroup-collapse": "Mjenje", - "ooui-dialog-message-accept": "W porjadku", - "ooui-dialog-message-reject": "Přetorhnyć", - "ooui-dialog-process-error": "Něšto je so nimokuliło", - "ooui-dialog-process-dismiss": "Schować", - "ooui-dialog-process-retry": "Hišće raz spytać", - "ooui-dialog-process-continue": "Dale" -} diff --git a/resources/lib/oojs-ui/i18n/hu-formal.json b/resources/lib/oojs-ui/i18n/hu-formal.json deleted file mode 100644 index 34aa0ae638..0000000000 --- a/resources/lib/oojs-ui/i18n/hu-formal.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Misibacsi" - ] - }, - "ooui-outline-control-move-down": "Elem mozgatása lefelé", - "ooui-outline-control-move-up": "Elem mozgatása felfelé", - "ooui-outline-control-remove": "Elem eltávolítása", - "ooui-toolbar-more": "Tovább...", - "ooui-toolgroup-expand": "Tovább", - "ooui-toolgroup-collapse": "Kevesebb", - "ooui-dialog-message-accept": "Rendben", - "ooui-dialog-message-reject": "Mégse", - "ooui-dialog-process-error": "Valami elromlott.", - "ooui-dialog-process-dismiss": "Mégse", - "ooui-dialog-process-retry": "Próbálja újra", - "ooui-dialog-process-continue": "Folytatás", - "ooui-selectfile-not-supported": "A fájl kiválasztása nincs támogatva", - "ooui-selectfile-placeholder": "Nincs fájl kiválasztva" -} diff --git a/resources/lib/oojs-ui/i18n/hu.json b/resources/lib/oojs-ui/i18n/hu.json deleted file mode 100644 index 95d4188d0f..0000000000 --- a/resources/lib/oojs-ui/i18n/hu.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Dj", - "Einstein2", - "Misibacsi", - "ViDam", - "Tacsipacsi", - "Csega", - "Kishajnalka", - "Rodrigo", - "Bencemac" - ] - }, - "ooui-outline-control-move-down": "Elem mozgatása lefelé", - "ooui-outline-control-move-up": "Elem mozgatása felfelé", - "ooui-outline-control-remove": "Elem eltávolítása", - "ooui-toolbar-more": "Több", - "ooui-toolgroup-expand": "Több", - "ooui-toolgroup-collapse": "Kevesebb", - "ooui-item-remove": "Eltávolítás", - "ooui-dialog-message-accept": "OK", - "ooui-dialog-message-reject": "Mégse", - "ooui-dialog-process-error": "Valami elromlott", - "ooui-dialog-process-dismiss": "Elrejt", - "ooui-dialog-process-retry": "Próbáld újra", - "ooui-dialog-process-continue": "Folytatás", - "ooui-selectfile-button-select": "Fájl kiválasztása", - "ooui-selectfile-not-supported": "A fájl kiválasztása nincs támogatva", - "ooui-selectfile-placeholder": "Nincs fájl kiválasztva", - "ooui-selectfile-dragdrop-placeholder": "Dobd ide a fájlt", - "ooui-field-help": "Súgó" -} diff --git a/resources/lib/oojs-ui/i18n/hy.json b/resources/lib/oojs-ui/i18n/hy.json deleted file mode 100644 index 598fee35f0..0000000000 --- a/resources/lib/oojs-ui/i18n/hy.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Vacio", - "Xelgen", - "Դավիթ Սարոյան", - "Vahe Gharakhanyan", - "Kareyac" - ] - }, - "ooui-outline-control-move-down": "Իջեցնել ներքև", - "ooui-outline-control-move-up": "Բարձրացնել կետը", - "ooui-outline-control-remove": "Հեռացնել տարրը", - "ooui-toolbar-more": "Ավելին", - "ooui-toolgroup-expand": "Ավելին", - "ooui-toolgroup-collapse": "Պակաս", - "ooui-item-remove": "Հեռացնել", - "ooui-dialog-message-accept": "Լավ", - "ooui-dialog-message-reject": "Չեղարկել", - "ooui-dialog-process-error": "Ինչ-որ սխալ է տեղի ունեցել", - "ooui-dialog-process-dismiss": "Փակել", - "ooui-dialog-process-retry": "Կրկին փորձել", - "ooui-dialog-process-continue": "Շարունակել", - "ooui-selectfile-button-select": "Ընտրել նիշք", - "ooui-selectfile-not-supported": "Ֆայլի ընտրությունը չի պաշտպանվում", - "ooui-selectfile-placeholder": "Ֆայլն ընտրված չէ", - "ooui-selectfile-dragdrop-placeholder": "Ֆայլը գցել այստե" -} diff --git a/resources/lib/oojs-ui/i18n/ia.json b/resources/lib/oojs-ui/i18n/ia.json deleted file mode 100644 index 2127ae5e6c..0000000000 --- a/resources/lib/oojs-ui/i18n/ia.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "@metadata": { - "authors": [ - "McDutchie" - ] - }, - "ooui-outline-control-move-down": "Displaciar elemento in basso", - "ooui-outline-control-move-up": "Displaciar elemento in alto", - "ooui-outline-control-remove": "Remover elemento", - "ooui-toolbar-more": "Plus", - "ooui-toolgroup-expand": "Plus", - "ooui-toolgroup-collapse": "Minus", - "ooui-item-remove": "Remover", - "ooui-dialog-message-accept": "OK", - "ooui-dialog-message-reject": "Cancellar", - "ooui-dialog-process-error": "Qualcosa ha vadite mal", - "ooui-dialog-process-dismiss": "Clauder", - "ooui-dialog-process-retry": "Reprobar", - "ooui-dialog-process-continue": "Continuar", - "ooui-selectfile-button-select": "Selige un file", - "ooui-selectfile-not-supported": "Le selection de files non es supportate", - "ooui-selectfile-placeholder": "Nulle file es seligite", - "ooui-selectfile-dragdrop-placeholder": "Depone file hic", - "ooui-field-help": "Adjuta" -} diff --git a/resources/lib/oojs-ui/i18n/id.json b/resources/lib/oojs-ui/i18n/id.json deleted file mode 100644 index 10c7e22d29..0000000000 --- a/resources/lib/oojs-ui/i18n/id.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Farras", - "Ilham151096", - "Iwan Novirion", - "Iyan", - "Kenrick95", - "McDutchie", - "Rv77ax", - "William Surya Permana", - "Rachmat.Wahidi", - "Rachmat04", - "Gombang" - ] - }, - "ooui-outline-control-move-down": "Pindahkan butir ke bawah", - "ooui-outline-control-move-up": "Pindahkan butir ke atas", - "ooui-outline-control-remove": "Hapus butir", - "ooui-toolbar-more": "Lainnya", - "ooui-toolgroup-expand": "Selengkapnya", - "ooui-toolgroup-collapse": "Secukupnya", - "ooui-item-remove": "Hapus", - "ooui-dialog-message-accept": "Oke", - "ooui-dialog-message-reject": "Batal", - "ooui-dialog-process-error": "Ada yang tidak beres", - "ooui-dialog-process-dismiss": "Tutup", - "ooui-dialog-process-retry": "Coba lagi", - "ooui-dialog-process-continue": "Lanjutkan", - "ooui-selectfile-button-select": "Pilih berkas", - "ooui-selectfile-not-supported": "Peilihan berkas tidak didukung", - "ooui-selectfile-placeholder": "Tidak ada berkas yang terpilih", - "ooui-selectfile-dragdrop-placeholder": "Letakkan berkas di sini" -} diff --git a/resources/lib/oojs-ui/i18n/ie.json b/resources/lib/oojs-ui/i18n/ie.json deleted file mode 100644 index 241cc3311a..0000000000 --- a/resources/lib/oojs-ui/i18n/ie.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Makuba" - ] - }, - "ooui-outline-control-move-down": "Mover element a infra", - "ooui-outline-control-move-up": "Mover element a supra", - "ooui-toolbar-more": "Plu" -} diff --git a/resources/lib/oojs-ui/i18n/ilo.json b/resources/lib/oojs-ui/i18n/ilo.json deleted file mode 100644 index 122a5ef367..0000000000 --- a/resources/lib/oojs-ui/i18n/ilo.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Lam-ang" - ] - }, - "ooui-outline-control-move-down": "Ipababa ti banag", - "ooui-outline-control-move-up": "Ipangato ti banag", - "ooui-outline-control-remove": "Ikkaten ti banag", - "ooui-toolbar-more": "Adu pay", - "ooui-toolgroup-expand": "Adu pay", - "ooui-toolgroup-collapse": "Basbassit", - "ooui-item-remove": "Ikkaten", - "ooui-dialog-message-accept": "Sige", - "ooui-dialog-message-reject": "Ukasen", - "ooui-dialog-process-error": "Adda madi a napasamak", - "ooui-dialog-process-dismiss": "Pugsayen", - "ooui-dialog-process-retry": "Padasen manen", - "ooui-dialog-process-continue": "Agtuloy", - "ooui-selectfile-button-select": "Agpili iti papeles", - "ooui-selectfile-not-supported": "Saan a masuportaran ti panagpili ti papeles", - "ooui-selectfile-placeholder": "Awan ti napili a papeles", - "ooui-selectfile-dragdrop-placeholder": "Itinnag ti papeles ditoy" -} diff --git a/resources/lib/oojs-ui/i18n/inh.json b/resources/lib/oojs-ui/i18n/inh.json deleted file mode 100644 index 73b6470546..0000000000 --- a/resources/lib/oojs-ui/i18n/inh.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Adam-Yourist", - "ElizaMag", - "Tusholi" - ] - }, - "ooui-outline-control-move-down": "Элемент Iолохеяккха", - "ooui-outline-control-move-up": "Элемент Iолакхеяккха", - "ooui-outline-control-remove": "ДIаяккха пункт", - "ooui-toolbar-more": "Кхы а", - "ooui-toolgroup-expand": "Дукха", - "ooui-toolgroup-collapse": "КӀезига", - "ooui-dialog-message-accept": "ОК", - "ooui-dialog-message-reject": "Эшац", - "ooui-dialog-process-error": "Харцахьа хилар цхьа хIама", - "ooui-dialog-process-dismiss": "ДIакъовла", - "ooui-dialog-process-retry": "Кхы цкъа де гIорта", - "ooui-dialog-process-continue": "ДIаьхде", - "ooui-selectfile-button-select": "Файл хьахаржа", - "ooui-selectfile-not-supported": "Файл харжа вIаштаь дац", - "ooui-selectfile-placeholder": "Файл хержа яц", - "ooui-selectfile-dragdrop-placeholder": "Укхаза хьадехьаяккха файл" -} diff --git a/resources/lib/oojs-ui/i18n/io.json b/resources/lib/oojs-ui/i18n/io.json deleted file mode 100644 index dafb3905da..0000000000 --- a/resources/lib/oojs-ui/i18n/io.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Idojc", - "Joao Xavier" - ] - }, - "ooui-outline-control-move-down": "Movar elemento adsube", - "ooui-outline-control-move-up": "Movar elemento adsupere", - "ooui-outline-control-remove": "Forigar elemento", - "ooui-toolbar-more": "Plu multa", - "ooui-toolgroup-expand": "Plu multa", - "ooui-toolgroup-collapse": "Min multa", - "ooui-item-remove": "Eliminar", - "ooui-dialog-message-accept": "Aplikar", - "ooui-dialog-message-reject": "Anular", - "ooui-dialog-process-error": "Ulo faliis", - "ooui-dialog-process-dismiss": "Celar", - "ooui-dialog-process-retry": "Riprobar", - "ooui-dialog-process-continue": "Durar", - "ooui-selectfile-button-select": "Selektar dokumento", - "ooui-selectfile-not-supported": "Dokumento-selekto ne esas suportata", - "ooui-selectfile-placeholder": "Nula dokumento selektesis", - "ooui-selectfile-dragdrop-placeholder": "Pozar dokumento hike" -} diff --git a/resources/lib/oojs-ui/i18n/is.json b/resources/lib/oojs-ui/i18n/is.json deleted file mode 100644 index 5a0d3e458e..0000000000 --- a/resources/lib/oojs-ui/i18n/is.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Maxí", - "Snævar", - "Sveinn í Felli" - ] - }, - "ooui-outline-control-move-down": "Færa atriði niður", - "ooui-outline-control-move-up": "Færa atriði upp", - "ooui-outline-control-remove": "Fjarlægja atriði", - "ooui-toolbar-more": "Fleira", - "ooui-toolgroup-expand": "Fleira", - "ooui-toolgroup-collapse": "Færra", - "ooui-item-remove": "Fjarlægja", - "ooui-dialog-message-accept": "Í lagi", - "ooui-dialog-message-reject": "Hætta við", - "ooui-dialog-process-error": "Eitthvað mistókst", - "ooui-dialog-process-dismiss": "Loka", - "ooui-dialog-process-retry": "Reyna aftur", - "ooui-dialog-process-continue": "Halda áfram", - "ooui-selectfile-button-select": "Velja skrá", - "ooui-selectfile-not-supported": "Skráar val er ekki stutt.", - "ooui-selectfile-placeholder": "Engin skrá er valin", - "ooui-selectfile-dragdrop-placeholder": "Slepptu skránni hérna", - "ooui-field-help": "Hjálp" -} diff --git a/resources/lib/oojs-ui/i18n/it.json b/resources/lib/oojs-ui/i18n/it.json deleted file mode 100644 index e90d4cfd78..0000000000 --- a/resources/lib/oojs-ui/i18n/it.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Beta16", - "Darth Kule", - "Doc.mari", - "Eleonora negri", - "Elitre", - "F. Cosoleto", - "FRacco", - "Gianfranco", - "Minerva Titani", - "Raoli", - "Una giornata uggiosa '94", - "Ontsed", - "Alexmar983", - "Nemo bis", - "Jdforrester", - "Fringio" - ] - }, - "ooui-outline-control-move-down": "Sposta in basso", - "ooui-outline-control-move-up": "Sposta in alto", - "ooui-outline-control-remove": "Rimuovi elemento", - "ooui-toolbar-more": "Altro", - "ooui-toolgroup-expand": "Altro", - "ooui-toolgroup-collapse": "Meno", - "ooui-item-remove": "Rimuovi", - "ooui-dialog-message-accept": "OK", - "ooui-dialog-message-reject": "Annulla", - "ooui-dialog-process-error": "Qualcosa è andato storto", - "ooui-dialog-process-dismiss": "Nascondi", - "ooui-dialog-process-retry": "Riprova", - "ooui-dialog-process-continue": "Continua", - "ooui-selectfile-button-select": "Seleziona un file", - "ooui-selectfile-not-supported": "La selezione del file non è supportata", - "ooui-selectfile-placeholder": "Nessun file è selezionato", - "ooui-selectfile-dragdrop-placeholder": "Posiziona i file qui", - "ooui-field-help": "Aiuto" -} diff --git a/resources/lib/oojs-ui/i18n/ja.json b/resources/lib/oojs-ui/i18n/ja.json deleted file mode 100644 index 08cea4b72a..0000000000 --- a/resources/lib/oojs-ui/i18n/ja.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Fryed-peach", - "Miya", - "Penn Station", - "Shirayuki", - "Takot", - "Los688", - "Sujiniku", - "Translatealcd", - "Otokoume", - "Rxy", - "S2KTS" - ] - }, - "ooui-outline-control-move-down": "項目を下に移動させる", - "ooui-outline-control-move-up": "項目を上に移動させる", - "ooui-outline-control-remove": "項目を除去", - "ooui-toolbar-more": "その他", - "ooui-toolgroup-expand": "続き", - "ooui-toolgroup-collapse": "折り畳む", - "ooui-item-remove": "削除", - "ooui-dialog-message-accept": "OK", - "ooui-dialog-message-reject": "キャンセル", - "ooui-dialog-process-error": "エラーが発生しました…", - "ooui-dialog-process-dismiss": "閉じる", - "ooui-dialog-process-retry": "もう一度お試しください", - "ooui-dialog-process-continue": "続行", - "ooui-selectfile-button-select": "ファイルを選択", - "ooui-selectfile-not-supported": "ファイルの選択はサポートされていません", - "ooui-selectfile-placeholder": "ファイルが選択されていません", - "ooui-selectfile-dragdrop-placeholder": "ファイルをここにドロップ", - "ooui-field-help": "ヘルプ" -} diff --git a/resources/lib/oojs-ui/i18n/jv.json b/resources/lib/oojs-ui/i18n/jv.json deleted file mode 100644 index 5ade01560d..0000000000 --- a/resources/lib/oojs-ui/i18n/jv.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Gleki", - "NoiX180", - "Pras", - "Jadinegara", - "Meursault2004" - ] - }, - "ooui-outline-control-move-down": "Lih barang mangisor", - "ooui-outline-control-move-up": "Lih barang mandhuwur", - "ooui-outline-control-remove": "Buwang barang", - "ooui-toolbar-more": "Liyané", - "ooui-toolgroup-expand": "Liyané", - "ooui-toolgroup-collapse": "Sacukupé", - "ooui-dialog-message-accept": "Oké", - "ooui-dialog-message-reject": "Wurung", - "ooui-dialog-process-error": "Ana sing salah", - "ooui-dialog-process-dismiss": "Tutup", - "ooui-dialog-process-retry": "Jajalen manèh", - "ooui-dialog-process-continue": "Bacutaké", - "ooui-selectfile-button-select": "Pilih barkas", - "ooui-selectfile-not-supported": "Ora bisa milih barkas", - "ooui-selectfile-placeholder": "Ora ana barkas sing dipilih", - "ooui-selectfile-dragdrop-placeholder": "Dèkèk barkas ing kéné" -} diff --git a/resources/lib/oojs-ui/i18n/ka.json b/resources/lib/oojs-ui/i18n/ka.json deleted file mode 100644 index c6d55873a7..0000000000 --- a/resources/lib/oojs-ui/i18n/ka.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "@metadata": { - "authors": [ - "BRUTE", - "David1010", - "Gleki", - "ITshnik", - "MIKHEIL", - "NoiX180", - "Pras", - "Tokoko", - "Kintrbr" - ] - }, - "ooui-outline-control-move-down": "ელემენტის ქვემოთ გადატანა", - "ooui-outline-control-move-up": "ელემენტის ზემოთ გადატანა", - "ooui-outline-control-remove": "წაშლა", - "ooui-toolbar-more": "მეტი", - "ooui-toolgroup-expand": "მეტი", - "ooui-toolgroup-collapse": "რამდენიმე", - "ooui-item-remove": "წაშლა", - "ooui-dialog-message-accept": "კარგი", - "ooui-dialog-message-reject": "გაუქმება", - "ooui-dialog-process-error": "მოხდა რაღაც შეცდომა", - "ooui-dialog-process-dismiss": "დამალვა", - "ooui-dialog-process-retry": "კიდევ სცადეთ", - "ooui-dialog-process-continue": "გაგრძელება", - "ooui-selectfile-button-select": "აირჩიეთ ფაილი", - "ooui-selectfile-not-supported": "ფაილის არჩევა არ არის მხარდაჭერილი", - "ooui-selectfile-placeholder": "ფაილი არ არის არჩეული", - "ooui-selectfile-dragdrop-placeholder": "ჩააგდეთ ფაილი აქ" -} diff --git a/resources/lib/oojs-ui/i18n/kab.json b/resources/lib/oojs-ui/i18n/kab.json deleted file mode 100644 index 55016b22a8..0000000000 --- a/resources/lib/oojs-ui/i18n/kab.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Belkacem77" - ] - }, - "ooui-outline-control-move-down": "Awi aferdi d akesser", - "ooui-outline-control-move-up": "Awi aferdis d asawen", - "ooui-outline-control-remove": "Kkes aferdis", - "ooui-toolbar-more": "Ugar", - "ooui-toolgroup-expand": "Ugar", - "ooui-toolgroup-collapse": "Drus", - "ooui-item-remove": "Kkes", - "ooui-dialog-message-accept": "IH", - "ooui-dialog-message-reject": "Sefsex", - "ooui-dialog-process-error": "Yella wayen yeḍran", - "ooui-dialog-process-dismiss": "Mdel", - "ooui-dialog-process-retry": "Ɛreḍ tikelt-nniden", - "ooui-dialog-process-continue": "Kemmel", - "ooui-selectfile-button-select": "Fren afaylu", - "ooui-selectfile-not-supported": "Afran n ufaylu ur yettusefrak ara", - "ooui-selectfile-placeholder": "Ulac afaylu yettwafernen", - "ooui-selectfile-dragdrop-placeholder": "Sers afaylu dagi" -} diff --git a/resources/lib/oojs-ui/i18n/khw.json b/resources/lib/oojs-ui/i18n/khw.json deleted file mode 100644 index f0ce207318..0000000000 --- a/resources/lib/oojs-ui/i18n/khw.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Rachitrali" - ] - }, - "ooui-toolbar-more": "مزید", - "ooui-toolgroup-expand": "مزید", - "ooui-toolgroup-collapse": "ای کما", - "ooui-dialog-message-accept": "ٹھیک شیر", - "ooui-dialog-message-reject": "کھینسل" -} diff --git a/resources/lib/oojs-ui/i18n/kk-cyrl.json b/resources/lib/oojs-ui/i18n/kk-cyrl.json deleted file mode 100644 index 779ba7b995..0000000000 --- a/resources/lib/oojs-ui/i18n/kk-cyrl.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Arystanbek" - ] - }, - "ooui-outline-control-move-down": "Элементті төмен жылжыту", - "ooui-outline-control-move-up": "Элементті жоғары жылжыту", - "ooui-outline-control-remove": "Элементті алып тастау", - "ooui-toolbar-more": "толығырақ", - "ooui-toolgroup-expand": "Тағы", - "ooui-toolgroup-collapse": "Азырақ", - "ooui-dialog-message-accept": "OK", - "ooui-dialog-message-reject": "Қажет емес", - "ooui-dialog-process-error": "Бірдеңеден қате кетті", - "ooui-dialog-process-dismiss": "Тоқтату", - "ooui-dialog-process-retry": "Қайта байқап көріңіз", - "ooui-dialog-process-continue": "Жалғастыру", - "ooui-selectfile-button-select": "Файлды таңдау", - "ooui-selectfile-not-supported": "Файл таңдауды қолдамайды", - "ooui-selectfile-placeholder": "Файл таңдалмады", - "ooui-selectfile-dragdrop-placeholder": "Файлды мында жылжыту" -} diff --git a/resources/lib/oojs-ui/i18n/km.json b/resources/lib/oojs-ui/i18n/km.json deleted file mode 100644 index c8f71d3f2f..0000000000 --- a/resources/lib/oojs-ui/i18n/km.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Sovichet", - "គីមស៊្រុន" - ] - }, - "ooui-outline-control-move-down": "រុញ​ធាតុទៅ​ក្រោម", - "ooui-outline-control-move-up": "រុញធាតុទៅ​លើ", - "ooui-outline-control-remove": "ដកធាតុចេញ", - "ooui-toolbar-more": "បន្ថែមទៀត", - "ooui-toolgroup-expand": "មើលច្រើន", - "ooui-toolgroup-collapse": "មើលតិច", - "ooui-item-remove": "ដកចេញ", - "ooui-dialog-message-accept": "យល់ព្រម", - "ooui-dialog-message-reject": "បោះបង់", - "ooui-dialog-process-error": "មានបញ្ហាអ្វីមួយ", - "ooui-dialog-process-dismiss": "បិទ", - "ooui-dialog-process-retry": "ព្យាយាមម្ដងទៀត", - "ooui-dialog-process-continue": "បន្ត", - "ooui-selectfile-button-select": "ជ្រើសរើសឯកសារ", - "ooui-selectfile-not-supported": "ការជ្រើសរើសឯកសារមិនអាចប្រើបានទេ", - "ooui-selectfile-placeholder": "គ្មានឯកសារណាមួយត្រូវបានជ្រើសរើស", - "ooui-selectfile-dragdrop-placeholder": "ទម្លាក់ឯកសារនៅទីនេះ", - "ooui-field-help": "ជំនួយ" -} diff --git a/resources/lib/oojs-ui/i18n/kn.json b/resources/lib/oojs-ui/i18n/kn.json deleted file mode 100644 index 741cfb33cd..0000000000 --- a/resources/lib/oojs-ui/i18n/kn.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Vikassy", - "Nayvik", - "Omshivaprakash", - "Pavanaja", - "Yogesh" - ] - }, - "ooui-outline-control-move-down": "ವಸ್ತುವನ್ನು ಕೆಳಗೆ ಸರಿಸು", - "ooui-outline-control-move-up": "ವಸ್ತುವನ್ನು ಮೇಲೆ ಸರಿಸು", - "ooui-outline-control-remove": "ವಸ್ತುವನ್ನು ತೆಗೆ", - "ooui-toolbar-more": "ಇನ್ನಷ್ಟು", - "ooui-toolgroup-expand": "ಇನ್ನಷ್ಟು", - "ooui-toolgroup-collapse": "ಕೆಲವೇ ಕೆಲವು", - "ooui-dialog-message-accept": "ಸರಿ", - "ooui-dialog-message-reject": "ರದ್ದುಮಾಡು", - "ooui-dialog-process-error": "ಏನೋ ಎಡವಟ್ಟಾಗಿದೆ....", - "ooui-dialog-process-dismiss": "ತೆಗೆದುಹಾಕು", - "ooui-dialog-process-retry": "ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ", - "ooui-dialog-process-continue": "ಮುಂದುವರೆಸು", - "ooui-selectfile-button-select": "ಕಡತವನ್ನು ಆಯ್ಕೆಮಾಡಿ", - "ooui-selectfile-placeholder": "ಕಡತವು ಆಯ್ಕೆಯಾಗಿಲ್ಲ", - "ooui-selectfile-dragdrop-placeholder": "ಇಲ್ಲಿ ಕಡತವನ್ನು ಬಿಡಿ" -} diff --git a/resources/lib/oojs-ui/i18n/ko.json b/resources/lib/oojs-ui/i18n/ko.json deleted file mode 100644 index 2adf18c0c0..0000000000 --- a/resources/lib/oojs-ui/i18n/ko.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Freebiekr", - "Hym411", - "Kwj2772", - "LFM", - "아라", - "고기랑", - "Ryuch", - "Revi", - "Infinity", - "Hwangjy9", - "Ykhwong" - ] - }, - "ooui-outline-control-move-down": "항목을 아래로 이동", - "ooui-outline-control-move-up": "항목을 위로 이동", - "ooui-outline-control-remove": "항목 제거", - "ooui-toolbar-more": "더 보기", - "ooui-toolgroup-expand": "더 보기", - "ooui-toolgroup-collapse": "덜 보기", - "ooui-item-remove": "제거", - "ooui-dialog-message-accept": "확인", - "ooui-dialog-message-reject": "취소", - "ooui-dialog-process-error": "무언가가 잘못되었습니다", - "ooui-dialog-process-dismiss": "숨기기", - "ooui-dialog-process-retry": "다시 시도하세요", - "ooui-dialog-process-continue": "계속", - "ooui-selectfile-button-select": "파일을 선택하세요", - "ooui-selectfile-not-supported": "파일 선택은 지원하지 않습니다", - "ooui-selectfile-placeholder": "선택한 파일 없음", - "ooui-selectfile-dragdrop-placeholder": "여기에 파일을 놓으세요", - "ooui-field-help": "도움말" -} diff --git a/resources/lib/oojs-ui/i18n/krc.json b/resources/lib/oojs-ui/i18n/krc.json deleted file mode 100644 index 6f17b34637..0000000000 --- a/resources/lib/oojs-ui/i18n/krc.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Iltever", - "Ernác" - ] - }, - "ooui-outline-control-move-down": "Элементни тюбюне кёчюр", - "ooui-outline-control-move-up": "Элементни башына кёчюр", - "ooui-outline-control-remove": "Пунктну кетер", - "ooui-toolbar-more": "Энтда", - "ooui-toolgroup-expand": "Энтда", - "ooui-toolgroup-collapse": "Артха", - "ooui-dialog-message-accept": "OK", - "ooui-dialog-message-reject": "Ызына ал", - "ooui-dialog-process-error": "Не эсе да табсыз кетди", - "ooui-dialog-process-dismiss": "Джаб", - "ooui-dialog-process-retry": "Энтда сынаб кёр", - "ooui-dialog-process-continue": "Бардыр", - "ooui-selectfile-not-supported": "Файл сайлау тутулмайды", - "ooui-selectfile-placeholder": "Бир файл да сайланмагъанды" -} diff --git a/resources/lib/oojs-ui/i18n/krl.json b/resources/lib/oojs-ui/i18n/krl.json deleted file mode 100644 index 6ff25ebe00..0000000000 --- a/resources/lib/oojs-ui/i18n/krl.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Mashoi7" - ] - }, - "ooui-toolbar-more": "Enämpi", - "ooui-toolgroup-expand": "Enämpi", - "ooui-toolgroup-collapse": "Vähempi" -} diff --git a/resources/lib/oojs-ui/i18n/ksh.json b/resources/lib/oojs-ui/i18n/ksh.json deleted file mode 100644 index f99c29fd68..0000000000 --- a/resources/lib/oojs-ui/i18n/ksh.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Purodha" - ] - }, - "ooui-outline-control-move-down": "Öm eine Plaz noh onge schiehbe", - "ooui-outline-control-move-up": "Öm eine Plaz noh bovve schiehbe", - "ooui-outline-control-remove": "Dä Plaz läddesch maache → fott domet!", - "ooui-toolbar-more": "Mih", - "ooui-toolgroup-expand": "Mih", - "ooui-toolgroup-collapse": "Winnijer", - "ooui-dialog-message-accept": "Lohß Jonn!", - "ooui-dialog-message-reject": "Ophühre", - "ooui-dialog-process-error": "Öhnsjädd es scheif jejange", - "ooui-dialog-process-dismiss": "Maach fott, ha_sch jelässe", - "ooui-dialog-process-retry": "Norr_ens versöhke", - "ooui-dialog-process-continue": "Wigger maache", - "ooui-selectfile-button-select": "Söhg en Dattei uß", - "ooui-selectfile-not-supported": "Mer ogerschtözze et Datteij_Ußwähle nit.", - "ooui-selectfile-placeholder": "Kein Dattei es ußjewählt" -} diff --git a/resources/lib/oojs-ui/i18n/ku-latn.json b/resources/lib/oojs-ui/i18n/ku-latn.json deleted file mode 100644 index 9954744933..0000000000 --- a/resources/lib/oojs-ui/i18n/ku-latn.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "@metadata": { - "authors": [ - "George Animal", - "Bikarhêner" - ] - }, - "ooui-toolbar-more": "Bêhtir", - "ooui-toolgroup-expand": "Bêhtir", - "ooui-toolgroup-collapse": "Kêmtir", - "ooui-dialog-message-accept": "Baş e", - "ooui-dialog-message-reject": "Betal bike", - "ooui-dialog-process-retry": "Dîsa hewl bide", - "ooui-dialog-process-continue": "Bidomîne", - "ooui-selectfile-button-select": "Dosyeyekê hilbijêre", - "ooui-selectfile-placeholder": "Ti dosye nehatiye hilbijartin" -} diff --git a/resources/lib/oojs-ui/i18n/kw.json b/resources/lib/oojs-ui/i18n/kw.json deleted file mode 100644 index a6c6d8ab51..0000000000 --- a/resources/lib/oojs-ui/i18n/kw.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "@metadata": { - "authors": [ - "George Animal", - "Nrowe", - "Purodha" - ] - } -} diff --git a/resources/lib/oojs-ui/i18n/ky.json b/resources/lib/oojs-ui/i18n/ky.json deleted file mode 100644 index e2b8ab7a02..0000000000 --- a/resources/lib/oojs-ui/i18n/ky.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Chorobek", - "George Animal", - "Nrowe", - "Tynchtyk Chorotegin", - "Викиней" - ] - } -} diff --git a/resources/lib/oojs-ui/i18n/la.json b/resources/lib/oojs-ui/i18n/la.json deleted file mode 100644 index 9b161e906d..0000000000 --- a/resources/lib/oojs-ui/i18n/la.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Jdforrester", - "Fitoschido" - ] - }, - "ooui-toolbar-more": "Plus", - "ooui-toolgroup-expand": "Plus", - "ooui-toolgroup-collapse": "Paucior", - "ooui-dialog-message-accept": "Assentior", - "ooui-dialog-message-reject": "Dimittere", - "ooui-dialog-process-dismiss": "Dimittere", - "ooui-dialog-process-retry": "Retemptare", - "ooui-dialog-process-continue": "Pergere", - "ooui-field-help": "Auxilium" -} diff --git a/resources/lib/oojs-ui/i18n/lb.json b/resources/lib/oojs-ui/i18n/lb.json deleted file mode 100644 index 0d30583f4d..0000000000 --- a/resources/lib/oojs-ui/i18n/lb.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Autokrator", - "Chorobek", - "Robby", - "Soued031", - "Tynchtyk Chorotegin", - "UV", - "Викиней" - ] - }, - "ooui-outline-control-move-down": "Element erof réckelen", - "ooui-outline-control-move-up": "Element erop réckelen", - "ooui-outline-control-remove": "Element ewechhuelen", - "ooui-toolbar-more": "Méi", - "ooui-toolgroup-expand": "Méi", - "ooui-toolgroup-collapse": "Manner", - "ooui-item-remove": "Ewechhuelen", - "ooui-dialog-message-accept": "OK", - "ooui-dialog-message-reject": "Ofbriechen", - "ooui-dialog-process-error": "Et ass eppes schif gaang", - "ooui-dialog-process-dismiss": "Verwerfen", - "ooui-dialog-process-retry": "Nach eng Kéier probéieren", - "ooui-dialog-process-continue": "Virufueren", - "ooui-selectfile-button-select": "E Fichier eraussichen", - "ooui-selectfile-not-supported": "D'Eraussiche vu Fichiere gëtt net ënnerstëtzt.", - "ooui-selectfile-placeholder": "Et ass kee Fichier erausgesicht", - "ooui-selectfile-dragdrop-placeholder": "Fichier hei ofleeën", - "ooui-field-help": "Hëllef" -} diff --git a/resources/lib/oojs-ui/i18n/li.json b/resources/lib/oojs-ui/i18n/li.json deleted file mode 100644 index 43ae794853..0000000000 --- a/resources/lib/oojs-ui/i18n/li.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Pahles", - "Ooswesthoesbes" - ] - }, - "ooui-outline-control-move-down": "Item nao ónger verplaatse", - "ooui-outline-control-move-up": "Item nao bove verplaetse", - "ooui-outline-control-remove": "Item ewegsjaffe", - "ooui-toolbar-more": "Mieë", - "ooui-toolgroup-expand": "Mieë", - "ooui-toolgroup-collapse": "Minder", - "ooui-item-remove": "Sjaf eweg", - "ooui-dialog-message-accept": "Ok", - "ooui-dialog-message-reject": "Aafbraeke", - "ooui-dialog-process-error": "Dao is get misgegange", - "ooui-dialog-process-dismiss": "Sjlete", - "ooui-dialog-process-retry": "Perbeer obbenuujts", - "ooui-dialog-process-continue": "Doorgaon", - "ooui-selectfile-button-select": "Kees e bestandj", - "ooui-selectfile-not-supported": "Selektie van 'n besjtandj waert neet óngersteund", - "ooui-selectfile-placeholder": "Dao is gein besjtandj geselekteerd", - "ooui-selectfile-dragdrop-placeholder": "Sleip e bestandj hieroppes" -} diff --git a/resources/lib/oojs-ui/i18n/lki.json b/resources/lib/oojs-ui/i18n/lki.json deleted file mode 100644 index ab6db1438b..0000000000 --- a/resources/lib/oojs-ui/i18n/lki.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Hosseinblue", - "Arash71" - ] - }, - "ooui-outline-control-move-down": "جاوواز کردن ئإ هووار", - "ooui-outline-control-move-up": "جاوواز کردن ئإ بِلِنگ", - "ooui-outline-control-remove": "حذف مورد", - "ooui-toolbar-more": "ویشتر/فرۀتر", - "ooui-toolgroup-expand": "ویشتر/فرۀتر", - "ooui-toolgroup-collapse": "کۀمتر", - "ooui-dialog-message-accept": "خوو/ باشد", - "ooui-dialog-message-reject": "ئآهووسانن/لغو", - "ooui-dialog-process-error": "مشکلی هۀس", - "ooui-dialog-process-dismiss": "رد کردن", - "ooui-dialog-process-retry": "دووآرۀ تلاش کۀ", - "ooui-dialog-process-continue": "ادامه-دؤم گرتن", - "ooui-selectfile-button-select": "فایلئ انتخاب کۀ", - "ooui-selectfile-not-supported": "انتخاب پرونده پشتیبانی نمی‌شود", - "ooui-selectfile-placeholder": "هیچ پرونده‌ای انتخاب نشده است", - "ooui-selectfile-dragdrop-placeholder": "فایل را اینجا رها کنید" -} diff --git a/resources/lib/oojs-ui/i18n/lmo.json b/resources/lib/oojs-ui/i18n/lmo.json deleted file mode 100644 index 87309db0d6..0000000000 --- a/resources/lib/oojs-ui/i18n/lmo.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Ninonino" - ] - }, - "ooui-outline-control-move-down": "Spòsta 'n zó", - "ooui-outline-control-move-up": "Spòsta 'n sö", - "ooui-toolbar-more": "Amò" -} diff --git a/resources/lib/oojs-ui/i18n/lt.json b/resources/lib/oojs-ui/i18n/lt.json deleted file mode 100644 index ea13406751..0000000000 --- a/resources/lib/oojs-ui/i18n/lt.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Audriusa", - "Eitvys200", - "Mantak111", - "Albertas", - "Manvydasz" - ] - }, - "ooui-outline-control-move-down": "Perkelti elementą žemyn", - "ooui-outline-control-move-up": "Perkelti elementą aukštyn", - "ooui-outline-control-remove": "Šalinti įrašą", - "ooui-toolbar-more": "Daugiau", - "ooui-toolgroup-expand": "Daugiau", - "ooui-toolgroup-collapse": "Mažiau", - "ooui-item-remove": "Pašalinti", - "ooui-dialog-message-accept": "Gerai", - "ooui-dialog-message-reject": "Atšaukti", - "ooui-dialog-process-error": "Kažkas nutiko ne taip", - "ooui-dialog-process-dismiss": "Paslėpti", - "ooui-dialog-process-retry": "Bandykite dar kartą", - "ooui-dialog-process-continue": "Tęsti", - "ooui-selectfile-button-select": "Pasirinkti failą", - "ooui-selectfile-not-supported": "Failų pasirinkimas nepalaikomas", - "ooui-selectfile-placeholder": "Nėra pasirinktų failų", - "ooui-selectfile-dragdrop-placeholder": "Atitempkite failą čia" -} diff --git a/resources/lib/oojs-ui/i18n/luz.json b/resources/lib/oojs-ui/i18n/luz.json deleted file mode 100644 index d48a9dfa3d..0000000000 --- a/resources/lib/oojs-ui/i18n/luz.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "@metadata": { - "authors": [ - "علی ساکی لرستانی" - ] - }, - "ooui-outline-control-move-down": "انتقال مورد وه دومن", - "ooui-outline-control-move-up": "انتقال مورد وه بالا", - "ooui-outline-control-remove": "حذف مورد", - "ooui-toolbar-more": "هنی", - "ooui-toolgroup-expand": "هنی", - "ooui-toolgroup-collapse": "کم تر", - "ooui-dialog-message-accept": "خووه", - "ooui-dialog-message-reject": "لغو", - "ooui-dialog-process-error": "یه چیایی اشتباه ویده", - "ooui-dialog-process-dismiss": "منفصل کردن", - "ooui-dialog-process-retry": "دوباره تلاش کردن", - "ooui-dialog-process-continue": "ادامه دائن", - "ooui-selectfile-not-supported": "فایل انتخابی پشتیبانی نوابیه", - "ooui-selectfile-placeholder": "فایلی انتخاب نوابیه" -} diff --git a/resources/lib/oojs-ui/i18n/lv.json b/resources/lib/oojs-ui/i18n/lv.json deleted file mode 100644 index 103dff74c6..0000000000 --- a/resources/lib/oojs-ui/i18n/lv.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Admresdeserv.", - "Audriusa", - "Eitvys200", - "Papuass", - "PeterisP" - ] - }, - "ooui-outline-control-move-down": "Pārvietot vienumu uz leju", - "ooui-outline-control-move-up": "Pārvietot vienumu uz augšu", - "ooui-outline-control-remove": "Noņemt vienumu", - "ooui-toolbar-more": "Vairāk", - "ooui-toolgroup-expand": "Vairāk", - "ooui-toolgroup-collapse": "Mazāk", - "ooui-item-remove": "Noņemt", - "ooui-dialog-message-accept": "Labi", - "ooui-dialog-message-reject": "Atcelt", - "ooui-dialog-process-error": "Kaut kas nogāja greizi", - "ooui-dialog-process-dismiss": "Paslēpt", - "ooui-dialog-process-retry": "Mēģināt vēlreiz", - "ooui-dialog-process-continue": "Turpināt", - "ooui-selectfile-button-select": "Izvēlies failu", - "ooui-selectfile-not-supported": "Failu izvēle nav atbalstīta", - "ooui-selectfile-placeholder": "Nav izvēlēts neviens fails", - "ooui-selectfile-dragdrop-placeholder": "Nomet failu šeit", - "ooui-field-help": "Palīdzība" -} diff --git a/resources/lib/oojs-ui/i18n/lzh.json b/resources/lib/oojs-ui/i18n/lzh.json deleted file mode 100644 index d0f1bd2acc..0000000000 --- a/resources/lib/oojs-ui/i18n/lzh.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Joe young yu", - "Itsmine", - "SolidBlock" - ] - }, - "ooui-outline-control-move-down": "遷下", - "ooui-outline-control-move-up": "遷上", - "ooui-outline-control-remove": "去物", - "ooui-toolbar-more": "餘", - "ooui-dialog-message-accept": "可" -} diff --git a/resources/lib/oojs-ui/i18n/mg.json b/resources/lib/oojs-ui/i18n/mg.json deleted file mode 100644 index 4c6967b8e6..0000000000 --- a/resources/lib/oojs-ui/i18n/mg.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Jagwar", - "Fitoschido" - ] - }, - "ooui-outline-control-move-down": "Hampidina ilay zavatra", - "ooui-outline-control-move-up": "Hampiakatra ilay zavatra", - "ooui-outline-control-remove": "Hanala iay zavatra", - "ooui-toolbar-more": "Be kokoa", - "ooui-toolgroup-expand": "Be kokoa", - "ooui-toolgroup-collapse": "Kely kokoa", - "ooui-dialog-message-accept": "OK", - "ooui-dialog-message-reject": "Avela", - "ooui-dialog-process-error": "Nisy hadisoana nitranga", - "ooui-dialog-process-dismiss": "Esorina", - "ooui-dialog-process-retry": "Andramana indray", - "ooui-dialog-process-continue": "Tohizana", - "ooui-selectfile-button-select": "Misafidia rakitra iray", - "ooui-selectfile-not-supported": "Tsy zaka ny fisafidiana rakitra", - "ooui-selectfile-placeholder": "Tsy misy rakitra voafidy", - "ooui-selectfile-dragdrop-placeholder": "Hametraka rakitra eto", - "ooui-field-help": "Fanoroana" -} diff --git a/resources/lib/oojs-ui/i18n/min.json b/resources/lib/oojs-ui/i18n/min.json deleted file mode 100644 index b8790d3123..0000000000 --- a/resources/lib/oojs-ui/i18n/min.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Iwan Novirion", - "Jagwar" - ] - }, - "ooui-outline-control-move-down": "Pindahan ko ka bawah", - "ooui-outline-control-move-up": "Pindahan ko ka ateh", - "ooui-outline-control-remove": "Hapuih ko", - "ooui-toolbar-more": "Lainnyo", - "ooui-dialog-message-accept": "Yo", - "ooui-dialog-message-reject": "Batal" -} diff --git a/resources/lib/oojs-ui/i18n/mk.json b/resources/lib/oojs-ui/i18n/mk.json deleted file mode 100644 index 8de0d80e57..0000000000 --- a/resources/lib/oojs-ui/i18n/mk.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Bjankuloski06", - "Brest", - "Iwan Novirion" - ] - }, - "ooui-outline-control-move-down": "Помести надолу", - "ooui-outline-control-move-up": "Помести нагоре", - "ooui-outline-control-remove": "Отстрани ставка", - "ooui-toolbar-more": "Повеќе", - "ooui-toolgroup-expand": "Повеќе", - "ooui-toolgroup-collapse": "Помалку", - "ooui-item-remove": "Отстрани", - "ooui-dialog-message-accept": "ОК", - "ooui-dialog-message-reject": "Откажи", - "ooui-dialog-process-error": "Нешто не е во ред", - "ooui-dialog-process-dismiss": "Тргни", - "ooui-dialog-process-retry": "Обиди се пак", - "ooui-dialog-process-continue": "Продолжи", - "ooui-selectfile-button-select": "Одберете податотека", - "ooui-selectfile-not-supported": "Изборот на податотеки не е поддржан", - "ooui-selectfile-placeholder": "Немате одбрано податотека", - "ooui-selectfile-dragdrop-placeholder": "Тука пуштете ја податотеката", - "ooui-field-help": "Помош" -} diff --git a/resources/lib/oojs-ui/i18n/ml.json b/resources/lib/oojs-ui/i18n/ml.json deleted file mode 100644 index aba355aa18..0000000000 --- a/resources/lib/oojs-ui/i18n/ml.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Kavya Manohar", - "Praveenp", - "Santhosh.thottingal", - "Vssun", - "Ranjithsiji" - ] - }, - "ooui-outline-control-move-down": "ഇനം താഴേയ്ക്ക് മാറ്റുക", - "ooui-outline-control-move-up": "ഇനം മുകളിലേയ്ക്ക് മാറ്റുക", - "ooui-outline-control-remove": "ഇനം നീക്കംചെയ്യുക", - "ooui-toolbar-more": "കൂടുതൽ", - "ooui-toolgroup-expand": "കൂടുതൽ", - "ooui-toolgroup-collapse": "കുറച്ച്", - "ooui-item-remove": "നീക്കം ചെയ്യുക", - "ooui-dialog-message-accept": "ശരി", - "ooui-dialog-message-reject": "റദ്ദാക്കുക", - "ooui-dialog-process-error": "എന്തോ പ്രശ്നമുണ്ടായി", - "ooui-dialog-process-dismiss": "ഒഴിവാക്കുക", - "ooui-dialog-process-retry": "വീണ്ടും ശ്രമിക്കുക", - "ooui-dialog-process-continue": "തുടരുക", - "ooui-selectfile-button-select": "പ്രമാണം തിരഞ്ഞെടുക്കുക", - "ooui-selectfile-not-supported": "പ്രമാണം തിരഞ്ഞെടുക്കൽ പിന്തുണയ്ക്കുന്നില്ല", - "ooui-selectfile-placeholder": "പ്രമാണങ്ങൾ ഒന്നും തിരഞ്ഞെടുത്തിട്ടില്ല", - "ooui-selectfile-dragdrop-placeholder": "പ്രമാണം ഇവിടെ ഇടുക", - "ooui-field-help": "സഹായം" -} diff --git a/resources/lib/oojs-ui/i18n/mn.json b/resources/lib/oojs-ui/i18n/mn.json deleted file mode 100644 index 500aca78e4..0000000000 --- a/resources/lib/oojs-ui/i18n/mn.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Munkhzaya.E" - ] - }, - "ooui-toolbar-more": "Илүү", - "ooui-toolgroup-expand": "Илүү", - "ooui-toolgroup-collapse": "Цөөн", - "ooui-dialog-message-accept": "За", - "ooui-dialog-message-reject": "Цуцлах", - "ooui-dialog-process-error": "Ямар нэг алдаа гарсан", - "ooui-dialog-process-dismiss": "Нуух", - "ooui-dialog-process-retry": "Дахин оролдох", - "ooui-dialog-process-continue": "Цааш явах", - "ooui-selectfile-button-select": "Файлаа сонгох", - "ooui-selectfile-not-supported": "Сонгосол файл нь дэмжигдэхгүй байна", - "ooui-selectfile-placeholder": "Файл сонгоогүй байна", - "ooui-selectfile-dragdrop-placeholder": "Файлаа энд хадгалах" -} diff --git a/resources/lib/oojs-ui/i18n/mni.json b/resources/lib/oojs-ui/i18n/mni.json deleted file mode 100644 index 3c1b2edde6..0000000000 --- a/resources/lib/oojs-ui/i18n/mni.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Awangba Mangang" - ] - }, - "ooui-toolbar-more": "ꯋꯥꯠꯂꯤ", - "ooui-toolgroup-expand": "ꯋꯥꯠꯂꯤ", - "ooui-toolgroup-collapse": "ꯌꯥꯝꯗꯕ", - "ooui-item-remove": "ꯂꯧꯊꯣꯛꯄ", - "ooui-dialog-message-accept": "ꯌꯥꯔꯦ", - "ooui-dialog-message-reject": "ꯇꯣꯛꯄ", - "ooui-dialog-process-error": "ꯀꯔꯤꯒꯨꯝꯕ ꯈꯔꯥ ꯁꯣꯏꯔꯦ" -} diff --git a/resources/lib/oojs-ui/i18n/mr.json b/resources/lib/oojs-ui/i18n/mr.json deleted file mode 100644 index e4a6bd16ca..0000000000 --- a/resources/lib/oojs-ui/i18n/mr.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Kaajawa", - "Mahitgar", - "Praju23", - "V.narsikar", - "Ydyashad", - "संतोष दहिवळ", - "NehalDaveND", - "Sau6402", - "Sureshkhole" - ] - }, - "ooui-outline-control-move-down": "घटक (आयटम) खाली सरकवा", - "ooui-outline-control-move-up": "घटक (आयटम) वर सरकवा", - "ooui-outline-control-remove": "बाब हटवा", - "ooui-toolbar-more": "अधिक", - "ooui-toolgroup-expand": "अधिक", - "ooui-toolgroup-collapse": "कमी", - "ooui-item-remove": "हटवा", - "ooui-dialog-message-accept": "ठिक आहे", - "ooui-dialog-message-reject": "रद्द करा", - "ooui-dialog-process-error": "काहीतरी गडबड झाली", - "ooui-dialog-process-dismiss": "रद्द करा", - "ooui-dialog-process-retry": "पुन्हा प्रयत्न करा", - "ooui-dialog-process-continue": "चालू ठेवा", - "ooui-selectfile-button-select": "संचिका निवडा", - "ooui-selectfile-not-supported": "संचिका निवडणे साहाय्यीकृत नाही", - "ooui-selectfile-placeholder": "संचिका निवडल्या गेली नाही", - "ooui-selectfile-dragdrop-placeholder": "संचिका येथे टाका" -} diff --git a/resources/lib/oojs-ui/i18n/ms.json b/resources/lib/oojs-ui/i18n/ms.json deleted file mode 100644 index 458945793f..0000000000 --- a/resources/lib/oojs-ui/i18n/ms.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Anakmalaysia", - "Aurora", - "Pizza1016", - "Karmadunya9-" - ] - }, - "ooui-outline-control-move-down": "Alihkan perkara ke bawah", - "ooui-outline-control-move-up": "Alihkan perkara ke atas", - "ooui-outline-control-remove": "Buang perkara", - "ooui-toolbar-more": "Selebihnya", - "ooui-toolgroup-expand": "Selengkapnya", - "ooui-toolgroup-collapse": "Secukupnya", - "ooui-item-remove": "Buang", - "ooui-dialog-message-accept": "OK", - "ooui-dialog-message-reject": "Batal", - "ooui-dialog-process-error": "Ada masalah", - "ooui-dialog-process-dismiss": "Singkir", - "ooui-dialog-process-retry": "Cuba lagi", - "ooui-dialog-process-continue": "Teruskan", - "ooui-selectfile-button-select": "Pilih fail", - "ooui-selectfile-not-supported": "Pilihan fail tidak disokong", - "ooui-selectfile-placeholder": "Tiada fail yang dipilih", - "ooui-selectfile-dragdrop-placeholder": "Letakkan fail di sini" -} diff --git a/resources/lib/oojs-ui/i18n/my.json b/resources/lib/oojs-ui/i18n/my.json deleted file mode 100644 index ade1fefa3f..0000000000 --- a/resources/lib/oojs-ui/i18n/my.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Dr Lotus Black" - ] - }, - "ooui-toolbar-more": "ပို၍", - "ooui-toolgroup-expand": "ပို၍", - "ooui-item-remove": "ဖယ်ရှားရန်", - "ooui-dialog-message-accept": "အိုကေ", - "ooui-dialog-message-reject": "မလုပ်တော့ပါ", - "ooui-dialog-process-error": "တစ်ခုခု မှားယွင်းသွားခဲ့ပါသည်", - "ooui-dialog-process-dismiss": "ဖြုတ်ရန်", - "ooui-dialog-process-retry": "နောက်တစ်ဖန် ကြိုးစားပါ", - "ooui-dialog-process-continue": "ဆက်လက်", - "ooui-selectfile-button-select": "ဖိုင်တစ်ခု ရွေးချယ်ရန်", - "ooui-selectfile-placeholder": "ဖိုင် ရွေးချယ်မထားပါ", - "ooui-field-help": "အကူအညီ" -} diff --git a/resources/lib/oojs-ui/i18n/myv.json b/resources/lib/oojs-ui/i18n/myv.json deleted file mode 100644 index faf1db7003..0000000000 --- a/resources/lib/oojs-ui/i18n/myv.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Rueter" - ] - }, - "ooui-toolbar-more": "Седе ламо", - "ooui-toolgroup-expand": "Седе ламо", - "ooui-toolgroup-collapse": "Седе аламо", - "ooui-item-remove": "Нардамс", - "ooui-dialog-message-accept": "Маштови", - "ooui-dialog-message-reject": "Саемс мекев", - "ooui-dialog-process-error": "Мезе-бути аволь истя", - "ooui-dialog-process-retry": "Варчамс одов", - "ooui-dialog-process-continue": "Поладомс", - "ooui-selectfile-button-select": "Кочкамс файла" -} diff --git a/resources/lib/oojs-ui/i18n/nan.json b/resources/lib/oojs-ui/i18n/nan.json deleted file mode 100644 index d94118d7c4..0000000000 --- a/resources/lib/oojs-ui/i18n/nan.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Luuva" - ] - }, - "ooui-outline-control-move-down": "Hāng-bo̍k sóa ē-té", - "ooui-outline-control-move-up": "Hāng-bo̍k sóa téng-bīn", - "ooui-outline-control-remove": "Sóa cháu hāng-bo̍k", - "ooui-toolbar-more": "Khah chē", - "ooui-toolgroup-expand": "Khah chē", - "ooui-toolgroup-collapse": "Khah kiám", - "ooui-dialog-message-accept": "Liáu-kái", - "ooui-dialog-message-reject": "Chhú-siau", - "ooui-dialog-process-error": "Ū mi̍h bô hó-sè", - "ooui-dialog-process-dismiss": "Koaiⁿ tiāu", - "ooui-dialog-process-retry": "Koh chhì khòaⁿ-māi", - "ooui-dialog-process-continue": "Kè-sio̍k", - "ooui-selectfile-button-select": "Soán-tek 1-ê tóng-àn", - "ooui-selectfile-not-supported": "Só͘ soán ê tóng-àn bô siū chi-chhî", - "ooui-selectfile-placeholder": "Iáu-bē soán tóng-àn", - "ooui-selectfile-dragdrop-placeholder": "Kā tóng-àn tàn chia" -} diff --git a/resources/lib/oojs-ui/i18n/nap.json b/resources/lib/oojs-ui/i18n/nap.json deleted file mode 100644 index b7e37b49b6..0000000000 --- a/resources/lib/oojs-ui/i18n/nap.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Chelin", - "Chrisportelli", - "PiRSquared17", - "C.R.", - "Candalua" - ] - }, - "ooui-outline-control-move-down": "Mòve abbascio", - "ooui-outline-control-move-up": "Mòve ncoppa", - "ooui-outline-control-remove": "Leva elemento", - "ooui-toolbar-more": "Atro", - "ooui-toolgroup-expand": "Cchiù", - "ooui-toolgroup-collapse": "Meno", - "ooui-dialog-message-accept": "OK", - "ooui-dialog-message-reject": "Scancella", - "ooui-dialog-process-error": "Cocchosa è ghiuta malamente", - "ooui-dialog-process-dismiss": "Passa 'a vacca", - "ooui-dialog-process-retry": "Prova n'ata vota", - "ooui-dialog-process-continue": "Continua", - "ooui-selectfile-button-select": "Sceglie nu file", - "ooui-selectfile-not-supported": "Filtro 'e selezione nun suppurtato", - "ooui-selectfile-placeholder": "Nun s'è scigliuto nisciuno file", - "ooui-selectfile-dragdrop-placeholder": "Lassa 'o file ccà" -} diff --git a/resources/lib/oojs-ui/i18n/nb.json b/resources/lib/oojs-ui/i18n/nb.json deleted file mode 100644 index de8c5bb9e2..0000000000 --- a/resources/lib/oojs-ui/i18n/nb.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Danmichaelo", - "Event", - "Jeblad", - "Laaknor", - "Njardarlogar", - "Jdforrester", - "Apple farmer", - "Jon Harald Søby", - "Orf3us" - ] - }, - "ooui-outline-control-move-down": "Flytt ned", - "ooui-outline-control-move-up": "Flytt opp", - "ooui-outline-control-remove": "Fjern element", - "ooui-toolbar-more": "Mer", - "ooui-toolgroup-expand": "Mer", - "ooui-toolgroup-collapse": "Færre", - "ooui-item-remove": "Fjern", - "ooui-dialog-message-accept": "OK", - "ooui-dialog-message-reject": "Avbryt", - "ooui-dialog-process-error": "Noe gikk galt", - "ooui-dialog-process-dismiss": "Lukk", - "ooui-dialog-process-retry": "Prøv igjen", - "ooui-dialog-process-continue": "Fortsett", - "ooui-selectfile-button-select": "Velg en fil", - "ooui-selectfile-not-supported": "Filvalg er ikke støttet", - "ooui-selectfile-placeholder": "Ingen fil er valgt", - "ooui-selectfile-dragdrop-placeholder": "Slipp fil her", - "ooui-field-help": "Hjelp" -} diff --git a/resources/lib/oojs-ui/i18n/nds-nl.json b/resources/lib/oojs-ui/i18n/nds-nl.json deleted file mode 100644 index d3db318b52..0000000000 --- a/resources/lib/oojs-ui/i18n/nds-nl.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Servien" - ] - }, - "ooui-outline-control-move-down": "Onderwarp ummeneer zetten", - "ooui-outline-control-move-up": "Onderwarp umhoge zetten", - "ooui-outline-control-remove": "Element vortdoon", - "ooui-toolbar-more": "Meer", - "ooui-toolgroup-expand": "Meer", - "ooui-toolgroup-collapse": "Minder", - "ooui-dialog-message-accept": "Okee", - "ooui-dialog-message-reject": "Aofbreken", - "ooui-dialog-process-error": "Der gung iets fout", - "ooui-dialog-process-dismiss": "Sluten", - "ooui-dialog-process-retry": "Opniej proberen", - "ooui-dialog-process-continue": "Deurgaon" -} diff --git a/resources/lib/oojs-ui/i18n/nds.json b/resources/lib/oojs-ui/i18n/nds.json deleted file mode 100644 index 9dee2f5543..0000000000 --- a/resources/lib/oojs-ui/i18n/nds.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Zylbath", - "Joachim Mos" - ] - }, - "ooui-outline-control-move-down": "Element na ünnen schuven", - "ooui-outline-control-move-up": "Element na baven schuven", - "ooui-toolbar-more": "Mehr", - "ooui-dialog-message-accept": "OK", - "ooui-dialog-message-reject": "Afbreken", - "ooui-dialog-process-error": "Do is wat in'e Büx goan", - "ooui-dialog-process-continue": "Wiedermaken", - "ooui-selectfile-button-select": "En Datei utwählen" -} diff --git a/resources/lib/oojs-ui/i18n/ne.json b/resources/lib/oojs-ui/i18n/ne.json deleted file mode 100644 index c7d286136f..0000000000 --- a/resources/lib/oojs-ui/i18n/ne.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "@metadata": { - "authors": [ - "RajeshPandey", - "सरोज कुमार ढकाल", - "Ganesh Paudel", - "Nirajan pant" - ] - }, - "ooui-outline-control-move-down": "वस्तुलाई तल सार्ने", - "ooui-outline-control-move-up": "वस्तुलाई माथि सार्ने", - "ooui-outline-control-remove": "वस्तुलाई हटाउने", - "ooui-toolbar-more": "थप", - "ooui-toolgroup-expand": "थप", - "ooui-toolgroup-collapse": "कम", - "ooui-item-remove": "हटाउनुहोस्", - "ooui-dialog-message-accept": "हुन्छ", - "ooui-dialog-message-reject": "रद्द गर्ने", - "ooui-dialog-process-dismiss": "खारेज गर्ने", - "ooui-dialog-process-retry": "पुन प्रयास गर्नुहोस", - "ooui-dialog-process-continue": "जारी राख्ने" -} diff --git a/resources/lib/oojs-ui/i18n/nl.json b/resources/lib/oojs-ui/i18n/nl.json deleted file mode 100644 index c6fd278e8e..0000000000 --- a/resources/lib/oojs-ui/i18n/nl.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Bluyten", - "Breghtje", - "Catrope", - "Flightmare", - "Hansmuller", - "Jdforrester", - "Keegan", - "Konovalov", - "RajeshPandey", - "Romaine", - "SPQRobin", - "Saruman", - "Siebrand", - "Southparkfan", - "सरोज कुमार ढकाल", - "Sjoerddebruin", - "Gloria sah", - "Mainframe98" - ] - }, - "ooui-outline-control-move-down": "Item omlaag verplaatsen", - "ooui-outline-control-move-up": "Item omhoog verplaatsen", - "ooui-outline-control-remove": "Item verwijderen", - "ooui-toolbar-more": "Meer", - "ooui-toolgroup-expand": "Meer", - "ooui-toolgroup-collapse": "Minder", - "ooui-item-remove": "Verwijderen", - "ooui-dialog-message-accept": "OK", - "ooui-dialog-message-reject": "Annuleren", - "ooui-dialog-process-error": "Er is iets misgegaan", - "ooui-dialog-process-dismiss": "Sluiten", - "ooui-dialog-process-retry": "Opnieuw proberen", - "ooui-dialog-process-continue": "Doorgaan", - "ooui-selectfile-button-select": "Selecteer een bestand", - "ooui-selectfile-not-supported": "Selectie van een bestand wordt niet ondersteund", - "ooui-selectfile-placeholder": "Er is geen bestand geselecteerd", - "ooui-selectfile-dragdrop-placeholder": "Sleep hier een bestand heen", - "ooui-field-help": "Hulp" -} diff --git a/resources/lib/oojs-ui/i18n/nn.json b/resources/lib/oojs-ui/i18n/nn.json deleted file mode 100644 index a32e7a41c8..0000000000 --- a/resources/lib/oojs-ui/i18n/nn.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Jeblad", - "Njardarlogar" - ] - }, - "ooui-outline-control-move-down": "Flytt element ned", - "ooui-outline-control-move-up": "Flytt element opp", - "ooui-toolbar-more": "Meir", - "ooui-toolgroup-expand": "Meir", - "ooui-toolgroup-collapse": "Færre", - "ooui-dialog-message-reject": "Bryt av", - "ooui-dialog-process-error": "Noko gjekk gale", - "ooui-dialog-process-dismiss": "Lat att", - "ooui-dialog-process-continue": "Hald fram", - "ooui-selectfile-button-select": "Vel ei fil", - "ooui-selectfile-placeholder": "Inga fil er vald", - "ooui-selectfile-dragdrop-placeholder": "Slepp fil her" -} diff --git a/resources/lib/oojs-ui/i18n/oc.json b/resources/lib/oojs-ui/i18n/oc.json deleted file mode 100644 index 24a5966f34..0000000000 --- a/resources/lib/oojs-ui/i18n/oc.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Cedric31", - "Gloria sah" - ] - }, - "ooui-outline-control-move-down": "Far davalar l’element", - "ooui-outline-control-move-up": "Far montar l’element", - "ooui-outline-control-remove": "Suprimir l’element", - "ooui-toolbar-more": "Mai", - "ooui-toolgroup-expand": "Mai", - "ooui-toolgroup-collapse": "Mens", - "ooui-dialog-message-accept": "D'acòrdi", - "ooui-dialog-message-reject": "Anullar", - "ooui-dialog-process-error": "Quicòm a trucat", - "ooui-dialog-process-dismiss": "Regetar", - "ooui-dialog-process-retry": "Ensajatz tornamai", - "ooui-dialog-process-continue": "Contunhar", - "ooui-selectfile-button-select": "Seleccionar un fichièr", - "ooui-selectfile-not-supported": "Lo tipe de fichièr es pas compatible", - "ooui-selectfile-placeholder": "Cap de fichièr pas seleccionat", - "ooui-selectfile-dragdrop-placeholder": "Depausar lo fichièr aicí" -} diff --git a/resources/lib/oojs-ui/i18n/olo.json b/resources/lib/oojs-ui/i18n/olo.json deleted file mode 100644 index 1dc994ebf1..0000000000 --- a/resources/lib/oojs-ui/i18n/olo.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Mashoi7" - ] - }, - "ooui-outline-control-move-down": "Siirrä kohteh alah", - "ooui-outline-control-move-up": "Siirrä kohteh yläh", - "ooui-outline-control-remove": "Ota kohteh iäre", - "ooui-toolbar-more": "Enämbi", - "ooui-toolgroup-expand": "Enämbi", - "ooui-toolgroup-collapse": "Vähembi", - "ooui-dialog-message-accept": "OK", - "ooui-dialog-message-reject": "Hylgiä", - "ooui-dialog-process-error": "Mitah haireh rodih", - "ooui-dialog-process-dismiss": "Hylgiä", - "ooui-dialog-process-retry": "Opi vie", - "ooui-dialog-process-continue": "Jatka", - "ooui-selectfile-button-select": "Valliče failu", - "ooui-selectfile-not-supported": "Failan valličendua ei tuveta", - "ooui-selectfile-placeholder": "Failua ei ole vallittu", - "ooui-selectfile-dragdrop-placeholder": "Kirvota failu täh" -} diff --git a/resources/lib/oojs-ui/i18n/om.json b/resources/lib/oojs-ui/i18n/om.json deleted file mode 100644 index 31344be74d..0000000000 --- a/resources/lib/oojs-ui/i18n/om.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Cedric31", - "Tumsaa" - ] - }, - "ooui-outline-control-move-down": "Gad buusi", - "ooui-outline-control-move-up": "Ol baasi", - "ooui-outline-control-remove": "Balleessi", - "ooui-toolbar-more": "Dabalata", - "ooui-toolgroup-expand": "Dabalata", - "ooui-toolgroup-collapse": "Xiqqaa", - "ooui-dialog-message-accept": "Tole", - "ooui-dialog-message-reject": "Dhiisi", - "ooui-dialog-process-error": "Dogoggorri wayii ummameera", - "ooui-dialog-process-dismiss": "Didi", - "ooui-dialog-process-retry": "Itti deebi'ii yaali", - "ooui-dialog-process-continue": "Itti fufi", - "ooui-selectfile-button-select": "Faayilii filadhu", - "ooui-selectfile-not-supported": "Faayilii filachuun hin danda'amu.", - "ooui-selectfile-placeholder": "Faayiliin wayiiyyuu hin filatamne", - "ooui-selectfile-dragdrop-placeholder": "Faayilii as kaa'i" -} diff --git a/resources/lib/oojs-ui/i18n/or.json b/resources/lib/oojs-ui/i18n/or.json deleted file mode 100644 index 7d96dcb705..0000000000 --- a/resources/lib/oojs-ui/i18n/or.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Odisha1", - "Psubhashish", - "ଶିତିକଣ୍ଠ ଦାଶ", - "Jnanaranjan Sahu" - ] - }, - "ooui-outline-control-move-down": "ବସ୍ତୁଟିକୁ ତଳକୁ ଘୁଞ୍ଚାନ୍ତୁ", - "ooui-outline-control-move-up": "ବସ୍ତୁଟିକୁ ଉପରକୁ ଘୁଞ୍ଚାନ୍ତୁ", - "ooui-outline-control-remove": "ବସ୍ତୁଟିକୁ ଲିଭାନ୍ତୁ", - "ooui-toolbar-more": "ଅଧିକ", - "ooui-toolgroup-expand": "ଅଧିକ", - "ooui-toolgroup-collapse": "ଅଳ୍ପ", - "ooui-dialog-message-accept": "ହେଉ", - "ooui-dialog-message-reject": "ନାକଚ", - "ooui-dialog-process-error": "ଅସୁବିଧାଟିଏ ଘଟିଲା", - "ooui-dialog-process-dismiss": "ଖାରଜ", - "ooui-dialog-process-retry": "ଆଉ ଥରେ ଚେଷ୍ଟା କରନ୍ତୁ", - "ooui-dialog-process-continue": "ଚାଲୁରଖିବେ", - "ooui-selectfile-not-supported": "ଫାଇଲ ବାଛିବା ସୁବିଧା ନାହିଁ", - "ooui-selectfile-placeholder": "କୌଣସି ଫାଇଲ ବଛାଯାଇନାହିଁ" -} diff --git a/resources/lib/oojs-ui/i18n/pa.json b/resources/lib/oojs-ui/i18n/pa.json deleted file mode 100644 index a69d76f9cd..0000000000 --- a/resources/lib/oojs-ui/i18n/pa.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Amikeco", - "Babanwalia", - "Bouron", - "Nasir8891", - "Satdeep gill" - ] - }, - "ooui-outline-control-move-down": "ਨੀਚੇ ਲੈਕੇ ਜਾਓ", - "ooui-outline-control-move-up": "ਉੱਤੇ ਲੈਕੇ ਜਾਓ", - "ooui-outline-control-remove": "ਆਈਟਮ ਹਟਾਓ", - "ooui-toolbar-more": "ਹੋਰ", - "ooui-toolgroup-expand": "ਹੋਰ", - "ooui-toolgroup-collapse": "ਥੋੜ੍ਹੇ", - "ooui-dialog-message-accept": "ਠੀਕ ਹੈ", - "ooui-dialog-message-reject": "ਰੱਦ ਕਰੋ", - "ooui-dialog-process-error": "ਕੁਝ ਗਲਤ ਹੋ ਗਿਆ", - "ooui-dialog-process-dismiss": "ਰੱਦ ਕਰੋ", - "ooui-dialog-process-retry": "ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ", - "ooui-dialog-process-continue": "ਜਾਰੀ ਰੱਖੋ", - "ooui-selectfile-button-select": "ਫ਼ਾਈਲ ਚੁਣੋ", - "ooui-selectfile-not-supported": "ਚੁਣੀ ਗਈ ਫ਼ਾਈਲ ਖੋਲੀ ਨਹੀਂ ਜਾ ਸਕਦੀ", - "ooui-selectfile-placeholder": "ਕੋਈ ਫ਼ਾਈਲ ਚੁਣੀ ਨਹੀਂ ਗਈ", - "ooui-selectfile-dragdrop-placeholder": "ਫ਼ਾਈਲ ਇੱਥੇ ਸਿੱਟੋ" -} diff --git a/resources/lib/oojs-ui/i18n/pfl.json b/resources/lib/oojs-ui/i18n/pfl.json deleted file mode 100644 index 02d08426ef..0000000000 --- a/resources/lib/oojs-ui/i18n/pfl.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Manuae" - ] - }, - "ooui-outline-control-move-down": "Bweeschs nunna", - "ooui-outline-control-move-up": "Bweeschs nuff", - "ooui-outline-control-remove": "Leschs", - "ooui-toolbar-more": "Mea", - "ooui-dialog-message-accept": "OK", - "ooui-dialog-message-reject": "Abbresche" -} diff --git a/resources/lib/oojs-ui/i18n/pl.json b/resources/lib/oojs-ui/i18n/pl.json deleted file mode 100644 index affc066a66..0000000000 --- a/resources/lib/oojs-ui/i18n/pl.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Babanwalia", - "Chrumps", - "Matma Rex", - "Mikołka", - "Nasir8891", - "Odie2", - "Rzuwig", - "Tar Lócesilion", - "Ty221", - "WTM", - "Woytecr", - "Wpedzich", - "Jacenty359", - "Matik7", - "Gloria sah", - "Andrzej aa", - "The Polish", - "Railfail536" - ] - }, - "ooui-outline-control-move-down": "Przesuń w dół", - "ooui-outline-control-move-up": "Przesuń w górę", - "ooui-outline-control-remove": "Usuń element", - "ooui-toolbar-more": "Więcej", - "ooui-toolgroup-expand": "Więcej", - "ooui-toolgroup-collapse": "Mniej", - "ooui-item-remove": "Usuń", - "ooui-dialog-message-accept": "OK", - "ooui-dialog-message-reject": "Anuluj", - "ooui-dialog-process-error": "Coś poszło nie tak", - "ooui-dialog-process-dismiss": "Powrót", - "ooui-dialog-process-retry": "Spróbuj ponownie", - "ooui-dialog-process-continue": "Kontynuuj", - "ooui-selectfile-button-select": "Wybierz plik", - "ooui-selectfile-not-supported": "Wybór pliku nie jest obsługiwany", - "ooui-selectfile-placeholder": "Nie wybrano pliku", - "ooui-selectfile-dragdrop-placeholder": "Upuść plik tutaj", - "ooui-field-help": "Pomoc" -} diff --git a/resources/lib/oojs-ui/i18n/pms.json b/resources/lib/oojs-ui/i18n/pms.json deleted file mode 100644 index c8b5bc7eb0..0000000000 --- a/resources/lib/oojs-ui/i18n/pms.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Borichèt", - "Dragonòt", - "පසිඳු කාවින්ද" - ] - }, - "ooui-outline-control-move-down": "Fé calé giù l'element", - "ooui-outline-control-move-up": "Fé monté l'element", - "ooui-outline-control-remove": "Gavé j'element", - "ooui-toolbar-more": "Ëd pi", - "ooui-toolgroup-expand": "Pi", - "ooui-toolgroup-collapse": "Men", - "ooui-dialog-message-accept": "Va bin", - "ooui-dialog-message-reject": "Scancelé", - "ooui-dialog-process-error": "Quaicòs a l'é andà mal", - "ooui-dialog-process-dismiss": "Stërmé", - "ooui-dialog-process-retry": "Preuva torna", - "ooui-dialog-process-continue": "Continua", - "ooui-selectfile-not-supported": "La selession d'archivi a l'é nen mantnùa", - "ooui-selectfile-placeholder": "Gnun archivi selessionà" -} diff --git a/resources/lib/oojs-ui/i18n/pnb.json b/resources/lib/oojs-ui/i18n/pnb.json deleted file mode 100644 index 386871c164..0000000000 --- a/resources/lib/oojs-ui/i18n/pnb.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Saanvel", - "Abbas dhothar" - ] - }, - "ooui-outline-control-move-down": "شیہ تھلے کرو", - "ooui-outline-control-move-up": "شیہ اتے کرو", - "ooui-outline-control-remove": "شیہ مٹاؤ", - "ooui-toolbar-more": "ہور", - "ooui-toolgroup-expand": "ہور", - "ooui-toolgroup-collapse": "گھٹ", - "ooui-dialog-message-accept": "OK", - "ooui-dialog-message-reject": "مکاؤ", - "ooui-dialog-process-error": "کوئی رپھڑ پے گیا اے۔", - "ooui-dialog-process-dismiss": "مکاؤ", - "ooui-dialog-process-retry": "فیر کرو", - "ooui-dialog-process-continue": "چلاؤ", - "ooui-selectfile-button-select": "فائل چنو", - "ooui-selectfile-placeholder": "کوئی فائل نئی چنی ہوئی", - "ooui-selectfile-dragdrop-placeholder": "فائل ایتھے پاؤ" -} diff --git a/resources/lib/oojs-ui/i18n/ps.json b/resources/lib/oojs-ui/i18n/ps.json deleted file mode 100644 index 579740fb0d..0000000000 --- a/resources/lib/oojs-ui/i18n/ps.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Ahmed-Najib-Biabani-Ibrahimkhel" - ] - }, - "ooui-outline-control-move-down": "توکی ښکته راوړل", - "ooui-outline-control-move-up": "توکی پورته راوړل", - "ooui-outline-control-remove": "توکی غورځول", - "ooui-toolbar-more": "نور", - "ooui-toolgroup-expand": "نور", - "ooui-toolgroup-collapse": "لږ تر لږ", - "ooui-dialog-message-accept": "ښه", - "ooui-dialog-message-reject": "ناگارل", - "ooui-dialog-process-error": "يوه ستونزه رامنځ ته شوه", - "ooui-dialog-process-dismiss": "تړل", - "ooui-dialog-process-retry": "بيا هڅه", - "ooui-dialog-process-continue": "پرله پورې", - "ooui-selectfile-button-select": "يوه دوتنه وټاکئ", - "ooui-selectfile-not-supported": "د دوتنې د ټاکنې ملاتړ نه دی شوی", - "ooui-selectfile-placeholder": "کومه دوتنه نه ده ټاکل شوې", - "ooui-selectfile-dragdrop-placeholder": "دوتنه مو دلته خوشې کړئ" -} diff --git a/resources/lib/oojs-ui/i18n/pt-br.json b/resources/lib/oojs-ui/i18n/pt-br.json deleted file mode 100644 index 11c5ff3fd9..0000000000 --- a/resources/lib/oojs-ui/i18n/pt-br.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Cainamarques", - "Dianakc", - "Fúlvio", - "Helder.wiki", - "HenriqueCrang", - "Jaideraf", - "Luckas", - "OTAVIO1981", - 555, - "TheEduGobi", - "TheGabrielZaum", - "Felipe L. Ewald", - "Eduardo Addad de Oliveira" - ] - }, - "ooui-outline-control-move-down": "Mover item para baixo", - "ooui-outline-control-move-up": "Mover item para cima", - "ooui-outline-control-remove": "Remover item", - "ooui-toolbar-more": "Mais", - "ooui-toolgroup-expand": "Mais", - "ooui-toolgroup-collapse": "Menos", - "ooui-item-remove": "Remover", - "ooui-dialog-message-accept": "OK", - "ooui-dialog-message-reject": "Cancelar", - "ooui-dialog-process-error": "Algo deu errado", - "ooui-dialog-process-dismiss": "Dispensar", - "ooui-dialog-process-retry": "Tente novamente", - "ooui-dialog-process-continue": "Continuar", - "ooui-selectfile-button-select": "Selecionar um arquivo", - "ooui-selectfile-not-supported": "O selecionamento de arquivos não é suportado", - "ooui-selectfile-placeholder": "Nenhum arquivo selecionado", - "ooui-selectfile-dragdrop-placeholder": "Arraste o arquivo para cá", - "ooui-field-help": "Ajuda" -} diff --git a/resources/lib/oojs-ui/i18n/pt.json b/resources/lib/oojs-ui/i18n/pt.json deleted file mode 100644 index 7117cd904d..0000000000 --- a/resources/lib/oojs-ui/i18n/pt.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Cainamarques", - "Fúlvio", - "GoEThe", - "Hamilton Abreu", - "Helder.wiki", - "Jaideraf", - "Jdforrester", - "Luckas", - "Vitorvicentevalente", - "SandroHc", - "Jkb8", - "Athena in Wonderland" - ] - }, - "ooui-outline-control-move-down": "Mover item para baixo", - "ooui-outline-control-move-up": "Mover item para cima", - "ooui-outline-control-remove": "Remover elemento", - "ooui-toolbar-more": "Mais", - "ooui-toolgroup-expand": "Mais", - "ooui-toolgroup-collapse": "Menos", - "ooui-item-remove": "Remover", - "ooui-dialog-message-accept": "Aceitar", - "ooui-dialog-message-reject": "Cancelar", - "ooui-dialog-process-error": "Algo correu mal", - "ooui-dialog-process-dismiss": "Ignorar", - "ooui-dialog-process-retry": "Tentar novamente", - "ooui-dialog-process-continue": "Continuar", - "ooui-selectfile-button-select": "Selecionar ficheiro", - "ooui-selectfile-not-supported": "A seleção de ficheiros não é suportada", - "ooui-selectfile-placeholder": "Nenhum ficheiro selecionado", - "ooui-selectfile-dragdrop-placeholder": "Soltar ficheiro aqui", - "ooui-field-help": "Ajuda" -} diff --git a/resources/lib/oojs-ui/i18n/qqq.json b/resources/lib/oojs-ui/i18n/qqq.json deleted file mode 100644 index 6c879fd3d6..0000000000 --- a/resources/lib/oojs-ui/i18n/qqq.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Amire80", - "Beta16", - "Erik Moeller", - "Jdforrester", - "Lloffiwr", - "Mooeypoo", - "Mormegil", - "Nike", - "PoLuX124", - "Purodha", - "Raymond", - "Sagan", - "Sayak Sarkar", - "Shirayuki", - "Siebrand", - "Trevor Parscal", - "Liuxinyu970226", - "Robby" - ] - }, - "ooui-outline-control-move-down": "Tool tip for a button that moves items in a list down one place", - "ooui-outline-control-move-up": "Tool tip for a button that moves items in a list up one place", - "ooui-outline-control-remove": "Tool tip for a button that removes items from a list.\n{{Identical|Remove item}}", - "ooui-toolbar-more": "Label for the toolbar group that contains a list of all other available tools.\n{{Identical|More}}", - "ooui-toolgroup-expand": "Label for the fake tool that expands the full list of tools in a toolbar group.\n\nSee also:\n* {{msg-mw|Ooui-toolgroup-collapse}}\n{{Identical|More}}", - "ooui-toolgroup-collapse": "Label for the fake tool that collapses the full list of tools in a toolbar group.\n\nSee also:\n* {{msg-mw|Ooui-toolgroup-expand}}\n{{Identical|Fewer}}", - "ooui-item-remove": "Text for the action of removing an item\n{{Identical|Remove}}", - "ooui-dialog-message-accept": "Default label for the accept button of a message dialog\n{{Identical|OK}}", - "ooui-dialog-message-reject": "Default label for the reject button of a message dialog\n{{Identical|Cancel}}", - "ooui-dialog-process-error": "Title for process dialog error description", - "ooui-dialog-process-dismiss": "Label for process dialog dismiss error button, visible when describing errors\n{{Identical|Dismiss}}", - "ooui-dialog-process-retry": "Label for process dialog retry action button, visible when describing recoverable errors\n{{Identical|Try again}}", - "ooui-dialog-process-continue": "Label for process dialog retry action button, visible when describing only warnings\n{{Identical|Continue}}", - "ooui-selectfile-button-select": "Label for the file selection widget's select file button", - "ooui-selectfile-not-supported": "Label for the file selection widget if file selection is not supported", - "ooui-selectfile-placeholder": "Label for the file selection widget when no file is currently selected", - "ooui-selectfile-dragdrop-placeholder": "Label for the file selection widget's drop target", - "ooui-field-help": "Label for the help icon attached to a form field\n{{Identical|Help}}" -} diff --git a/resources/lib/oojs-ui/i18n/qu.json b/resources/lib/oojs-ui/i18n/qu.json deleted file mode 100644 index 6a91da2185..0000000000 --- a/resources/lib/oojs-ui/i18n/qu.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "@metadata": { - "authors": [ - "AlimanRuna", - "Jduranboger", - "Fitoschido" - ] - }, - "ooui-outline-control-move-down": "Qallawata uraykuchiy", - "ooui-outline-control-move-up": "Qallawata huqariy", - "ooui-outline-control-remove": "P'anqa sutikunata qichuy", - "ooui-toolbar-more": "Aswan", - "ooui-field-help": "Yanapa" -} diff --git a/resources/lib/oojs-ui/i18n/ro.json b/resources/lib/oojs-ui/i18n/ro.json deleted file mode 100644 index 69daa1806c..0000000000 --- a/resources/lib/oojs-ui/i18n/ro.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "@metadata": { - "authors": [ - "AlimanRuna", - "Firilacroco", - "Minisarm", - "Stelistcristi", - "Gloria sah" - ] - }, - "ooui-outline-control-move-down": "Mută elementul mai jos", - "ooui-outline-control-move-up": "Mută elementul mai sus", - "ooui-outline-control-remove": "Elimină elementul", - "ooui-toolbar-more": "Mai mult", - "ooui-toolgroup-expand": "Mai multe", - "ooui-toolgroup-collapse": "Mai puține", - "ooui-dialog-message-accept": "OK", - "ooui-dialog-message-reject": "Revocare", - "ooui-dialog-process-error": "Ceva nu a funcționat", - "ooui-dialog-process-dismiss": "Renunțare", - "ooui-dialog-process-retry": "Reîncearcă", - "ooui-dialog-process-continue": "Continuă", - "ooui-selectfile-button-select": "Alege un fișier", - "ooui-selectfile-not-supported": "Selecția de fișiere nu este acceptată", - "ooui-selectfile-placeholder": "Niciun fișier selectat", - "ooui-selectfile-dragdrop-placeholder": "Trageți fișierul aici" -} diff --git a/resources/lib/oojs-ui/i18n/roa-tara.json b/resources/lib/oojs-ui/i18n/roa-tara.json deleted file mode 100644 index f396902a2b..0000000000 --- a/resources/lib/oojs-ui/i18n/roa-tara.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Joetaras" - ] - }, - "ooui-outline-control-move-down": "Spuèste 'a vôsce sotte", - "ooui-outline-control-move-up": "Spuèste 'a vôsce sus", - "ooui-outline-control-remove": "Live 'a vôsce", - "ooui-toolbar-more": "De cchiù", - "ooui-toolgroup-expand": "De cchiù", - "ooui-toolgroup-collapse": "De mene", - "ooui-item-remove": "Live", - "ooui-dialog-message-accept": "OK", - "ooui-dialog-message-reject": "Annulle", - "ooui-dialog-process-error": "Quacche cose ha sciute stuèrte", - "ooui-dialog-process-dismiss": "Scitte", - "ooui-dialog-process-retry": "Pruève arrete", - "ooui-dialog-process-continue": "Condinue", - "ooui-selectfile-button-select": "Scacchie 'nu file", - "ooui-selectfile-not-supported": "'U scacchiamende d'u file non g'è supportate", - "ooui-selectfile-placeholder": "Nisciune file scacchiate", - "ooui-selectfile-dragdrop-placeholder": "Scitte 'u file aqquà", - "ooui-field-help": "Aijute" -} diff --git a/resources/lib/oojs-ui/i18n/ru.json b/resources/lib/oojs-ui/i18n/ru.json deleted file mode 100644 index 8ca32054ce..0000000000 --- a/resources/lib/oojs-ui/i18n/ru.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Amire80", - "DR", - "Eugrus", - "Iluvatar", - "KPu3uC B Poccuu", - "Kalan", - "MaxBioHazard", - "NBS", - "Niklem", - "Okras", - "Ole Yves", - "Putnik", - "Sunpriat", - "Yury Katkov", - "Умар", - "Камалист", - "Meshkov.a", - "Mailman", - "Stjn" - ] - }, - "ooui-outline-control-move-down": "Переместить элемент вниз", - "ooui-outline-control-move-up": "Переместить элемент вверх", - "ooui-outline-control-remove": "Удалить пункт", - "ooui-toolbar-more": "Ещё", - "ooui-toolgroup-expand": "Больше", - "ooui-toolgroup-collapse": "Меньше", - "ooui-item-remove": "Удалить", - "ooui-dialog-message-accept": "ОК", - "ooui-dialog-message-reject": "Отмена", - "ooui-dialog-process-error": "Что-то пошло не так", - "ooui-dialog-process-dismiss": "Закрыть", - "ooui-dialog-process-retry": "Попробовать ещё раз", - "ooui-dialog-process-continue": "Продолжить", - "ooui-selectfile-button-select": "Выберите файл", - "ooui-selectfile-not-supported": "Выбор файла не поддерживается", - "ooui-selectfile-placeholder": "Не выбран файл", - "ooui-selectfile-dragdrop-placeholder": "Перетащите файл сюда", - "ooui-field-help": "Справка" -} diff --git a/resources/lib/oojs-ui/i18n/sa.json b/resources/lib/oojs-ui/i18n/sa.json deleted file mode 100644 index 49f038c73d..0000000000 --- a/resources/lib/oojs-ui/i18n/sa.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "@metadata": { - "authors": [ - "NehalDaveND" - ] - }, - "ooui-outline-control-remove": "वस्तु निष्कास्यताम्", - "ooui-toolbar-more": "अधिकम्", - "ooui-toolgroup-expand": "अधिकम्", - "ooui-dialog-message-accept": "अस्तु", - "ooui-dialog-message-reject": "निरस्यताम्", - "ooui-dialog-process-retry": "पुनः चेष्ट्यताम्", - "ooui-dialog-process-continue": "निरन्तरम्" -} diff --git a/resources/lib/oojs-ui/i18n/sah.json b/resources/lib/oojs-ui/i18n/sah.json deleted file mode 100644 index 1e4bb555dd..0000000000 --- a/resources/lib/oojs-ui/i18n/sah.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Gazeb", - "HalanTul" - ] - }, - "ooui-outline-control-move-down": "Аллара түһэрэн биэр", - "ooui-outline-control-move-up": "Үөһэ таһааран биэр", - "ooui-outline-control-remove": "Сот", - "ooui-toolbar-more": "Эбии", - "ooui-toolgroup-expand": "Эбии", - "ooui-toolgroup-collapse": "Кыччат", - "ooui-dialog-message-accept": "Сөп", - "ooui-dialog-message-reject": "Салҕаама", - "ooui-dialog-process-error": "Туга эрэ сатаммата", - "ooui-dialog-process-dismiss": "Сап", - "ooui-dialog-process-retry": "Хатылаан көр", - "ooui-dialog-process-continue": "Салгыы", - "ooui-selectfile-button-select": "Билэни тал", - "ooui-selectfile-not-supported": "Билэни талыы өйөммөт", - "ooui-selectfile-placeholder": "Биир да билэ талыллыбатах", - "ooui-selectfile-dragdrop-placeholder": "Билэни манна сыҕарыт" -} diff --git a/resources/lib/oojs-ui/i18n/scn.json b/resources/lib/oojs-ui/i18n/scn.json deleted file mode 100644 index 22a212f9af..0000000000 --- a/resources/lib/oojs-ui/i18n/scn.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Gazeb", - "Gmelfi", - "HalanTul", - "Gloria sah" - ] - }, - "ooui-outline-control-move-down": "Sposta di sutta", - "ooui-outline-control-move-up": "Sposta di supra", - "ooui-toolbar-more": "Àutri cosi" -} diff --git a/resources/lib/oojs-ui/i18n/sco.json b/resources/lib/oojs-ui/i18n/sco.json deleted file mode 100644 index 794d71f720..0000000000 --- a/resources/lib/oojs-ui/i18n/sco.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "@metadata": { - "authors": [ - "John Reid", - "Foxj" - ] - }, - "ooui-outline-control-move-down": "Muiv eetem doon", - "ooui-outline-control-move-up": "Muiv eetem up", - "ooui-outline-control-remove": "Remuiv eetem", - "ooui-toolbar-more": "Mair", - "ooui-toolgroup-expand": "Mair", - "ooui-toolgroup-collapse": "Less", - "ooui-dialog-message-accept": "OK", - "ooui-dialog-message-reject": "Cancel", - "ooui-dialog-process-error": "Sommit went wrang", - "ooui-dialog-process-dismiss": "Close", - "ooui-dialog-process-retry": "Hae aniter gae", - "ooui-dialog-process-continue": "Conteena", - "ooui-selectfile-not-supported": "Cannae pick ony files", - "ooui-selectfile-placeholder": "Nae file selectit" -} diff --git a/resources/lib/oojs-ui/i18n/sd.json b/resources/lib/oojs-ui/i18n/sd.json deleted file mode 100644 index dc14339c38..0000000000 --- a/resources/lib/oojs-ui/i18n/sd.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Mehtab ahmed" - ] - }, - "ooui-outline-control-move-down": "شيءِ کي هيٺ چوريو", - "ooui-outline-control-move-up": "شيءِ کي مٿي چوريو", - "ooui-outline-control-remove": "شيءِ هٽايو", - "ooui-toolbar-more": "وڌيڪ", - "ooui-toolgroup-expand": "وڌيڪ", - "ooui-toolgroup-collapse": "گھٽ تر", - "ooui-dialog-message-accept": "ٺيڪ", - "ooui-dialog-message-reject": "رد", - "ooui-dialog-process-error": "ڪا غلطي ٿي", - "ooui-dialog-process-dismiss": "برخاست ڪريو", - "ooui-dialog-process-retry": "ٻيهر ڪوشش ڪريو", - "ooui-dialog-process-continue": "جاري رکو", - "ooui-selectfile-button-select": "ڪو فائيل چونڊِو", - "ooui-selectfile-not-supported": "فائيل جي چونڊ سپورٽ نٿي ڪئي وڃي", - "ooui-selectfile-placeholder": "ڪوبه فائيل چونڊيو نه ويو آهي", - "ooui-selectfile-dragdrop-placeholder": "فائيل کي هتي ڪيرايو" -} diff --git a/resources/lib/oojs-ui/i18n/sh.json b/resources/lib/oojs-ui/i18n/sh.json deleted file mode 100644 index 532ba3f737..0000000000 --- a/resources/lib/oojs-ui/i18n/sh.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "@metadata": { - "authors": [ - "OC Ripper", - "Sf" - ] - }, - "ooui-outline-control-move-down": "Pomakni stavku dolje", - "ooui-outline-control-move-up": "Premjesti stavku gore", - "ooui-outline-control-remove": "Ukloni stavku", - "ooui-toolbar-more": "Više", - "ooui-toolgroup-expand": "Više", - "ooui-toolgroup-collapse": "Manje", - "ooui-dialog-message-accept": "U redu", - "ooui-dialog-message-reject": "Otkaži", - "ooui-dialog-process-error": "Nešto je pošlo naopako", - "ooui-dialog-process-dismiss": "Odbaci", - "ooui-dialog-process-retry": "Pokušajte ponovo", - "ooui-dialog-process-continue": "Nastavi", - "ooui-selectfile-button-select": "Izaberi datoteku", - "ooui-selectfile-not-supported": "Izbor datoteke nije podržan", - "ooui-selectfile-placeholder": "Nijedna datoteka nije odabrana", - "ooui-selectfile-dragdrop-placeholder": "Prevuci datoteku ovdje" -} diff --git a/resources/lib/oojs-ui/i18n/shn.json b/resources/lib/oojs-ui/i18n/shn.json deleted file mode 100644 index a93e616aa5..0000000000 --- a/resources/lib/oojs-ui/i18n/shn.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Saimawnkham" - ] - }, - "ooui-outline-control-move-down": "ၶၢႆႉလူင်းၽၢႆႇတႂ်ႈ", - "ooui-outline-control-move-up": "ၶၢႆႉၶိုၼ်ႈၽၢႆႇၼိူဝ်", - "ooui-outline-control-remove": "ထွၼ်ပႅတ်ႈ ဢၼ်ၶဝ်ႈပႃး", - "ooui-toolbar-more": "ၼမ်ႉလိူဝ်", - "ooui-toolgroup-expand": "ၼမ်လိူဝ်", - "ooui-toolgroup-collapse": "ဢေႇလိူဝ်", - "ooui-dialog-message-accept": "ဢူဝ်ႇၶေႇ", - "ooui-dialog-message-reject": "ဢမ်ႇႁဵတ်း", - "ooui-dialog-process-error": "သေဢၼ်ဢၼ်ၽိတ်းပိူင်ႈဝႆႉ", - "ooui-dialog-process-dismiss": "လူတ်းၵၢၼ်", - "ooui-dialog-process-retry": "ၶတ်းၸႂ်ထႅင်ႈ", - "ooui-dialog-process-continue": "သိုပ်ႇၼႃႈ", - "ooui-selectfile-button-select": "လိူၵ်ႈၾၢႆႇ", - "ooui-selectfile-not-supported": "လွင်ႈလိူၵ်ႈၽၢႆႇၼႆႉ ဢမ်ႇၵမ်ႉထႅမ်ဝႆႉပၼ်", - "ooui-selectfile-placeholder": "ဢမ်ႇလႆႈလိူၵ်ႈ ၾၢႆႇသင်ဝႆႉ", - "ooui-selectfile-dragdrop-placeholder": "ဢဝ်ၾၢႆႇ သႂ်ႇတီႈၼႆႉ" -} diff --git a/resources/lib/oojs-ui/i18n/si.json b/resources/lib/oojs-ui/i18n/si.json deleted file mode 100644 index 5988773b14..0000000000 --- a/resources/lib/oojs-ui/i18n/si.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Singhalawap", - "පසිඳු කාවින්ද", - "ශ්වෙත" - ] - }, - "ooui-outline-control-move-down": "අයිතමය පහලටදමන්න", - "ooui-outline-control-move-up": "අයිතමය ඉහලටදමන්න" -} diff --git a/resources/lib/oojs-ui/i18n/sk.json b/resources/lib/oojs-ui/i18n/sk.json deleted file mode 100644 index 6de4f7aab5..0000000000 --- a/resources/lib/oojs-ui/i18n/sk.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Mimarik", - "Teslaton", - "Kusavica", - "TomášPolonec" - ] - }, - "ooui-outline-control-move-down": "Posunúť položku nadol", - "ooui-outline-control-move-up": "Posunúť položku nahor", - "ooui-outline-control-remove": "Odstrániť položku", - "ooui-toolbar-more": "Viac", - "ooui-toolgroup-expand": "Viac", - "ooui-toolgroup-collapse": "Menej", - "ooui-item-remove": "Odstrániť", - "ooui-dialog-message-accept": "OK", - "ooui-dialog-message-reject": "Zrušiť", - "ooui-dialog-process-error": "Niečo sa pokazilo", - "ooui-dialog-process-dismiss": "Zrušiť", - "ooui-dialog-process-retry": "Skúsiť znova", - "ooui-dialog-process-continue": "Pokračovať", - "ooui-selectfile-button-select": "Vybrať súbor", - "ooui-selectfile-not-supported": "Výber súboru nie je podporovaný", - "ooui-selectfile-placeholder": "Nie je vybraný žiadny súbor", - "ooui-selectfile-dragdrop-placeholder": "Sem umiestni súbor", - "ooui-field-help": "Pomoc" -} diff --git a/resources/lib/oojs-ui/i18n/skr-arab.json b/resources/lib/oojs-ui/i18n/skr-arab.json deleted file mode 100644 index 1a2af2b07e..0000000000 --- a/resources/lib/oojs-ui/i18n/skr-arab.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Saraiki" - ] - }, - "ooui-toolbar-more": "ٻئے", - "ooui-toolgroup-expand": "ٻئے", - "ooui-toolgroup-collapse": "گھٹ", - "ooui-item-remove": "ہٹاؤ", - "ooui-dialog-message-accept": "ٹھیک ہے", - "ooui-dialog-message-reject": "منسوخ", - "ooui-dialog-process-error": "کجھ خراب تھی ڳئے", - "ooui-dialog-process-dismiss": "مکاؤ", - "ooui-dialog-process-retry": "ولدا کوشش کرو", - "ooui-dialog-process-continue": "جاری رکھو", - "ooui-selectfile-button-select": "فائل چݨو", - "ooui-selectfile-placeholder": "کوئی فائل کائنی چُݨی" -} diff --git a/resources/lib/oojs-ui/i18n/sl.json b/resources/lib/oojs-ui/i18n/sl.json deleted file mode 100644 index 8e1354994e..0000000000 --- a/resources/lib/oojs-ui/i18n/sl.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Dbc334", - "Eleassar", - "Pinky sl", - "Yerpo", - "Upwinxp" - ] - }, - "ooui-outline-control-move-down": "Prestavi predmet nižje", - "ooui-outline-control-move-up": "Prestavi predmet višje", - "ooui-outline-control-remove": "Odstrani vnos", - "ooui-toolbar-more": "Več", - "ooui-toolgroup-expand": "Več", - "ooui-toolgroup-collapse": "Manj", - "ooui-item-remove": "Odstrani", - "ooui-dialog-message-accept": "V redu", - "ooui-dialog-message-reject": "Prekliči", - "ooui-dialog-process-error": "Nekaj je šlo narobe", - "ooui-dialog-process-dismiss": "Skrij", - "ooui-dialog-process-retry": "Poskusi znova", - "ooui-dialog-process-continue": "Nadaljuj", - "ooui-selectfile-button-select": "Izberite datoteko", - "ooui-selectfile-not-supported": "Izbira datoteke ni podprta", - "ooui-selectfile-placeholder": "Nobena datoteka ni izbrana", - "ooui-selectfile-dragdrop-placeholder": "Tukaj spustite datoteko", - "ooui-field-help": "Pomoč" -} diff --git a/resources/lib/oojs-ui/i18n/sq.json b/resources/lib/oojs-ui/i18n/sq.json deleted file mode 100644 index 679f1a6f80..0000000000 --- a/resources/lib/oojs-ui/i18n/sq.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Euriditi", - "Kushtrim", - "Elioqoshi", - "GretaDoci", - "Gertakapllani", - "Techlik", - "Liridon" - ] - }, - "ooui-outline-control-move-down": "Zhvendose artikullin më poshtë", - "ooui-outline-control-move-up": "Zhvendose artikullin më lart", - "ooui-outline-control-remove": "Hiq artikullin", - "ooui-toolbar-more": "Më tepër...", - "ooui-toolgroup-expand": "Më tepër...", - "ooui-toolgroup-collapse": "Më pak", - "ooui-dialog-message-accept": "Në rregull", - "ooui-dialog-message-reject": "Anullo", - "ooui-dialog-process-error": "Diçka shkoi keq", - "ooui-dialog-process-dismiss": "Largoje", - "ooui-dialog-process-retry": "Provo përsëri", - "ooui-dialog-process-continue": "Vazhdo", - "ooui-selectfile-button-select": "Përzgjidhni një skedë", - "ooui-selectfile-not-supported": "Skedari i përzgjedhur nuk përkrahet", - "ooui-selectfile-placeholder": "Nuk është zgjedhur asnjë skedar", - "ooui-selectfile-dragdrop-placeholder": "Vendose skedën këtu" -} diff --git a/resources/lib/oojs-ui/i18n/sr-ec.json b/resources/lib/oojs-ui/i18n/sr-ec.json deleted file mode 100644 index 9738938d68..0000000000 --- a/resources/lib/oojs-ui/i18n/sr-ec.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Milicevic01", - "Nikola Smolenski", - "Милан Јелисавчић", - "Zoranzoki21", - "Obsuser", - "Prevodim", - "BadDog" - ] - }, - "ooui-outline-control-move-down": "Преместите ставку надоле", - "ooui-outline-control-move-up": "Преместите ставку нагоре", - "ooui-outline-control-remove": "Уклони ставку", - "ooui-toolbar-more": "Више", - "ooui-toolgroup-expand": "Више", - "ooui-toolgroup-collapse": "Мање", - "ooui-item-remove": "Уклони", - "ooui-dialog-message-accept": "У реду", - "ooui-dialog-message-reject": "Откажи", - "ooui-dialog-process-error": "Нешто није у реду", - "ooui-dialog-process-dismiss": "Одбаци", - "ooui-dialog-process-retry": "Покушај поново", - "ooui-dialog-process-continue": "Настави", - "ooui-selectfile-button-select": "Изабери датотеку", - "ooui-selectfile-not-supported": "Избор датотеке није подржан", - "ooui-selectfile-placeholder": "Није изабрана ниједна датотека", - "ooui-selectfile-dragdrop-placeholder": "Овде отпустите датотеку", - "ooui-field-help": "Помоћ" -} diff --git a/resources/lib/oojs-ui/i18n/sr-el.json b/resources/lib/oojs-ui/i18n/sr-el.json deleted file mode 100644 index cd286e809b..0000000000 --- a/resources/lib/oojs-ui/i18n/sr-el.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Milicevic01", - "Prevodim" - ] - }, - "ooui-outline-control-move-down": "Premesti stavku na dole", - "ooui-outline-control-move-up": "Premesti stavku na gore", - "ooui-outline-control-remove": "Ukloni stavku", - "ooui-toolbar-more": "Više", - "ooui-toolgroup-expand": "Više", - "ooui-toolgroup-collapse": "Manje", - "ooui-item-remove": "Ukloni", - "ooui-dialog-message-accept": "U redu", - "ooui-dialog-message-reject": "Otkaži", - "ooui-dialog-process-error": "Nešto je pošlo naopako", - "ooui-dialog-process-dismiss": "Odbaci", - "ooui-dialog-process-retry": "Pokušaj ponovo", - "ooui-dialog-process-continue": "Nastavi", - "ooui-selectfile-button-select": "Izaberi datoteku", - "ooui-selectfile-not-supported": "Odabir datoteke nije podržan", - "ooui-selectfile-placeholder": "Nije izabrana nijedna datoteka", - "ooui-selectfile-dragdrop-placeholder": "Prevuci datoteku ovde" -} diff --git a/resources/lib/oojs-ui/i18n/su.json b/resources/lib/oojs-ui/i18n/su.json deleted file mode 100644 index 2824d5bd43..0000000000 --- a/resources/lib/oojs-ui/i18n/su.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Kandar", - "Uchup19" - ] - }, - "ooui-outline-control-move-down": "Pindahkeun ka handap", - "ooui-outline-control-move-up": "Pindahkeun ka luhur", - "ooui-outline-control-remove": "Hapus", - "ooui-toolbar-more": "Lobaan", - "ooui-toolgroup-expand": "Lobaan", - "ooui-toolgroup-collapse": "Saeutikan", - "ooui-item-remove": "Pupus", - "ooui-dialog-message-accept": "Heug", - "ooui-dialog-message-reject": "Bolay", - "ooui-dialog-process-error": "Aya nu teu bener", - "ooui-dialog-process-dismiss": "Tutup", - "ooui-dialog-process-retry": "Cobaan deui", - "ooui-dialog-process-continue": "Teruskeun", - "ooui-selectfile-button-select": "Pilih berkas", - "ooui-selectfile-not-supported": "Pamilihan berkas teu dirojong", - "ooui-selectfile-placeholder": "Taya berkas anu dipilih", - "ooui-selectfile-dragdrop-placeholder": "Leupaskeun berkas di dieu" -} diff --git a/resources/lib/oojs-ui/i18n/sv.json b/resources/lib/oojs-ui/i18n/sv.json deleted file mode 100644 index c49b39258c..0000000000 --- a/resources/lib/oojs-ui/i18n/sv.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Ainali", - "Haxpett", - "Jopparn", - "Knuckles", - "Magol", - "Milicevic01", - "Per", - "Sendelbach", - "Skalman", - "WikiPhoenix", - "Lokal Profil", - "Warrakkk", - "Bengtsson96" - ] - }, - "ooui-outline-control-move-down": "Flytta ned objekt", - "ooui-outline-control-move-up": "Flytta upp objekt", - "ooui-outline-control-remove": "Ta bort objekt", - "ooui-toolbar-more": "Mer", - "ooui-toolgroup-expand": "Fler", - "ooui-toolgroup-collapse": "Färre", - "ooui-item-remove": "Ta bort", - "ooui-dialog-message-accept": "OK", - "ooui-dialog-message-reject": "Avbryt", - "ooui-dialog-process-error": "Något gick fel", - "ooui-dialog-process-dismiss": "Stäng", - "ooui-dialog-process-retry": "Försök igen", - "ooui-dialog-process-continue": "Fortsätt", - "ooui-selectfile-button-select": "Välj en fil", - "ooui-selectfile-not-supported": "Filval stöds inte", - "ooui-selectfile-placeholder": "Ingen fil är vald", - "ooui-selectfile-dragdrop-placeholder": "Släpp filen här", - "ooui-field-help": "Hjälp" -} diff --git a/resources/lib/oojs-ui/i18n/sw.json b/resources/lib/oojs-ui/i18n/sw.json deleted file mode 100644 index 598acbcde5..0000000000 --- a/resources/lib/oojs-ui/i18n/sw.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Lloffiwr", - "Muddyb Blast Producer", - "Muddyb" - ] - }, - "ooui-outline-control-move-down": "Sogeza kipengee chini", - "ooui-outline-control-move-up": "Sogeza kipengee juu", - "ooui-outline-control-remove": "Toa kitu", - "ooui-toolbar-more": "Zaidi", - "ooui-dialog-message-accept": "Sawa", - "ooui-dialog-message-reject": "Batilisha", - "ooui-dialog-process-retry": "Jaribu tena" -} diff --git a/resources/lib/oojs-ui/i18n/ta.json b/resources/lib/oojs-ui/i18n/ta.json deleted file mode 100644 index 6e7b249483..0000000000 --- a/resources/lib/oojs-ui/i18n/ta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Jayarathina", - "Sank", - "Shanmugamp7", - "மதனாஹரன்", - "ElangoRamanujam", - "Info-farmer" - ] - }, - "ooui-outline-control-move-down": "உருப்படியை கீழிடு", - "ooui-outline-control-move-up": "உருப்படியை மேலிடு", - "ooui-outline-control-remove": "உருப்படியை நீக்கு", - "ooui-toolbar-more": "மேலும்", - "ooui-toolgroup-expand": "மேலும்", - "ooui-toolgroup-collapse": "குறைவாக", - "ooui-dialog-message-accept": "சரி", - "ooui-dialog-message-reject": "கைவிடுக", - "ooui-dialog-process-error": "ஏதோ தவறாகியுள்ளது", - "ooui-dialog-process-dismiss": "அகற்று", - "ooui-dialog-process-retry": "மீண்டும் முயல்க", - "ooui-dialog-process-continue": "தொடரவும்", - "ooui-selectfile-not-supported": "கோப்புத்தேர்வு ஆதரவாக இல்லை", - "ooui-selectfile-placeholder": "எக்கோப்பும் தெரிவாகவில்லை" -} diff --git a/resources/lib/oojs-ui/i18n/tay.json b/resources/lib/oojs-ui/i18n/tay.json deleted file mode 100644 index 12a6f957f6..0000000000 --- a/resources/lib/oojs-ui/i18n/tay.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Hitaypayan", - "Translatealcd" - ] - }, - "ooui-outline-control-move-down": "Hz’aniy tay mkyahu’ quw binkgan lmlamu’", - "ooui-outline-control-move-up": "Hz’aniy tay mkraya’ quw binkgan lmlamu’", - "ooui-outline-control-remove": "Laxiy quw pin’ubuy binkgan lmlamu", - "ooui-toolbar-more": "Pzyux na’", - "ooui-toolgroup-collapse": "Cikuy hazi’", - "ooui-item-remove": "Laxan", - "ooui-dialog-message-accept": "Wal balay", - "ooui-dialog-message-reject": "Laxan", - "ooui-dialog-process-dismiss": "Ql’iy", - "ooui-dialog-process-retry": "Tlamiy lawziy", - "ooui-dialog-process-continue": "Siy lhingiy", - "ooui-selectfile-placeholder": "Ini’ wzyagiy na’ Tang’an" -} diff --git a/resources/lib/oojs-ui/i18n/te.json b/resources/lib/oojs-ui/i18n/te.json deleted file mode 100644 index dfa0eb4bce..0000000000 --- a/resources/lib/oojs-ui/i18n/te.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Arjunaraoc", - "Jayarathina", - "Sank", - "Shanmugamp7", - "Veeven", - "Visdaviva", - "மதனாஹரன்", - "రహ్మానుద్దీన్", - "Chaduvari" - ] - }, - "ooui-outline-control-move-down": "అంశాన్ని కిందికి జరుపు", - "ooui-outline-control-move-up": "అంశాన్ని పైకి జరుపు", - "ooui-outline-control-remove": "అంశాన్ని తీసివేయి", - "ooui-toolbar-more": "మరిన్ని", - "ooui-toolgroup-expand": "మరిన్ని", - "ooui-toolgroup-collapse": "కొన్ని", - "ooui-item-remove": "తొలగించు", - "ooui-dialog-message-accept": "సరే", - "ooui-dialog-message-reject": "రద్దుచేయి", - "ooui-dialog-process-error": "ఏదో పొరపాటు జరిగింది", - "ooui-dialog-process-dismiss": "తీసివేయి", - "ooui-dialog-process-retry": "మళ్ళీ ప్రయత్నించు", - "ooui-dialog-process-continue": "కొనసాగించు", - "ooui-selectfile-button-select": "దస్త్రాన్ని ఎంచుకోండి", - "ooui-selectfile-not-supported": "దస్త్రపు ఎంపిక అందుబాటులో లేదు", - "ooui-selectfile-placeholder": "దస్త్రం దేన్నీ ఎంచుకోలేదు", - "ooui-selectfile-dragdrop-placeholder": "దస్త్రాన్ని ఇక్కడ పడేయండి", - "ooui-field-help": "సహాయం" -} diff --git a/resources/lib/oojs-ui/i18n/tg-cyrl.json b/resources/lib/oojs-ui/i18n/tg-cyrl.json deleted file mode 100644 index 1429bedda1..0000000000 --- a/resources/lib/oojs-ui/i18n/tg-cyrl.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Ibrahim" - ] - }, - "ooui-outline-control-move-down": "Ҳаракати мавод ба поён", - "ooui-outline-control-move-up": "Ҳаракати мавод ба боло", - "ooui-outline-control-remove": "Ҳазви мавод", - "ooui-toolbar-more": "Бештар" -} diff --git a/resources/lib/oojs-ui/i18n/th.json b/resources/lib/oojs-ui/i18n/th.json deleted file mode 100644 index 94527935cd..0000000000 --- a/resources/lib/oojs-ui/i18n/th.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Supasate", - "Taweetham" - ] - }, - "ooui-outline-control-move-down": "เลื่อนรายการลง", - "ooui-outline-control-move-up": "ย้ายรายการขึ้น" -} diff --git a/resources/lib/oojs-ui/i18n/tl.json b/resources/lib/oojs-ui/i18n/tl.json deleted file mode 100644 index c0dbd5fd2c..0000000000 --- a/resources/lib/oojs-ui/i18n/tl.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "@metadata": { - "authors": [ - "AnakngAraw", - "Sky Harbor", - "Jewel457" - ] - }, - "ooui-outline-control-move-down": "Ilipat ang aytem pababa", - "ooui-outline-control-move-up": "Ilipat ang aytem pataas", - "ooui-outline-control-remove": "Tanggalin ang aytem", - "ooui-toolbar-more": "Marami pa", - "ooui-toolgroup-expand": "Maraming iba pa", - "ooui-toolgroup-collapse": "Kakaunti", - "ooui-dialog-message-accept": "Sige", - "ooui-dialog-message-reject": "Huwag ituloy", - "ooui-dialog-process-error": "May pagkakamali", - "ooui-dialog-process-dismiss": "Isa-isantabi", - "ooui-dialog-process-retry": "Subuking muli", - "ooui-dialog-process-continue": "Magpatuloy", - "ooui-selectfile-not-supported": "Ang pagpili ng file ay hindi kinakatigan", - "ooui-selectfile-placeholder": "Walang piniling file" -} diff --git a/resources/lib/oojs-ui/i18n/tr.json b/resources/lib/oojs-ui/i18n/tr.json deleted file mode 100644 index 36adc50ad8..0000000000 --- a/resources/lib/oojs-ui/i18n/tr.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Emperyan", - "Incelemeelemani", - "LuCKY", - "Maidis", - "Rapsar", - "Talha Samil Cakir", - "TurkishStyles", - "Sayginer", - "Meelo", - "McAang", - "Uğurkent", - "1917 Ekim Devrimi", - "Hedda" - ] - }, - "ooui-outline-control-move-down": "Ögeyi aşağı taşı", - "ooui-outline-control-move-up": "Ögeyi yukarı taşı", - "ooui-outline-control-remove": "Ögeyi kaldır", - "ooui-toolbar-more": "Daha fazla", - "ooui-toolgroup-expand": "Dahası", - "ooui-toolgroup-collapse": "Daha az", - "ooui-item-remove": "Kaldır", - "ooui-dialog-message-accept": "Tamam", - "ooui-dialog-message-reject": "İptal", - "ooui-dialog-process-error": "Bir şeyler yanlış gitti", - "ooui-dialog-process-dismiss": "Kapat", - "ooui-dialog-process-retry": "Tekrar dene", - "ooui-dialog-process-continue": "Devam et", - "ooui-selectfile-button-select": "Dosya seç", - "ooui-selectfile-not-supported": "Dosya seçimi desteklenmiyor", - "ooui-selectfile-placeholder": "Herhangi bir dosya seçilmedi", - "ooui-selectfile-dragdrop-placeholder": "Dosyayı buraya aç", - "ooui-field-help": "Yardım" -} diff --git a/resources/lib/oojs-ui/i18n/tt-cyrl.json b/resources/lib/oojs-ui/i18n/tt-cyrl.json deleted file mode 100644 index 335e509e32..0000000000 --- a/resources/lib/oojs-ui/i18n/tt-cyrl.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Ajdar", - "Ильнар" - ] - }, - "ooui-outline-control-move-down": "Элементны аска күчерү", - "ooui-outline-control-move-up": "Элементны өскә күчерү", - "ooui-outline-control-remove": "Пунктны бетерү", - "ooui-toolbar-more": "Тагын", - "ooui-toolgroup-expand": "Күбрәк", - "ooui-toolgroup-collapse": "Азрак", - "ooui-dialog-message-accept": "ОК", - "ooui-dialog-message-reject": "Баш тарту", - "ooui-dialog-process-error": "Нәрсәдер килеп чыкмады", - "ooui-dialog-process-dismiss": "Ябу", - "ooui-dialog-process-retry": "Кабатлау", - "ooui-dialog-process-continue": "Дәвам итү", - "ooui-selectfile-button-select": "Файлны сайлагыз", - "ooui-selectfile-not-supported": "Файл сайлау хупланмый", - "ooui-selectfile-placeholder": "Файл сайланмаган", - "ooui-selectfile-dragdrop-placeholder": "Файлны монда куегыз" -} diff --git a/resources/lib/oojs-ui/i18n/tw.json b/resources/lib/oojs-ui/i18n/tw.json deleted file mode 100644 index 2cc3fb16dc..0000000000 --- a/resources/lib/oojs-ui/i18n/tw.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Celestinesucess", - "Ed g2s" - ] - }, - "ooui-outline-control-move-down": "Pia ade kɔ ase", - "ooui-outline-control-move-up": "Pia ade kɔ soro", - "ooui-toolbar-more": "Bio", - "ooui-toolgroup-expand": "Bio", - "ooui-toolgroup-collapse": "Kakraa", - "ooui-item-remove": "Yi", - "ooui-dialog-message-accept": "Yoo", - "ooui-dialog-message-reject": "Twa mu", - "ooui-dialog-process-error": "Bibi ankɔ yie", - "ooui-dialog-process-retry": "Yɛ bio", - "ooui-dialog-process-continue": "Kɔso", - "ooui-field-help": "Mmoa" -} diff --git a/resources/lib/oojs-ui/i18n/ug-arab.json b/resources/lib/oojs-ui/i18n/ug-arab.json deleted file mode 100644 index b19dd0d36c..0000000000 --- a/resources/lib/oojs-ui/i18n/ug-arab.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Sahran", - "Tel'et", - "Tifinaghes" - ] - }, - "ooui-outline-control-move-down": "تۆۋەنگە يۆتكە", - "ooui-outline-control-move-up": "يۇقۇرىغا يۆتكە", - "ooui-outline-control-remove": "ئۆچۈر", - "ooui-toolbar-more": "تېخىمۇ كۆپ", - "ooui-toolgroup-expand": "تېخىمۇ كۆپ", - "ooui-toolgroup-collapse": "ئاز", - "ooui-item-remove": "چىقىرىۋەت", - "ooui-dialog-message-accept": "تامام", - "ooui-dialog-message-reject": "ۋاز كەچ", - "ooui-dialog-process-error": "نامەلۇم خاتالىق كۆرۈلدى", - "ooui-dialog-process-dismiss": "چىقىرىۋەت", - "ooui-dialog-process-retry": "قايتا سىنا", - "ooui-dialog-process-continue": "داۋاملاشتۇر", - "ooui-selectfile-button-select": "بىر ھۆججەت تاللا", - "ooui-selectfile-not-supported": "تاللانغان ھۆججەتتە مەسىلە بار", - "ooui-selectfile-placeholder": "ھۆججەت تاللانمىدى", - "ooui-selectfile-dragdrop-placeholder": "ھۆججەتنى بۇ يەرگە تاشلاڭ" -} diff --git a/resources/lib/oojs-ui/i18n/uk.json b/resources/lib/oojs-ui/i18n/uk.json deleted file mode 100644 index d5c312d12b..0000000000 --- a/resources/lib/oojs-ui/i18n/uk.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "@metadata": { - "authors": [ - "AS", - "Aced", - "Ahonc", - "Andriykopanytsia", - "Base", - "Perohanych", - "RLuts", - "Sahran", - "Sergento", - "Steve.rusyn", - "SteveR", - "Tel'et", - "Tifinaghes", - "Ата", - "Piramidion", - "A1", - "Dars", - "Esk78" - ] - }, - "ooui-outline-control-move-down": "Перемістити елемент униз", - "ooui-outline-control-move-up": "Перемістити елемент вгору", - "ooui-outline-control-remove": "Видалити елемент", - "ooui-toolbar-more": "Більше", - "ooui-toolgroup-expand": "Більше", - "ooui-toolgroup-collapse": "Менше", - "ooui-item-remove": "Вилучити", - "ooui-dialog-message-accept": "Готово", - "ooui-dialog-message-reject": "Скасувати", - "ooui-dialog-process-error": "Щось пішло не так", - "ooui-dialog-process-dismiss": "Приховати", - "ooui-dialog-process-retry": "Спробуйте ще раз", - "ooui-dialog-process-continue": "Продовжити", - "ooui-selectfile-button-select": "Оберіть файл", - "ooui-selectfile-not-supported": "Вибір файлу не підтримується", - "ooui-selectfile-placeholder": "Жодного файлу не вибрано", - "ooui-selectfile-dragdrop-placeholder": "Помістіть файл сюди", - "ooui-field-help": "Допомога" -} diff --git a/resources/lib/oojs-ui/i18n/ur.json b/resources/lib/oojs-ui/i18n/ur.json deleted file mode 100644 index fcf9b1f469..0000000000 --- a/resources/lib/oojs-ui/i18n/ur.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Muhammad Shuaib", - "Zainab Meher", - "BukhariSaeed" - ] - }, - "ooui-outline-control-move-down": "مد نیچے کھسکائیں", - "ooui-outline-control-move-up": " مداوپرلےجائیں", - "ooui-outline-control-remove": " مدحذف کریں", - "ooui-toolbar-more": "مزید", - "ooui-toolgroup-expand": "مزید", - "ooui-toolgroup-collapse": "کم کریں", - "ooui-item-remove": "ھٹادیں", - "ooui-dialog-message-accept": "ٹھیک", - "ooui-dialog-message-reject": "منسوخ کریں", - "ooui-dialog-process-error": "کچھ غلط ہو گیا ہے", - "ooui-dialog-process-dismiss": "موقوف کریں", - "ooui-dialog-process-retry": "دوبارہ کوشش کریں", - "ooui-dialog-process-continue": "جاری رکھیں", - "ooui-selectfile-button-select": "فائل منتخب کریں", - "ooui-selectfile-not-supported": "فائل کا انتخاب معاونت شدہ نہیں", - "ooui-selectfile-placeholder": "کوئی فائل منتخب نہیں کی گئ", - "ooui-selectfile-dragdrop-placeholder": "فائل یہاں چھوڑیں" -} diff --git a/resources/lib/oojs-ui/i18n/uz.json b/resources/lib/oojs-ui/i18n/uz.json deleted file mode 100644 index 7c6263e4f7..0000000000 --- a/resources/lib/oojs-ui/i18n/uz.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "@metadata": { - "authors": [ - "CoderSI", - "Noor2020", - "Sociologist", - "පසිඳු කාවින්ද" - ] - }, - "ooui-outline-control-move-down": "Elementni pastga koʻchirish", - "ooui-outline-control-move-up": "Elementni yuqoriga koʻchirish", - "ooui-toolbar-more": "Yana" -} diff --git a/resources/lib/oojs-ui/i18n/vec.json b/resources/lib/oojs-ui/i18n/vec.json deleted file mode 100644 index 4a1685b6c7..0000000000 --- a/resources/lib/oojs-ui/i18n/vec.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Candalua", - "GatoSelvadego", - "Gloria sah", - "Fitoschido" - ] - }, - "ooui-outline-control-move-down": "Sposta in baso", - "ooui-outline-control-move-up": "Sposta in sima", - "ooui-toolbar-more": "Altro", - "ooui-toolgroup-expand": "Piassè", - "ooui-toolgroup-collapse": "Manco", - "ooui-dialog-message-accept": "Va ben", - "ooui-dialog-message-reject": "Fa gnente", - "ooui-dialog-process-error": "Xe 'ndà storto calcossa", - "ooui-dialog-process-dismiss": "Scondi", - "ooui-dialog-process-retry": "Proa da novo", - "ooui-dialog-process-continue": "Và vanti", - "ooui-selectfile-button-select": "Siegli un file", - "ooui-selectfile-dragdrop-placeholder": "Mola zo el file chì rento", - "ooui-field-help": "Ajuto" -} diff --git a/resources/lib/oojs-ui/i18n/vep.json b/resources/lib/oojs-ui/i18n/vep.json deleted file mode 100644 index b6ad0929c6..0000000000 --- a/resources/lib/oojs-ui/i18n/vep.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Sebranik" - ] - }, - "ooui-toolgroup-expand": "Enamba" -} diff --git a/resources/lib/oojs-ui/i18n/vi.json b/resources/lib/oojs-ui/i18n/vi.json deleted file mode 100644 index 1664d9b9e7..0000000000 --- a/resources/lib/oojs-ui/i18n/vi.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Cheers!", - "Jdforrester", - "Minh Nguyen", - "Max20091", - "Anh88" - ] - }, - "ooui-outline-control-move-down": "Chuyển mục xuống", - "ooui-outline-control-move-up": "Chuyển mục lên", - "ooui-outline-control-remove": "Xóa mục", - "ooui-toolbar-more": "Thêm", - "ooui-toolgroup-expand": "Mở rộng", - "ooui-toolgroup-collapse": "Rút gọn", - "ooui-item-remove": "Loại bỏ", - "ooui-dialog-message-accept": "OK", - "ooui-dialog-message-reject": "Hủy bỏ", - "ooui-dialog-process-error": "Có thứ gì đó bị lỗi", - "ooui-dialog-process-dismiss": "Bỏ qua", - "ooui-dialog-process-retry": "Thử lại", - "ooui-dialog-process-continue": "Tiếp tục", - "ooui-selectfile-button-select": "Chọn tập tin", - "ooui-selectfile-not-supported": "Không hỗ trợ việc chọn tập tin", - "ooui-selectfile-placeholder": "Không có tập tin nào được chọn", - "ooui-selectfile-dragdrop-placeholder": "Thả tập tin vào đây", - "ooui-field-help": "Trợ giúp" -} diff --git a/resources/lib/oojs-ui/i18n/vo.json b/resources/lib/oojs-ui/i18n/vo.json deleted file mode 100644 index 3510ca9322..0000000000 --- a/resources/lib/oojs-ui/i18n/vo.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Malafaya" - ] - }, - "ooui-toolbar-more": "Pluikos" -} diff --git a/resources/lib/oojs-ui/i18n/war.json b/resources/lib/oojs-ui/i18n/war.json deleted file mode 100644 index b0ea30cac4..0000000000 --- a/resources/lib/oojs-ui/i18n/war.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "@metadata": { - "authors": [ - "JinJian" - ] - }, - "ooui-outline-control-move-down": "Ibalhin paubos", - "ooui-outline-control-move-up": "Ibalhin paigbaw", - "ooui-outline-control-remove": "Tanggala", - "ooui-toolbar-more": "Damo pa", - "ooui-toolgroup-expand": "Damo pa", - "ooui-toolgroup-collapse": "Guruguti", - "ooui-dialog-message-accept": "OK", - "ooui-dialog-message-reject": "Igpabaliwaray", - "ooui-dialog-process-error": "Mayda sayop nga nahitabo", - "ooui-dialog-process-retry": "Utroha", - "ooui-dialog-process-continue": "Padayon", - "ooui-selectfile-button-select": "Pagpili hin file" -} diff --git a/resources/lib/oojs-ui/i18n/wuu.json b/resources/lib/oojs-ui/i18n/wuu.json deleted file mode 100644 index 64816249d1..0000000000 --- a/resources/lib/oojs-ui/i18n/wuu.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Malafaya", - "十弌", - "飞舞回堂前" - ] - }, - "ooui-toolbar-more": "更多" -} diff --git a/resources/lib/oojs-ui/i18n/xmf.json b/resources/lib/oojs-ui/i18n/xmf.json deleted file mode 100644 index 4109c36eba..0000000000 --- a/resources/lib/oojs-ui/i18n/xmf.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "@metadata": { - "authors": [ - "David1010", - "Silovan" - ] - }, - "ooui-outline-control-move-down": "ელემენტის ქვემოთ გადატანა", - "ooui-outline-control-move-up": "ელემენტის ზემოთ გადატანა", - "ooui-outline-control-remove": "ელემენტის წაშლა", - "ooui-toolbar-more": "უმოსი", - "ooui-toolgroup-expand": "უმოსი", - "ooui-toolgroup-collapse": "რამდენიმე", - "ooui-dialog-message-accept": "ჯგირი", - "ooui-dialog-message-reject": "გოუქვაფა", - "ooui-dialog-process-error": "მოხდა რაღაც შეცდომა", - "ooui-dialog-process-dismiss": "დამალვა", - "ooui-dialog-process-retry": "კიდევ სცადეთ", - "ooui-dialog-process-continue": "გაგრძელება", - "ooui-selectfile-button-select": "გეგშაგორით ფაილი", - "ooui-selectfile-not-supported": "ფაილიშ აშაგორუა ვა რე ხენწყილი", - "ooui-selectfile-placeholder": "ფაილი ვა რე გიშაგორილი", - "ooui-selectfile-dragdrop-placeholder": "ქინაჸათით ფაილი ათაქ" -} diff --git a/resources/lib/oojs-ui/i18n/yi.json b/resources/lib/oojs-ui/i18n/yi.json deleted file mode 100644 index 9fe75fce03..0000000000 --- a/resources/lib/oojs-ui/i18n/yi.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Malafaya", - "פוילישער", - "十弌" - ] - }, - "ooui-outline-control-move-down": "רוקן עלעמענט אראפ", - "ooui-outline-control-move-up": "רוקן עלעמענט ארויף", - "ooui-outline-control-remove": "אַראָפנעמען איינס", - "ooui-toolbar-more": "נאך", - "ooui-toolgroup-expand": "נאך", - "ooui-toolgroup-collapse": "ווייניגער", - "ooui-item-remove": "אַראָפּנעמען", - "ooui-dialog-message-accept": "יאָ", - "ooui-dialog-message-reject": "אַנולירן", - "ooui-dialog-process-error": "עפעס איז דורכגעפאלן", - "ooui-dialog-process-dismiss": "צומאַכן", - "ooui-dialog-process-retry": "פרובירט נאכאמאל", - "ooui-dialog-process-continue": "פֿארזעצן", - "ooui-selectfile-button-select": "קלויבט א טעקע", - "ooui-selectfile-not-supported": "טעקע אויסווייל נישט געשטיצט", - "ooui-selectfile-placeholder": "קיין טעקע נישט אויסגעוויילט" -} diff --git a/resources/lib/oojs-ui/i18n/yo.json b/resources/lib/oojs-ui/i18n/yo.json deleted file mode 100644 index d979fc1310..0000000000 --- a/resources/lib/oojs-ui/i18n/yo.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Demmy" - ] - }, - "ooui-outline-control-move-down": "Sún onítòún sí sàlẹ̀", - "ooui-outline-control-move-up": "Sún onítòún s'ókè", - "ooui-toolbar-more": "Míràn" -} diff --git a/resources/lib/oojs-ui/i18n/yue.json b/resources/lib/oojs-ui/i18n/yue.json deleted file mode 100644 index 6a9e902b12..0000000000 --- a/resources/lib/oojs-ui/i18n/yue.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Deryck Chan", - "William915", - "Shinjiman", - "Ktchankt", - "Hello903hello" - ] - }, - "ooui-outline-control-move-down": "向下搬", - "ooui-outline-control-move-up": "向上搬", - "ooui-outline-control-remove": "拎走", - "ooui-toolbar-more": "更多", - "ooui-toolgroup-expand": "更多", - "ooui-toolgroup-collapse": "少啲", - "ooui-dialog-message-accept": "好", - "ooui-dialog-message-reject": "取消", - "ooui-dialog-process-error": "唔對路", - "ooui-dialog-process-dismiss": "閂咗佢", - "ooui-dialog-process-retry": "再試過", - "ooui-dialog-process-continue": "繼續", - "ooui-selectfile-button-select": "揀檔案", - "ooui-selectfile-not-supported": "未有文件選擇功能", - "ooui-selectfile-placeholder": "無揀到文件", - "ooui-selectfile-dragdrop-placeholder": "放檔案響度" -} diff --git a/resources/lib/oojs-ui/i18n/zh-hans.json b/resources/lib/oojs-ui/i18n/zh-hans.json deleted file mode 100644 index ca3c3be6ca..0000000000 --- a/resources/lib/oojs-ui/i18n/zh-hans.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Anakmalaysia", - "Bencmq", - "Demmy", - "Hydra", - "Hzy980512", - "Liangent", - "Liuxinyu970226", - "Qiyue2001", - "Shirayuki", - "Shizhao", - "TianyinLee", - "Xiaomingyan", - "Yfdyh000", - "Zhangjintao", - "乌拉跨氪", - "Great Brightstar", - "Nbdd0121", - "Yejianfei" - ] - }, - "ooui-outline-control-move-down": "向下移动一项", - "ooui-outline-control-move-up": "向上移动一项", - "ooui-outline-control-remove": "移除项目", - "ooui-toolbar-more": "更多", - "ooui-toolgroup-expand": "更多", - "ooui-toolgroup-collapse": "更少", - "ooui-item-remove": "移除", - "ooui-dialog-message-accept": "确定", - "ooui-dialog-message-reject": "取消", - "ooui-dialog-process-error": "发生了一些错误", - "ooui-dialog-process-dismiss": "关闭", - "ooui-dialog-process-retry": "重试", - "ooui-dialog-process-continue": "继续", - "ooui-selectfile-button-select": "选择一个文件", - "ooui-selectfile-not-supported": "不支持文件选择器", - "ooui-selectfile-placeholder": "没有选定文件", - "ooui-selectfile-dragdrop-placeholder": "将文件拖动至此", - "ooui-field-help": "帮助" -} diff --git a/resources/lib/oojs-ui/i18n/zh-hant.json b/resources/lib/oojs-ui/i18n/zh-hant.json deleted file mode 100644 index 1e05886393..0000000000 --- a/resources/lib/oojs-ui/i18n/zh-hant.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "@metadata": { - "authors": [ - "Anakmalaysia", - "Ch.Andrew", - "Hydra", - "Justincheng12345", - "Liflon", - "Liuxinyu970226", - "Qiyue2001", - "Radish10cm", - "Shirayuki", - "Simon Shek", - "Spring Roll Conan", - "Waihorace", - "Cwlin0416", - "LNDDYL", - "Shangkuanlc", - "A2093064", - "Kly" - ] - }, - "ooui-outline-control-move-down": "項目下移", - "ooui-outline-control-move-up": "項目上移", - "ooui-outline-control-remove": "移除項目", - "ooui-toolbar-more": "更多", - "ooui-toolgroup-expand": "更多", - "ooui-toolgroup-collapse": "更少", - "ooui-item-remove": "移除", - "ooui-dialog-message-accept": "確定", - "ooui-dialog-message-reject": "取消", - "ooui-dialog-process-error": "發生不明錯誤", - "ooui-dialog-process-dismiss": "關閉", - "ooui-dialog-process-retry": "再試一次", - "ooui-dialog-process-continue": "繼續", - "ooui-selectfile-button-select": "選擇一個檔案", - "ooui-selectfile-not-supported": "無法支援所選擇的檔案", - "ooui-selectfile-placeholder": "尚未選擇檔案", - "ooui-selectfile-dragdrop-placeholder": "拖曳檔案到此處", - "ooui-field-help": "說明" -} diff --git a/resources/lib/oojs-ui/images/grab.cur b/resources/lib/oojs-ui/images/grab.cur deleted file mode 100644 index fba3ddc807..0000000000 Binary files a/resources/lib/oojs-ui/images/grab.cur and /dev/null differ diff --git a/resources/lib/oojs-ui/images/grabbing.cur b/resources/lib/oojs-ui/images/grabbing.cur deleted file mode 100644 index 41aaa62a59..0000000000 Binary files a/resources/lib/oojs-ui/images/grabbing.cur and /dev/null differ diff --git a/resources/lib/oojs-ui/oojs-ui-apex.js b/resources/lib/oojs-ui/oojs-ui-apex.js deleted file mode 100644 index 6040a019b7..0000000000 --- a/resources/lib/oojs-ui/oojs-ui-apex.js +++ /dev/null @@ -1,45 +0,0 @@ -/*! - * OOUI v0.28.1 - * https://www.mediawiki.org/wiki/OOUI - * - * Copyright 2011–2018 OOUI Team and other contributors. - * Released under the MIT license - * http://oojs.mit-license.org - * - * Date: 2018-09-05T00:41:49Z - */ -( function ( OO ) { - -'use strict'; - -/** - * @class - * @extends OO.ui.Theme - * - * @constructor - */ -OO.ui.ApexTheme = function OoUiApexTheme() { - // Parent constructor - OO.ui.ApexTheme.parent.call( this ); -}; - -/* Setup */ - -OO.inheritClass( OO.ui.ApexTheme, OO.ui.Theme ); - -/* Methods */ - -/** - * @inheritdoc - */ -OO.ui.ApexTheme.prototype.getDialogTransitionDuration = function () { - return 250; -}; - -/* Instantiation */ - -OO.ui.theme = new OO.ui.ApexTheme(); - -}( OO ) ); - -//# sourceMappingURL=oojs-ui-apex.js.map.json \ No newline at end of file diff --git a/resources/lib/oojs-ui/oojs-ui-apex.js.map.json b/resources/lib/oojs-ui/oojs-ui-apex.js.map.json deleted file mode 100644 index f50934341c..0000000000 --- a/resources/lib/oojs-ui/oojs-ui-apex.js.map.json +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/intro.js.txt","../src/themes/apex/ApexTheme.js","../src/outro.js.txt"],"names":[],"mappings":";;;;;;;;;;AAAA,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnB;AACA,CAAC,GAAG,CAAC,MAAM,EAAE;;ACFb,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK;AACvB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;AAC5C,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AACrC,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;AAChD;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACrE,CAAC,MAAM,CAAC,GAAG,CAAC;AACZ,EAAE;AACF;AACA,EAAE,CAAC,aAAa,CAAC,EAAE;AACnB;AACA,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,GAAG;;AC1BpC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE","file":"oojs-ui-apex.js","sourcesContent":["( function ( OO ) {\n\n'use strict';\n","/**\n * @class\n * @extends OO.ui.Theme\n *\n * @constructor\n */\nOO.ui.ApexTheme = function OoUiApexTheme() {\n\t// Parent constructor\n\tOO.ui.ApexTheme.parent.call( this );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.ApexTheme, OO.ui.Theme );\n\n/* Methods */\n\n/**\n * @inheritdoc\n */\nOO.ui.ApexTheme.prototype.getDialogTransitionDuration = function () {\n\treturn 250;\n};\n\n/* Instantiation */\n\nOO.ui.theme = new OO.ui.ApexTheme();\n","}( OO ) );\n"]} \ No newline at end of file diff --git a/resources/lib/oojs-ui/oojs-ui-core-apex.css b/resources/lib/oojs-ui/oojs-ui-core-apex.css deleted file mode 100644 index 398f8d48c3..0000000000 --- a/resources/lib/oojs-ui/oojs-ui-core-apex.css +++ /dev/null @@ -1,1588 +0,0 @@ -/*! - * OOUI v0.28.1 - * https://www.mediawiki.org/wiki/OOUI - * - * Copyright 2011–2018 OOUI Team and other contributors. - * Released under the MIT license - * http://oojs.mit-license.org - * - * Date: 2018-09-05T00:41:53Z - */ -.oo-ui-element-hidden { - display: none !important; -} -.oo-ui-buttonElement { - display: inline-block; - line-height: normal; - vertical-align: middle; -} -.oo-ui-buttonElement > .oo-ui-buttonElement-button { - cursor: pointer; - display: inline-block; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - vertical-align: middle; - font-family: inherit; - font-size: inherit; - white-space: nowrap; - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.oo-ui-buttonElement > .oo-ui-buttonElement-button::-moz-focus-inner { - border-color: transparent; - padding: 0; -} -.oo-ui-buttonElement.oo-ui-widget-disabled > .oo-ui-buttonElement-button { - cursor: default; -} -.oo-ui-buttonElement-frameless { - position: relative; -} -.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button { - vertical-align: top; - text-align: center; -} -.oo-ui-buttonElement > .oo-ui-buttonElement-button { - color: #333; - position: relative; - border-radius: 3px; -} -.oo-ui-buttonElement > .oo-ui-buttonElement-button:focus { - outline: 0; -} -.oo-ui-buttonElement > input.oo-ui-buttonElement-button, -.oo-ui-buttonElement.oo-ui-labelElement .oo-ui-labelElement-label { - line-height: 1.875em; -} -.oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator, -.oo-ui-buttonElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label, -.oo-ui-buttonElement-frameless.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { - display: inline-block; - vertical-align: middle; -} -.oo-ui-buttonElement.oo-ui-iconElement .oo-ui-indicatorElement-indicator { - margin-left: 0.46875em; -} -.oo-ui-buttonElement.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator { - margin: 0.46875em; -} -.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { - -webkit-transition: opacity 250ms; - -moz-transition: opacity 250ms; - transition: opacity 250ms; - -webkit-transform: translateZ(0); - transform: translateZ(0); -} -.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { - color: #333; -} -.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:hover > .oo-ui-iconElement-icon, -.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:focus > .oo-ui-iconElement-icon { - opacity: 1; -} -.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:hover > .oo-ui-labelElement-label, -.oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:focus > .oo-ui-labelElement-label { - color: #000; -} -.oo-ui-buttonElement-frameless.oo-ui-labelElement:first-child, -.oo-ui-buttonElement-frameless.oo-ui-iconElement:first-child { - margin-left: -0.3125em; -} -.oo-ui-buttonElement-frameless.oo-ui-labelElement > .oo-ui-buttonElement-button, -.oo-ui-buttonElement-frameless.oo-ui-iconElement > .oo-ui-buttonElement-button { - padding: 0.3125em 0.3125em; -} -.oo-ui-buttonElement-frameless.oo-ui-labelElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button, -.oo-ui-buttonElement-frameless.oo-ui-iconElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button { - padding: 0.3125em 0.3125em; -} -.oo-ui-buttonElement-frameless.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { - color: #333; - margin-left: 0.25em; -} -.oo-ui-buttonElement-frameless.oo-ui-indicatorElement > .oo-ui-buttonElement-button { - padding: 0; -} -.oo-ui-buttonElement-frameless > input.oo-ui-buttonElement-button { - padding-left: 0.25em; - color: #333; -} -.oo-ui-buttonElement-frameless > input.oo-ui-buttonElement-button:hover, -.oo-ui-buttonElement-frameless > input.oo-ui-buttonElement-button:focus { - color: #000; -} -.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-iconElement > .oo-ui-buttonElement-button:focus, -.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-labelElement > .oo-ui-buttonElement-button:focus { - border-color: #ace; - box-shadow: 0 0 2px 2px #ace; -} -.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-iconElement > .oo-ui-buttonElement-button:focus:active, -.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-labelElement > .oo-ui-buttonElement-button:focus:active { - border-color: #fff; - border-color: transparent; - box-shadow: none; -} -.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-indicatorElement:not( .oo-ui-iconElement ):not( .oo-ui-labelElement ) > .oo-ui-buttonElement-button { - border-radius: 3px; -} -.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-indicatorElement:not( .oo-ui-iconElement ):not( .oo-ui-labelElement ) > .oo-ui-buttonElement-button:focus { - box-shadow: 0 0 2px 2px #ace; -} -.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-indicatorElement:not( .oo-ui-iconElement ):not( .oo-ui-labelElement ) > .oo-ui-buttonElement-button:focus:active { - box-shadow: none; -} -.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { - color: #087ecc; -} -.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { - color: #d45353; -} -.oo-ui-buttonElement-frameless.oo-ui-widget-disabled > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { - opacity: 0.2; -} -.oo-ui-buttonElement-frameless.oo-ui-widget-disabled > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { - color: #ccc; -} -.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button { - background-color: #ebebeb; - background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #fafafa), color-stop(100%, #ddd)); - background-image: -webkit-linear-gradient(top, #fafafa 0, #ddd 100%); - background-image: -moz-linear-gradient(top, #fafafa 0, #ddd 100%); - background-image: linear-gradient(to bottom, #fafafa 0, #ddd 100%); - border: 1px solid #ccc; - padding: 0.234375em 0.78125em; - text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5); - -webkit-transition: border-color 100ms; - -moz-transition: border-color 100ms; - transition: border-color 100ms; -} -.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button:hover { - border-color: #aaa; -} -.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button:focus { - border-color: #ace; - box-shadow: 0 0 2px 2px #ace; -} -.oo-ui-buttonElement-framed > input.oo-ui-buttonElement-button, -.oo-ui-buttonElement-framed.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { - line-height: 1.875em; -} -.oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active, -.oo-ui-buttonElement-framed.oo-ui-buttonElement-active > .oo-ui-buttonElement-button, -.oo-ui-buttonElement-framed.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button { - background-color: #ebebeb; - background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #ddd), color-stop(100%, #fafafa)); - background-image: -webkit-linear-gradient(top, #ddd 0, #fafafa 100%); - background-image: -moz-linear-gradient(top, #ddd 0, #fafafa 100%); - background-image: linear-gradient(to bottom, #ddd 0, #fafafa 100%); - color: #000; - border-color: #ccc; - box-shadow: inset 0 1px 4px 0 rgba(0, 0, 0, 0.07); -} -.oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active:focus, -.oo-ui-buttonElement-framed.oo-ui-buttonElement-active > .oo-ui-buttonElement-button:focus, -.oo-ui-buttonElement-framed.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button:focus { - border-color: #ace; - box-shadow: inset 0 1px 4px 0 rgba(0, 0, 0, 0.07), 0 0 2px 2px #ace; -} -.oo-ui-buttonElement-framed.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { - margin-left: -0.34375em; - margin-right: -0.34375em; - display: inline-block; - vertical-align: middle; -} -.oo-ui-buttonElement-framed.oo-ui-iconElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { - margin-right: 0.3em; -} -.oo-ui-buttonElement-framed.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator { - margin-left: -0.005em; - margin-right: -0.005em; -} -.oo-ui-buttonElement-framed.oo-ui-indicatorElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator, -.oo-ui-buttonElement-framed.oo-ui-indicatorElement.oo-ui-iconElement:not( .oo-ui-labelElement ) > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator { - margin-left: 0.46875em; - margin-right: -0.275em; -} -.oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button { - background-color: #cde7f4; - background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #eaf4fa), color-stop(100%, #b0d9ee)); - background-image: -webkit-linear-gradient(top, #eaf4fa 0, #b0d9ee 100%); - background-image: -moz-linear-gradient(top, #eaf4fa 0, #b0d9ee 100%); - background-image: linear-gradient(to bottom, #eaf4fa 0, #b0d9ee 100%); - border: 1px solid #a6cee1; -} -.oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:hover { - border-color: #9dc2d4; -} -.oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active, -.oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button, -.oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button { - background-color: #cde7f4; - background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #b0d9ee), color-stop(100%, #eaf4fa)); - background-image: -webkit-linear-gradient(top, #b0d9ee 0, #eaf4fa 100%); - background-image: -moz-linear-gradient(top, #b0d9ee 0, #eaf4fa 100%); - background-image: linear-gradient(to bottom, #b0d9ee 0, #eaf4fa 100%); - border: 1px solid #a6cee1; -} -.oo-ui-buttonElement-framed.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button { - color: #d45353; -} -.oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button, -.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button, -.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button { - opacity: 0.5; - -webkit-transform: translateZ(0); - transform: translateZ(0); - box-shadow: none; - color: #333; - background: #eee; - border-color: #ccc; -} -.oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button:hover, -.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button:hover, -.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button:hover, -.oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button:focus, -.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button:focus, -.oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button:focus { - border-color: #ccc; - box-shadow: none; -} -.oo-ui-clippableElement-clippable { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - min-height: 3.125em; -} -.oo-ui-floatableElement { - position: absolute; -} -.oo-ui-iconElement-icon { - background-size: contain; - background-position: center center; - background-repeat: no-repeat; - position: absolute; - top: 0; - min-width: 20px; - width: 1.875em; - min-height: 20px; - height: 100%; -} -.oo-ui-iconElement-noIcon { - display: none; -} -.oo-ui-iconElement-icon { - position: static; - top: auto; - width: 1.5625em; - height: 1.5625em; - min-width: auto; - min-height: auto; - margin: 0.15625em; - opacity: 0.8; -} -.oo-ui-indicatorElement-indicator { - background-size: contain; - background-position: center center; - background-repeat: no-repeat; - position: absolute; - top: 0; - min-width: 12px; - width: 0.9375em; - min-height: 12px; - height: 100%; -} -.oo-ui-indicatorElement-noIndicator { - display: none; -} -.oo-ui-indicatorElement-indicator { - position: static; - top: auto; - height: 0.9375em; - opacity: 0.8; -} -.oo-ui-labelElement .oo-ui-labelElement-label, -.oo-ui-labelElement.oo-ui-labelElement-label { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.oo-ui-labelElement .oo-ui-labelElement-label-highlight { - font-weight: bold; -} -.oo-ui-pendingElement-pending { - background-image: /* @embed */ url(themes/wikimediaui/images/textures/pending.gif); -} -.oo-ui-fieldLayout { - display: block; - margin-top: 0.75em; -} -.oo-ui-fieldLayout:before, -.oo-ui-fieldLayout:after { - content: ' '; - display: table; -} -.oo-ui-fieldLayout:after { - clear: both; -} -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header, -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header, -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-help, -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-help, -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field, -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field { - display: block; - float: left; -} -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header { - text-align: right; -} -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body { - display: table; - width: 100%; -} -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header, -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field { - display: table-cell; -} -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header { - vertical-align: middle; -} -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field { - width: 1px; - vertical-align: top; -} -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header, -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field { - display: block; -} -.oo-ui-fieldLayout .oo-ui-fieldLayout-help { - float: right; -} -.oo-ui-fieldLayout .oo-ui-fieldLayout-help > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { - display: block; - position: absolute !important; - /* stylelint-disable-line declaration-no-important */ - clip: rect(1px, 1px, 1px, 1px); - width: 1px; - height: 1px; - margin: -1px; - border: 0; - padding: 0; - overflow: hidden; -} -.oo-ui-fieldLayout .oo-ui-fieldLayout-help > .oo-ui-popupWidget > .oo-ui-popupWidget-popup { - z-index: 1; -} -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-help, -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-help { - margin-right: 0; - margin-left: -2.5em; -} -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field, -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field { - width: 60%; -} -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header, -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header { - margin-right: 5%; - width: 35%; -} -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header > .oo-ui-labelElement-label, -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header > .oo-ui-labelElement-label { - display: block; - padding-top: 0.5em; -} -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline { - margin-top: 1em; -} -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body { - max-width: 50em; -} -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header { - padding-left: 0.5em; -} -.oo-ui-fieldLayout:first-child { - margin-top: 0; -} -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header { - max-width: 50em; - margin-bottom: 0.25em; -} -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top > .oo-ui-fieldLayout-body > .oo-ui-inline-help { - margin-top: 0.25em; -} -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top .oo-ui-fieldLayout-help, -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline .oo-ui-fieldLayout-help { - margin-top: -0.3em; - margin-right: -0.625em; -} -.oo-ui-fieldLayout > .oo-ui-popupButtonWidget { - margin-right: 0; - margin-top: 0.25em; -} -.oo-ui-fieldLayout > .oo-ui-popupButtonWidget:last-child { - margin-right: 0; -} -.oo-ui-fieldLayout-disabled > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header > .oo-ui-labelElement-label { - color: #ccc; -} -.oo-ui-fieldLayout-messages { - list-style: none none; - margin: 0; - padding: 0; - margin-top: 0.25em; - margin-left: 0.25em; -} -.oo-ui-fieldLayout-messages > li { - margin: 0; - padding: 0; -} -.oo-ui-fieldLayout-messages .oo-ui-iconWidget { - display: none; -} -.oo-ui-fieldLayout-messages .oo-ui-fieldLayout-messages-error { - color: #d45353; -} -.oo-ui-fieldLayout-messages .oo-ui-labelWidget { - padding: 0.1em 0; - line-height: 1.5em; - vertical-align: middle; -} -.oo-ui-actionFieldLayout-input, -.oo-ui-actionFieldLayout-button { - display: table-cell; - vertical-align: middle; -} -.oo-ui-actionFieldLayout-button { - width: 1%; - white-space: nowrap; -} -.oo-ui-actionFieldLayout.oo-ui-fieldLayout-align-top { - max-width: 50em; -} -.oo-ui-actionFieldLayout .oo-ui-actionFieldLayout-input .oo-ui-widget:not( .oo-ui-textInputWidget ) { - margin-right: 1em; -} -.oo-ui-actionFieldLayout .oo-ui-actionFieldLayout-input .oo-ui-widget.oo-ui-textInputWidget > .oo-ui-inputWidget-input { - border-radius: 3px 0 0 3px; - position: relative; -} -.oo-ui-actionFieldLayout .oo-ui-actionFieldLayout-button .oo-ui-buttonElement-framed > .oo-ui-buttonElement-button { - border-radius: 0 3px 3px 0; - margin-left: -1px; -} -.oo-ui-actionFieldLayout .oo-ui-actionFieldLayout-input > .oo-ui-textInputWidget > .oo-ui-inputWidget-input:hover, -.oo-ui-actionFieldLayout .oo-ui-actionFieldLayout-input > .oo-ui-textInputWidget > .oo-ui-inputWidget-input:hover ~ *, -.oo-ui-actionFieldLayout .oo-ui-actionFieldLayout-input > .oo-ui-textInputWidget > .oo-ui-inputWidget-input:focus, -.oo-ui-actionFieldLayout .oo-ui-actionFieldLayout-input > .oo-ui-textInputWidget > .oo-ui-inputWidget-input:focus ~ * { - z-index: 1; -} -.oo-ui-actionFieldLayout .oo-ui-actionFieldLayout-button > .oo-ui-buttonElement > .oo-ui-buttonElement-button:hover, -.oo-ui-actionFieldLayout .oo-ui-actionFieldLayout-button > .oo-ui-buttonElement > .oo-ui-buttonElement-button:focus { - z-index: 1; -} -.oo-ui-fieldsetLayout { - position: relative; - min-width: 0; - margin: 0; - border: 0; - padding: 0.01px 0 0 0; -} -body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { - display: table-cell; -} -.oo-ui-fieldsetLayout > .oo-ui-fieldsetLayout-header { - display: none; -} -.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-fieldsetLayout-header, -.oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-fieldsetLayout-header { - color: inherit; - display: inline-table; - box-sizing: border-box; - padding: 0; - white-space: normal; - float: left; - width: 100%; -} -.oo-ui-fieldsetLayout-group { - clear: both; -} -.oo-ui-fieldsetLayout .oo-ui-fieldsetLayout-help { - float: right; -} -.oo-ui-fieldsetLayout .oo-ui-fieldsetLayout-help > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { - display: block; - position: absolute !important; - /* stylelint-disable-line declaration-no-important */ - clip: rect(1px, 1px, 1px, 1px); - width: 1px; - height: 1px; - margin: -1px; - border: 0; - padding: 0; - overflow: hidden; -} -.oo-ui-fieldsetLayout .oo-ui-fieldsetLayout-help > .oo-ui-popupWidget > .oo-ui-popupWidget-popup { - z-index: 1; -} -.oo-ui-fieldsetLayout .oo-ui-fieldsetLayout-header { - max-width: 50em; -} -.oo-ui-fieldsetLayout + .oo-ui-fieldsetLayout, -.oo-ui-fieldsetLayout + .oo-ui-formLayout { - margin-top: 2em; -} -.oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-fieldsetLayout-header > .oo-ui-labelElement-label { - display: inline-block; - font-size: 1.15em; - margin-bottom: 0.5em; - padding: 0.25em 0; - font-weight: bold; -} -.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-fieldsetLayout-header > .oo-ui-labelElement-label { - padding-left: 2em; - line-height: 1.8em; -} -.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-fieldsetLayout-header > .oo-ui-iconElement-icon { - display: block; - position: absolute; - top: 0.25em; - left: 0; -} -.oo-ui-fieldsetLayout > .oo-ui-fieldsetLayout-header > .oo-ui-popupButtonWidget { - margin-right: 0; -} -.oo-ui-fieldsetLayout > .oo-ui-fieldsetLayout-header > .oo-ui-popupButtonWidget:last-child { - margin-right: 0; -} -.oo-ui-formLayout + .oo-ui-fieldsetLayout, -.oo-ui-formLayout + .oo-ui-formLayout { - margin-top: 2em; -} -.oo-ui-panelLayout { - position: relative; -} -.oo-ui-panelLayout-scrollable { - overflow: auto; -} -.oo-ui-panelLayout-expanded { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; -} -.oo-ui-panelLayout-padded { - padding: 1.25em; -} -.oo-ui-panelLayout-framed { - border: 1px solid #ccc; - border-radius: 3px; -} -.oo-ui-panelLayout-padded.oo-ui-panelLayout-framed { - margin: 1em 0; -} -.oo-ui-horizontalLayout > .oo-ui-widget { - display: inline-block; - vertical-align: middle; -} -.oo-ui-horizontalLayout > .oo-ui-layout { - display: inline-block; -} -.oo-ui-horizontalLayout > .oo-ui-layout, -.oo-ui-horizontalLayout > .oo-ui-widget { - margin-right: 0.5em; -} -.oo-ui-horizontalLayout > .oo-ui-layout:last-child, -.oo-ui-horizontalLayout > .oo-ui-widget:last-child { - margin-right: 0; -} -.oo-ui-horizontalLayout > .oo-ui-layout { - margin-top: 0; -} -.oo-ui-horizontalLayout > .oo-ui-widget { - margin-bottom: 0.5em; -} -.oo-ui-optionWidget { - position: relative; - display: block; - border: 0; -} -.oo-ui-optionWidget.oo-ui-widget-enabled { - cursor: pointer; -} -.oo-ui-optionWidget.oo-ui-widget-disabled { - cursor: default; -} -.oo-ui-optionWidget.oo-ui-labelElement > .oo-ui-labelElement-label { - display: block; - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; -} -.oo-ui-optionWidget-highlighted { - background-color: #e1f3ff; -} -.oo-ui-optionWidget .oo-ui-labelElement-label { - line-height: 1.5em; -} -.oo-ui-selectWidget-depressed .oo-ui-optionWidget-selected { - background-color: #a7dcff; -} -.oo-ui-selectWidget-pressed .oo-ui-optionWidget-pressed, -.oo-ui-selectWidget-pressed .oo-ui-optionWidget-pressed.oo-ui-optionWidget-highlighted, -.oo-ui-selectWidget-pressed .oo-ui-optionWidget-pressed.oo-ui-optionWidget-highlighted.oo-ui-optionWidget-selected { - background-color: #a7dcff; -} -.oo-ui-optionWidget.oo-ui-widget-disabled { - color: #ccc; -} -.oo-ui-decoratedOptionWidget { - padding: 0.5em 2em 0.5em 3em; -} -.oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon, -.oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator { - position: absolute; - top: 0; - height: 100%; -} -.oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon { - left: 0.5em; - margin: 0; -} -.oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator { - right: 0.5em; -} -.oo-ui-decoratedOptionWidget.oo-ui-widget-disabled .oo-ui-iconElement-icon, -.oo-ui-decoratedOptionWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator { - opacity: 0.2; -} -.oo-ui-radioOptionWidget { - display: table; - width: 100%; - padding: 0.3125em 0; -} -.oo-ui-radioOptionWidget .oo-ui-radioInputWidget, -.oo-ui-radioOptionWidget.oo-ui-labelElement > .oo-ui-labelElement-label { - display: table-cell; - vertical-align: top; -} -.oo-ui-radioOptionWidget .oo-ui-radioInputWidget { - width: 1px; -} -.oo-ui-radioOptionWidget.oo-ui-labelElement > .oo-ui-labelElement-label { - white-space: normal; -} -.oo-ui-radioOptionWidget.oo-ui-optionWidget-selected { - background-color: transparent; -} -.oo-ui-radioOptionWidget.oo-ui-labelElement .oo-ui-labelElement-label { - padding-left: 0.5em; -} -.oo-ui-radioOptionWidget .oo-ui-radioInputWidget { - margin-right: 0; -} -.oo-ui-labelWidget { - display: inline-block; -} -.oo-ui-labelWidget.oo-ui-inline-help { - display: block; - color: #595959; - font-size: 0.9375em; -} -.oo-ui-iconWidget { - vertical-align: middle; - line-height: 2.5em; - display: inline-block; - position: static; - top: auto; - height: 1.5625em; - margin: 0.15625em; -} -.oo-ui-iconWidget.oo-ui-widget-disabled { - opacity: 0.2; -} -.oo-ui-indicatorWidget { - vertical-align: middle; - line-height: 2.5em; - margin: 0.46875em; - display: inline-block; - position: static; - top: auto; - height: 1.875em; -} -.oo-ui-indicatorWidget.oo-ui-widget-disabled { - opacity: 0.2; -} -.oo-ui-buttonWidget { - margin-right: 0.5em; -} -.oo-ui-buttonWidget:last-child { - margin-right: 0; -} -.oo-ui-buttonGroupWidget { - display: inline-block; - white-space: nowrap; - border-radius: 3px; - margin-right: 0.5em; - z-index: 0; - position: relative; -} -.oo-ui-buttonGroupWidget .oo-ui-buttonWidget.oo-ui-buttonElement-active .oo-ui-buttonElement-button { - cursor: default; -} -.oo-ui-buttonGroupWidget:last-child { - margin-right: 0; -} -.oo-ui-buttonGroupWidget .oo-ui-buttonElement { - margin-right: 0; -} -.oo-ui-buttonGroupWidget .oo-ui-buttonElement:last-child { - margin-right: 0; -} -.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed .oo-ui-buttonElement-button { - border-radius: 0; - margin-left: -1px; -} -.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed:first-child .oo-ui-buttonElement-button { - border-bottom-left-radius: 3px; - border-top-left-radius: 3px; - margin-left: 0; -} -.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed:last-child .oo-ui-buttonElement-button { - border-bottom-right-radius: 3px; - border-top-right-radius: 3px; -} -.oo-ui-buttonGroupWidget.oo-ui-widget-enabled .oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active { - z-index: 1; -} -.oo-ui-buttonGroupWidget.oo-ui-widget-enabled .oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button:focus { - z-index: 2; -} -.oo-ui-buttonGroupWidget.oo-ui-widget-enabled .oo-ui-buttonElement.oo-ui-buttonElement-active > .oo-ui-buttonElement-button { - z-index: 3; -} -.oo-ui-buttonGroupWidget.oo-ui-widget-enabled .oo-ui-buttonElement.oo-ui-widget-disabled > .oo-ui-buttonElement-button { - z-index: -1; -} -.oo-ui-buttonGroupWidget.oo-ui-widget-enabled .oo-ui-buttonElement.oo-ui-toggleWidget-on + .oo-ui-toggleWidget-on > .oo-ui-buttonElement-button, -.oo-ui-buttonGroupWidget.oo-ui-widget-enabled .oo-ui-buttonElement.oo-ui-toggleWidget-on + .oo-ui-toggleWidget-on > .oo-ui-buttonElement-button:active { - z-index: 3; -} -.oo-ui-popupWidget { - position: absolute; -} -.oo-ui-popupWidget-popup { - position: relative; - overflow: hidden; - z-index: 1; -} -.oo-ui-popupWidget-anchor { - display: none; - z-index: 1; -} -.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor { - display: block; - position: absolute; - background-repeat: no-repeat; -} -.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:before, -.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:after { - content: ''; - position: absolute; - width: 0; - height: 0; - border-style: solid; - border-color: transparent; -} -.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor { - left: 0; -} -.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor:before, -.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor:after { - border-top: 0; -} -.oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor { - left: 0; -} -.oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor:before, -.oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor:after { - border-bottom: 0; -} -.oo-ui-popupWidget-anchored-start .oo-ui-popupWidget-anchor { - top: 0; -} -.oo-ui-popupWidget-anchored-start .oo-ui-popupWidget-anchor:before, -.oo-ui-popupWidget-anchored-start .oo-ui-popupWidget-anchor:after { - border-left: 0; -} -.oo-ui-popupWidget-anchored-end .oo-ui-popupWidget-anchor { - top: 0; -} -.oo-ui-popupWidget-anchored-end .oo-ui-popupWidget-anchor:before, -.oo-ui-popupWidget-anchored-end .oo-ui-popupWidget-anchor:after { - border-right: 0; -} -.oo-ui-popupWidget-head { - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.oo-ui-popupWidget-head > .oo-ui-buttonWidget { - position: absolute; -} -.oo-ui-popupWidget-head > .oo-ui-labelElement-label { - float: left; - cursor: default; -} -.oo-ui-popupWidget-body { - clear: both; -} -.oo-ui-popupWidget-body.oo-ui-clippableElement-clippable { - min-height: 1em; -} -.oo-ui-popupWidget-popup { - background-color: #fff; - border: 1px solid #ccc; - border-radius: 3px; - box-shadow: 0 0.15em 0.5em 0 rgba(0, 0, 0, 0.2); -} -.oo-ui-popupWidget-anchored-top { - margin-top: 6px; -} -.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor { - top: -6px; -} -.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor:before { - bottom: -7px; - left: -6px; - border-bottom-color: #aaa; - border-width: 7px; -} -.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor:after { - bottom: -7px; - left: -5px; - border-bottom-color: #fff; - border-width: 6px; -} -.oo-ui-popupWidget-anchored-bottom { - margin-bottom: 6px; -} -.oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor { - bottom: -6px; -} -.oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor:before { - top: -7px; - left: -6px; - border-top-color: #aaa; - border-width: 7px; -} -.oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor:after { - top: -7px; - left: -5px; - border-top-color: #fff; - border-width: 6px; -} -.oo-ui-popupWidget-anchored-start { - margin-left: 6px; -} -.oo-ui-popupWidget-anchored-start .oo-ui-popupWidget-anchor { - left: -6px; -} -.oo-ui-popupWidget-anchored-start .oo-ui-popupWidget-anchor:before { - right: -7px; - top: -6px; - border-right-color: #aaa; - border-width: 7px; -} -.oo-ui-popupWidget-anchored-start .oo-ui-popupWidget-anchor:after { - right: -7px; - top: -5px; - border-right-color: #fff; - border-width: 6px; -} -.oo-ui-popupWidget-anchored-end { - margin-right: 6px; -} -.oo-ui-popupWidget-anchored-end .oo-ui-popupWidget-anchor { - right: -6px; -} -.oo-ui-popupWidget-anchored-end .oo-ui-popupWidget-anchor:before { - left: -7px; - top: -6px; - border-left-color: #aaa; - border-width: 7px; -} -.oo-ui-popupWidget-anchored-end .oo-ui-popupWidget-anchor:after { - left: -7px; - top: -5px; - border-left-color: #fff; - border-width: 6px; -} -.oo-ui-popupWidget-transitioning .oo-ui-popupWidget-popup { - -webkit-transition: width 100ms, height 100ms, left 100ms; - -moz-transition: width 100ms, height 100ms, left 100ms; - transition: width 100ms, height 100ms, left 100ms; -} -.oo-ui-popupWidget-head { - height: 2.5em; -} -.oo-ui-popupWidget-head > .oo-ui-buttonWidget { - top: 0.25em; - right: 0.25em; -} -.oo-ui-popupWidget-head > .oo-ui-labelElement-label { - margin: 0.75em 2.125em 0.75em 1em; -} -.oo-ui-popupWidget-body { - line-height: 1.4; -} -.oo-ui-popupWidget-body-padded { - margin: 0.75em 1em; -} -.oo-ui-popupButtonWidget { - position: relative; -} -.oo-ui-popupButtonWidget .oo-ui-popupWidget { - cursor: auto; -} -.oo-ui-inputWidget { - margin-right: 0.5em; -} -.oo-ui-inputWidget:last-child { - margin-right: 0; -} -.oo-ui-buttonInputWidget > button, -.oo-ui-buttonInputWidget > input { - background-color: transparent; - margin: 0; - border: 0; - padding: 0; -} -.oo-ui-checkboxInputWidget { - display: inline-block; -} -.oo-ui-checkboxInputWidget-checkIcon { - display: none; -} -.oo-ui-checkboxMultiselectInputWidget .oo-ui-fieldLayout { - margin-top: 0; -} -.oo-ui-checkboxMultiselectInputWidget .oo-ui-fieldLayout .oo-ui-fieldLayout-body { - padding: 0.3125em 0; -} -.oo-ui-dropdownInputWidget { - position: relative; - vertical-align: middle; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - width: 100%; - max-width: 50em; -} -.oo-ui-dropdownInputWidget .oo-ui-dropdownWidget, -.oo-ui-dropdownInputWidget.oo-ui-dropdownInputWidget-php select { - display: block; -} -.oo-ui-dropdownInputWidget select { - display: none; - background-position: -9999em 0; - background-repeat: no-repeat; - width: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.oo-ui-dropdownInputWidget.oo-ui-widget-enabled select { - cursor: pointer; -} -.oo-ui-dropdownInputWidget select { - background-color: #fff; - height: 2.5em; - padding: 0.5em; - font-size: inherit; - font-family: inherit; - border: #ccc; - border-radius: 3px; -} -.oo-ui-dropdownInputWidget option { - font-size: inherit; - font-family: inherit; - height: 1.5em; - padding: 0.5em 1em; -} -.oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:hover { - border-color: #aaa; -} -.oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:focus { - border-color: #ace; - outline: 0; - box-shadow: 0 0 2px 2px #ace; -} -.oo-ui-dropdownInputWidget.oo-ui-widget-disabled select { - color: #ccc; - border-color: #ddd; - background-color: #f3f3f3; -} -.oo-ui-radioInputWidget { - display: inline-block; -} -.oo-ui-radioSelectInputWidget .oo-ui-fieldLayout { - margin-top: 0; -} -.oo-ui-radioSelectInputWidget .oo-ui-fieldLayout .oo-ui-fieldLayout-body { - padding: 0.3125em 0; -} -.oo-ui-textInputWidget { - position: relative; - vertical-align: middle; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - width: 100%; - max-width: 50em; -} -.oo-ui-textInputWidget input, -.oo-ui-textInputWidget textarea { - display: block; - width: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.oo-ui-textInputWidget textarea { - overflow: auto; -} -.oo-ui-textInputWidget textarea.oo-ui-textInputWidget-autosized { - resize: none; -} -.oo-ui-textInputWidget [type='number'] { - -moz-appearance: textfield; -} -.oo-ui-textInputWidget [type='number']::-webkit-outer-spin-button, -.oo-ui-textInputWidget [type='number']::-webkit-inner-spin-button { - -webkit-appearance: none; - margin: 0; -} -.oo-ui-textInputWidget [type='search'] { - -webkit-appearance: none; -} -.oo-ui-textInputWidget [type='search']::-ms-clear { - display: none; -} -.oo-ui-textInputWidget [type='search']::-webkit-search-decoration, -.oo-ui-textInputWidget [type='search']::-webkit-search-cancel-button { - display: none; -} -.oo-ui-textInputWidget.oo-ui-widget-enabled > .oo-ui-iconElement-icon, -.oo-ui-textInputWidget.oo-ui-widget-enabled > .oo-ui-indicatorElement-indicator { - cursor: text; -} -.oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-textInputWidget-type-search > .oo-ui-indicatorElement-indicator { - cursor: pointer; -} -.oo-ui-textInputWidget.oo-ui-widget-disabled > * { - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.oo-ui-textInputWidget.oo-ui-labelElement > .oo-ui-labelElement-label { - display: block; -} -.oo-ui-textInputWidget > .oo-ui-iconElement-icon, -.oo-ui-textInputWidget-labelPosition-before > .oo-ui-labelElement-label { - left: 0; -} -.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator, -.oo-ui-textInputWidget-labelPosition-after > .oo-ui-labelElement-label { - right: 0; -} -.oo-ui-textInputWidget-labelPosition-after.oo-ui-labelElement ::-ms-clear { - display: none; -} -.oo-ui-textInputWidget > .oo-ui-labelElement-label { - position: absolute; - top: 0; -} -.oo-ui-textInputWidget-php > .oo-ui-iconElement-icon, -.oo-ui-textInputWidget-php > .oo-ui-indicatorElement-indicator, -.oo-ui-textInputWidget-php > .oo-ui-labelElement-label { - pointer-events: none; -} -.oo-ui-textInputWidget input, -.oo-ui-textInputWidget textarea { - background-color: #fff; - color: #000; - border: 1px solid #ccc; - border-radius: 3px; - padding: 0.546875em 0.5em 0.625em 0.5em; - box-shadow: 0 0 0 #fff, inset 0 0.1em 0.2em #ddd; - font-size: inherit; - font-family: inherit; - -webkit-transition: border-color 250ms, box-shadow 250ms; - -moz-transition: border-color 250ms, box-shadow 250ms; - transition: border-color 250ms, box-shadow 250ms; -} -.oo-ui-textInputWidget input.oo-ui-pendingElement-pending, -.oo-ui-textInputWidget textarea.oo-ui-pendingElement-pending { - background-color: transparent; -} -.oo-ui-textInputWidget input::-webkit-input-placeholder, -.oo-ui-textInputWidget textarea::-webkit-input-placeholder { - color: #767676; - opacity: 1; -} -.oo-ui-textInputWidget input:-ms-input-placeholder, -.oo-ui-textInputWidget textarea:-ms-input-placeholder { - color: #767676; - opacity: 1; -} -.oo-ui-textInputWidget input::-moz-placeholder, -.oo-ui-textInputWidget textarea::-moz-placeholder { - color: #767676; - opacity: 1; -} -.oo-ui-textInputWidget input:-moz-placeholder, -.oo-ui-textInputWidget textarea:-moz-placeholder { - color: #767676; - opacity: 1; -} -.oo-ui-textInputWidget input::placeholder, -.oo-ui-textInputWidget textarea::placeholder { - color: #767676; - opacity: 1; -} -.oo-ui-textInputWidget input { - line-height: 1.172em; -} -.oo-ui-textInputWidget textarea { - line-height: 1.275; -} -.oo-ui-textInputWidget.oo-ui-widget-enabled input:focus, -.oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus { - outline: 0; - border-color: #ace; - box-shadow: 0 0 2px 2px #ace; -} -.oo-ui-textInputWidget.oo-ui-widget-enabled input[readonly], -.oo-ui-textInputWidget.oo-ui-widget-enabled textarea[readonly] { - background-color: #f3f3f3; -} -.oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid input, -.oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid textarea { - background-color: #fdd; -} -.oo-ui-textInputWidget.oo-ui-widget-disabled input, -.oo-ui-textInputWidget.oo-ui-widget-disabled textarea { - color: #ccc; - text-shadow: 0 1px 1px #fff; - border-color: #ddd; - background-color: #f3f3f3; -} -.oo-ui-textInputWidget.oo-ui-widget-disabled > .oo-ui-iconElement-icon, -.oo-ui-textInputWidget.oo-ui-widget-disabled > .oo-ui-indicatorElement-indicator { - opacity: 0.2; -} -.oo-ui-textInputWidget.oo-ui-widget-disabled > .oo-ui-labelElement-label { - color: #ddd; - text-shadow: 0 1px 1px #fff; -} -.oo-ui-textInputWidget.oo-ui-iconElement > .oo-ui-iconElement-icon, -.oo-ui-textInputWidget.oo-ui-indicatorElement > .oo-ui-indicatorElement-indicator { - position: absolute; - top: 0; - height: 100%; - margin: 0 0.15625em; -} -.oo-ui-textInputWidget.oo-ui-iconElement input, -.oo-ui-textInputWidget.oo-ui-iconElement textarea { - padding-left: 2.475em; -} -.oo-ui-textInputWidget.oo-ui-iconElement > .oo-ui-iconElement-icon { - max-height: 2.5em; - margin-left: 0.45625em; -} -.oo-ui-textInputWidget.oo-ui-indicatorElement input, -.oo-ui-textInputWidget.oo-ui-indicatorElement textarea { - padding-right: 2.4875em; -} -.oo-ui-textInputWidget.oo-ui-indicatorElement > .oo-ui-indicatorElement-indicator { - max-height: 2.5em; - margin-right: 0.775em; -} -.oo-ui-textInputWidget > .oo-ui-labelElement-label { - display: none; - top: 1px; - padding: 0.546875em 0.4em 0.625em 0.4em; - line-height: 1.172em; - color: #767676; -} -.oo-ui-textInputWidget-labelPosition-after.oo-ui-indicatorElement > .oo-ui-labelElement-label { - margin-right: 2.0875em; -} -.oo-ui-textInputWidget-labelPosition-before.oo-ui-iconElement > .oo-ui-labelElement-label { - margin-left: 2.075em; -} -.oo-ui-menuSelectWidget { - position: absolute; - width: 100%; - z-index: 4; - background-color: #fff; - margin-top: -1px; - margin-bottom: -1px; - border: 1px solid #ccc; - border-radius: 0 0 3px 3px; - box-shadow: 0 0.15em 1em 0 rgba(0, 0, 0, 0.2); -} -.oo-ui-menuSelectWidget.oo-ui-clippableElement-clippable { - min-height: 2.6em; -} -.oo-ui-menuSelectWidget-invisible { - display: none; -} -.oo-ui-menuOptionWidget .oo-ui-menuOptionWidget-checkIcon { - display: none; -} -.oo-ui-menuOptionWidget.oo-ui-optionWidget > .oo-ui-indicatorElement-indicator { - display: none; -} -.oo-ui-menuOptionWidget.oo-ui-optionWidget-selected { - background-color: transparent; -} -.oo-ui-menuOptionWidget.oo-ui-optionWidget-selected > .oo-ui-iconElement-icon { - display: none; -} -.oo-ui-menuOptionWidget.oo-ui-optionWidget-selected .oo-ui-menuOptionWidget-checkIcon { - display: block; -} -.oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted, -.oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted.oo-ui-optionWidget-selected { - background-color: #e1f3ff; -} -.oo-ui-menuSectionOptionWidget { - padding: 0.33em 0.75em; - color: #767676; -} -.oo-ui-menuSectionOptionWidget.oo-ui-widget-enabled { - cursor: default; -} -.oo-ui-dropdownWidget { - display: inline-block; - position: relative; - width: 100%; - max-width: 50em; - background-color: #fff; - margin-right: 0.5em; -} -.oo-ui-dropdownWidget-handle { - position: relative; - width: 100%; - display: block; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - cursor: default; - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle { - cursor: pointer; -} -.oo-ui-dropdownWidget:last-child { - margin-right: 0; -} -.oo-ui-dropdownWidget-handle { - height: 2.5em; - border: 1px solid #ccc; - border-radius: 3px; -} -.oo-ui-dropdownWidget-handle:hover { - border-color: #aaa; -} -.oo-ui-dropdownWidget-handle:focus { - outline: 0; -} -.oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon, -.oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator { - position: absolute; - top: 0; - height: 100%; -} -.oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon { - left: 0.25em; - margin: 0 0.3em; -} -.oo-ui-dropdownWidget-handle .oo-ui-labelElement-label { - line-height: 2.5em; - margin: 0 0.5em; -} -.oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator { - right: 0; - margin: 0 0.775em; -} -.oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle:focus { - border-color: #ace; - box-shadow: 0 0 2px 2px #ace; -} -.oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-dropdownWidget-handle { - color: #ccc; - text-shadow: 0 1px 1px #fff; - border-color: #ddd; - background-color: #f3f3f3; -} -.oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator { - opacity: 0.2; -} -.oo-ui-dropdownWidget.oo-ui-iconElement .oo-ui-dropdownWidget-handle .oo-ui-labelElement-label { - margin-left: 3em; -} -.oo-ui-dropdownWidget.oo-ui-indicatorElement .oo-ui-dropdownWidget-handle .oo-ui-labelElement-label { - margin-right: 2em; -} -.oo-ui-comboBoxInputWidget { - display: inline-block; - position: relative; - width: 100%; - max-width: 50em; - margin-right: 0.5em; -} -.oo-ui-comboBoxInputWidget-field { - display: table; - width: 100%; - table-layout: fixed; -} -.oo-ui-comboBoxInputWidget .oo-ui-inputWidget-input { - display: table-cell; - vertical-align: middle; - position: relative; - overflow: hidden; -} -.oo-ui-comboBoxInputWidget-dropdownButton { - display: table-cell; -} -.oo-ui-comboBoxInputWidget-dropdownButton > .oo-ui-buttonElement-button { - display: block; - overflow: hidden; -} -.oo-ui-comboBoxInputWidget.oo-ui-comboBoxInputWidget-empty .oo-ui-comboBoxInputWidget-dropdownButton { - display: none; -} -.oo-ui-comboBoxInputWidget-php ::-webkit-calendar-picker-indicator { - opacity: 0; - position: absolute; - right: 0; - top: 0; - width: 2.5em; - height: 2.5em; - padding: 0; -} -.oo-ui-comboBoxInputWidget-php > .oo-ui-indicatorWidget { - display: block; - position: absolute; - top: 0; - height: 100%; - pointer-events: none; -} -.oo-ui-comboBoxInputWidget:last-child { - margin-right: 0; -} -.oo-ui-comboBoxInputWidget-dropdownButton { - position: absolute; - top: 0; - right: 0; - visibility: hidden; -} -.oo-ui-comboBoxInputWidget-dropdownButton .oo-ui-buttonElement-button { - padding: 0; -} -.oo-ui-comboBoxInputWidget-dropdownButton .oo-ui-buttonElement-button .oo-ui-indicatorElement-indicator.oo-ui-indicator-down { - visibility: visible; - margin: 0.775em; -} -.oo-ui-comboBoxInputWidget-php .oo-ui-indicatorWidget { - right: 0; - max-height: 2.5em; - margin: 0; - margin-right: 0.775em; -} -.oo-ui-comboBoxInputWidget.oo-ui-widget-disabled .oo-ui-textInputWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator { - cursor: default; - opacity: 0.2; -} -.oo-ui-multioptionWidget { - position: relative; - display: block; -} -.oo-ui-multioptionWidget.oo-ui-widget-enabled { - cursor: pointer; -} -.oo-ui-multioptionWidget.oo-ui-widget-disabled { - cursor: default; -} -.oo-ui-multioptionWidget.oo-ui-labelElement .oo-ui-labelElement-label { - display: block; - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; -} -.oo-ui-multioptionWidget .oo-ui-labelElement-label { - line-height: 1.5em; -} -.oo-ui-multioptionWidget.oo-ui-widget-disabled { - color: #ccc; -} -.oo-ui-checkboxMultioptionWidget { - display: table; - width: 100%; - padding: 0.3125em 0; -} -.oo-ui-checkboxMultioptionWidget .oo-ui-checkboxInputWidget, -.oo-ui-checkboxMultioptionWidget.oo-ui-labelElement > .oo-ui-labelElement-label { - display: table-cell; - vertical-align: top; -} -.oo-ui-checkboxMultioptionWidget .oo-ui-checkboxInputWidget { - width: 1px; -} -.oo-ui-checkboxMultioptionWidget.oo-ui-labelElement > .oo-ui-labelElement-label { - white-space: normal; -} -.oo-ui-checkboxMultioptionWidget.oo-ui-labelElement .oo-ui-labelElement-label { - padding-left: 0.5em; -} -.oo-ui-checkboxMultioptionWidget .oo-ui-checkboxInputWidget { - margin-right: 0; -} -.oo-ui-progressBarWidget { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - max-width: 50em; - background-color: #fff; - border: 1px solid #ccc; - border-radius: 3px; - overflow: hidden; -} -.oo-ui-progressBarWidget-bar { - background-color: #cde7f4; - background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #eaf4fa), color-stop(100%, #b0d9ee)); - background-image: -webkit-linear-gradient(top, #eaf4fa 0, #b0d9ee 100%); - background-image: -moz-linear-gradient(top, #eaf4fa 0, #b0d9ee 100%); - background-image: linear-gradient(to bottom, #eaf4fa 0, #b0d9ee 100%); - height: 1em; - border-right: 1px solid #ccc; - -webkit-transition: width 250ms; - -moz-transition: width 250ms; - transition: width 250ms; -} -.oo-ui-progressBarWidget-indeterminate .oo-ui-progressBarWidget-bar { - width: 40%; - border-left: 1px solid #a6cee1; - -webkit-animation: oo-ui-progressBarWidget-slide 2s infinite linear; - -moz-animation: oo-ui-progressBarWidget-slide 2s infinite linear; - animation: oo-ui-progressBarWidget-slide 2s infinite linear; - -webkit-transform: translate(-25%); - -moz-transform: translate(-25%); - -ms-transform: translate(-25%); - transform: translate(-25%); -} -.oo-ui-progressBarWidget.oo-ui-widget-disabled { - opacity: 0.6; -} -@-webkit-keyframes oo-ui-progressBarWidget-slide { - from { - -webkit-transform: translate(-100%); - -moz-transform: translate(-100%); - -ms-transform: translate(-100%); - transform: translate(-100%); - } - to { - -webkit-transform: translate(350%); - -moz-transform: translate(350%); - -ms-transform: translate(350%); - transform: translate(350%); - } -} -@-moz-keyframes oo-ui-progressBarWidget-slide { - from { - -webkit-transform: translate(-100%); - -moz-transform: translate(-100%); - -ms-transform: translate(-100%); - transform: translate(-100%); - } - to { - -webkit-transform: translate(350%); - -moz-transform: translate(350%); - -ms-transform: translate(350%); - transform: translate(350%); - } -} -@keyframes oo-ui-progressBarWidget-slide { - from { - -webkit-transform: translate(-100%); - -moz-transform: translate(-100%); - -ms-transform: translate(-100%); - transform: translate(-100%); - } - to { - -webkit-transform: translate(350%); - -moz-transform: translate(350%); - -ms-transform: translate(350%); - transform: translate(350%); - } -} -.oo-ui-numberInputWidget { - display: inline-block; - position: relative; - max-width: 50em; -} -.oo-ui-numberInputWidget-buttoned .oo-ui-buttonWidget, -.oo-ui-numberInputWidget-buttoned .oo-ui-inputWidget-input { - display: table-cell; - height: 100%; -} -.oo-ui-numberInputWidget-field { - display: table; - table-layout: fixed; - width: 100%; -} -.oo-ui-numberInputWidget-field > .oo-ui-buttonWidget { - width: 2.5em; -} -.oo-ui-numberInputWidget-buttoned .oo-ui-buttonElement-button .oo-ui-iconElement-icon { - min-width: 20px; - width: 1.5625em; -} -.oo-ui-numberInputWidget-buttoned .oo-ui-inputWidget-input { - border-radius: 0; -} -.oo-ui-numberInputWidget-minusButton > .oo-ui-buttonElement-button { - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-right-width: 0; -} -.oo-ui-numberInputWidget-plusButton > .oo-ui-buttonElement-button { - border-top-left-radius: 0; - border-bottom-left-radius: 0; - border-left-width: 0; -} -.oo-ui-defaultOverlay { - position: absolute; - top: 0; - /* @noflip */ - left: 0; -} diff --git a/resources/lib/oojs-ui/oojs-ui-core-wikimediaui.css b/resources/lib/oojs-ui/oojs-ui-core-wikimediaui.css deleted file mode 100644 index b61c4f2626..0000000000 --- a/resources/lib/oojs-ui/oojs-ui-core-wikimediaui.css +++ /dev/null @@ -1,2015 +0,0 @@ -/*! - * OOUI v0.28.1 - * https://www.mediawiki.org/wiki/OOUI - * - * Copyright 2011–2018 OOUI Team and other contributors. - * Released under the MIT license - * http://oojs.mit-license.org - * - * Date: 2018-09-05T00:41:53Z - */ -/** - * WikimediaUI Base v0.12.0 - * Wikimedia Foundation user interface base variables - */ -.oo-ui-element-hidden { - display: none !important; -} -.oo-ui-buttonElement { - display: inline-block; - line-height: normal; - vertical-align: middle; -} -.oo-ui-buttonElement > .oo-ui-buttonElement-button { - cursor: pointer; - display: inline-block; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - vertical-align: middle; - font-family: inherit; - font-size: inherit; - white-space: nowrap; - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.oo-ui-buttonElement > .oo-ui-buttonElement-button::-moz-focus-inner { - border-color: transparent; - padding: 0; -} -.oo-ui-buttonElement.oo-ui-widget-disabled > .oo-ui-buttonElement-button { - cursor: default; -} -.oo-ui-buttonElement-frameless { - position: relative; -} -.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button { - vertical-align: top; - text-align: center; -} -.oo-ui-buttonElement > .oo-ui-buttonElement-button { - position: relative; - border-radius: 2px; - padding-top: 2.14285714em; - font-weight: bold; - text-decoration: none; -} -.oo-ui-buttonElement > .oo-ui-buttonElement-button:focus { - outline: 0; -} -.oo-ui-buttonElement > input.oo-ui-buttonElement-button { - -webkit-appearance: none; -} -.oo-ui-buttonElement.oo-ui-labelElement > .oo-ui-buttonElement-button { - line-height: 1; -} -.oo-ui-buttonElement.oo-ui-labelElement > input.oo-ui-buttonElement-button, -.oo-ui-buttonElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { - line-height: 1.07142857em; -} -.oo-ui-buttonElement.oo-ui-labelElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button { - padding-right: 2.28571429em; -} -.oo-ui-buttonElement.oo-ui-iconElement .oo-ui-iconElement-icon, -.oo-ui-buttonElement.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator { - -webkit-transform: translateZ(0); - transform: translateZ(0); -} -.oo-ui-buttonElement.oo-ui-indicatorElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator, -.oo-ui-buttonElement.oo-ui-indicatorElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator { - right: 0.85714286em; -} -.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button { - -webkit-transition: background-color 100ms, color 100ms, border-color 100ms, box-shadow 100ms; - -moz-transition: background-color 100ms, color 100ms, border-color 100ms, box-shadow 100ms; - transition: background-color 100ms, color 100ms, border-color 100ms, box-shadow 100ms; -} -.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon, -.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator { - opacity: 0.87; - -webkit-transition: opacity 100ms; - -moz-transition: opacity 100ms; - transition: opacity 100ms; -} -.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon.oo-ui-image-invert, -.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator.oo-ui-image-invert { - opacity: 1; -} -.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover > .oo-ui-iconElement-icon, -.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover > .oo-ui-indicatorElement-indicator { - opacity: 0.73; -} -.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover > .oo-ui-iconElement-icon.oo-ui-image-invert, -.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover > .oo-ui-indicatorElement-indicator.oo-ui-image-invert { - opacity: 1; -} -.oo-ui-buttonElement.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon, -.oo-ui-buttonElement.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator { - opacity: 1; -} -.oo-ui-buttonElement-frameless.oo-ui-iconElement:first-child { - margin-left: -0.42857143em; -} -.oo-ui-buttonElement-frameless.oo-ui-iconElement > .oo-ui-buttonElement-button { - min-width: 1.42857143em; - min-height: 1.42857143em; - border-color: #fff; - border-color: transparent; - border-style: solid; - border-width: 1px; - padding-top: 2.14285714em; - padding-left: 2.14285714em; -} -.oo-ui-buttonElement-frameless.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { - left: 0.35714286em; -} -.oo-ui-buttonElement-frameless.oo-ui-labelElement:first-child { - margin-left: -0.14285714em; -} -.oo-ui-buttonElement-frameless.oo-ui-labelElement.oo-ui-iconElement:first-child { - margin-left: -0.42857143em; -} -.oo-ui-buttonElement-frameless.oo-ui-labelElement > .oo-ui-buttonElement-button { - border-color: #fff; - border-color: transparent; - border-style: solid; - border-width: 1px; - padding: 0.57142857em 0.14285714em 0.5em; -} -.oo-ui-buttonElement-frameless.oo-ui-labelElement.oo-ui-iconElement > .oo-ui-buttonElement-button { - padding-left: 2.14285714em; -} -.oo-ui-buttonElement-frameless.oo-ui-indicatorElement > .oo-ui-buttonElement-button { - min-width: 12px; - min-height: 12px; - padding-top: 0; -} -.oo-ui-buttonElement-frameless.oo-ui-indicatorElement.oo-ui-iconElement > .oo-ui-buttonElement-button { - padding-left: 3.85714286em; - padding-top: 2.14285714em; -} -.oo-ui-buttonElement-frameless.oo-ui-indicatorElement.oo-ui-labelElement > .oo-ui-buttonElement-button { - padding-left: 0.14285714em; - padding-top: 0.57142857em; -} -.oo-ui-buttonElement-frameless.oo-ui-indicatorElement.oo-ui-iconElement.oo-ui-labelElement > .oo-ui-buttonElement-button { - padding-left: 2.14285714em; -} -.oo-ui-buttonElement-frameless.oo-ui-widget-enabled > .oo-ui-buttonElement-button { - color: #222; -} -.oo-ui-buttonElement-frameless.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover { - color: #444; -} -.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-iconElement > .oo-ui-buttonElement-button:focus, -.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-labelElement > .oo-ui-buttonElement-button:focus { - border-color: #36c; - box-shadow: inset 0 0 0 1px #36c; -} -.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-iconElement > .oo-ui-buttonElement-button:focus:active, -.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-labelElement > .oo-ui-buttonElement-button:focus:active { - border-color: #fff; - border-color: transparent; - box-shadow: none; -} -.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-indicatorElement:not( .oo-ui-iconElement ):not( .oo-ui-labelElement ) > .oo-ui-buttonElement-button { - border-radius: 1px; -} -.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-indicatorElement:not( .oo-ui-iconElement ):not( .oo-ui-labelElement ) > .oo-ui-buttonElement-button:focus { - box-shadow: 0 0 0 2px #36c; -} -.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-indicatorElement:not( .oo-ui-iconElement ):not( .oo-ui-labelElement ) > .oo-ui-buttonElement-button:focus:active { - box-shadow: none; -} -.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > input.oo-ui-buttonElement-button, -.oo-ui-buttonElement-frameless.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active { - color: #000; - border-color: #fff; - border-color: transparent; - box-shadow: none; -} -.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button { - color: #36c; -} -.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:hover { - color: #447ff5; -} -.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:active, -.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:active:focus, -.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button { - color: #2a4b8d; - box-shadow: none; -} -.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button { - color: #d33; -} -.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:hover { - color: #ff4242; -} -.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:active, -.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:active:focus, -.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button { - color: #b32424; - box-shadow: none; -} -.oo-ui-buttonElement-frameless.oo-ui-widget-enabled[class*='oo-ui-flaggedElement'] > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon, -.oo-ui-buttonElement-frameless.oo-ui-widget-enabled[class*='oo-ui-flaggedElement'] > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator { - opacity: 1; -} -.oo-ui-buttonElement-frameless.oo-ui-widget-enabled[class*='oo-ui-flaggedElement'] > .oo-ui-buttonElement-button:hover > .oo-ui-iconElement-icon, -.oo-ui-buttonElement-frameless.oo-ui-widget-enabled[class*='oo-ui-flaggedElement'] > .oo-ui-buttonElement-button:hover > .oo-ui-indicatorElement-indicator { - opacity: 0.73; -} -.oo-ui-buttonElement-frameless.oo-ui-widget-disabled > .oo-ui-buttonElement-button { - color: #72777d; -} -.oo-ui-buttonElement-frameless.oo-ui-widget-disabled > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon, -.oo-ui-buttonElement-frameless.oo-ui-widget-disabled > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator { - opacity: 0.51; -} -.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button { - border-style: solid; - border-width: 1px; - border-radius: 2px; - padding-left: 0.85714286em; - padding-right: 0.85714286em; -} -.oo-ui-buttonElement-framed.oo-ui-iconElement > .oo-ui-buttonElement-button { - padding-top: 2.14285714em; - padding-bottom: 0; - padding-left: 2.14285714em; -} -.oo-ui-buttonElement-framed.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { - left: 0.78571429em; -} -.oo-ui-buttonElement-framed.oo-ui-iconElement.oo-ui-labelElement > .oo-ui-buttonElement-button, -.oo-ui-buttonElement-framed.oo-ui-iconElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button { - padding-left: 2.64285714em; -} -.oo-ui-buttonElement-framed.oo-ui-indicatorElement > .oo-ui-buttonElement-button { - padding-top: 2.14285714em; - padding-right: 2.14285714em; - padding-bottom: 0; -} -.oo-ui-buttonElement-framed.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator { - right: 1.07142857em; -} -.oo-ui-buttonElement-framed.oo-ui-indicatorElement.oo-ui-labelElement > .oo-ui-buttonElement-button { - padding-right: 2.28571429em; -} -.oo-ui-buttonElement-framed.oo-ui-labelElement > .oo-ui-buttonElement-button { - padding-top: 0.57142857em; - padding-bottom: 0.5em; -} -.oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button { - background-color: #c8ccd1; - color: #fff; - border-color: #c8ccd1; -} -.oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button { - background-color: #f8f9fa; - color: #222; - border-color: #a2a9b1; -} -.oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover { - background-color: #fff; - color: #444; - border-color: #a2a9b1; -} -.oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button:focus { - border-color: #36c; - box-shadow: inset 0 0 0 1px #36c; -} -.oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active, -.oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active:focus, -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button { - background-color: #c8ccd1; - color: #000; - border-color: #72777d; - box-shadow: none; -} -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button { - background-color: #2a4b8d; - color: #fff; - border-color: #2a4b8d; -} -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button:focus { - border-color: #36c; - box-shadow: inset 0 0 0 1px #36c, inset 0 0 0 2px #fff; -} -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button { - color: #36c; -} -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:hover { - background-color: #fff; - border-color: #447ff5; -} -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:active, -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:active:focus, -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button, -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button, -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-popupToolGroup-active > .oo-ui-buttonElement-button { - background-color: #eff3fa; - color: #2a4b8d; - border-color: #2a4b8d; - box-shadow: none; -} -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:focus { - border-color: #36c; - box-shadow: inset 0 0 0 1px #36c; -} -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button { - color: #d73333; -} -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:hover { - background-color: #fff; - border-color: #ff4242; -} -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:active, -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:active:focus, -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button, -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button, -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-popupToolGroup-active > .oo-ui-buttonElement-button { - background-color: #ffffff; - color: #b32424; - border-color: #b32424; - box-shadow: none; -} -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:focus { - border-color: #d33; - box-shadow: inset 0 0 0 1px #d33; -} -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button { - color: #fff; - background-color: #36c; - border-color: #36c; -} -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:hover { - background-color: #447ff5; - border-color: #447ff5; -} -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:active, -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:active:focus, -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button, -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button, -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive.oo-ui-popupToolGroup-active > .oo-ui-buttonElement-button { - color: #fff; - background-color: #2a4b8d; - border-color: #2a4b8d; - box-shadow: none; -} -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:focus { - border-color: #36c; - box-shadow: inset 0 0 0 1px #36c, inset 0 0 0 2px #fff; -} -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button { - color: #fff; - background-color: #d33; - border-color: #d33; -} -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:hover { - background-color: #ff4242; - border-color: #ff4242; -} -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:active, -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:active:focus, -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button, -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button, -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive.oo-ui-popupToolGroup-active > .oo-ui-buttonElement-button { - color: #fff; - background-color: #b32424; - border-color: #b32424; - box-shadow: none; -} -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:focus { - border-color: #d33; - box-shadow: inset 0 0 0 1px #d33, inset 0 0 0 2px #fff; -} -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon, -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator { - opacity: 1; -} -.oo-ui-clippableElement-clippable { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - min-height: 3.125em; -} -.oo-ui-floatableElement { - position: absolute; -} -.oo-ui-iconElement-icon { - background-size: contain; - background-position: center center; - background-repeat: no-repeat; - position: absolute; - top: 0; - min-width: 20px; - width: 1.42857143em; - min-height: 20px; - height: 100%; -} -.oo-ui-iconElement-noIcon { - display: none; -} -.oo-ui-indicatorElement-indicator { - background-size: contain; - background-position: center center; - background-repeat: no-repeat; - position: absolute; - top: 0; - min-width: 12px; - width: 0.85714286em; - min-height: 12px; - height: 100%; -} -.oo-ui-indicatorElement-noIndicator { - display: none; -} -.oo-ui-labelElement .oo-ui-labelElement-label, -.oo-ui-labelElement.oo-ui-labelElement-label { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.oo-ui-labelElement .oo-ui-labelElement-label { - line-height: 1.42857143em; -} -.oo-ui-labelElement .oo-ui-labelElement-label-highlight { - font-weight: bold; -} -.oo-ui-pendingElement-pending { - background-image: /* @embed */ url(themes/wikimediaui/images/textures/pending.gif); -} -.oo-ui-fieldLayout { - display: block; - margin-top: 1.14285714em; -} -.oo-ui-fieldLayout:before, -.oo-ui-fieldLayout:after { - content: ' '; - display: table; -} -.oo-ui-fieldLayout:after { - clear: both; -} -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header, -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header, -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-help, -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-help, -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field, -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field { - display: block; - float: left; -} -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header { - text-align: right; -} -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body { - display: table; - width: 100%; -} -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header, -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field { - display: table-cell; -} -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header { - vertical-align: middle; -} -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field { - width: 1px; - vertical-align: top; -} -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header, -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field { - display: block; -} -.oo-ui-fieldLayout .oo-ui-fieldLayout-help { - float: right; -} -.oo-ui-fieldLayout .oo-ui-fieldLayout-help > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { - display: block; - position: absolute !important; - /* stylelint-disable-line declaration-no-important */ - clip: rect(1px, 1px, 1px, 1px); - width: 1px; - height: 1px; - margin: -1px; - border: 0; - padding: 0; - overflow: hidden; -} -.oo-ui-fieldLayout .oo-ui-fieldLayout-help > .oo-ui-popupWidget > .oo-ui-popupWidget-popup { - z-index: 1; -} -.oo-ui-fieldLayout.oo-ui-labelElement, -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline { - margin-top: 0.85714286em; -} -.oo-ui-fieldLayout:first-child, -.oo-ui-fieldLayout.oo-ui-labelElement:first-child, -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline:first-child { - margin-top: 0; -} -.oo-ui-fieldLayout.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header { - padding-bottom: 0.28571429em; -} -.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-top > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header, -.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body { - max-width: 50em; -} -.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header, -.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - width: 40%; - padding-right: 2.64285714em; -} -.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header > .oo-ui-labelElement-label, -.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header > .oo-ui-labelElement-label { - display: block; - padding-top: 0.28571429em; -} -.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-help, -.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-help { - margin-right: 0; - margin-left: -2.35714286em; -} -.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field, -.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field { - width: 60%; -} -.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header { - padding-top: 0; - padding-bottom: 0; - padding-left: 0.42857143em; -} -.oo-ui-fieldLayout .oo-ui-fieldLayout-help { - margin-right: 0; -} -.oo-ui-fieldLayout .oo-ui-fieldLayout-help:last-child { - margin-right: 0; -} -.oo-ui-fieldLayout .oo-ui-fieldLayout-help .oo-ui-buttonElement-button { - padding-top: 1.42857143em; - padding-right: 0; -} -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top > .oo-ui-fieldLayout-body > .oo-ui-inline-help { - margin-top: 0.28571429em; -} -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top .oo-ui-fieldLayout-help, -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline .oo-ui-fieldLayout-help { - margin-top: -0.42857143em; - margin-right: -0.57142857em; - margin-left: 0; -} -.oo-ui-fieldLayout-messages { - list-style: none none; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - max-width: 50em; - margin: 0; - padding: 0.28571429em 0.85714286em; -} -.oo-ui-fieldLayout-messages > li { - display: table; - margin: 0.28571429em 0 0; - padding: 0; -} -.oo-ui-fieldLayout-messages .oo-ui-iconElement.oo-ui-iconElement-icon { - display: table-cell; - position: static; - top: auto; - height: 1.42857143em; -} -.oo-ui-fieldLayout-messages .oo-ui-labelWidget { - display: table-cell; - padding-left: 0.42857143em; - vertical-align: middle; -} -.oo-ui-fieldLayout-disabled > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header > .oo-ui-labelElement-label { - color: #72777d; -} -.oo-ui-actionFieldLayout-input, -.oo-ui-actionFieldLayout-button { - display: table-cell; - vertical-align: middle; -} -.oo-ui-actionFieldLayout-button { - width: 1%; - white-space: nowrap; -} -.oo-ui-actionFieldLayout.oo-ui-fieldLayout-align-top { - max-width: 50em; -} -.oo-ui-actionFieldLayout .oo-ui-actionFieldLayout-input .oo-ui-widget:not( .oo-ui-textInputWidget ) { - margin-right: 0.57142857em; -} -.oo-ui-actionFieldLayout .oo-ui-actionFieldLayout-input .oo-ui-widget.oo-ui-textInputWidget > .oo-ui-inputWidget-input { - border-radius: 2px 0 0 2px; - position: relative; -} -.oo-ui-actionFieldLayout .oo-ui-actionFieldLayout-button .oo-ui-buttonElement-framed > .oo-ui-buttonElement-button { - border-radius: 0 2px 2px 0; - margin-left: -1px; -} -.oo-ui-actionFieldLayout .oo-ui-actionFieldLayout-button .oo-ui-buttonElement-frameless { - margin-left: 0.14285714em; -} -.oo-ui-actionFieldLayout .oo-ui-actionFieldLayout-input > .oo-ui-textInputWidget > .oo-ui-inputWidget-input:hover, -.oo-ui-actionFieldLayout .oo-ui-actionFieldLayout-input > .oo-ui-textInputWidget > .oo-ui-inputWidget-input:hover ~ *, -.oo-ui-actionFieldLayout .oo-ui-actionFieldLayout-input > .oo-ui-textInputWidget > .oo-ui-inputWidget-input:focus, -.oo-ui-actionFieldLayout .oo-ui-actionFieldLayout-input > .oo-ui-textInputWidget > .oo-ui-inputWidget-input:focus ~ * { - z-index: 1; -} -.oo-ui-actionFieldLayout .oo-ui-actionFieldLayout-button > .oo-ui-buttonElement > .oo-ui-buttonElement-button:hover, -.oo-ui-actionFieldLayout .oo-ui-actionFieldLayout-button > .oo-ui-buttonElement > .oo-ui-buttonElement-button:focus { - z-index: 1; -} -.oo-ui-fieldsetLayout { - position: relative; - min-width: 0; - margin: 0; - border: 0; - padding: 0.01px 0 0 0; -} -body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { - display: table-cell; -} -.oo-ui-fieldsetLayout > .oo-ui-fieldsetLayout-header { - display: none; -} -.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-fieldsetLayout-header, -.oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-fieldsetLayout-header { - color: inherit; - display: inline-table; - box-sizing: border-box; - padding: 0; - white-space: normal; - float: left; - width: 100%; -} -.oo-ui-fieldsetLayout-group { - clear: both; -} -.oo-ui-fieldsetLayout .oo-ui-fieldsetLayout-help { - float: right; -} -.oo-ui-fieldsetLayout .oo-ui-fieldsetLayout-help > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { - display: block; - position: absolute !important; - /* stylelint-disable-line declaration-no-important */ - clip: rect(1px, 1px, 1px, 1px); - width: 1px; - height: 1px; - margin: -1px; - border: 0; - padding: 0; - overflow: hidden; -} -.oo-ui-fieldsetLayout .oo-ui-fieldsetLayout-help > .oo-ui-popupWidget > .oo-ui-popupWidget-popup { - z-index: 1; -} -.oo-ui-fieldsetLayout .oo-ui-fieldsetLayout-header { - max-width: 50em; -} -.oo-ui-fieldsetLayout .oo-ui-fieldsetLayout-header .oo-ui-iconElement-icon { - height: 1.42857143em; -} -.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-fieldsetLayout-header .oo-ui-iconElement-icon { - display: block; -} -.oo-ui-fieldsetLayout + .oo-ui-fieldsetLayout, -.oo-ui-fieldsetLayout + .oo-ui-formLayout { - margin-top: 1.71428571em; -} -.oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-fieldsetLayout-header > .oo-ui-labelElement-label { - display: inline-block; - margin-bottom: 0.5em; - font-size: 1.14285714em; - font-weight: bold; -} -.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-fieldsetLayout-header > .oo-ui-labelElement-label { - padding-left: 1.625em; -} -.oo-ui-fieldsetLayout .oo-ui-fieldsetLayout-help { - margin-right: 0; - margin-right: -0.57142857em; -} -.oo-ui-fieldsetLayout .oo-ui-fieldsetLayout-help:last-child { - margin-right: 0; -} -.oo-ui-fieldsetLayout .oo-ui-fieldsetLayout-help:last-child { - margin-right: -0.57142857em; -} -.oo-ui-fieldsetLayout .oo-ui-fieldsetLayout-help .oo-ui-buttonElement-button { - padding-top: 1.42857143em; - padding-right: 0; -} -.oo-ui-formLayout + .oo-ui-fieldsetLayout, -.oo-ui-formLayout + .oo-ui-formLayout { - margin-top: 1.71428571em; -} -.oo-ui-panelLayout { - position: relative; -} -.oo-ui-panelLayout-scrollable { - overflow: auto; -} -.oo-ui-panelLayout-expanded { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; -} -.oo-ui-panelLayout-padded { - padding: 1.14285714em; -} -.oo-ui-panelLayout-padded.oo-ui-formLayout > .oo-ui-fieldsetLayout .oo-ui-labelElement-label, -.oo-ui-panelLayout-padded.oo-ui-formLayout > .oo-ui-fieldsetLayout .oo-ui-iconElement-icon { - margin-top: -0.42857143em; -} -.oo-ui-panelLayout-framed { - border: 1px solid #a2a9b1; - border-radius: 2px; -} -.oo-ui-panelLayout-padded.oo-ui-panelLayout-framed { - margin: 0.85714286em 0; -} -.oo-ui-horizontalLayout > .oo-ui-widget { - display: inline-block; - vertical-align: middle; -} -.oo-ui-horizontalLayout > .oo-ui-layout { - display: inline-block; -} -.oo-ui-horizontalLayout > .oo-ui-layout, -.oo-ui-horizontalLayout > .oo-ui-widget { - margin-right: 0.5em; -} -.oo-ui-horizontalLayout > .oo-ui-layout:last-child, -.oo-ui-horizontalLayout > .oo-ui-widget:last-child { - margin-right: 0; -} -.oo-ui-horizontalLayout > .oo-ui-layout { - margin-top: 0; -} -.oo-ui-horizontalLayout > .oo-ui-widget { - margin-bottom: 0.5em; -} -.oo-ui-optionWidget { - position: relative; - display: block; -} -.oo-ui-optionWidget.oo-ui-widget-enabled { - cursor: pointer; -} -.oo-ui-optionWidget.oo-ui-widget-disabled { - cursor: default; -} -.oo-ui-optionWidget.oo-ui-labelElement > .oo-ui-labelElement-label { - display: block; - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; -} -.oo-ui-optionWidget-selected .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { - opacity: 1; -} -.oo-ui-optionWidget.oo-ui-widget-disabled { - color: #72777d; -} -.oo-ui-decoratedOptionWidget { - padding: 0.64285714em 0.85714286em 0.57142857em; - line-height: 1; -} -.oo-ui-decoratedOptionWidget.oo-ui-iconElement { - padding-left: 2.64285714em; -} -.oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon { - left: 0.78571429em; -} -.oo-ui-decoratedOptionWidget .oo-ui-labelElement-label { - line-height: 1.07142857em; -} -.oo-ui-decoratedOptionWidget.oo-ui-indicatorElement { - padding-right: 2.28571429em; -} -.oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator { - right: 0.85714286em; -} -.oo-ui-decoratedOptionWidget.oo-ui-widget-enabled:hover .oo-ui-iconElement-icon, -.oo-ui-decoratedOptionWidget.oo-ui-widget-enabled:hover .oo-ui-indicatorElement-indicator { - opacity: 0.73; -} -.oo-ui-decoratedOptionWidget.oo-ui-widget-enabled .oo-ui-iconElement-icon, -.oo-ui-decoratedOptionWidget.oo-ui-widget-enabled .oo-ui-indicatorElement-indicator { - opacity: 0.87; - -webkit-transition: opacity 100ms; - -moz-transition: opacity 100ms; - transition: opacity 100ms; -} -.oo-ui-decoratedOptionWidget.oo-ui-widget-disabled .oo-ui-iconElement-icon, -.oo-ui-decoratedOptionWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator { - opacity: 0.51; -} -.oo-ui-radioSelectWidget:focus { - outline: 0; -} -.oo-ui-radioSelectWidget:focus [type='radio']:checked + span:before { - border-color: #fff; -} -.oo-ui-radioOptionWidget { - display: table; - width: 100%; - padding: 0.28571429em 0; -} -.oo-ui-radioOptionWidget .oo-ui-radioInputWidget, -.oo-ui-radioOptionWidget.oo-ui-labelElement > .oo-ui-labelElement-label { - display: table-cell; - vertical-align: top; -} -.oo-ui-radioOptionWidget .oo-ui-radioInputWidget { - width: 1px; -} -.oo-ui-radioOptionWidget.oo-ui-labelElement > .oo-ui-labelElement-label { - white-space: normal; -} -.oo-ui-radioOptionWidget.oo-ui-labelElement .oo-ui-labelElement-label { - padding-left: 0.42857143em; -} -.oo-ui-radioOptionWidget .oo-ui-radioInputWidget { - margin-right: 0; -} -.oo-ui-labelWidget { - display: inline-block; -} -.oo-ui-labelWidget.oo-ui-inline-help { - display: block; - color: #54595d; - font-size: 0.92857143em; -} -.oo-ui-iconWidget { - vertical-align: middle; - line-height: 2.5; - display: inline-block; - position: static; - top: auto; - height: 1.42857143em; -} -.oo-ui-iconWidget.oo-ui-widget-disabled { - opacity: 0.51; -} -.oo-ui-indicatorWidget { - vertical-align: middle; - line-height: 2.5; - margin: 0.42857143em; - display: inline-block; - position: static; - top: auto; - height: 0.85714286em; -} -.oo-ui-indicatorWidget.oo-ui-widget-disabled { - opacity: 0.51; -} -.oo-ui-buttonWidget { - margin-right: 0.5em; -} -.oo-ui-buttonWidget:last-child { - margin-right: 0; -} -.oo-ui-buttonGroupWidget { - display: inline-block; - white-space: nowrap; - border-radius: 2px; - margin-right: 0.5em; - z-index: 0; - position: relative; -} -.oo-ui-buttonGroupWidget .oo-ui-buttonWidget.oo-ui-buttonElement-active .oo-ui-buttonElement-button { - cursor: default; -} -.oo-ui-buttonGroupWidget:last-child { - margin-right: 0; -} -.oo-ui-buttonGroupWidget .oo-ui-buttonElement { - margin-right: 0; - z-index: 0; -} -.oo-ui-buttonGroupWidget .oo-ui-buttonElement:last-child { - margin-right: 0; -} -.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed .oo-ui-buttonElement-button { - margin-left: -1px; - border-radius: 0; -} -.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed:first-child .oo-ui-buttonElement-button { - margin-left: 0; - border-bottom-left-radius: 2px; - border-top-left-radius: 2px; -} -.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed:last-child .oo-ui-buttonElement-button { - border-bottom-right-radius: 2px; - border-top-right-radius: 2px; -} -.oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed.oo-ui-widget-disabled + .oo-ui-widget-disabled > .oo-ui-buttonElement-button { - border-left-color: #fff; -} -.oo-ui-buttonGroupWidget.oo-ui-widget-enabled .oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active { - z-index: 1; -} -.oo-ui-buttonGroupWidget.oo-ui-widget-enabled .oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button:focus { - z-index: 2; -} -.oo-ui-buttonGroupWidget.oo-ui-widget-enabled .oo-ui-buttonElement.oo-ui-buttonElement-active > .oo-ui-buttonElement-button { - z-index: 3; -} -.oo-ui-buttonGroupWidget.oo-ui-widget-enabled .oo-ui-buttonElement.oo-ui-widget-disabled > .oo-ui-buttonElement-button { - z-index: -1; -} -.oo-ui-buttonGroupWidget.oo-ui-widget-enabled .oo-ui-buttonElement.oo-ui-toggleWidget-on + .oo-ui-toggleWidget-on > .oo-ui-buttonElement-button, -.oo-ui-buttonGroupWidget.oo-ui-widget-enabled .oo-ui-buttonElement.oo-ui-toggleWidget-on + .oo-ui-toggleWidget-on > .oo-ui-buttonElement-button:active { - border-left-color: #a2a9b1; - z-index: 3; -} -.oo-ui-popupWidget { - position: absolute; -} -.oo-ui-popupWidget-popup { - position: relative; - overflow: hidden; - z-index: 1; -} -.oo-ui-popupWidget-anchor { - display: none; - z-index: 1; -} -.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor { - display: block; - position: absolute; - background-repeat: no-repeat; -} -.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:before, -.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:after { - content: ''; - position: absolute; - width: 0; - height: 0; - border-style: solid; - border-color: transparent; -} -.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor { - left: 0; -} -.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor:before, -.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor:after { - border-top: 0; -} -.oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor { - left: 0; -} -.oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor:before, -.oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor:after { - border-bottom: 0; -} -.oo-ui-popupWidget-anchored-start .oo-ui-popupWidget-anchor { - top: 0; -} -.oo-ui-popupWidget-anchored-start .oo-ui-popupWidget-anchor:before, -.oo-ui-popupWidget-anchored-start .oo-ui-popupWidget-anchor:after { - border-left: 0; -} -.oo-ui-popupWidget-anchored-end .oo-ui-popupWidget-anchor { - top: 0; -} -.oo-ui-popupWidget-anchored-end .oo-ui-popupWidget-anchor:before, -.oo-ui-popupWidget-anchored-end .oo-ui-popupWidget-anchor:after { - border-right: 0; -} -.oo-ui-popupWidget-head { - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.oo-ui-popupWidget-head > .oo-ui-buttonWidget { - position: absolute; -} -.oo-ui-popupWidget-head > .oo-ui-labelElement-label { - float: left; - cursor: default; -} -.oo-ui-popupWidget-body { - clear: both; -} -.oo-ui-popupWidget-body.oo-ui-clippableElement-clippable { - min-height: 1em; -} -.oo-ui-popupWidget-popup { - background-color: #fff; - border: 1px solid #a2a9b1; - border-radius: 2px; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.25); -} -.oo-ui-popupWidget-anchored-top { - margin-top: 9px; -} -.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor { - top: -9px; -} -.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor:before { - bottom: -10px; - left: -9px; - border-bottom-color: #a2a9b1; - border-width: 10px; -} -.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor:after { - bottom: -10px; - left: -8px; - border-bottom-color: #fff; - border-width: 9px; -} -.oo-ui-popupWidget-anchored-bottom { - margin-bottom: 9px; -} -.oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor { - bottom: -9px; -} -.oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor:before { - top: -10px; - left: -9px; - border-top-color: #a2a9b1; - border-width: 10px; -} -.oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor:after { - top: -10px; - left: -8px; - border-top-color: #fff; - border-width: 9px; -} -.oo-ui-popupWidget-anchored-start { - margin-left: 9px; -} -.oo-ui-popupWidget-anchored-start .oo-ui-popupWidget-anchor { - left: -9px; -} -.oo-ui-popupWidget-anchored-start .oo-ui-popupWidget-anchor:before { - right: -10px; - top: -9px; - border-right-color: #a2a9b1; - border-width: 10px; -} -.oo-ui-popupWidget-anchored-start .oo-ui-popupWidget-anchor:after { - right: -10px; - top: -8px; - border-right-color: #fff; - border-width: 9px; -} -.oo-ui-popupWidget-anchored-end { - margin-right: 9px; -} -.oo-ui-popupWidget-anchored-end .oo-ui-popupWidget-anchor { - right: -9px; -} -.oo-ui-popupWidget-anchored-end .oo-ui-popupWidget-anchor:before { - left: -10px; - top: -9px; - border-left-color: #a2a9b1; - border-width: 10px; -} -.oo-ui-popupWidget-anchored-end .oo-ui-popupWidget-anchor:after { - left: -10px; - top: -8px; - border-left-color: #fff; - border-width: 9px; -} -.oo-ui-popupWidget-transitioning .oo-ui-popupWidget-popup { - -webkit-transition: width 100ms, height 100ms, left 100ms; - -moz-transition: width 100ms, height 100ms, left 100ms; - transition: width 100ms, height 100ms, left 100ms; -} -.oo-ui-popupWidget-head > .oo-ui-labelElement-label { - margin: 0.64285714em 2.64285714em 0.57142857em 0.85714286em; - line-height: 1.07142857em; -} -.oo-ui-popupWidget-head > .oo-ui-buttonWidget { - right: 0; -} -.oo-ui-popupWidget-body { - line-height: 1.42857143em; -} -.oo-ui-popupWidget-body-padded { - margin: 0.64285714em 0.85714286em 0.57142857em; -} -.oo-ui-popupWidget-body-padded > :first-child { - margin-top: 0; -} -.oo-ui-popupWidget-footer { - margin: 0.64285714em 0.85714286em 0.57142857em; -} -.oo-ui-popupButtonWidget { - position: relative; -} -.oo-ui-popupButtonWidget .oo-ui-popupWidget { - cursor: auto; -} -.oo-ui-inputWidget { - margin-right: 0.5em; -} -.oo-ui-inputWidget:last-child { - margin-right: 0; -} -.oo-ui-buttonInputWidget > button, -.oo-ui-buttonInputWidget > input { - background-color: transparent; - margin: 0; - border: 0; - padding: 0; -} -.oo-ui-checkboxInputWidget { - display: inline-block; - position: relative; - line-height: 1.42857143em; - white-space: nowrap; -} -.oo-ui-checkboxInputWidget * { - font: inherit; - vertical-align: middle; -} -.oo-ui-checkboxInputWidget [type='checkbox'] { - position: relative; - max-width: none; - width: 1.42857143em; - height: 1.42857143em; - margin: 0; - opacity: 0; - z-index: 1; -} -.oo-ui-checkboxInputWidget [type='checkbox'] + span { - background-color: #fff; - background-size: 0 0; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - position: absolute; - left: 0; - width: 1.42857143em; - height: 1.42857143em; - border: 1px solid #72777d; - border-radius: 2px; -} -.oo-ui-checkboxInputWidget [type='checkbox']:checked + span { - background-size: 1em 1em; -} -.oo-ui-checkboxInputWidget [type='checkbox']:disabled + span { - background-color: #c8ccd1; - border-color: #c8ccd1; -} -.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox'] { - cursor: pointer; -} -.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox'] + span { - cursor: pointer; - -webkit-transition: background-color 100ms, border-color 100ms, box-shadow 100ms; - -moz-transition: background-color 100ms, border-color 100ms, box-shadow 100ms; - transition: background-color 100ms, border-color 100ms, box-shadow 100ms; -} -.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:focus + span { - border-color: #36c; - box-shadow: inset 0 0 0 1px #36c; -} -.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:hover + span { - border-color: #36c; -} -.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:active + span { - background-color: #2a4b8d; - border-color: #2a4b8d; - box-shadow: inset 0 0 0 1px #2a4b8d; -} -.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:checked + span { - background-color: #36c; - border-color: #36c; -} -.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:checked:focus + span { - background-color: #36c; - border-color: #36c; - box-shadow: inset 0 0 0 1px #36c, inset 0 0 0 2px #fff; -} -.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:checked:hover + span { - background-color: #447ff5; - border-color: #447ff5; -} -.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:checked:active + span { - background-color: #2a4b8d; - border-color: #2a4b8d; - box-shadow: inset 0 0 0 1px #2a4b8d; -} -.oo-ui-checkboxMultiselectInputWidget .oo-ui-fieldLayout { - margin-top: 0.28571429em; -} -.oo-ui-dropdownInputWidget { - position: relative; - vertical-align: middle; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - width: 100%; - max-width: 50em; -} -.oo-ui-dropdownInputWidget .oo-ui-dropdownWidget, -.oo-ui-dropdownInputWidget.oo-ui-dropdownInputWidget-php select { - display: block; -} -.oo-ui-dropdownInputWidget select { - display: none; - background-position: -9999em 0; - background-repeat: no-repeat; - width: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.oo-ui-dropdownInputWidget.oo-ui-widget-enabled select { - cursor: pointer; -} -.oo-ui-dropdownInputWidget-php { - border-right: 1px solid #a2a9b1; - border-radius: 2px; - overflow-x: hidden; -} -.oo-ui-dropdownInputWidget select { - -webkit-appearance: none; - -moz-appearance: none; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - border: 1px solid #a2a9b1; - border-radius: 2px; - padding: 0.57142857em 0.85714286em 0.5em; - font-size: inherit; - font-family: inherit; - vertical-align: middle; -} -.oo-ui-dropdownInputWidget select::-ms-expand { - display: none; -} -.oo-ui-dropdownInputWidget select:not( [no-ie] ) { - background-position: right 1.75em center; - width: calc( 100% + 1em ); - height: 2.28571429em; - padding: 0 0 0 0.85714286em; -} -.oo-ui-dropdownInputWidget option { - font-size: inherit; - font-family: inherit; - height: 1.5em; - padding: 0.57142857em 0.85714286em; -} -.oo-ui-dropdownInputWidget.oo-ui-widget-enabled select { - background-color: #f8f9fa; - color: #222; - -webkit-transition: background-color 100ms, border-color 100ms, box-shadow 100ms; - -moz-transition: background-color 100ms, border-color 100ms, box-shadow 100ms; - transition: background-color 100ms, border-color 100ms, box-shadow 100ms; -} -.oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:hover { - background-color: #fff; - color: #444; - border-color: #a2a9b1; -} -.oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:active { - color: #000; - border-color: #72777d; -} -.oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:focus { - border-color: #36c; - outline: 0; - box-shadow: inset 0 0 0 1px #36c; -} -.oo-ui-dropdownInputWidget.oo-ui-widget-disabled select { - background-color: #eaecf0; - color: #72777d; - border-color: #c8ccd1; -} -.oo-ui-radioInputWidget { - display: inline-block; - position: relative; - line-height: 1.42857143em; - white-space: nowrap; -} -.oo-ui-radioInputWidget * { - font: inherit; - vertical-align: middle; -} -.oo-ui-radioInputWidget [type='radio'] { - position: relative; - max-width: none; - width: 1.42857143em; - height: 1.42857143em; - margin: 0; - opacity: 0; - z-index: 1; -} -.oo-ui-radioInputWidget [type='radio'] + span { - background-color: #fff; - position: absolute; - left: 0; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - width: 1.42857143em; - height: 1.42857143em; - border: 1px solid #72777d; - border-radius: 100%; -} -.oo-ui-radioInputWidget [type='radio'] + span:before { - content: ' '; - position: absolute; - top: -4px; - left: -4px; - right: -4px; - bottom: -4px; - border: 1px solid transparent; - border-radius: 100%; -} -.oo-ui-radioInputWidget [type='radio']:checked + span, -.oo-ui-radioInputWidget [type='radio']:checked:hover + span, -.oo-ui-radioInputWidget [type='radio']:checked:focus:hover + span { - border-width: 0.42857143em; -} -.oo-ui-radioInputWidget [type='radio']:disabled + span { - background-color: #c8ccd1; - border-color: #c8ccd1; -} -.oo-ui-radioInputWidget [type='radio']:disabled:checked + span { - background-color: #fff; -} -.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio'] { - cursor: pointer; -} -.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio'] + span { - cursor: pointer; - -webkit-transition: background-color 100ms, border-color 100ms, border-width 100ms; - -moz-transition: background-color 100ms, border-color 100ms, border-width 100ms; - transition: background-color 100ms, border-color 100ms, border-width 100ms; -} -.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio']:hover + span { - border-color: #36c; -} -.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio']:active + span { - background-color: #2a4b8d; - border-color: #2a4b8d; -} -.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio']:checked + span { - border-color: #36c; -} -.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio']:checked:focus + span:before { - border-color: #fff; -} -.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio']:checked:hover + span { - border-color: #447ff5; -} -.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio']:checked:active + span { - border-color: #2a4b8d; - box-shadow: inset 0 0 0 1px #2a4b8d; -} -.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio']:checked:active + span:before { - border-color: #2a4b8d; -} -.oo-ui-radioSelectInputWidget .oo-ui-fieldLayout { - margin-top: 0.28571429em; -} -.oo-ui-textInputWidget { - position: relative; - vertical-align: middle; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - width: 100%; - max-width: 50em; -} -.oo-ui-textInputWidget input, -.oo-ui-textInputWidget textarea { - display: block; - width: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.oo-ui-textInputWidget textarea { - overflow: auto; -} -.oo-ui-textInputWidget textarea.oo-ui-textInputWidget-autosized { - resize: none; -} -.oo-ui-textInputWidget [type='number'] { - -moz-appearance: textfield; -} -.oo-ui-textInputWidget [type='number']::-webkit-outer-spin-button, -.oo-ui-textInputWidget [type='number']::-webkit-inner-spin-button { - -webkit-appearance: none; - margin: 0; -} -.oo-ui-textInputWidget [type='search'] { - -webkit-appearance: none; -} -.oo-ui-textInputWidget [type='search']::-ms-clear { - display: none; -} -.oo-ui-textInputWidget [type='search']::-webkit-search-decoration, -.oo-ui-textInputWidget [type='search']::-webkit-search-cancel-button { - display: none; -} -.oo-ui-textInputWidget.oo-ui-widget-enabled > .oo-ui-iconElement-icon, -.oo-ui-textInputWidget.oo-ui-widget-enabled > .oo-ui-indicatorElement-indicator { - cursor: text; -} -.oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-textInputWidget-type-search > .oo-ui-indicatorElement-indicator { - cursor: pointer; -} -.oo-ui-textInputWidget.oo-ui-widget-disabled > * { - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.oo-ui-textInputWidget.oo-ui-labelElement > .oo-ui-labelElement-label { - display: block; -} -.oo-ui-textInputWidget > .oo-ui-iconElement-icon, -.oo-ui-textInputWidget-labelPosition-before > .oo-ui-labelElement-label { - left: 0; -} -.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator, -.oo-ui-textInputWidget-labelPosition-after > .oo-ui-labelElement-label { - right: 0; -} -.oo-ui-textInputWidget-labelPosition-after.oo-ui-labelElement ::-ms-clear { - display: none; -} -.oo-ui-textInputWidget > .oo-ui-labelElement-label { - position: absolute; - top: 0; -} -.oo-ui-textInputWidget-php > .oo-ui-iconElement-icon, -.oo-ui-textInputWidget-php > .oo-ui-indicatorElement-indicator, -.oo-ui-textInputWidget-php > .oo-ui-labelElement-label { - pointer-events: none; -} -.oo-ui-textInputWidget input, -.oo-ui-textInputWidget textarea { - -webkit-appearance: none; - margin: 0; - font-size: inherit; - font-family: inherit; - background-color: #fff; - color: #000; - border: 1px solid #a2a9b1; - border-radius: 2px; - padding: 0.57142857em 0.57142857em 0.5em; -} -.oo-ui-textInputWidget input { - line-height: 1.07142857em; -} -.oo-ui-textInputWidget textarea { - line-height: 1.286; -} -.oo-ui-textInputWidget .oo-ui-pendingElement-pending { - background-color: transparent; -} -.oo-ui-textInputWidget.oo-ui-widget-enabled input, -.oo-ui-textInputWidget.oo-ui-widget-enabled textarea { - box-shadow: inset 0 0 0 1px transparent; - -webkit-transition: border-color 250ms, box-shadow 250ms; - -moz-transition: border-color 250ms, box-shadow 250ms; - transition: border-color 250ms, box-shadow 250ms; -} -.oo-ui-textInputWidget.oo-ui-widget-enabled input::-webkit-input-placeholder, -.oo-ui-textInputWidget.oo-ui-widget-enabled textarea::-webkit-input-placeholder { - color: #72777d; - opacity: 1; -} -.oo-ui-textInputWidget.oo-ui-widget-enabled input:-ms-input-placeholder, -.oo-ui-textInputWidget.oo-ui-widget-enabled textarea:-ms-input-placeholder { - color: #72777d; - opacity: 1; -} -.oo-ui-textInputWidget.oo-ui-widget-enabled input::-moz-placeholder, -.oo-ui-textInputWidget.oo-ui-widget-enabled textarea::-moz-placeholder { - color: #72777d; - opacity: 1; -} -.oo-ui-textInputWidget.oo-ui-widget-enabled input:-moz-placeholder, -.oo-ui-textInputWidget.oo-ui-widget-enabled textarea:-moz-placeholder { - color: #72777d; - opacity: 1; -} -.oo-ui-textInputWidget.oo-ui-widget-enabled input::placeholder, -.oo-ui-textInputWidget.oo-ui-widget-enabled textarea::placeholder { - color: #72777d; - opacity: 1; -} -.oo-ui-textInputWidget.oo-ui-widget-enabled input:focus, -.oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus { - outline: 0; - border-color: #36c; - box-shadow: inset 0 0 0 1px #36c; -} -.oo-ui-textInputWidget.oo-ui-widget-enabled input[readonly], -.oo-ui-textInputWidget.oo-ui-widget-enabled textarea[readonly] { - background-color: #f8f9fa; -} -.oo-ui-textInputWidget.oo-ui-widget-enabled:hover input, -.oo-ui-textInputWidget.oo-ui-widget-enabled:hover textarea { - border-color: #72777d; -} -.oo-ui-textInputWidget.oo-ui-widget-enabled:hover input:focus, -.oo-ui-textInputWidget.oo-ui-widget-enabled:hover textarea:focus { - border-color: #36c; -} -@media screen and (min-width: 0) { - .oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus { - outline: 1px solid #36c; - outline-offset: -2px; - } - .oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid textarea:focus { - outline-color: #d33; - } -} -.oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid input, -.oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid textarea { - border-color: #d33; -} -.oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid input:hover, -.oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid textarea:hover { - border-color: #d33; -} -.oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid input:focus, -.oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid textarea:focus { - border-color: #d33; - box-shadow: inset 0 0 0 1px #d33; -} -.oo-ui-textInputWidget.oo-ui-widget-disabled input, -.oo-ui-textInputWidget.oo-ui-widget-disabled textarea { - background-color: #eaecf0; - -webkit-text-fill-color: #72777d; - color: #72777d; - text-shadow: 0 1px 1px #fff; - border-color: #c8ccd1; -} -.oo-ui-textInputWidget.oo-ui-widget-disabled > .oo-ui-iconElement-icon, -.oo-ui-textInputWidget.oo-ui-widget-disabled > .oo-ui-indicatorElement-indicator { - opacity: 0.51; -} -.oo-ui-textInputWidget.oo-ui-widget-disabled > .oo-ui-labelElement-label { - color: #72777d; - text-shadow: 0 1px 1px #fff; -} -.oo-ui-textInputWidget.oo-ui-iconElement input, -.oo-ui-textInputWidget.oo-ui-iconElement textarea { - padding-left: 2.64285714em; -} -.oo-ui-textInputWidget.oo-ui-iconElement > .oo-ui-iconElement-icon { - left: 0.57142857em; -} -.oo-ui-textInputWidget.oo-ui-iconElement textarea + .oo-ui-iconElement-icon { - max-height: 2.28571429em; -} -.oo-ui-textInputWidget > .oo-ui-labelElement-label { - color: #72777d; - margin-top: 1px; - padding: 0.57142857em 0.85714286em 0.5em 0.57142857em; - line-height: 1.07142857em; -} -.oo-ui-textInputWidget.oo-ui-indicatorElement input, -.oo-ui-textInputWidget.oo-ui-indicatorElement textarea { - padding-right: 2em; -} -.oo-ui-textInputWidget.oo-ui-indicatorElement.oo-ui-textInputWidget-labelPosition-after > .oo-ui-labelElement-label { - padding-right: 0; -} -.oo-ui-textInputWidget.oo-ui-indicatorElement > .oo-ui-indicatorElement-indicator { - max-height: 2.28571429em; - margin-right: 0.85714286em; -} -.oo-ui-textInputWidget-labelPosition-after.oo-ui-indicatorElement > .oo-ui-labelElement-label { - margin-right: 2.28571429em; -} -.oo-ui-textInputWidget-labelPosition-before.oo-ui-iconElement > .oo-ui-labelElement-label { - padding-left: 2.64285714em; -} -.oo-ui-menuSelectWidget { - position: absolute; - width: 100%; - z-index: 4; - background-color: #fff; - margin-top: -1px; - margin-bottom: -1px; - border: 1px solid #a2a9b1; - border-radius: 0 0 2px 2px; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.25); -} -.oo-ui-menuSelectWidget.oo-ui-clippableElement-clippable { - min-height: 2.6em; -} -.oo-ui-menuSelectWidget-invisible { - display: none; -} -.oo-ui-menuOptionWidget { - -webkit-transition: background-color 100ms, color 100ms; - -moz-transition: background-color 100ms, color 100ms; - transition: background-color 100ms, color 100ms; -} -.oo-ui-menuOptionWidget-checkIcon { - display: none; -} -.oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted { - background-color: #eaecf0; - color: #000; -} -.oo-ui-menuOptionWidget.oo-ui-optionWidget-selected { - background-color: #eaf3ff; - color: #36c; -} -.oo-ui-menuOptionWidget.oo-ui-optionWidget-selected.oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted, -.oo-ui-menuOptionWidget.oo-ui-optionWidget-pressed.oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted { - background-color: rgba(41, 98, 204, 0.1); - color: #36c; -} -.oo-ui-menuSectionOptionWidget { - color: #72777d; - padding: 0.64285714em 0.85714286em 0.28571429em; - font-weight: bold; -} -.oo-ui-menuSectionOptionWidget.oo-ui-widget-enabled { - cursor: default; -} -.oo-ui-menuSectionOptionWidget ~ .oo-ui-menuOptionWidget { - padding-left: 1.71428571em; -} -.oo-ui-menuSectionOptionWidget ~ .oo-ui-menuOptionWidget.oo-ui-iconElement { - padding-left: 3.5em; -} -.oo-ui-menuSectionOptionWidget ~ .oo-ui-menuOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon { - left: 1.71428571em; -} -.oo-ui-dropdownWidget { - display: inline-block; - position: relative; - width: 100%; - max-width: 50em; - margin-right: 0.5em; -} -.oo-ui-dropdownWidget-handle { - position: relative; - width: 100%; - display: block; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - cursor: default; - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle { - cursor: pointer; -} -.oo-ui-dropdownWidget:last-child { - margin-right: 0; -} -.oo-ui-dropdownWidget-handle { - min-height: 2.28571429em; - border: 1px solid #a2a9b1; - border-radius: 2px; - padding: 0.57142857em 0.85714286em 0.5em; - line-height: 1; -} -.oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon { - left: 0.85714286em; -} -.oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator { - right: 0.85714286em; -} -.oo-ui-dropdownWidget-handle .oo-ui-labelElement-label { - line-height: 1.07142857em; -} -.oo-ui-dropdownWidget.oo-ui-iconElement .oo-ui-dropdownWidget-handle { - padding-left: 2.64285714em; -} -.oo-ui-dropdownWidget.oo-ui-indicatorElement .oo-ui-dropdownWidget-handle { - padding-right: 1.71428571em; -} -.oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle { - background-color: #f8f9fa; - color: #222; - -webkit-transition: background-color 100ms, border-color 100ms, box-shadow 100ms; - -moz-transition: background-color 100ms, border-color 100ms, box-shadow 100ms; - transition: background-color 100ms, border-color 100ms, box-shadow 100ms; -} -.oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle:hover { - background-color: #fff; - color: #444; - border-color: #a2a9b1; -} -.oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle:hover .oo-ui-iconElement-icon, -.oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle:hover .oo-ui-indicatorElement-indicator { - opacity: 0.73; -} -.oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle:active { - color: #000; - border-color: #72777d; -} -.oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle:focus { - border-color: #36c; - outline: 0; - box-shadow: inset 0 0 0 1px #36c; -} -.oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon, -.oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator { - opacity: 0.87; - -webkit-transition: opacity 100ms; - -moz-transition: opacity 100ms; - transition: opacity 100ms; -} -.oo-ui-dropdownWidget.oo-ui-widget-enabled.oo-ui-dropdownWidget-open .oo-ui-dropdownWidget-handle { - background-color: #fff; -} -.oo-ui-dropdownWidget.oo-ui-widget-enabled.oo-ui-dropdownWidget-open .oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon, -.oo-ui-dropdownWidget.oo-ui-widget-enabled.oo-ui-dropdownWidget-open .oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator { - opacity: 1; -} -.oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-dropdownWidget-handle { - color: #72777d; - text-shadow: 0 1px 1px #fff; - border-color: #c8ccd1; - background-color: #eaecf0; -} -.oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-dropdownWidget-handle:focus { - outline: 0; -} -.oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator { - opacity: 0.15; -} -.oo-ui-comboBoxInputWidget { - display: inline-block; - position: relative; -} -.oo-ui-comboBoxInputWidget-field { - display: table; - width: 100%; - table-layout: fixed; -} -.oo-ui-comboBoxInputWidget .oo-ui-inputWidget-input { - display: table-cell; - vertical-align: middle; - position: relative; - overflow: hidden; -} -.oo-ui-comboBoxInputWidget-dropdownButton { - display: table-cell; -} -.oo-ui-comboBoxInputWidget-dropdownButton > .oo-ui-buttonElement-button { - display: block; - overflow: hidden; -} -.oo-ui-comboBoxInputWidget.oo-ui-comboBoxInputWidget-empty .oo-ui-comboBoxInputWidget-dropdownButton { - display: none; -} -.oo-ui-comboBoxInputWidget-php ::-webkit-calendar-picker-indicator { - opacity: 0; - position: absolute; - right: 0; - top: 0; - width: 2.5em; - height: 2.5em; - padding: 0; -} -.oo-ui-comboBoxInputWidget-php > .oo-ui-indicatorWidget { - display: block; - position: absolute; - top: 0; - height: 100%; - pointer-events: none; -} -.oo-ui-comboBoxInputWidget input { - height: 2.28571429em; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-right-width: 0; -} -.oo-ui-comboBoxInputWidget.oo-ui-comboBoxInputWidget-empty input, -.oo-ui-comboBoxInputWidget-php input { - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-right-width: 1px; -} -.oo-ui-comboBoxInputWidget-dropdownButton.oo-ui-indicatorElement { - width: 2.64285714em; -} -.oo-ui-comboBoxInputWidget-dropdownButton.oo-ui-indicatorElement .oo-ui-buttonElement-button { - min-width: 37px; - min-height: 2.28571429em; - padding-left: 0; -} -.oo-ui-comboBoxInputWidget-dropdownButton.oo-ui-indicatorElement .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator { - right: 0.85714286em; -} -.oo-ui-comboBoxInputWidget-dropdownButton.oo-ui-indicatorElement .oo-ui-buttonElement-button, -.oo-ui-comboBoxInputWidget-dropdownButton.oo-ui-indicatorElement .oo-ui-buttonElement-button:focus { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.oo-ui-comboBoxInputWidget-php .oo-ui-indicatorWidget { - right: 0.85714286em; - margin: 0; -} -.oo-ui-comboBoxInputWidget-open .oo-ui-comboBoxInputWidget-dropdownButton > .oo-ui-buttonElement-button { - background-color: #fff; -} -.oo-ui-comboBoxInputWidget-open .oo-ui-comboBoxInputWidget-dropdownButton > .oo-ui-buttonElement-button .oo-ui-indicatorElement-indicator { - opacity: 1; -} -.oo-ui-comboBoxInputWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator { - opacity: 1; -} -.oo-ui-multioptionWidget { - position: relative; - display: block; -} -.oo-ui-multioptionWidget.oo-ui-widget-enabled { - cursor: pointer; -} -.oo-ui-multioptionWidget.oo-ui-widget-disabled { - cursor: default; -} -.oo-ui-multioptionWidget.oo-ui-labelElement .oo-ui-labelElement-label { - display: block; - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; -} -.oo-ui-multioptionWidget.oo-ui-widget-disabled { - color: #72777d; -} -.oo-ui-checkboxMultioptionWidget { - display: table; - width: 100%; - padding: 0.28571429em 0; -} -.oo-ui-checkboxMultioptionWidget .oo-ui-checkboxInputWidget, -.oo-ui-checkboxMultioptionWidget.oo-ui-labelElement > .oo-ui-labelElement-label { - display: table-cell; - vertical-align: top; -} -.oo-ui-checkboxMultioptionWidget .oo-ui-checkboxInputWidget { - width: 1px; -} -.oo-ui-checkboxMultioptionWidget.oo-ui-labelElement > .oo-ui-labelElement-label { - white-space: normal; -} -.oo-ui-checkboxMultioptionWidget.oo-ui-labelElement .oo-ui-labelElement-label { - padding-left: 0.42857143em; -} -.oo-ui-checkboxMultioptionWidget .oo-ui-checkboxInputWidget { - margin-right: 0; -} -.oo-ui-progressBarWidget { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - max-width: 50em; - background-color: #fff; - border: 1px solid #a2a9b1; - border-radius: 2px; - overflow: hidden; -} -.oo-ui-progressBarWidget-bar { - height: 1em; - -webkit-transition: width 100ms; - -moz-transition: width 100ms; - transition: width 100ms; -} -.oo-ui-progressBarWidget-indeterminate .oo-ui-progressBarWidget-bar { - -webkit-animation: oo-ui-progressBarWidget-slide 2s infinite linear; - -moz-animation: oo-ui-progressBarWidget-slide 2s infinite linear; - animation: oo-ui-progressBarWidget-slide 2s infinite linear; - width: 40%; - -webkit-transform: translate(-25%); - -moz-transform: translate(-25%); - -ms-transform: translate(-25%); - transform: translate(-25%); - border-left-width: 1px; -} -.oo-ui-progressBarWidget.oo-ui-widget-enabled .oo-ui-progressBarWidget-bar { - background-color: #36c; -} -.oo-ui-progressBarWidget.oo-ui-widget-disabled .oo-ui-progressBarWidget-bar { - background-color: #c8ccd1; -} -@-webkit-keyframes oo-ui-progressBarWidget-slide { - from { - -webkit-transform: translate(-100%); - -moz-transform: translate(-100%); - -ms-transform: translate(-100%); - transform: translate(-100%); - } - to { - -webkit-transform: translate(350%); - -moz-transform: translate(350%); - -ms-transform: translate(350%); - transform: translate(350%); - } -} -@-moz-keyframes oo-ui-progressBarWidget-slide { - from { - -webkit-transform: translate(-100%); - -moz-transform: translate(-100%); - -ms-transform: translate(-100%); - transform: translate(-100%); - } - to { - -webkit-transform: translate(350%); - -moz-transform: translate(350%); - -ms-transform: translate(350%); - transform: translate(350%); - } -} -@keyframes oo-ui-progressBarWidget-slide { - from { - -webkit-transform: translate(-100%); - -moz-transform: translate(-100%); - -ms-transform: translate(-100%); - transform: translate(-100%); - } - to { - -webkit-transform: translate(350%); - -moz-transform: translate(350%); - -ms-transform: translate(350%); - transform: translate(350%); - } -} -.oo-ui-numberInputWidget { - display: inline-block; - position: relative; - max-width: 50em; -} -.oo-ui-numberInputWidget-buttoned .oo-ui-buttonWidget, -.oo-ui-numberInputWidget-buttoned .oo-ui-inputWidget-input { - display: table-cell; - height: 100%; -} -.oo-ui-numberInputWidget-field { - display: table; - table-layout: fixed; - width: 100%; -} -.oo-ui-numberInputWidget-buttoned .oo-ui-buttonWidget { - width: 2.64285714em; -} -.oo-ui-numberInputWidget-buttoned .oo-ui-buttonWidget .oo-ui-buttonElement-button { - display: block; - min-width: 37px; - min-height: 2.28571429em; - padding-left: 0; - padding-right: 0; -} -.oo-ui-numberInputWidget-buttoned .oo-ui-buttonWidget .oo-ui-buttonElement-button .oo-ui-iconElement-icon { - left: 0.57142857em; -} -.oo-ui-numberInputWidget-buttoned .oo-ui-inputWidget-input { - border-radius: 0; - max-height: 2.28571429em; -} -.oo-ui-numberInputWidget-minusButton > .oo-ui-buttonElement-button { - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-right-width: 0; -} -.oo-ui-numberInputWidget-plusButton > .oo-ui-buttonElement-button { - border-top-left-radius: 0; - border-bottom-left-radius: 0; - border-left-width: 0; -} -.oo-ui-numberInputWidget.oo-ui-widget-disabled.oo-ui-numberInputWidget-buttoned .oo-ui-iconElement-icon { - opacity: 1; -} -.oo-ui-defaultOverlay { - position: absolute; - top: 0; - /* @noflip */ - left: 0; -} diff --git a/resources/lib/oojs-ui/oojs-ui-core.js b/resources/lib/oojs-ui/oojs-ui-core.js deleted file mode 100644 index b98d65cb1c..0000000000 --- a/resources/lib/oojs-ui/oojs-ui-core.js +++ /dev/null @@ -1,12487 +0,0 @@ -/*! - * OOUI v0.28.1 - * https://www.mediawiki.org/wiki/OOUI - * - * Copyright 2011–2018 OOUI Team and other contributors. - * Released under the MIT license - * http://oojs.mit-license.org - * - * Date: 2018-09-05T00:41:49Z - */ -( function ( OO ) { - -'use strict'; - -/** - * Namespace for all classes, static methods and static properties. - * - * @class - * @singleton - */ -OO.ui = {}; - -OO.ui.bind = $.proxy; - -/** - * @property {Object} - */ -OO.ui.Keys = { - UNDEFINED: 0, - BACKSPACE: 8, - DELETE: 46, - LEFT: 37, - RIGHT: 39, - UP: 38, - DOWN: 40, - ENTER: 13, - END: 35, - HOME: 36, - TAB: 9, - PAGEUP: 33, - PAGEDOWN: 34, - ESCAPE: 27, - SHIFT: 16, - SPACE: 32 -}; - -/** - * Constants for MouseEvent.which - * - * @property {Object} - */ -OO.ui.MouseButtons = { - LEFT: 1, - MIDDLE: 2, - RIGHT: 3 -}; - -/** - * @property {number} - * @private - */ -OO.ui.elementId = 0; - -/** - * Generate a unique ID for element - * - * @return {string} ID - */ -OO.ui.generateElementId = function () { - OO.ui.elementId++; - return 'ooui-' + OO.ui.elementId; -}; - -/** - * Check if an element is focusable. - * Inspired by :focusable in jQueryUI v1.11.4 - 2015-04-14 - * - * @param {jQuery} $element Element to test - * @return {boolean} Element is focusable - */ -OO.ui.isFocusableElement = function ( $element ) { - var nodeName, - element = $element[ 0 ]; - - // Anything disabled is not focusable - if ( element.disabled ) { - return false; - } - - // Check if the element is visible - if ( !( - // This is quicker than calling $element.is( ':visible' ) - $.expr.pseudos.visible( element ) && - // Check that all parents are visible - !$element.parents().addBack().filter( function () { - return $.css( this, 'visibility' ) === 'hidden'; - } ).length - ) ) { - return false; - } - - // Check if the element is ContentEditable, which is the string 'true' - if ( element.contentEditable === 'true' ) { - return true; - } - - // Anything with a non-negative numeric tabIndex is focusable. - // Use .prop to avoid browser bugs - if ( $element.prop( 'tabIndex' ) >= 0 ) { - return true; - } - - // Some element types are naturally focusable - // (indexOf is much faster than regex in Chrome and about the - // same in FF: https://jsperf.com/regex-vs-indexof-array2) - nodeName = element.nodeName.toLowerCase(); - if ( [ 'input', 'select', 'textarea', 'button', 'object' ].indexOf( nodeName ) !== -1 ) { - return true; - } - - // Links and areas are focusable if they have an href - if ( ( nodeName === 'a' || nodeName === 'area' ) && $element.attr( 'href' ) !== undefined ) { - return true; - } - - return false; -}; - -/** - * Find a focusable child - * - * @param {jQuery} $container Container to search in - * @param {boolean} [backwards] Search backwards - * @return {jQuery} Focusable child, or an empty jQuery object if none found - */ -OO.ui.findFocusable = function ( $container, backwards ) { - var $focusable = $( [] ), - // $focusableCandidates is a superset of things that - // could get matched by isFocusableElement - $focusableCandidates = $container - .find( 'input, select, textarea, button, object, a, area, [contenteditable], [tabindex]' ); - - if ( backwards ) { - $focusableCandidates = Array.prototype.reverse.call( $focusableCandidates ); - } - - $focusableCandidates.each( function () { - var $this = $( this ); - if ( OO.ui.isFocusableElement( $this ) ) { - $focusable = $this; - return false; - } - } ); - return $focusable; -}; - -/** - * Get the user's language and any fallback languages. - * - * These language codes are used to localize user interface elements in the user's language. - * - * In environments that provide a localization system, this function should be overridden to - * return the user's language(s). The default implementation returns English (en) only. - * - * @return {string[]} Language codes, in descending order of priority - */ -OO.ui.getUserLanguages = function () { - return [ 'en' ]; -}; - -/** - * Get a value in an object keyed by language code. - * - * @param {Object.} obj Object keyed by language code - * @param {string|null} [lang] Language code, if omitted or null defaults to any user language - * @param {string} [fallback] Fallback code, used if no matching language can be found - * @return {Mixed} Local value - */ -OO.ui.getLocalValue = function ( obj, lang, fallback ) { - var i, len, langs; - - // Requested language - if ( obj[ lang ] ) { - return obj[ lang ]; - } - // Known user language - langs = OO.ui.getUserLanguages(); - for ( i = 0, len = langs.length; i < len; i++ ) { - lang = langs[ i ]; - if ( obj[ lang ] ) { - return obj[ lang ]; - } - } - // Fallback language - if ( obj[ fallback ] ) { - return obj[ fallback ]; - } - // First existing language - for ( lang in obj ) { - return obj[ lang ]; - } - - return undefined; -}; - -/** - * Check if a node is contained within another node - * - * Similar to jQuery#contains except a list of containers can be supplied - * and a boolean argument allows you to include the container in the match list - * - * @param {HTMLElement|HTMLElement[]} containers Container node(s) to search in - * @param {HTMLElement} contained Node to find - * @param {boolean} [matchContainers] Include the container(s) in the list of nodes to match, otherwise only match descendants - * @return {boolean} The node is in the list of target nodes - */ -OO.ui.contains = function ( containers, contained, matchContainers ) { - var i; - if ( !Array.isArray( containers ) ) { - containers = [ containers ]; - } - for ( i = containers.length - 1; i >= 0; i-- ) { - if ( ( matchContainers && contained === containers[ i ] ) || $.contains( containers[ i ], contained ) ) { - return true; - } - } - return false; -}; - -/** - * Return a function, that, as long as it continues to be invoked, will not - * be triggered. The function will be called after it stops being called for - * N milliseconds. If `immediate` is passed, trigger the function on the - * leading edge, instead of the trailing. - * - * Ported from: http://underscorejs.org/underscore.js - * - * @param {Function} func Function to debounce - * @param {number} [wait=0] Wait period in milliseconds - * @param {boolean} [immediate] Trigger on leading edge - * @return {Function} Debounced function - */ -OO.ui.debounce = function ( func, wait, immediate ) { - var timeout; - return function () { - var context = this, - args = arguments, - later = function () { - timeout = null; - if ( !immediate ) { - func.apply( context, args ); - } - }; - if ( immediate && !timeout ) { - func.apply( context, args ); - } - if ( !timeout || wait ) { - clearTimeout( timeout ); - timeout = setTimeout( later, wait ); - } - }; -}; - -/** - * Puts a console warning with provided message. - * - * @param {string} message Message - */ -OO.ui.warnDeprecation = function ( message ) { - if ( OO.getProp( window, 'console', 'warn' ) !== undefined ) { - // eslint-disable-next-line no-console - console.warn( message ); - } -}; - -/** - * Returns a function, that, when invoked, will only be triggered at most once - * during a given window of time. If called again during that window, it will - * wait until the window ends and then trigger itself again. - * - * As it's not knowable to the caller whether the function will actually run - * when the wrapper is called, return values from the function are entirely - * discarded. - * - * @param {Function} func Function to throttle - * @param {number} wait Throttle window length, in milliseconds - * @return {Function} Throttled function - */ -OO.ui.throttle = function ( func, wait ) { - var context, args, timeout, - previous = 0, - run = function () { - timeout = null; - previous = OO.ui.now(); - func.apply( context, args ); - }; - return function () { - // Check how long it's been since the last time the function was - // called, and whether it's more or less than the requested throttle - // period. If it's less, run the function immediately. If it's more, - // set a timeout for the remaining time -- but don't replace an - // existing timeout, since that'd indefinitely prolong the wait. - var remaining = wait - ( OO.ui.now() - previous ); - context = this; - args = arguments; - if ( remaining <= 0 ) { - // Note: unless wait was ridiculously large, this means we'll - // automatically run the first time the function was called in a - // given period. (If you provide a wait period larger than the - // current Unix timestamp, you *deserve* unexpected behavior.) - clearTimeout( timeout ); - run(); - } else if ( !timeout ) { - timeout = setTimeout( run, remaining ); - } - }; -}; - -/** - * A (possibly faster) way to get the current timestamp as an integer - * - * @return {number} Current timestamp, in milliseconds since the Unix epoch - */ -OO.ui.now = Date.now || function () { - return new Date().getTime(); -}; - -/** - * Reconstitute a JavaScript object corresponding to a widget created by - * the PHP implementation. - * - * This is an alias for `OO.ui.Element.static.infuse()`. - * - * @param {string|HTMLElement|jQuery} idOrNode - * A DOM id (if a string) or node for the widget to infuse. - * @param {Object} [config] Configuration options - * @return {OO.ui.Element} - * The `OO.ui.Element` corresponding to this (infusable) document node. - */ -OO.ui.infuse = function ( idOrNode, config ) { - return OO.ui.Element.static.infuse( idOrNode, config ); -}; - -( function () { - /** - * Message store for the default implementation of OO.ui.msg - * - * Environments that provide a localization system should not use this, but should override - * OO.ui.msg altogether. - * - * @private - */ - var messages = { - // Tool tip for a button that moves items in a list down one place - 'ooui-outline-control-move-down': 'Move item down', - // Tool tip for a button that moves items in a list up one place - 'ooui-outline-control-move-up': 'Move item up', - // Tool tip for a button that removes items from a list - 'ooui-outline-control-remove': 'Remove item', - // Label for the toolbar group that contains a list of all other available tools - 'ooui-toolbar-more': 'More', - // Label for the fake tool that expands the full list of tools in a toolbar group - 'ooui-toolgroup-expand': 'More', - // Label for the fake tool that collapses the full list of tools in a toolbar group - 'ooui-toolgroup-collapse': 'Fewer', - // Default label for the tooltip for the button that removes a tag item - 'ooui-item-remove': 'Remove', - // Default label for the accept button of a confirmation dialog - 'ooui-dialog-message-accept': 'OK', - // Default label for the reject button of a confirmation dialog - 'ooui-dialog-message-reject': 'Cancel', - // Title for process dialog error description - 'ooui-dialog-process-error': 'Something went wrong', - // Label for process dialog dismiss error button, visible when describing errors - 'ooui-dialog-process-dismiss': 'Dismiss', - // Label for process dialog retry action button, visible when describing only recoverable errors - 'ooui-dialog-process-retry': 'Try again', - // Label for process dialog retry action button, visible when describing only warnings - 'ooui-dialog-process-continue': 'Continue', - // Label for the file selection widget's select file button - 'ooui-selectfile-button-select': 'Select a file', - // Label for the file selection widget if file selection is not supported - 'ooui-selectfile-not-supported': 'File selection is not supported', - // Label for the file selection widget when no file is currently selected - 'ooui-selectfile-placeholder': 'No file is selected', - // Label for the file selection widget's drop target - 'ooui-selectfile-dragdrop-placeholder': 'Drop file here' - }; - - /** - * Get a localized message. - * - * After the message key, message parameters may optionally be passed. In the default implementation, - * any occurrences of $1 are replaced with the first parameter, $2 with the second parameter, etc. - * Alternative implementations of OO.ui.msg may use any substitution system they like, as long as - * they support unnamed, ordered message parameters. - * - * In environments that provide a localization system, this function should be overridden to - * return the message translated in the user's language. The default implementation always returns - * English messages. An example of doing this with [jQuery.i18n](https://github.com/wikimedia/jquery.i18n) - * follows. - * - * @example - * var i, iLen, button, - * messagePath = 'oojs-ui/dist/i18n/', - * languages = [ $.i18n().locale, 'ur', 'en' ], - * languageMap = {}; - * - * for ( i = 0, iLen = languages.length; i < iLen; i++ ) { - * languageMap[ languages[ i ] ] = messagePath + languages[ i ].toLowerCase() + '.json'; - * } - * - * $.i18n().load( languageMap ).done( function() { - * // Replace the built-in `msg` only once we've loaded the internationalization. - * // OOUI uses `OO.ui.deferMsg` for all initially-loaded messages. So long as - * // you put off creating any widgets until this promise is complete, no English - * // will be displayed. - * OO.ui.msg = $.i18n; - * - * // A button displaying "OK" in the default locale - * button = new OO.ui.ButtonWidget( { - * label: OO.ui.msg( 'ooui-dialog-message-accept' ), - * icon: 'check' - * } ); - * $( 'body' ).append( button.$element ); - * - * // A button displaying "OK" in Urdu - * $.i18n().locale = 'ur'; - * button = new OO.ui.ButtonWidget( { - * label: OO.ui.msg( 'ooui-dialog-message-accept' ), - * icon: 'check' - * } ); - * $( 'body' ).append( button.$element ); - * } ); - * - * @param {string} key Message key - * @param {...Mixed} [params] Message parameters - * @return {string} Translated message with parameters substituted - */ - OO.ui.msg = function ( key ) { - var message = messages[ key ], - params = Array.prototype.slice.call( arguments, 1 ); - if ( typeof message === 'string' ) { - // Perform $1 substitution - message = message.replace( /\$(\d+)/g, function ( unused, n ) { - var i = parseInt( n, 10 ); - return params[ i - 1 ] !== undefined ? params[ i - 1 ] : '$' + n; - } ); - } else { - // Return placeholder if message not found - message = '[' + key + ']'; - } - return message; - }; -}() ); - -/** - * Package a message and arguments for deferred resolution. - * - * Use this when you are statically specifying a message and the message may not yet be present. - * - * @param {string} key Message key - * @param {...Mixed} [params] Message parameters - * @return {Function} Function that returns the resolved message when executed - */ -OO.ui.deferMsg = function () { - var args = arguments; - return function () { - return OO.ui.msg.apply( OO.ui, args ); - }; -}; - -/** - * Resolve a message. - * - * If the message is a function it will be executed, otherwise it will pass through directly. - * - * @param {Function|string} msg Deferred message, or message text - * @return {string} Resolved message - */ -OO.ui.resolveMsg = function ( msg ) { - if ( $.isFunction( msg ) ) { - return msg(); - } - return msg; -}; - -/** - * @param {string} url - * @return {boolean} - */ -OO.ui.isSafeUrl = function ( url ) { - // Keep this function in sync with php/Tag.php - var i, protocolWhitelist; - - function stringStartsWith( haystack, needle ) { - return haystack.substr( 0, needle.length ) === needle; - } - - protocolWhitelist = [ - 'bitcoin', 'ftp', 'ftps', 'geo', 'git', 'gopher', 'http', 'https', 'irc', 'ircs', - 'magnet', 'mailto', 'mms', 'news', 'nntp', 'redis', 'sftp', 'sip', 'sips', 'sms', 'ssh', - 'svn', 'tel', 'telnet', 'urn', 'worldwind', 'xmpp' - ]; - - if ( url === '' ) { - return true; - } - - for ( i = 0; i < protocolWhitelist.length; i++ ) { - if ( stringStartsWith( url, protocolWhitelist[ i ] + ':' ) ) { - return true; - } - } - - // This matches '//' too - if ( stringStartsWith( url, '/' ) || stringStartsWith( url, './' ) ) { - return true; - } - if ( stringStartsWith( url, '?' ) || stringStartsWith( url, '#' ) ) { - return true; - } - - return false; -}; - -/** - * Check if the user has a 'mobile' device. - * - * For our purposes this means the user is primarily using an - * on-screen keyboard, touch input instead of a mouse and may - * have a physically small display. - * - * It is left up to implementors to decide how to compute this - * so the default implementation always returns false. - * - * @return {boolean} User is on a mobile device - */ -OO.ui.isMobile = function () { - return false; -}; - -/** - * Get the additional spacing that should be taken into account when displaying elements that are - * clipped to the viewport, e.g. dropdown menus and popups. This is meant to be overridden to avoid - * such menus overlapping any fixed headers/toolbars/navigation used by the site. - * - * @return {Object} Object with the properties 'top', 'right', 'bottom', 'left', each representing - * the extra spacing from that edge of viewport (in pixels) - */ -OO.ui.getViewportSpacing = function () { - return { - top: 0, - right: 0, - bottom: 0, - left: 0 - }; -}; - -/** - * Get the default overlay, which is used by various widgets when they are passed `$overlay: true`. - * See . - * - * @return {jQuery} Default overlay node - */ -OO.ui.getDefaultOverlay = function () { - if ( !OO.ui.$defaultOverlay ) { - OO.ui.$defaultOverlay = $( '
    ' ).addClass( 'oo-ui-defaultOverlay' ); - $( 'body' ).append( OO.ui.$defaultOverlay ); - } - return OO.ui.$defaultOverlay; -}; - -/*! - * Mixin namespace. - */ - -/** - * Namespace for OOUI mixins. - * - * Mixins are named according to the type of object they are intended to - * be mixed in to. For example, OO.ui.mixin.GroupElement is intended to be - * mixed in to an instance of OO.ui.Element, and OO.ui.mixin.GroupWidget - * is intended to be mixed in to an instance of OO.ui.Widget. - * - * @class - * @singleton - */ -OO.ui.mixin = {}; - -/** - * Each Element represents a rendering in the DOM—a button or an icon, for example, or anything - * that is visible to a user. Unlike {@link OO.ui.Widget widgets}, plain elements usually do not have events - * connected to them and can't be interacted with. - * - * @abstract - * @class - * - * @constructor - * @param {Object} [config] Configuration options - * @cfg {string[]} [classes] The names of the CSS classes to apply to the element. CSS styles are added - * to the top level (e.g., the outermost div) of the element. See the [OOUI documentation on MediaWiki][2] - * for an example. - * [2]: https://www.mediawiki.org/wiki/OOUI/Widgets/Buttons_and_Switches#cssExample - * @cfg {string} [id] The HTML id attribute used in the rendered tag. - * @cfg {string} [text] Text to insert - * @cfg {Array} [content] An array of content elements to append (after #text). - * Strings will be html-escaped; use an OO.ui.HtmlSnippet to append raw HTML. - * Instances of OO.ui.Element will have their $element appended. - * @cfg {jQuery} [$content] Content elements to append (after #text). - * @cfg {jQuery} [$element] Wrapper element. Defaults to a new element with #getTagName. - * @cfg {Mixed} [data] Custom data of any type or combination of types (e.g., string, number, array, object). - * Data can also be specified with the #setData method. - */ -OO.ui.Element = function OoUiElement( config ) { - if ( OO.ui.isDemo ) { - this.initialConfig = config; - } - // Configuration initialization - config = config || {}; - - // Properties - this.$ = $; - this.elementId = null; - this.visible = true; - this.data = config.data; - this.$element = config.$element || - $( document.createElement( this.getTagName() ) ); - this.elementGroup = null; - - // Initialization - if ( Array.isArray( config.classes ) ) { - this.$element.addClass( config.classes.join( ' ' ) ); - } - if ( config.id ) { - this.setElementId( config.id ); - } - if ( config.text ) { - this.$element.text( config.text ); - } - if ( config.content ) { - // The `content` property treats plain strings as text; use an - // HtmlSnippet to append HTML content. `OO.ui.Element`s get their - // appropriate $element appended. - this.$element.append( config.content.map( function ( v ) { - if ( typeof v === 'string' ) { - // Escape string so it is properly represented in HTML. - return document.createTextNode( v ); - } else if ( v instanceof OO.ui.HtmlSnippet ) { - // Bypass escaping. - return v.toString(); - } else if ( v instanceof OO.ui.Element ) { - return v.$element; - } - return v; - } ) ); - } - if ( config.$content ) { - // The `$content` property treats plain strings as HTML. - this.$element.append( config.$content ); - } -}; - -/* Setup */ - -OO.initClass( OO.ui.Element ); - -/* Static Properties */ - -/** - * The name of the HTML tag used by the element. - * - * The static value may be ignored if the #getTagName method is overridden. - * - * @static - * @inheritable - * @property {string} - */ -OO.ui.Element.static.tagName = 'div'; - -/* Static Methods */ - -/** - * Reconstitute a JavaScript object corresponding to a widget created - * by the PHP implementation. - * - * @param {string|HTMLElement|jQuery} idOrNode - * A DOM id (if a string) or node for the widget to infuse. - * @param {Object} [config] Configuration options - * @return {OO.ui.Element} - * The `OO.ui.Element` corresponding to this (infusable) document node. - * For `Tag` objects emitted on the HTML side (used occasionally for content) - * the value returned is a newly-created Element wrapping around the existing - * DOM node. - */ -OO.ui.Element.static.infuse = function ( idOrNode, config ) { - var obj = OO.ui.Element.static.unsafeInfuse( idOrNode, config, false ); - // Verify that the type matches up. - // FIXME: uncomment after T89721 is fixed, see T90929. - /* - if ( !( obj instanceof this['class'] ) ) { - throw new Error( 'Infusion type mismatch!' ); - } - */ - return obj; -}; - -/** - * Implementation helper for `infuse`; skips the type check and has an - * extra property so that only the top-level invocation touches the DOM. - * - * @private - * @param {string|HTMLElement|jQuery} idOrNode - * @param {Object} [config] Configuration options - * @param {jQuery.Promise} [domPromise] A promise that will be resolved - * when the top-level widget of this infusion is inserted into DOM, - * replacing the original node; only used internally. - * @return {OO.ui.Element} - */ -OO.ui.Element.static.unsafeInfuse = function ( idOrNode, config, domPromise ) { - // look for a cached result of a previous infusion. - var id, $elem, error, data, cls, parts, parent, obj, top, state, infusedChildren; - if ( typeof idOrNode === 'string' ) { - id = idOrNode; - $elem = $( document.getElementById( id ) ); - } else { - $elem = $( idOrNode ); - id = $elem.attr( 'id' ); - } - if ( !$elem.length ) { - if ( typeof idOrNode === 'string' ) { - error = 'Widget not found: ' + idOrNode; - } else if ( idOrNode && idOrNode.selector ) { - error = 'Widget not found: ' + idOrNode.selector; - } else { - error = 'Widget not found'; - } - throw new Error( error ); - } - if ( $elem[ 0 ].oouiInfused ) { - $elem = $elem[ 0 ].oouiInfused; - } - data = $elem.data( 'ooui-infused' ); - if ( data ) { - // cached! - if ( data === true ) { - throw new Error( 'Circular dependency! ' + id ); - } - if ( domPromise ) { - // pick up dynamic state, like focus, value of form inputs, scroll position, etc. - state = data.constructor.static.gatherPreInfuseState( $elem, data ); - // restore dynamic state after the new element is re-inserted into DOM under infused parent - domPromise.done( data.restorePreInfuseState.bind( data, state ) ); - infusedChildren = $elem.data( 'ooui-infused-children' ); - if ( infusedChildren && infusedChildren.length ) { - infusedChildren.forEach( function ( data ) { - var state = data.constructor.static.gatherPreInfuseState( $elem, data ); - domPromise.done( data.restorePreInfuseState.bind( data, state ) ); - } ); - } - } - return data; - } - data = $elem.attr( 'data-ooui' ); - if ( !data ) { - throw new Error( 'No infusion data found: ' + id ); - } - try { - data = JSON.parse( data ); - } catch ( _ ) { - data = null; - } - if ( !( data && data._ ) ) { - throw new Error( 'No valid infusion data found: ' + id ); - } - if ( data._ === 'Tag' ) { - // Special case: this is a raw Tag; wrap existing node, don't rebuild. - return new OO.ui.Element( $.extend( {}, config, { $element: $elem } ) ); - } - parts = data._.split( '.' ); - cls = OO.getProp.apply( OO, [ window ].concat( parts ) ); - if ( cls === undefined ) { - throw new Error( 'Unknown widget type: id: ' + id + ', class: ' + data._ ); - } - - // Verify that we're creating an OO.ui.Element instance - parent = cls.parent; - - while ( parent !== undefined ) { - if ( parent === OO.ui.Element ) { - // Safe - break; - } - - parent = parent.parent; - } - - if ( parent !== OO.ui.Element ) { - throw new Error( 'Unknown widget type: id: ' + id + ', class: ' + data._ ); - } - - if ( !domPromise ) { - top = $.Deferred(); - domPromise = top.promise(); - } - $elem.data( 'ooui-infused', true ); // prevent loops - data.id = id; // implicit - infusedChildren = []; - data = OO.copy( data, null, function deserialize( value ) { - var infused; - if ( OO.isPlainObject( value ) ) { - if ( value.tag ) { - infused = OO.ui.Element.static.unsafeInfuse( value.tag, config, domPromise ); - infusedChildren.push( infused ); - // Flatten the structure - infusedChildren.push.apply( infusedChildren, infused.$element.data( 'ooui-infused-children' ) || [] ); - infused.$element.removeData( 'ooui-infused-children' ); - return infused; - } - if ( value.html !== undefined ) { - return new OO.ui.HtmlSnippet( value.html ); - } - } - } ); - // allow widgets to reuse parts of the DOM - data = cls.static.reusePreInfuseDOM( $elem[ 0 ], data ); - // pick up dynamic state, like focus, value of form inputs, scroll position, etc. - state = cls.static.gatherPreInfuseState( $elem[ 0 ], data ); - // rebuild widget - // eslint-disable-next-line new-cap - obj = new cls( $.extend( {}, config, data ) ); - // If anyone is holding a reference to the old DOM element, - // let's allow them to OO.ui.infuse() it and do what they expect, see T105828. - // Do not use jQuery.data(), as using it on detached nodes leaks memory in 1.x line by design. - $elem[ 0 ].oouiInfused = obj.$element; - // now replace old DOM with this new DOM. - if ( top ) { - // An efficient constructor might be able to reuse the entire DOM tree of the original element, - // so only mutate the DOM if we need to. - if ( $elem[ 0 ] !== obj.$element[ 0 ] ) { - $elem.replaceWith( obj.$element ); - } - top.resolve(); - } - obj.$element.data( 'ooui-infused', obj ); - obj.$element.data( 'ooui-infused-children', infusedChildren ); - // set the 'data-ooui' attribute so we can identify infused widgets - obj.$element.attr( 'data-ooui', '' ); - // restore dynamic state after the new element is inserted into DOM - domPromise.done( obj.restorePreInfuseState.bind( obj, state ) ); - return obj; -}; - -/** - * Pick out parts of `node`'s DOM to be reused when infusing a widget. - * - * This method **must not** make any changes to the DOM, only find interesting pieces and add them - * to `config` (which should then be returned). Actual DOM juggling should then be done by the - * constructor, which will be given the enhanced config. - * - * @protected - * @param {HTMLElement} node - * @param {Object} config - * @return {Object} - */ -OO.ui.Element.static.reusePreInfuseDOM = function ( node, config ) { - return config; -}; - -/** - * Gather the dynamic state (focus, value of form inputs, scroll position, etc.) of an HTML DOM node - * (and its children) that represent an Element of the same class and the given configuration, - * generated by the PHP implementation. - * - * This method is called just before `node` is detached from the DOM. The return value of this - * function will be passed to #restorePreInfuseState after the newly created widget's #$element - * is inserted into DOM to replace `node`. - * - * @protected - * @param {HTMLElement} node - * @param {Object} config - * @return {Object} - */ -OO.ui.Element.static.gatherPreInfuseState = function () { - return {}; -}; - -/** - * Get a jQuery function within a specific document. - * - * @static - * @param {jQuery|HTMLElement|HTMLDocument|Window} context Context to bind the function to - * @param {jQuery} [$iframe] HTML iframe element that contains the document, omit if document is - * not in an iframe - * @return {Function} Bound jQuery function - */ -OO.ui.Element.static.getJQuery = function ( context, $iframe ) { - function wrapper( selector ) { - return $( selector, wrapper.context ); - } - - wrapper.context = this.getDocument( context ); - - if ( $iframe ) { - wrapper.$iframe = $iframe; - } - - return wrapper; -}; - -/** - * Get the document of an element. - * - * @static - * @param {jQuery|HTMLElement|HTMLDocument|Window} obj Object to get the document for - * @return {HTMLDocument|null} Document object - */ -OO.ui.Element.static.getDocument = function ( obj ) { - // jQuery - selections created "offscreen" won't have a context, so .context isn't reliable - return ( obj[ 0 ] && obj[ 0 ].ownerDocument ) || - // Empty jQuery selections might have a context - obj.context || - // HTMLElement - obj.ownerDocument || - // Window - obj.document || - // HTMLDocument - ( obj.nodeType === Node.DOCUMENT_NODE && obj ) || - null; -}; - -/** - * Get the window of an element or document. - * - * @static - * @param {jQuery|HTMLElement|HTMLDocument|Window} obj Context to get the window for - * @return {Window} Window object - */ -OO.ui.Element.static.getWindow = function ( obj ) { - var doc = this.getDocument( obj ); - return doc.defaultView; -}; - -/** - * Get the direction of an element or document. - * - * @static - * @param {jQuery|HTMLElement|HTMLDocument|Window} obj Context to get the direction for - * @return {string} Text direction, either 'ltr' or 'rtl' - */ -OO.ui.Element.static.getDir = function ( obj ) { - var isDoc, isWin; - - if ( obj instanceof jQuery ) { - obj = obj[ 0 ]; - } - isDoc = obj.nodeType === Node.DOCUMENT_NODE; - isWin = obj.document !== undefined; - if ( isDoc || isWin ) { - if ( isWin ) { - obj = obj.document; - } - obj = obj.body; - } - return $( obj ).css( 'direction' ); -}; - -/** - * Get the offset between two frames. - * - * TODO: Make this function not use recursion. - * - * @static - * @param {Window} from Window of the child frame - * @param {Window} [to=window] Window of the parent frame - * @param {Object} [offset] Offset to start with, used internally - * @return {Object} Offset object, containing left and top properties - */ -OO.ui.Element.static.getFrameOffset = function ( from, to, offset ) { - var i, len, frames, frame, rect; - - if ( !to ) { - to = window; - } - if ( !offset ) { - offset = { top: 0, left: 0 }; - } - if ( from.parent === from ) { - return offset; - } - - // Get iframe element - frames = from.parent.document.getElementsByTagName( 'iframe' ); - for ( i = 0, len = frames.length; i < len; i++ ) { - if ( frames[ i ].contentWindow === from ) { - frame = frames[ i ]; - break; - } - } - - // Recursively accumulate offset values - if ( frame ) { - rect = frame.getBoundingClientRect(); - offset.left += rect.left; - offset.top += rect.top; - if ( from !== to ) { - this.getFrameOffset( from.parent, offset ); - } - } - return offset; -}; - -/** - * Get the offset between two elements. - * - * The two elements may be in a different frame, but in that case the frame $element is in must - * be contained in the frame $anchor is in. - * - * @static - * @param {jQuery} $element Element whose position to get - * @param {jQuery} $anchor Element to get $element's position relative to - * @return {Object} Translated position coordinates, containing top and left properties - */ -OO.ui.Element.static.getRelativePosition = function ( $element, $anchor ) { - var iframe, iframePos, - pos = $element.offset(), - anchorPos = $anchor.offset(), - elementDocument = this.getDocument( $element ), - anchorDocument = this.getDocument( $anchor ); - - // If $element isn't in the same document as $anchor, traverse up - while ( elementDocument !== anchorDocument ) { - iframe = elementDocument.defaultView.frameElement; - if ( !iframe ) { - throw new Error( '$element frame is not contained in $anchor frame' ); - } - iframePos = $( iframe ).offset(); - pos.left += iframePos.left; - pos.top += iframePos.top; - elementDocument = iframe.ownerDocument; - } - pos.left -= anchorPos.left; - pos.top -= anchorPos.top; - return pos; -}; - -/** - * Get element border sizes. - * - * @static - * @param {HTMLElement} el Element to measure - * @return {Object} Dimensions object with `top`, `left`, `bottom` and `right` properties - */ -OO.ui.Element.static.getBorders = function ( el ) { - var doc = el.ownerDocument, - win = doc.defaultView, - style = win.getComputedStyle( el, null ), - $el = $( el ), - top = parseFloat( style ? style.borderTopWidth : $el.css( 'borderTopWidth' ) ) || 0, - left = parseFloat( style ? style.borderLeftWidth : $el.css( 'borderLeftWidth' ) ) || 0, - bottom = parseFloat( style ? style.borderBottomWidth : $el.css( 'borderBottomWidth' ) ) || 0, - right = parseFloat( style ? style.borderRightWidth : $el.css( 'borderRightWidth' ) ) || 0; - - return { - top: top, - left: left, - bottom: bottom, - right: right - }; -}; - -/** - * Get dimensions of an element or window. - * - * @static - * @param {HTMLElement|Window} el Element to measure - * @return {Object} Dimensions object with `borders`, `scroll`, `scrollbar` and `rect` properties - */ -OO.ui.Element.static.getDimensions = function ( el ) { - var $el, $win, - doc = el.ownerDocument || el.document, - win = doc.defaultView; - - if ( win === el || el === doc.documentElement ) { - $win = $( win ); - return { - borders: { top: 0, left: 0, bottom: 0, right: 0 }, - scroll: { - top: $win.scrollTop(), - left: $win.scrollLeft() - }, - scrollbar: { right: 0, bottom: 0 }, - rect: { - top: 0, - left: 0, - bottom: $win.innerHeight(), - right: $win.innerWidth() - } - }; - } else { - $el = $( el ); - return { - borders: this.getBorders( el ), - scroll: { - top: $el.scrollTop(), - left: $el.scrollLeft() - }, - scrollbar: { - right: $el.innerWidth() - el.clientWidth, - bottom: $el.innerHeight() - el.clientHeight - }, - rect: el.getBoundingClientRect() - }; - } -}; - -/** - * Get the number of pixels that an element's content is scrolled to the left. - * - * Adapted from . - * Original code copyright 2012 Wei-Ko Kao, licensed under the MIT License. - * - * This function smooths out browser inconsistencies (nicely described in the README at - * ) and produces a result consistent - * with Firefox's 'scrollLeft', which seems the sanest. - * - * @static - * @method - * @param {HTMLElement|Window} el Element to measure - * @return {number} Scroll position from the left. - * If the element's direction is LTR, this is a positive number between `0` (initial scroll position) - * and `el.scrollWidth - el.clientWidth` (furthest possible scroll position). - * If the element's direction is RTL, this is a negative number between `0` (initial scroll position) - * and `-el.scrollWidth + el.clientWidth` (furthest possible scroll position). - */ -OO.ui.Element.static.getScrollLeft = ( function () { - var rtlScrollType = null; - - function test() { - var $definer = $( '
    A
    ' ), - definer = $definer[ 0 ]; - - $definer.appendTo( 'body' ); - if ( definer.scrollLeft > 0 ) { - // Safari, Chrome - rtlScrollType = 'default'; - } else { - definer.scrollLeft = 1; - if ( definer.scrollLeft === 0 ) { - // Firefox, old Opera - rtlScrollType = 'negative'; - } else { - // Internet Explorer, Edge - rtlScrollType = 'reverse'; - } - } - $definer.remove(); - } - - return function getScrollLeft( el ) { - var isRoot = el.window === el || - el === el.ownerDocument.body || - el === el.ownerDocument.documentElement, - scrollLeft = isRoot ? $( window ).scrollLeft() : el.scrollLeft, - // All browsers use the correct scroll type ('negative') on the root, so don't - // do any fixups when looking at the root element - direction = isRoot ? 'ltr' : $( el ).css( 'direction' ); - - if ( direction === 'rtl' ) { - if ( rtlScrollType === null ) { - test(); - } - if ( rtlScrollType === 'reverse' ) { - scrollLeft = -scrollLeft; - } else if ( rtlScrollType === 'default' ) { - scrollLeft = scrollLeft - el.scrollWidth + el.clientWidth; - } - } - - return scrollLeft; - }; -}() ); - -/** - * Get the root scrollable element of given element's document. - * - * On Blink-based browsers (Chrome etc.), `document.documentElement` can't be used to get or set - * the scrollTop property; instead we have to use `document.body`. Changing and testing the value - * lets us use 'body' or 'documentElement' based on what is working. - * - * https://code.google.com/p/chromium/issues/detail?id=303131 - * - * @static - * @param {HTMLElement} el Element to find root scrollable parent for - * @return {HTMLElement} Scrollable parent, `document.body` or `document.documentElement` - * depending on browser - */ -OO.ui.Element.static.getRootScrollableElement = function ( el ) { - var scrollTop, body; - - if ( OO.ui.scrollableElement === undefined ) { - body = el.ownerDocument.body; - scrollTop = body.scrollTop; - body.scrollTop = 1; - - // In some browsers (observed in Chrome 56 on Linux Mint 18.1), - // body.scrollTop doesn't become exactly 1, but a fractional value like 0.76 - if ( Math.round( body.scrollTop ) === 1 ) { - body.scrollTop = scrollTop; - OO.ui.scrollableElement = 'body'; - } else { - OO.ui.scrollableElement = 'documentElement'; - } - } - - return el.ownerDocument[ OO.ui.scrollableElement ]; -}; - -/** - * Get closest scrollable container. - * - * Traverses up until either a scrollable element or the root is reached, in which case the root - * scrollable element will be returned (see #getRootScrollableElement). - * - * @static - * @param {HTMLElement} el Element to find scrollable container for - * @param {string} [dimension] Dimension of scrolling to look for; `x`, `y` or omit for either - * @return {HTMLElement} Closest scrollable container - */ -OO.ui.Element.static.getClosestScrollableContainer = function ( el, dimension ) { - var i, val, - // Browsers do not correctly return the computed value of 'overflow' when 'overflow-x' and - // 'overflow-y' have different values, so we need to check the separate properties. - props = [ 'overflow-x', 'overflow-y' ], - $parent = $( el ).parent(); - - if ( dimension === 'x' || dimension === 'y' ) { - props = [ 'overflow-' + dimension ]; - } - - // Special case for the document root (which doesn't really have any scrollable container, since - // it is the ultimate scrollable container, but this is probably saner than null or exception) - if ( $( el ).is( 'html, body' ) ) { - return this.getRootScrollableElement( el ); - } - - while ( $parent.length ) { - if ( $parent[ 0 ] === this.getRootScrollableElement( el ) ) { - return $parent[ 0 ]; - } - i = props.length; - while ( i-- ) { - val = $parent.css( props[ i ] ); - // We assume that elements with 'overflow' (in any direction) set to 'hidden' will never be - // scrolled in that direction, but they can actually be scrolled programatically. The user can - // unintentionally perform a scroll in such case even if the application doesn't scroll - // programatically, e.g. when jumping to an anchor, or when using built-in find functionality. - // This could cause funny issues... - if ( val === 'auto' || val === 'scroll' ) { - return $parent[ 0 ]; - } - } - $parent = $parent.parent(); - } - // The element is unattached... return something mostly sane - return this.getRootScrollableElement( el ); -}; - -/** - * Scroll element into view. - * - * @static - * @param {HTMLElement} el Element to scroll into view - * @param {Object} [config] Configuration options - * @param {string} [config.duration='fast'] jQuery animation duration value - * @param {string} [config.direction] Scroll in only one direction, e.g. 'x' or 'y', omit - * to scroll in both directions - * @return {jQuery.Promise} Promise which resolves when the scroll is complete - */ -OO.ui.Element.static.scrollIntoView = function ( el, config ) { - var position, animations, container, $container, elementDimensions, containerDimensions, $window, - deferred = $.Deferred(); - - // Configuration initialization - config = config || {}; - - animations = {}; - container = this.getClosestScrollableContainer( el, config.direction ); - $container = $( container ); - elementDimensions = this.getDimensions( el ); - containerDimensions = this.getDimensions( container ); - $window = $( this.getWindow( el ) ); - - // Compute the element's position relative to the container - if ( $container.is( 'html, body' ) ) { - // If the scrollable container is the root, this is easy - position = { - top: elementDimensions.rect.top, - bottom: $window.innerHeight() - elementDimensions.rect.bottom, - left: elementDimensions.rect.left, - right: $window.innerWidth() - elementDimensions.rect.right - }; - } else { - // Otherwise, we have to subtract el's coordinates from container's coordinates - position = { - top: elementDimensions.rect.top - ( containerDimensions.rect.top + containerDimensions.borders.top ), - bottom: containerDimensions.rect.bottom - containerDimensions.borders.bottom - containerDimensions.scrollbar.bottom - elementDimensions.rect.bottom, - left: elementDimensions.rect.left - ( containerDimensions.rect.left + containerDimensions.borders.left ), - right: containerDimensions.rect.right - containerDimensions.borders.right - containerDimensions.scrollbar.right - elementDimensions.rect.right - }; - } - - if ( !config.direction || config.direction === 'y' ) { - if ( position.top < 0 ) { - animations.scrollTop = containerDimensions.scroll.top + position.top; - } else if ( position.top > 0 && position.bottom < 0 ) { - animations.scrollTop = containerDimensions.scroll.top + Math.min( position.top, -position.bottom ); - } - } - if ( !config.direction || config.direction === 'x' ) { - if ( position.left < 0 ) { - animations.scrollLeft = containerDimensions.scroll.left + position.left; - } else if ( position.left > 0 && position.right < 0 ) { - animations.scrollLeft = containerDimensions.scroll.left + Math.min( position.left, -position.right ); - } - } - if ( !$.isEmptyObject( animations ) ) { - $container.stop( true ).animate( animations, config.duration === undefined ? 'fast' : config.duration ); - $container.queue( function ( next ) { - deferred.resolve(); - next(); - } ); - } else { - deferred.resolve(); - } - return deferred.promise(); -}; - -/** - * Force the browser to reconsider whether it really needs to render scrollbars inside the element - * and reserve space for them, because it probably doesn't. - * - * Workaround primarily for , but also - * similar bugs in other browsers. "Just" forcing a reflow is not sufficient in all cases, we need - * to first actually detach (or hide, but detaching is simpler) all children, *then* force a reflow, - * and then reattach (or show) them back. - * - * @static - * @param {HTMLElement} el Element to reconsider the scrollbars on - */ -OO.ui.Element.static.reconsiderScrollbars = function ( el ) { - var i, len, scrollLeft, scrollTop, nodes = []; - // Save scroll position - scrollLeft = el.scrollLeft; - scrollTop = el.scrollTop; - // Detach all children - while ( el.firstChild ) { - nodes.push( el.firstChild ); - el.removeChild( el.firstChild ); - } - // Force reflow - void el.offsetHeight; - // Reattach all children - for ( i = 0, len = nodes.length; i < len; i++ ) { - el.appendChild( nodes[ i ] ); - } - // Restore scroll position (no-op if scrollbars disappeared) - el.scrollLeft = scrollLeft; - el.scrollTop = scrollTop; -}; - -/* Methods */ - -/** - * Toggle visibility of an element. - * - * @param {boolean} [show] Make element visible, omit to toggle visibility - * @fires visible - * @chainable - */ -OO.ui.Element.prototype.toggle = function ( show ) { - show = show === undefined ? !this.visible : !!show; - - if ( show !== this.isVisible() ) { - this.visible = show; - this.$element.toggleClass( 'oo-ui-element-hidden', !this.visible ); - this.emit( 'toggle', show ); - } - - return this; -}; - -/** - * Check if element is visible. - * - * @return {boolean} element is visible - */ -OO.ui.Element.prototype.isVisible = function () { - return this.visible; -}; - -/** - * Get element data. - * - * @return {Mixed} Element data - */ -OO.ui.Element.prototype.getData = function () { - return this.data; -}; - -/** - * Set element data. - * - * @param {Mixed} data Element data - * @chainable - */ -OO.ui.Element.prototype.setData = function ( data ) { - this.data = data; - return this; -}; - -/** - * Set the element has an 'id' attribute. - * - * @param {string} id - * @chainable - */ -OO.ui.Element.prototype.setElementId = function ( id ) { - this.elementId = id; - this.$element.attr( 'id', id ); - return this; -}; - -/** - * Ensure that the element has an 'id' attribute, setting it to an unique value if it's missing, - * and return its value. - * - * @return {string} - */ -OO.ui.Element.prototype.getElementId = function () { - if ( this.elementId === null ) { - this.setElementId( OO.ui.generateElementId() ); - } - return this.elementId; -}; - -/** - * Check if element supports one or more methods. - * - * @param {string|string[]} methods Method or list of methods to check - * @return {boolean} All methods are supported - */ -OO.ui.Element.prototype.supports = function ( methods ) { - var i, len, - support = 0; - - methods = Array.isArray( methods ) ? methods : [ methods ]; - for ( i = 0, len = methods.length; i < len; i++ ) { - if ( $.isFunction( this[ methods[ i ] ] ) ) { - support++; - } - } - - return methods.length === support; -}; - -/** - * Update the theme-provided classes. - * - * @localdoc This is called in element mixins and widget classes any time state changes. - * Updating is debounced, minimizing overhead of changing multiple attributes and - * guaranteeing that theme updates do not occur within an element's constructor - */ -OO.ui.Element.prototype.updateThemeClasses = function () { - OO.ui.theme.queueUpdateElementClasses( this ); -}; - -/** - * Get the HTML tag name. - * - * Override this method to base the result on instance information. - * - * @return {string} HTML tag name - */ -OO.ui.Element.prototype.getTagName = function () { - return this.constructor.static.tagName; -}; - -/** - * Check if the element is attached to the DOM - * - * @return {boolean} The element is attached to the DOM - */ -OO.ui.Element.prototype.isElementAttached = function () { - return $.contains( this.getElementDocument(), this.$element[ 0 ] ); -}; - -/** - * Get the DOM document. - * - * @return {HTMLDocument} Document object - */ -OO.ui.Element.prototype.getElementDocument = function () { - // Don't cache this in other ways either because subclasses could can change this.$element - return OO.ui.Element.static.getDocument( this.$element ); -}; - -/** - * Get the DOM window. - * - * @return {Window} Window object - */ -OO.ui.Element.prototype.getElementWindow = function () { - return OO.ui.Element.static.getWindow( this.$element ); -}; - -/** - * Get closest scrollable container. - * - * @return {HTMLElement} Closest scrollable container - */ -OO.ui.Element.prototype.getClosestScrollableElementContainer = function () { - return OO.ui.Element.static.getClosestScrollableContainer( this.$element[ 0 ] ); -}; - -/** - * Get group element is in. - * - * @return {OO.ui.mixin.GroupElement|null} Group element, null if none - */ -OO.ui.Element.prototype.getElementGroup = function () { - return this.elementGroup; -}; - -/** - * Set group element is in. - * - * @param {OO.ui.mixin.GroupElement|null} group Group element, null if none - * @chainable - */ -OO.ui.Element.prototype.setElementGroup = function ( group ) { - this.elementGroup = group; - return this; -}; - -/** - * Scroll element into view. - * - * @param {Object} [config] Configuration options - * @return {jQuery.Promise} Promise which resolves when the scroll is complete - */ -OO.ui.Element.prototype.scrollElementIntoView = function ( config ) { - if ( - !this.isElementAttached() || - !this.isVisible() || - ( this.getElementGroup() && !this.getElementGroup().isVisible() ) - ) { - return $.Deferred().resolve(); - } - return OO.ui.Element.static.scrollIntoView( this.$element[ 0 ], config ); -}; - -/** - * Restore the pre-infusion dynamic state for this widget. - * - * This method is called after #$element has been inserted into DOM. The parameter is the return - * value of #gatherPreInfuseState. - * - * @protected - * @param {Object} state - */ -OO.ui.Element.prototype.restorePreInfuseState = function () { -}; - -/** - * Wraps an HTML snippet for use with configuration values which default - * to strings. This bypasses the default html-escaping done to string - * values. - * - * @class - * - * @constructor - * @param {string} [content] HTML content - */ -OO.ui.HtmlSnippet = function OoUiHtmlSnippet( content ) { - // Properties - this.content = content; -}; - -/* Setup */ - -OO.initClass( OO.ui.HtmlSnippet ); - -/* Methods */ - -/** - * Render into HTML. - * - * @return {string} Unchanged HTML snippet. - */ -OO.ui.HtmlSnippet.prototype.toString = function () { - return this.content; -}; - -/** - * Layouts are containers for elements and are used to arrange other widgets of arbitrary type in a way - * that is centrally controlled and can be updated dynamically. Layouts can be, and usually are, combined. - * See {@link OO.ui.FieldsetLayout FieldsetLayout}, {@link OO.ui.FieldLayout FieldLayout}, {@link OO.ui.FormLayout FormLayout}, - * {@link OO.ui.PanelLayout PanelLayout}, {@link OO.ui.StackLayout StackLayout}, {@link OO.ui.PageLayout PageLayout}, - * {@link OO.ui.HorizontalLayout HorizontalLayout}, and {@link OO.ui.BookletLayout BookletLayout} for more information and examples. - * - * @abstract - * @class - * @extends OO.ui.Element - * @mixins OO.EventEmitter - * - * @constructor - * @param {Object} [config] Configuration options - */ -OO.ui.Layout = function OoUiLayout( config ) { - // Configuration initialization - config = config || {}; - - // Parent constructor - OO.ui.Layout.parent.call( this, config ); - - // Mixin constructors - OO.EventEmitter.call( this ); - - // Initialization - this.$element.addClass( 'oo-ui-layout' ); -}; - -/* Setup */ - -OO.inheritClass( OO.ui.Layout, OO.ui.Element ); -OO.mixinClass( OO.ui.Layout, OO.EventEmitter ); - -/** - * Widgets are compositions of one or more OOUI elements that users can both view - * and interact with. All widgets can be configured and modified via a standard API, - * and their state can change dynamically according to a model. - * - * @abstract - * @class - * @extends OO.ui.Element - * @mixins OO.EventEmitter - * - * @constructor - * @param {Object} [config] Configuration options - * @cfg {boolean} [disabled=false] Disable the widget. Disabled widgets cannot be used and their - * appearance reflects this state. - */ -OO.ui.Widget = function OoUiWidget( config ) { - // Initialize config - config = $.extend( { disabled: false }, config ); - - // Parent constructor - OO.ui.Widget.parent.call( this, config ); - - // Mixin constructors - OO.EventEmitter.call( this ); - - // Properties - this.disabled = null; - this.wasDisabled = null; - - // Initialization - this.$element.addClass( 'oo-ui-widget' ); - this.setDisabled( !!config.disabled ); -}; - -/* Setup */ - -OO.inheritClass( OO.ui.Widget, OO.ui.Element ); -OO.mixinClass( OO.ui.Widget, OO.EventEmitter ); - -/* Events */ - -/** - * @event disable - * - * A 'disable' event is emitted when the disabled state of the widget changes - * (i.e. on disable **and** enable). - * - * @param {boolean} disabled Widget is disabled - */ - -/** - * @event toggle - * - * A 'toggle' event is emitted when the visibility of the widget changes. - * - * @param {boolean} visible Widget is visible - */ - -/* Methods */ - -/** - * Check if the widget is disabled. - * - * @return {boolean} Widget is disabled - */ -OO.ui.Widget.prototype.isDisabled = function () { - return this.disabled; -}; - -/** - * Set the 'disabled' state of the widget. - * - * When a widget is disabled, it cannot be used and its appearance is updated to reflect this state. - * - * @param {boolean} disabled Disable widget - * @chainable - */ -OO.ui.Widget.prototype.setDisabled = function ( disabled ) { - var isDisabled; - - this.disabled = !!disabled; - isDisabled = this.isDisabled(); - if ( isDisabled !== this.wasDisabled ) { - this.$element.toggleClass( 'oo-ui-widget-disabled', isDisabled ); - this.$element.toggleClass( 'oo-ui-widget-enabled', !isDisabled ); - this.$element.attr( 'aria-disabled', isDisabled.toString() ); - this.emit( 'disable', isDisabled ); - this.updateThemeClasses(); - } - this.wasDisabled = isDisabled; - - return this; -}; - -/** - * Update the disabled state, in case of changes in parent widget. - * - * @chainable - */ -OO.ui.Widget.prototype.updateDisabled = function () { - this.setDisabled( this.disabled ); - return this; -}; - -/** - * Get an ID of a labelable node which is part of this widget, if any, to be used for `