From: jenkins-bot Date: Wed, 6 Sep 2017 13:12:13 +0000 (+0000) Subject: Merge "Move around "ا" to after "آ" and not before" X-Git-Tag: 1.31.0-rc.0~2199 X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=commitdiff_plain;h=1d7a1bf8bddf0908e4f572c82268733f63126a13;hp=2ceba3b1459b80912aeafa698ccea99af8a9f24d Merge "Move around "ا" to after "آ" and not before" --- diff --git a/.gitignore b/.gitignore index 388f354010..b991e115a3 100644 --- a/.gitignore +++ b/.gitignore @@ -42,6 +42,7 @@ sftp-config.json /StartProfiler.php # Building & testing +npm-debug.log node_modules/ /tests/phpunit/phpunit.phar diff --git a/HISTORY b/HISTORY index 9259814a9a..0a2869d0d1 100644 --- a/HISTORY +++ b/HISTORY @@ -699,6 +699,17 @@ There's usually someone online in #mediawiki on irc.freenode.net. = MediaWiki 1.27 = +== MediaWiki 1.27.3 == +Due to a packaging error, the wrong version of the SyntaxHighlight extension was +included in the tarball version of MediaWiki 1.27.2. The version included had a +serious security issue in it (T158689). There was also some minor code fixes in +MediaWiki itself since 1.27.2, but none of them were security relevant. + +=== Changes since 1.27.2 === +* (T145664) Fix broken wincache merge() implementation +* (T163434) Add wikimedia/testing-access-wrapper for forwards compatibility +* (T153505) Fix php warnings on php 7.1 due to use of &$this + == MediaWiki 1.27.2 == This is a security and maintenance release of the MediaWiki 1.27 branch. diff --git a/RELEASE-NOTES-1.30 b/RELEASE-NOTES-1.30 index dd39561d22..b478f51fcf 100644 --- a/RELEASE-NOTES-1.30 +++ b/RELEASE-NOTES-1.30 @@ -25,6 +25,8 @@ section). to plain class names, using the 'factory' key in the module description array. This allows dependency injection to be used for ResourceLoader modules. * $wgExceptionHooks has been removed. +* (T163562) $wgRangeContributionsCIDRLimit was introduced to control the size + of IP ranges that can be queried at Special:Contributions. * (T45547) $wgUsePigLatinVariant added (off by default). * (T152540) MediaWiki now supports a section ID escaping style that allows to display non-Latin characters verbatim on many modern browsers. This is controlled by the @@ -33,11 +35,19 @@ section). use $wgFragmentMode to migrate off it to a modern alternative. * $wgExternalInterwikiFragmentMode was introduced to control how fragments in sinterwikis going outside of current wiki farm are encoded. +* (T120333) Soft-deprecated the use of PHP extension 'mysql' in favor of 'mysqli'. + This PHP extension was deprecated in PHP 5.5 and removed in PHP 7.0. MediaWiki + auto-selects the 'mysqli' driver since MediaWiki 1.22, except if explicitly + requested through the configuration parameter $wgDBservers. +* $wgOOUIEditPage was removed, as it is now the default. This was documented as a + temporary variable during the migration period. === New features in 1.30 === * (T37247) Output from Parser::parse() will now be wrapped in a div with class="mw-parser-output" by default. This may be changed or disabled using ParserOptions::setWrapOutputClass(). +* (T163562) Added ability to search for contributions within an IP ranges + at Special:Contributions. * Added 'ChangeTagsAllowedAdd' hook, enabling extensions to allow software- specific tags to be added by users. * Added a 'ParserOptionsRegister' hook to allow extensions to register @@ -55,11 +65,11 @@ section). just been unwatched. * Added $wgParserTestMediaHandlers, where mock media handlers can be passed to MediaHandlerFactory for parser tests. - -=== Languages updated in 1.30 === - -* Support for kbp (KabÉ©yɛ / Kabiyè) was added. -* Support for skr (Saraiki, سرائیکی) was added. +* Edit summaries, block reasons, and other "comments" are now stored in a + separate database table. Use the CommentFormatter class to access them. +** This is currently gated by $wgCommentTableSchemaMigrationStage. Most wikis + can set this to MIGRATION_NEW and run maintenance/migrateComments.php as + soon as any necessary extensions are updated. === External library changes in 1.30 === @@ -105,7 +115,9 @@ MediaWiki supports over 350 languages. Many localisations are updated regularly. Below only new and removed languages are listed, as well as changes to languages because of Phabricator reports. -* … +* Added: kbp (KabÉ©yɛ / Kabiyè) +* Added: skr (Saraiki, سرائیکی) +* Added: tay (Tayal / Atayal) ==== Pig Latin added ==== * (T45547) Added Pig Latin, a made-up English variant (en-x-piglatin), @@ -149,6 +161,7 @@ changes to languages because of Phabricator reports. WikiPage::makeParserOptions() to create the ParserOptions object and only change options that affect the parser cache key. * Article::viewRedirect() is deprecated. +* IP::isValidBlock() was deprecated. Use the equivalent IP::isValidRange(). * DeprecatedGlobal no longer supports passing in a direct value, it requires a callable factory function or a class name. * The $parserMemc global, wfGetParserCacheStorage(), and ParserCache::singleton() @@ -171,6 +184,31 @@ changes to languages because of Phabricator reports. * Removed 'jquery.mwExtension' module. (deprecated since 1.26) * mediawiki.ui: Deprecate greys, which are not part of WikimediaUI color palette any more. +* CdbReader, CdbWriter, CdbException classes (deprecated in 1.25) were removed. + The namespaced classes in the Cdb namespace should be used instead. +* IPSet class (deprecated in 1.26) was removed. The namespaced IPSet\IPSet + should be used instead. +* RunningStat class (deprecated in 1.27) was removed. The namespaced + RunningStat\RunningStat should be used instead. +* MWMemcached and MemCachedClientforWiki classes (deprecated in 1.27) were removed. + The MemcachedClient class should be used instead. +* EditPage::isOouiEnabled() is deprecated and will always return true. +* EditPage::getSummaryInput() and ::getSummaryInputOOUI() are deprecated. Please + use ::getSummaryInputWidget() instead. +* EditPage::getCheckboxes() and ::getCheckboxesOOUI() are deprecated. Please + use ::getCheckboxesWidget() instead. +* Parser::getRandomString() (deprecated in 1.26) was removed. +* Parser::uniqPrefix() (deprecated in 1.26) was removed. +* Parser::extractTagsAndParams() now only accepts three arguments. The fourth, + $uniq_prefix was deprecated in 1.26 and has now been removed. +* (T172514) The following tables have had their UNIQUE indexes turned into proper + PRIMARY KEYs for increased maintainability: categorylinks, imagelinks, iwlinks, + langlinks, log_search, module_deps, objectcache, pagelinks, query_cache, site_stats, + templatelinks, text, transcache, user_former_groups, user_properties. +* IDatabase::nextSequenceValue() is no longer needed by any database backends + (formerly it was needed by PostgreSQL and Oracle), and is now deprecated. +* (T146591) The lc_lang_key index on the l10n_cache table has been changed into a + PRIMARY KEY. == Compatibility == MediaWiki 1.30 requires PHP 5.5.9 or later. There is experimental support for diff --git a/autoload.php b/autoload.php index d9e85bd39d..c7f13d5757 100644 --- a/autoload.php +++ b/autoload.php @@ -219,6 +219,7 @@ $wgAutoloadLocalClasses = [ 'CachedBagOStuff' => __DIR__ . '/includes/libs/objectcache/CachedBagOStuff.php', 'CachingSiteStore' => __DIR__ . '/includes/site/CachingSiteStore.php', 'CapsCleanup' => __DIR__ . '/maintenance/cleanupCaps.php', + 'CategoriesRdf' => __DIR__ . '/includes/CategoriesRdf.php', 'Category' => __DIR__ . '/includes/Category.php', 'CategoryFinder' => __DIR__ . '/includes/CategoryFinder.php', 'CategoryMembershipChange' => __DIR__ . '/includes/changes/CategoryMembershipChange.php', @@ -226,9 +227,6 @@ $wgAutoloadLocalClasses = [ 'CategoryPage' => __DIR__ . '/includes/page/CategoryPage.php', 'CategoryPager' => __DIR__ . '/includes/specials/pagers/CategoryPager.php', 'CategoryViewer' => __DIR__ . '/includes/CategoryViewer.php', - 'CdbException' => __DIR__ . '/includes/compat/CdbCompat.php', - 'CdbReader' => __DIR__ . '/includes/compat/CdbCompat.php', - 'CdbWriter' => __DIR__ . '/includes/compat/CdbCompat.php', 'CdnCacheUpdate' => __DIR__ . '/includes/deferred/CdnCacheUpdate.php', 'CdnPurgeJob' => __DIR__ . '/includes/jobqueue/jobs/CdnPurgeJob.php', 'CentralIdLookup' => __DIR__ . '/includes/user/CentralIdLookup.php', @@ -278,6 +276,8 @@ $wgAutoloadLocalClasses = [ 'CollationFa' => __DIR__ . '/includes/collation/CollationFa.php', 'CommandLineInc' => __DIR__ . '/maintenance/commandLine.inc', 'CommandLineInstaller' => __DIR__ . '/maintenance/install.php', + 'CommentStore' => __DIR__ . '/includes/CommentStore.php', + 'CommentStoreComment' => __DIR__ . '/includes/CommentStoreComment.php', 'CompareParserCache' => __DIR__ . '/maintenance/compareParserCache.php', 'CompareParsers' => __DIR__ . '/maintenance/compareParsers.php', 'ComposerHookHandler' => __DIR__ . '/includes/composer/ComposerHookHandler.php', @@ -367,7 +367,6 @@ $wgAutoloadLocalClasses = [ 'DeleteLogFormatter' => __DIR__ . '/includes/logging/DeleteLogFormatter.php', 'DeleteOldRevisions' => __DIR__ . '/maintenance/deleteOldRevisions.php', 'DeleteOrphanedRevisions' => __DIR__ . '/maintenance/deleteOrphanedRevisions.php', - 'DeleteRevision' => __DIR__ . '/maintenance/deleteRevision.php', 'DeleteSelfExternals' => __DIR__ . '/maintenance/deleteSelfExternals.php', 'DeletedContribsPager' => __DIR__ . '/includes/specials/pagers/DeletedContribsPager.php', 'DeletedContributionsPage' => __DIR__ . '/includes/specials/SpecialDeletedContributions.php', @@ -401,6 +400,7 @@ $wgAutoloadLocalClasses = [ 'Dump7ZipOutput' => __DIR__ . '/includes/export/Dump7ZipOutput.php', 'DumpBZip2Output' => __DIR__ . '/includes/export/DumpBZip2Output.php', 'DumpBackup' => __DIR__ . '/maintenance/dumpBackup.php', + 'DumpCategoriesAsRdf' => __DIR__ . '/maintenance/dumpCategoriesAsRdf.php', 'DumpDBZip2Output' => __DIR__ . '/includes/export/DumpDBZip2Output.php', 'DumpFileOutput' => __DIR__ . '/includes/export/DumpFileOutput.php', 'DumpFilter' => __DIR__ . '/includes/export/DumpFilter.php', @@ -437,6 +437,7 @@ $wgAutoloadLocalClasses = [ 'EraseArchivedFile' => __DIR__ . '/maintenance/eraseArchivedFile.php', 'ErrorPageError' => __DIR__ . '/includes/exception/ErrorPageError.php', 'EtcdConfig' => __DIR__ . '/includes/config/EtcdConfig.php', + 'EtcdConfigParseError' => __DIR__ . '/includes/config/EtcdConfigParseError.php', 'EventRelayer' => __DIR__ . '/includes/libs/eventrelayer/EventRelayer.php', 'EventRelayerGroup' => __DIR__ . '/includes/EventRelayerGroup.php', 'EventRelayerKafka' => __DIR__ . '/includes/libs/eventrelayer/EventRelayerKafka.php', @@ -617,7 +618,6 @@ $wgAutoloadLocalClasses = [ 'ILocalizedException' => __DIR__ . '/includes/exception/LocalizedException.php', 'IMaintainableDatabase' => __DIR__ . '/includes/libs/rdbms/database/IMaintainableDatabase.php', 'IP' => __DIR__ . '/includes/libs/IP.php', - 'IPSet' => __DIR__ . '/includes/compat/IPSetCompat.php', 'IPTC' => __DIR__ . '/includes/media/IPTC.php', 'IRCColourfulRCFeedFormatter' => __DIR__ . '/includes/rcfeed/IRCColourfulRCFeedFormatter.php', 'IcuCollation' => __DIR__ . '/includes/collation/IcuCollation.php', @@ -803,7 +803,6 @@ $wgAutoloadLocalClasses = [ 'MWGrants' => __DIR__ . '/includes/MWGrants.php', 'MWHttpRequest' => __DIR__ . '/includes/http/MWHttpRequest.php', 'MWLBFactory' => __DIR__ . '/includes/db/MWLBFactory.php', - 'MWMemcached' => __DIR__ . '/includes/compat/MemcachedClientCompat.php', 'MWMessagePack' => __DIR__ . '/includes/libs/MWMessagePack.php', 'MWNamespace' => __DIR__ . '/includes/MWNamespace.php', 'MWOldPassword' => __DIR__ . '/includes/password/MWOldPassword.php', @@ -968,7 +967,6 @@ $wgAutoloadLocalClasses = [ 'MediaWiki\\Widget\\TitleInputWidget' => __DIR__ . '/includes/widget/TitleInputWidget.php', 'MediaWiki\\Widget\\UserInputWidget' => __DIR__ . '/includes/widget/UserInputWidget.php', 'MediaWiki\\Widget\\UsersMultiselectWidget' => __DIR__ . '/includes/widget/UsersMultiselectWidget.php', - 'MemCachedClientforWiki' => __DIR__ . '/includes/compat/MemcachedClientCompat.php', 'MemcLockManager' => __DIR__ . '/includes/libs/lockmanager/MemcLockManager.php', 'MemcachedBagOStuff' => __DIR__ . '/includes/libs/objectcache/MemcachedBagOStuff.php', 'MemcachedClient' => __DIR__ . '/includes/libs/objectcache/MemcachedClient.php', @@ -987,6 +985,7 @@ $wgAutoloadLocalClasses = [ 'MessageContent' => __DIR__ . '/includes/content/MessageContent.php', 'MessageLocalizer' => __DIR__ . '/languages/MessageLocalizer.php', 'MessageSpecifier' => __DIR__ . '/includes/libs/MessageSpecifier.php', + 'MigrateComments' => __DIR__ . '/maintenance/migrateComments.php', 'MigrateFileRepoLayout' => __DIR__ . '/maintenance/migrateFileRepoLayout.php', 'MigrateUserGroup' => __DIR__ . '/maintenance/migrateUserGroup.php', 'MimeAnalyzer' => __DIR__ . '/includes/libs/mime/MimeAnalyzer.php', @@ -1118,6 +1117,7 @@ $wgAutoloadLocalClasses = [ 'PopulateFilearchiveSha1' => __DIR__ . '/maintenance/populateFilearchiveSha1.php', 'PopulateImageSha1' => __DIR__ . '/maintenance/populateImageSha1.php', 'PopulateInterwiki' => __DIR__ . '/maintenance/populateInterwiki.php', + 'PopulateIpChanges' => __DIR__ . '/maintenance/populateIpChanges.php', 'PopulateLogSearch' => __DIR__ . '/maintenance/populateLogSearch.php', 'PopulateLogUsertext' => __DIR__ . '/maintenance/populateLogUsertext.php', 'PopulatePPSortKey' => __DIR__ . '/maintenance/populatePPSortKey.php', @@ -1282,7 +1282,6 @@ $wgAutoloadLocalClasses = [ 'RollbackEdits' => __DIR__ . '/maintenance/rollbackEdits.php', 'RowUpdateGenerator' => __DIR__ . '/includes/utils/RowUpdateGenerator.php', 'RunJobs' => __DIR__ . '/maintenance/runJobs.php', - 'RunningStat' => __DIR__ . '/includes/compat/RunningStatCompat.php', 'SVGMetadataExtractor' => __DIR__ . '/includes/media/SVGMetadataExtractor.php', 'SVGReader' => __DIR__ . '/includes/media/SVGMetadataExtractor.php', 'SamplingStatsdClient' => __DIR__ . '/includes/libs/stats/SamplingStatsdClient.php', @@ -1669,6 +1668,7 @@ $wgAutoloadLocalClasses = [ 'Wikimedia\\Rdbms\\MssqlResultWrapper' => __DIR__ . '/includes/libs/rdbms/database/resultwrapper/MssqlResultWrapper.php', 'Wikimedia\\Rdbms\\MySQLField' => __DIR__ . '/includes/libs/rdbms/field/MySQLField.php', 'Wikimedia\\Rdbms\\MySQLMasterPos' => __DIR__ . '/includes/libs/rdbms/database/position/MySQLMasterPos.php', + 'Wikimedia\\Rdbms\\NextSequenceValue' => __DIR__ . '/includes/libs/rdbms/database/utils/NextSequenceValue.php', 'Wikimedia\\Rdbms\\PostgresBlob' => __DIR__ . '/includes/libs/rdbms/encasing/PostgresBlob.php', 'Wikimedia\\Rdbms\\PostgresField' => __DIR__ . '/includes/libs/rdbms/field/PostgresField.php', 'Wikimedia\\Rdbms\\ResultWrapper' => __DIR__ . '/includes/libs/rdbms/database/resultwrapper/ResultWrapper.php', diff --git a/composer.json b/composer.json index 32933e67a6..dd7567c93c 100644 --- a/composer.json +++ b/composer.json @@ -25,7 +25,7 @@ "ext-xml": "*", "liuggio/statsd-php-client": "1.0.18", "mediawiki/at-ease": "1.1.0", - "oojs/oojs-ui": "0.22.4", + "oojs/oojs-ui": "0.23.0", "oyejorge/less.php": "1.7.0.14", "php": ">=5.5.9", "psr/log": "1.0.2", @@ -37,6 +37,7 @@ "wikimedia/html-formatter": "1.0.1", "wikimedia/ip-set": "1.1.0", "wikimedia/php-session-serializer": "1.0.4", + "wikimedia/purtle": "1.0.6", "wikimedia/relpath": "2.0.0", "wikimedia/remex-html": "1.0.1", "wikimedia/running-stat": "1.1.0", diff --git a/docs/hooks.txt b/docs/hooks.txt index 8912b82b70..b7fe8c1f35 100644 --- a/docs/hooks.txt +++ b/docs/hooks.txt @@ -1022,6 +1022,15 @@ When constructing them, you specify which group they belong to. You can reuse existing groups (accessed through $special->getFilterGroup), or create your own (ChangesListBooleanFilterGroup or ChangesListStringOptionsFilterGroup). If you create new groups, you must register them with $special->registerFilterGroup. + +Note that this is called regardless of whether the user is currently using +the new (structured) or old (unstructured) filter UI. If you want your boolean +filter to show on both the new and old UI, specify all the supported fields. +These include showHide, label, and description. + +See the constructor of each ChangesList* class for documentation of supported +fields. + $special: ChangesListSpecialPage instance 'ChangeTagAfterDelete': Called after a change tag has been deleted (that is, diff --git a/docs/ontology.owl b/docs/ontology.owl new file mode 100644 index 0000000000..6b2e0b7f44 --- /dev/null +++ b/docs/ontology.owl @@ -0,0 +1,56 @@ + + + + + + + +]> + + + + + MediaWiki ontology + The ontology of MediaWiki + + + + + + Dump + A dump of MediaWiki content. + + + + Category + MediaWiki category. + + + + + + isInCategory + One category is the parent of another. + + + + + diff --git a/docs/uidesign/child-selector-emu.html b/docs/uidesign/child-selector-emu.html deleted file mode 100644 index 9db4c54d1a..0000000000 --- a/docs/uidesign/child-selector-emu.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - CSS Child selector emulation for IE 6 - - - -

-The following table show how nested tables inherit colors from the wikitable class (here it was renamed "global"). -

- - - - - - - - - - - -
Global table
TH: should have pink bg
TD: white bg
- - - - - - -
Nested table
Nested TH: transparentNested TD: transparent
-
- -

-With child selector we could limit the wikitable styling to the direct childs of the table. Unfortunately, Internet Explorer 6.0 does not support child selector. See our bug #33752. -

- - - - - - - - - - - -
Global table
TH: should have pink bg
TD: white bg
- - - - - - -
Nested table
Nested TH: transparentNested TD: transparent
-
-

NOTE:The nested caption keep the green background. The nested table keep the black border. This is because those declarations are global so we did not reset them.

diff --git a/includes/Block.php b/includes/Block.php index 843ea54484..40095f18b8 100644 --- a/includes/Block.php +++ b/includes/Block.php @@ -199,6 +199,8 @@ class Block { /** * Return the list of ipblocks fields that should be selected to create * a new block. + * @todo Deprecate this in favor of a method that returns tables and joins + * as well, and use CommentStore::getJoin(). * @return array */ public static function selectFields() { @@ -207,7 +209,6 @@ class Block { 'ipb_address', 'ipb_by', 'ipb_by_text', - 'ipb_reason', 'ipb_timestamp', 'ipb_auto', 'ipb_anon_only', @@ -218,7 +219,7 @@ class Block { 'ipb_block_email', 'ipb_allow_usertalk', 'ipb_parent_block_id', - ]; + ] + CommentStore::newKey( 'ipb_reason' )->getFields(); } /** @@ -411,7 +412,6 @@ class Block { $this->setBlocker( $row->ipb_by_text ); } - $this->mReason = $row->ipb_reason; $this->mTimestamp = wfTimestamp( TS_MW, $row->ipb_timestamp ); $this->mAuto = $row->ipb_auto; $this->mHideName = $row->ipb_deleted; @@ -419,7 +419,11 @@ class Block { $this->mParentBlockId = $row->ipb_parent_block_id; // I wish I didn't have to do this - $this->mExpiry = wfGetDB( DB_REPLICA )->decodeExpiry( $row->ipb_expiry ); + $db = wfGetDB( DB_REPLICA ); + $this->mExpiry = $db->decodeExpiry( $row->ipb_expiry ); + $this->mReason = CommentStore::newKey( 'ipb_reason' ) + // Legacy because $row probably came from self::selectFields() + ->getCommentLegacy( $db, $row )->text; $this->isHardblock( !$row->ipb_anon_only ); $this->isAutoblocking( $row->ipb_enable_autoblock ); @@ -488,8 +492,7 @@ class Block { self::purgeExpired(); } - $row = $this->getDatabaseArray(); - $row['ipb_id'] = $dbw->nextSequenceValue( "ipblocks_ipb_id_seq" ); + $row = $this->getDatabaseArray( $dbw ); $dbw->insert( 'ipblocks', $row, __METHOD__, [ 'IGNORE' ] ); $affected = $dbw->affectedRows(); @@ -558,7 +561,7 @@ class Block { // update corresponding autoblock(s) (T50813) $dbw->update( 'ipblocks', - $this->getAutoblockUpdateArray(), + $this->getAutoblockUpdateArray( $dbw ), [ 'ipb_parent_block_id' => $this->getId() ], __METHOD__ ); @@ -583,14 +586,11 @@ class Block { /** * Get an array suitable for passing to $dbw->insert() or $dbw->update() - * @param IDatabase $db + * @param IDatabase $dbw * @return array */ - protected function getDatabaseArray( $db = null ) { - if ( !$db ) { - $db = wfGetDB( DB_REPLICA ); - } - $expiry = $db->encodeExpiry( $this->mExpiry ); + protected function getDatabaseArray( IDatabase $dbw ) { + $expiry = $dbw->encodeExpiry( $this->mExpiry ); if ( $this->forcedTargetID ) { $uid = $this->forcedTargetID; @@ -603,8 +603,7 @@ class Block { 'ipb_user' => $uid, 'ipb_by' => $this->getBy(), 'ipb_by_text' => $this->getByName(), - 'ipb_reason' => $this->mReason, - 'ipb_timestamp' => $db->timestamp( $this->mTimestamp ), + 'ipb_timestamp' => $dbw->timestamp( $this->mTimestamp ), 'ipb_auto' => $this->mAuto, 'ipb_anon_only' => !$this->isHardblock(), 'ipb_create_account' => $this->prevents( 'createaccount' ), @@ -616,23 +615,23 @@ class Block { 'ipb_block_email' => $this->prevents( 'sendemail' ), 'ipb_allow_usertalk' => !$this->prevents( 'editownusertalk' ), 'ipb_parent_block_id' => $this->mParentBlockId - ]; + ] + CommentStore::newKey( 'ipb_reason' )->insert( $dbw, $this->mReason ); return $a; } /** + * @param IDatabase $dbw * @return array */ - protected function getAutoblockUpdateArray() { + protected function getAutoblockUpdateArray( IDatabase $dbw ) { return [ 'ipb_by' => $this->getBy(), 'ipb_by_text' => $this->getByName(), - 'ipb_reason' => $this->mReason, 'ipb_create_account' => $this->prevents( 'createaccount' ), 'ipb_deleted' => (int)$this->mHideName, // typecast required for SQLite 'ipb_allow_usertalk' => !$this->prevents( 'editownusertalk' ), - ]; + ] + CommentStore::newKey( 'ipb_reason' )->insert( $dbw, $this->mReason ); } /** @@ -1354,7 +1353,7 @@ class Block { self::TYPE_IP ]; - } elseif ( IP::isValidBlock( $target ) ) { + } elseif ( IP::isValidRange( $target ) ) { # Can't create a User from an IP range return [ IP::sanitizeRange( $target ), self::TYPE_RANGE ]; } @@ -1513,7 +1512,7 @@ class Block { * * @param string $cookieValue The string in which to find the ID. * - * @return integer|null The block ID, or null if the HMAC is present and invalid. + * @return int|null The block ID, or null if the HMAC is present and invalid. */ public static function getIdFromCookieValue( $cookieValue ) { // Extract the ID prefix from the cookie value (may be the whole value, if no bang found). diff --git a/includes/CategoriesRdf.php b/includes/CategoriesRdf.php new file mode 100644 index 0000000000..e19dc2aadb --- /dev/null +++ b/includes/CategoriesRdf.php @@ -0,0 +1,95 @@ +rdfWriter = $writer; + } + + /** + * Setup prefixes relevant for the dump + */ + public function setupPrefixes() { + $this->rdfWriter->prefix( self::ONTOLOGY_PREFIX, self::ONTOLOGY_URL ); + $this->rdfWriter->prefix( 'rdfs', 'http://www.w3.org/2000/01/rdf-schema#' ); + $this->rdfWriter->prefix( 'owl', 'http://www.w3.org/2002/07/owl#' ); + $this->rdfWriter->prefix( 'schema', 'http://schema.org/' ); + $this->rdfWriter->prefix( 'cc', 'http://creativecommons.org/ns#' ); + } + + /** + * Write RDF data for link between categories. + * @param string $fromName Child category name + * @param string $toName Parent category name + */ + public function writeCategoryLinkData( $fromName, $toName ) { + $titleFrom = Title::makeTitle( NS_CATEGORY, $fromName ); + $titleTo = Title::makeTitle( NS_CATEGORY, $toName ); + $this->rdfWriter->about( $this->titleToUrl( $titleFrom ) ) + ->say( self::ONTOLOGY_PREFIX, 'isInCategory' ) + ->is( $this->titleToUrl( $titleTo ) ); + } + + /** + * Write out the data for single category. + * @param string $categoryName Category name + */ + public function writeCategoryData( $categoryName ) { + $title = Title::makeTitle( NS_CATEGORY, $categoryName ); + $this->rdfWriter->about( $this->titleToUrl( $title ) ) + ->say( 'a' ) + ->is( self::ONTOLOGY_PREFIX, 'Category' ); + $titletext = $title->getText(); + $this->rdfWriter->say( 'rdfs', 'label' )->value( $titletext ); + } + + /** + * Convert Title to link to target page. + * @param Title $title + * @return string + */ + private function titleToUrl( Title $title ) { + return $title->getFullURL( '', false, PROTO_CANONICAL ); + } +} diff --git a/includes/Category.php b/includes/Category.php index c22ea64abf..629962d2a9 100644 --- a/includes/Category.php +++ b/includes/Category.php @@ -48,7 +48,7 @@ class Category { /** * Set up all member variables using a database query. - * @param integer $mode + * @param int $mode * @throws MWException * @return bool True on success, false on failure. */ diff --git a/includes/CommentStore.php b/includes/CommentStore.php new file mode 100644 index 0000000000..2ed21d1995 --- /dev/null +++ b/includes/CommentStore.php @@ -0,0 +1,585 @@ + [ + 'table' => 'revision_comment_temp', + 'pk' => 'revcomment_rev', + 'field' => 'revcomment_comment_id', + 'joinPK' => 'rev_id', + ], + 'img_description' => [ + 'table' => 'image_comment_temp', + 'pk' => 'imgcomment_name', + 'field' => 'imgcomment_description_id', + 'joinPK' => 'img_name', + ], + ]; + + /** + * Fields that formerly used $tempTables + * @var array Key is '$key', value is the MediaWiki version in which it was + * removed from $tempTables. + */ + protected static $formerTempTables = []; + + /** @var string */ + protected $key; + + /** @var int One of the MIGRATION_* constants */ + protected $stage; + + /** @var array|null Cache for `self::getJoin()` */ + protected $joinCache = null; + + /** @var Language Language to use for comment truncation */ + protected $lang; + + /** + * @param string $key A key such as "rev_comment" identifying the comment + * field being fetched. + * @param Language $lang Language to use for comment truncation. Defaults + * to $wgContLang. + */ + public function __construct( $key, Language $lang = null ) { + global $wgCommentTableSchemaMigrationStage, $wgContLang; + + $this->key = $key; + $this->stage = $wgCommentTableSchemaMigrationStage; + $this->lang = $lang ?: $wgContLang; + } + + /** + * Static constructor for easier chaining + * @param string $key A key such as "rev_comment" identifying the comment + * field being fetched. + * @return CommentStore + */ + public static function newKey( $key ) { + return new CommentStore( $key ); + } + + /** + * Get SELECT fields for the comment key + * + * Each resulting row should be passed to `self::getCommentLegacy()` to get the + * actual comment. + * + * @note Use of this method may require a subsequent database query to + * actually fetch the comment. If possible, use `self::getJoin()` instead. + * @return string[] to include in the `$vars` to `IDatabase->select()`. All + * fields are aliased, so `+` is safe to use. + */ + public function getFields() { + $fields = []; + if ( $this->stage === MIGRATION_OLD ) { + $fields["{$this->key}_text"] = $this->key; + $fields["{$this->key}_data"] = 'NULL'; + $fields["{$this->key}_cid"] = 'NULL'; + } else { + if ( $this->stage < MIGRATION_NEW ) { + $fields["{$this->key}_old"] = $this->key; + } + if ( isset( self::$tempTables[$this->key] ) ) { + $fields["{$this->key}_pk"] = self::$tempTables[$this->key]['joinPK']; + } else { + $fields["{$this->key}_id"] = "{$this->key}_id"; + } + } + return $fields; + } + + /** + * Get SELECT fields and joins for the comment key + * + * Each resulting row should be passed to `self::getComment()` to get the + * actual comment. + * + * @return array With three keys: + * - tables: (string[]) to include in the `$table` to `IDatabase->select()` + * - fields: (string[]) to include in the `$vars` to `IDatabase->select()` + * - joins: (array) to include in the `$join_conds` to `IDatabase->select()` + * All tables, fields, and joins are aliased, so `+` is safe to use. + */ + public function getJoin() { + if ( $this->joinCache === null ) { + $tables = []; + $fields = []; + $joins = []; + + if ( $this->stage === MIGRATION_OLD ) { + $fields["{$this->key}_text"] = $this->key; + $fields["{$this->key}_data"] = 'NULL'; + $fields["{$this->key}_cid"] = 'NULL'; + } else { + $join = $this->stage === MIGRATION_NEW ? 'JOIN' : 'LEFT JOIN'; + + if ( isset( self::$tempTables[$this->key] ) ) { + $t = self::$tempTables[$this->key]; + $alias = "temp_$this->key"; + $tables[$alias] = $t['table']; + $joins[$alias] = [ $join, "{$alias}.{$t['pk']} = {$t['joinPK']}" ]; + $joinField = "{$alias}.{$t['field']}"; + } else { + $joinField = "{$this->key}_id"; + } + + $alias = "comment_$this->key"; + $tables[$alias] = 'comment'; + $joins[$alias] = [ $join, "{$alias}.comment_id = {$joinField}" ]; + + if ( $this->stage === MIGRATION_NEW ) { + $fields["{$this->key}_text"] = "{$alias}.comment_text"; + } else { + $fields["{$this->key}_text"] = "COALESCE( {$alias}.comment_text, $this->key )"; + } + $fields["{$this->key}_data"] = "{$alias}.comment_data"; + $fields["{$this->key}_cid"] = "{$alias}.comment_id"; + } + + $this->joinCache = [ + 'tables' => $tables, + 'fields' => $fields, + 'joins' => $joins, + ]; + } + + return $this->joinCache; + } + + /** + * Extract the comment from a row + * + * Shared implementation for getComment() and getCommentLegacy() + * + * @param IDatabase|null $db Database handle for getCommentLegacy(), or null for getComment() + * @param object|array $row + * @param bool $fallback + * @return CommentStoreComment + */ + private function getCommentInternal( IDatabase $db = null, $row, $fallback = false ) { + $key = $this->key; + $row = (array)$row; + if ( array_key_exists( "{$key}_text", $row ) && array_key_exists( "{$key}_data", $row ) ) { + $cid = isset( $row["{$key}_cid"] ) ? $row["{$key}_cid"] : null; + $text = $row["{$key}_text"]; + $data = $row["{$key}_data"]; + } elseif ( $this->stage === MIGRATION_OLD ) { + $cid = null; + if ( $fallback && isset( $row[$key] ) ) { + wfLogWarning( "Using deprecated fallback handling for comment $key" ); + $text = $row[$key]; + } else { + wfLogWarning( "Missing {$key}_text and {$key}_data fields in row with MIGRATION_OLD" ); + $text = ''; + } + $data = null; + } else { + if ( isset( self::$tempTables[$key] ) ) { + if ( array_key_exists( "{$key}_pk", $row ) ) { + if ( !$db ) { + throw new InvalidArgumentException( + "\$row does not contain fields needed for comment $key and getComment(), but " + . "does have fields for getCommentLegacy()" + ); + } + $t = self::$tempTables[$key]; + $id = $row["{$key}_pk"]; + $row2 = $db->selectRow( + [ $t['table'], 'comment' ], + [ 'comment_id', 'comment_text', 'comment_data' ], + [ $t['pk'] => $id ], + __METHOD__, + [], + [ 'comment' => [ 'JOIN', [ "comment_id = {$t['field']}" ] ] ] + ); + } elseif ( $fallback && isset( $row[$key] ) ) { + wfLogWarning( "Using deprecated fallback handling for comment $key" ); + $row2 = (object)[ 'comment_text' => $row[$key], 'comment_data' => null ]; + } else { + throw new InvalidArgumentException( "\$row does not contain fields needed for comment $key" ); + } + } else { + if ( array_key_exists( "{$key}_id", $row ) ) { + if ( !$db ) { + throw new InvalidArgumentException( + "\$row does not contain fields needed for comment $key and getComment(), but " + . "does have fields for getCommentLegacy()" + ); + } + $id = $row["{$key}_id"]; + $row2 = $db->selectRow( + 'comment', + [ 'comment_id', 'comment_text', 'comment_data' ], + [ 'comment_id' => $id ], + __METHOD__ + ); + } elseif ( $fallback && isset( $row[$key] ) ) { + wfLogWarning( "Using deprecated fallback handling for comment $key" ); + $row2 = (object)[ 'comment_text' => $row[$key], 'comment_data' => null ]; + } else { + throw new InvalidArgumentException( "\$row does not contain fields needed for comment $key" ); + } + } + + if ( $row2 ) { + $cid = $row2->comment_id; + $text = $row2->comment_text; + $data = $row2->comment_data; + } elseif ( $this->stage < MIGRATION_NEW && array_key_exists( "{$key}_old", $row ) ) { + $cid = null; + $text = $row["{$key}_old"]; + $data = null; + } else { + // @codeCoverageIgnoreStart + wfLogWarning( "Missing comment row for $key, id=$id" ); + $cid = null; + $text = ''; + $data = null; + // @codeCoverageIgnoreEnd + } + } + + $msg = null; + if ( $data !== null ) { + $data = FormatJson::decode( $data ); + if ( !is_object( $data ) ) { + // @codeCoverageIgnoreStart + wfLogWarning( "Invalid JSON object in comment: $data" ); + $data = null; + // @codeCoverageIgnoreEnd + } else { + $data = (array)$data; + if ( isset( $data['_message'] ) ) { + $msg = self::decodeMessage( $data['_message'] ) + ->setInterfaceMessageFlag( true ); + } + if ( !empty( $data['_null'] ) ) { + $data = null; + } else { + foreach ( $data as $k => $v ) { + if ( substr( $k, 0, 1 ) === '_' ) { + unset( $data[$k] ); + } + } + } + } + } + + return new CommentStoreComment( $cid, $text, $msg, $data ); + } + + /** + * Extract the comment from a row + * + * Use `self::getJoin()` to ensure the row contains the needed data. + * + * If you need to fake a comment in a row for some reason, set fields + * `{$key}_text` (string) and `{$key}_data` (JSON string or null). + * + * @param object|array $row Result row. + * @param bool $fallback If true, fall back as well as possible instead of throwing an exception. + * @return CommentStoreComment + */ + public function getComment( $row, $fallback = false ) { + return $this->getCommentInternal( null, $row, $fallback ); + } + + /** + * Extract the comment from a row, with legacy lookups. + * + * If `$row` might have been generated using `self::getFields()` rather + * than `self::getJoin()`, use this. Prefer `self::getComment()` if you + * know callers used `self::getJoin()` for the row fetch. + * + * If you need to fake a comment in a row for some reason, set fields + * `{$key}_text` (string) and `{$key}_data` (JSON string or null). + * + * @param IDatabase $db Database handle to use for lookup + * @param object|array $row Result row. + * @param bool $fallback If true, fall back as well as possible instead of throwing an exception. + * @return CommentStoreComment + */ + public function getCommentLegacy( IDatabase $db, $row, $fallback = false ) { + return $this->getCommentInternal( $db, $row, $fallback ); + } + + /** + * Create a new CommentStoreComment, inserting it into the database if necessary + * + * If a comment is going to be passed to `self::insert()` or the like + * multiple times, it will be more efficient to pass a CommentStoreComment + * once rather than making `self::insert()` do it every time through. + * + * @note When passing a CommentStoreComment, this may set `$comment->id` if + * it's not already set. If `$comment->id` is already set, it will not be + * verified that the specified comment actually exists or that it + * corresponds to the comment text, message, and/or data in the + * CommentStoreComment. + * @param IDatabase $dbw Database handle to insert on. Unused if `$comment` + * is a CommentStoreComment and `$comment->id` is set. + * @param string|Message|CommentStoreComment $comment Comment text or Message object, or + * a CommentStoreComment. + * @param array|null $data Structured data to store. Keys beginning with '_' are reserved. + * Ignored if $comment is a CommentStoreComment. + * @return CommentStoreComment + */ + public function createComment( IDatabase $dbw, $comment, array $data = null ) { + global $wgContLang; + + if ( !$comment instanceof CommentStoreComment ) { + if ( $data !== null ) { + foreach ( $data as $k => $v ) { + if ( substr( $k, 0, 1 ) === '_' ) { + throw new InvalidArgumentException( 'Keys in $data beginning with "_" are reserved' ); + } + } + } + if ( $comment instanceof Message ) { + $message = clone $comment; + $text = $message->inLanguage( $wgContLang ) // Avoid $wgForceUIMsgAsContentMsg + ->setInterfaceMessageFlag( true ) + ->text(); + $comment = new CommentStoreComment( null, $text, $message, $data ); + } else { + $comment = new CommentStoreComment( null, $comment, null, $data ); + } + } + + # Truncate comment in a Unicode-sensitive manner + $comment->text = $this->lang->truncate( $comment->text, self::MAX_COMMENT_LENGTH ); + + if ( $this->stage > MIGRATION_OLD && !$comment->id ) { + $dbData = $comment->data; + if ( !$comment->message instanceof RawMessage ) { + if ( $dbData === null ) { + $dbData = [ '_null' => true ]; + } + $dbData['_message'] = self::encodeMessage( $comment->message ); + } + if ( $dbData !== null ) { + $dbData = FormatJson::encode( (object)$dbData, false, FormatJson::ALL_OK ); + $len = strlen( $dbData ); + if ( $len > self::MAX_DATA_LENGTH ) { + $max = self::MAX_DATA_LENGTH; + throw new OverflowException( "Comment data is too long ($len bytes, maximum is $max)" ); + } + } + + $hash = self::hash( $comment->text, $dbData ); + $comment->id = $dbw->selectField( + 'comment', + 'comment_id', + [ + 'comment_hash' => $hash, + 'comment_text' => $comment->text, + 'comment_data' => $dbData, + ], + __METHOD__ + ); + if ( !$comment->id ) { + $dbw->insert( + 'comment', + [ + 'comment_hash' => $hash, + 'comment_text' => $comment->text, + 'comment_data' => $dbData, + ], + __METHOD__ + ); + $comment->id = $dbw->insertId(); + } + } + + return $comment; + } + + /** + * Implementation for `self::insert()` and `self::insertWithTempTable()` + * @param IDatabase $dbw + * @param string|Message|CommentStoreComment $comment + * @param array|null $data + * @return array [ array $fields, callable $callback ] + */ + private function insertInternal( IDatabase $dbw, $comment, $data ) { + $fields = []; + $callback = null; + + $comment = $this->createComment( $dbw, $comment, $data ); + + if ( $this->stage <= MIGRATION_WRITE_BOTH ) { + $fields[$this->key] = $this->lang->truncate( $comment->text, 255 ); + } + + if ( $this->stage >= MIGRATION_WRITE_BOTH ) { + if ( isset( self::$tempTables[$this->key] ) ) { + $t = self::$tempTables[$this->key]; + $func = __METHOD__; + $commentId = $comment->id; + $callback = function ( $id ) use ( $dbw, $commentId, $t, $func ) { + $dbw->insert( + $t['table'], + [ + $t['pk'] => $id, + $t['field'] => $commentId, + ], + $func + ); + }; + } else { + $fields["{$this->key}_id"] = $comment->id; + } + } + + return [ $fields, $callback ]; + } + + /** + * Insert a comment in preparation for a row that references it + * + * @note It's recommended to include both the call to this method and the + * row insert in the same transaction. + * @param IDatabase $dbw Database handle to insert on + * @param string|Message|CommentStoreComment $comment As for `self::createComment()` + * @param array|null $data As for `self::createComment()` + * @return array Fields for the insert or update + */ + public function insert( IDatabase $dbw, $comment, $data = null ) { + if ( isset( self::$tempTables[$this->key] ) ) { + throw new InvalidArgumentException( "Must use insertWithTempTable() for $this->key" ); + } + + list( $fields ) = $this->insertInternal( $dbw, $comment, $data ); + return $fields; + } + + /** + * Insert a comment in a temporary table in preparation for a row that references it + * + * This is currently needed for "rev_comment" and "img_description". In the + * future that requirement will be removed. + * + * @note It's recommended to include both the call to this method and the + * row insert in the same transaction. + * @param IDatabase $dbw Database handle to insert on + * @param string|Message|CommentStoreComment $comment As for `self::createComment()` + * @param array|null $data As for `self::createComment()` + * @return array Two values: + * - array Fields for the insert or update + * - callable Function to call when the primary key of the row being + * inserted/updated is known. Pass it that primary key. + */ + public function insertWithTempTable( IDatabase $dbw, $comment, $data = null ) { + if ( isset( self::$formerTempTables[$this->key] ) ) { + wfDeprecated( __METHOD__ . " for $this->key", self::$formerTempTables[$this->key] ); + } elseif ( !isset( self::$tempTables[$this->key] ) ) { + throw new InvalidArgumentException( "Must use insert() for $this->key" ); + } + + list( $fields, $callback ) = $this->insertInternal( $dbw, $comment, $data ); + if ( !$callback ) { + $callback = function () { + // Do nothing. + }; + } + return [ $fields, $callback ]; + } + + /** + * Encode a Message as a PHP data structure + * @param Message $msg + * @return array + */ + protected static function encodeMessage( Message $msg ) { + $key = count( $msg->getKeysToTry() ) > 1 ? $msg->getKeysToTry() : $msg->getKey(); + $params = $msg->getParams(); + foreach ( $params as &$param ) { + if ( $param instanceof Message ) { + $param = [ + 'message' => self::encodeMessage( $param ) + ]; + } + } + array_unshift( $params, $key ); + return $params; + } + + /** + * Decode a message that was encoded by self::encodeMessage() + * @param array $data + * @return Message + */ + protected static function decodeMessage( $data ) { + $key = array_shift( $data ); + foreach ( $data as &$param ) { + if ( is_object( $param ) ) { + $param = (array)$param; + } + if ( is_array( $param ) && count( $param ) === 1 && isset( $param['message'] ) ) { + $param = self::decodeMessage( $param['message'] ); + } + } + return new Message( $key, $data ); + } + + /** + * Hashing function for comment storage + * @param string $text Comment text + * @param string|null $data Comment data + * @return int 32-bit signed integer + */ + public static function hash( $text, $data ) { + $hash = crc32( $text ) ^ crc32( (string)$data ); + + // 64-bit PHP returns an unsigned CRC, change it to signed for + // insertion into the database. + if ( $hash >= 0x80000000 ) { + $hash |= -1 << 32; + } + + return $hash; + } + +} diff --git a/includes/CommentStoreComment.php b/includes/CommentStoreComment.php new file mode 100644 index 0000000000..afc1374223 --- /dev/null +++ b/includes/CommentStoreComment.php @@ -0,0 +1,57 @@ +id = $id; + $this->text = $text; + $this->message = $message ?: new RawMessage( '$1', [ $text ] ); + $this->data = $data; + } +} diff --git a/includes/DefaultSettings.php b/includes/DefaultSettings.php index 4e162f6ef5..cf8e089bee 100644 --- a/includes/DefaultSettings.php +++ b/includes/DefaultSettings.php @@ -755,6 +755,8 @@ $wgCopyUploadProxy = false; * timeout longer than the default $wgHTTPTimeout. False means fallback * to default. * + * @var int|bool + * * @since 1.22 */ $wgCopyUploadTimeout = false; @@ -2053,8 +2055,8 @@ $wgDBmysql5 = false; $wgDBOracleDRCP = false; /** - * Other wikis on this site, can be administered from a single developer - * account. + * Other wikis on this site, can be administered from a single developer account. + * * Array numeric key => database name */ $wgLocalDatabases = []; @@ -3235,14 +3237,6 @@ $wgHTMLFormAllowTableFormat = true; */ $wgUseMediaWikiUIEverywhere = false; -/** - * Temporary variable that determines whether the EditPage class should use OOjs UI or not. - * This will be removed later and OOjs UI will become the only option. - * - * @since 1.29 - */ -$wgOOUIEditPage = true; - /** * Whether to label the store-to-database-and-show-to-others button in the editor * as "Save page"/"Save changes" if false (the default) or, if true, instead as @@ -4901,7 +4895,7 @@ $wgDefaultUserOptions = [ 'date' => 'default', 'diffonly' => 0, 'disablemail' => 0, - 'editfont' => 'default', + 'editfont' => 'monospace', 'editondblclick' => 0, 'editsectiononrightclick' => 0, 'enotifminoredits' => 0, @@ -6846,6 +6840,11 @@ $wgStructuredChangeFiltersEnableExperimentalViews = false; */ $wgStructuredChangeFiltersEnableLiveUpdate = false; +/** + * Whether to enable RCFilters app on Special:Watchlist + */ +$wgStructuredChangeFiltersOnWatchlist = false; + /** * Use new page patrolling to check new pages on Special:Newpages */ @@ -8274,6 +8273,7 @@ $wgShellLocale = 'C.UTF-8'; /** * Timeout for HTTP requests done internally, in seconds. + * @var int */ $wgHTTPTimeout = 25; @@ -8303,8 +8303,6 @@ $wgHTTPProxy = false; * subdomain thereof, then no proxy will be used. * Command-line scripts are not affected by this setting and will always use * the proxy if it is configured. - * - ChronologyProtector: Decide to shutdown LBFactory asynchronously instead - * synchronously if the current response redirects to a local virtual host. * * @since 1.25 */ @@ -8729,6 +8727,18 @@ $wgCSPFalsePositiveUrls = [ 'https://ad.lkqd.net/vpaid/vpaid.js' => true, ]; +/** + * Shortest CIDR limits that can be checked in any individual range check + * at Special:Contributions. + * + * @var array + * @since 1.30 + */ +$wgRangeContributionsCIDRLimit = [ + 'IPv4' => 16, + 'IPv6' => 32, +]; + /** * The following variables define 3 user experience levels: * @@ -8765,6 +8775,13 @@ $wgExperiencedUserMemberSince = 30; # days */ $wgInterwikiPrefixDisplayTypes = []; +/** + * Comment table schema migration stage. + * @since 1.30 + * @var int One of the MIGRATION_* constants + */ +$wgCommentTableSchemaMigrationStage = MIGRATION_OLD; + /** * For really cool vim folding this needs to be at the end: * vim: foldmarker=@{,@} foldmethod=marker diff --git a/includes/EditPage.php b/includes/EditPage.php index 49341c5e7e..06a5cc3b62 100644 --- a/includes/EditPage.php +++ b/includes/EditPage.php @@ -336,7 +336,7 @@ class EditPage { /** @var string */ public $edittime = ''; - /** @var integer */ + /** @var int */ private $editRevId = null; /** @var string */ @@ -413,11 +413,6 @@ class EditPage { */ private $isOldRev = false; - /** - * @var bool Whether OOUI should be enabled here - */ - private $oouiEnabled = false; - /** * @param Article $article */ @@ -431,8 +426,6 @@ class EditPage { $handler = ContentHandler::getForModelID( $this->contentModel ); $this->contentFormat = $handler->getDefaultFormat(); - - $this->oouiEnabled = $this->context->getConfig()->get( 'OOUIEditPage' ); } /** @@ -485,10 +478,11 @@ class EditPage { /** * Check if the edit page is using OOUI controls - * @return bool + * @return bool Always true + * @deprecated since 1.30 */ public function isOouiEnabled() { - return $this->oouiEnabled; + return true; } /** @@ -517,6 +511,7 @@ class EditPage { * @deprecated since 1.29, call edit directly */ public function submit() { + wfDeprecated( __METHOD__, '1.29' ); $this->edit(); } @@ -532,7 +527,7 @@ class EditPage { * the newly-edited page. */ public function edit() { - global $wgOut, $wgRequest, $wgUser; + global $wgRequest, $wgUser; // Allow extensions to modify/prevent this form or submission if ( !Hooks::run( 'AlternateEdit', [ $this ] ) ) { return; @@ -542,7 +537,7 @@ class EditPage { // If they used redlink=1 and the page exists, redirect to the main article if ( $wgRequest->getBool( 'redlink' ) && $this->mTitle->exists() ) { - $wgOut->redirect( $this->mTitle->getFullURL() ); + $this->context->getOutput()->redirect( $this->mTitle->getFullURL() ); return; } @@ -707,13 +702,14 @@ class EditPage { * @throws PermissionsError */ protected function displayPermissionsError( array $permErrors ) { - global $wgRequest, $wgOut; + global $wgRequest; + $out = $this->context->getOutput(); if ( $wgRequest->getBool( 'redlink' ) ) { // The edit page was reached via a red link. // Redirect to the article page and let them click the edit tab if // they really want a permission error. - $wgOut->redirect( $this->mTitle->getFullURL() ); + $out->redirect( $this->mTitle->getFullURL() ); return; } @@ -728,7 +724,7 @@ class EditPage { $this->displayViewSourcePage( $content, - $wgOut->formatPermissionsErrorMessage( $permErrors, 'edit' ) + $out->formatPermissionsErrorMessage( $permErrors, 'edit' ) ); } @@ -738,29 +734,28 @@ class EditPage { * @param string $errorMessage additional wikitext error message to display */ protected function displayViewSourcePage( Content $content, $errorMessage = '' ) { - global $wgOut; - - Hooks::run( 'EditPage::showReadOnlyForm:initial', [ $this, &$wgOut ] ); + $out = $this->context->getOutput(); + Hooks::run( 'EditPage::showReadOnlyForm:initial', [ $this, &$out ] ); - $wgOut->setRobotPolicy( 'noindex,nofollow' ); - $wgOut->setPageTitle( $this->context->msg( + $out->setRobotPolicy( 'noindex,nofollow' ); + $out->setPageTitle( $this->context->msg( 'viewsource-title', $this->getContextTitle()->getPrefixedText() ) ); - $wgOut->addBacklinkSubtitle( $this->getContextTitle() ); - $wgOut->addHTML( $this->editFormPageTop ); - $wgOut->addHTML( $this->editFormTextTop ); + $out->addBacklinkSubtitle( $this->getContextTitle() ); + $out->addHTML( $this->editFormPageTop ); + $out->addHTML( $this->editFormTextTop ); if ( $errorMessage !== '' ) { - $wgOut->addWikiText( $errorMessage ); - $wgOut->addHTML( "
\n" ); + $out->addWikiText( $errorMessage ); + $out->addHTML( "
\n" ); } # If the user made changes, preserve them when showing the markup # (This happens when a user is blocked during edit, for instance) if ( !$this->firsttime ) { $text = $this->textbox1; - $wgOut->addWikiMsg( 'viewyourtext' ); + $out->addWikiMsg( 'viewyourtext' ); } else { try { $text = $this->toEditText( $content ); @@ -769,20 +764,20 @@ class EditPage { # (e.g. for an old revision with a different model) $text = $content->serialize(); } - $wgOut->addWikiMsg( 'viewsourcetext' ); + $out->addWikiMsg( 'viewsourcetext' ); } - $wgOut->addHTML( $this->editFormTextBeforeContent ); + $out->addHTML( $this->editFormTextBeforeContent ); $this->showTextbox( $text, 'wpTextbox1', [ 'readonly' ] ); - $wgOut->addHTML( $this->editFormTextAfterContent ); + $out->addHTML( $this->editFormTextAfterContent ); - $wgOut->addHTML( $this->makeTemplatesOnThisPageList( $this->getTemplates() ) ); + $out->addHTML( $this->makeTemplatesOnThisPageList( $this->getTemplates() ) ); - $wgOut->addModules( 'mediawiki.action.edit.collapsibleFooter' ); + $out->addModules( 'mediawiki.action.edit.collapsibleFooter' ); - $wgOut->addHTML( $this->editFormTextBottom ); + $out->addHTML( $this->editFormTextBottom ); if ( $this->mTitle->exists() ) { - $wgOut->returnToMain( null, $this->mTitle ); + $out->returnToMain( null, $this->mTitle ); } } @@ -856,10 +851,7 @@ class EditPage { * @throws ErrorPageError */ public function importFormData( &$request ) { - global $wgContLang, $wgUser; - - # Allow users to change the mode for testing - $this->oouiEnabled = $request->getFuzzyBool( 'ooui', $this->oouiEnabled ); + global $wgUser; # Section edit can come from either the form or a link $this->section = $request->getVal( 'wpSection', $request->getVal( 'section' ) ); @@ -885,8 +877,7 @@ class EditPage { } } - # Truncate for whole multibyte characters - $this->summary = $wgContLang->truncate( $request->getText( 'wpSummary' ), 255 ); + $this->summary = $request->getText( 'wpSummary' ); # If the summary consists of a heading, e.g. '==Foobar==', extract the title from the # header syntax, e.g. 'Foobar'. This is mainly an issue when we are using wpSummary for @@ -898,7 +889,7 @@ class EditPage { # currently doing double duty as both edit summary and section title. Right now this # is just to allow API edits to work around this limitation, but this should be # incorporated into the actual edit form when EditPage is rewritten (Bugs 18654, 26312). - $this->sectiontitle = $wgContLang->truncate( $request->getText( 'wpSectionTitle' ), 255 ); + $this->sectiontitle = $request->getText( 'wpSectionTitle' ); $this->sectiontitle = preg_replace( '/^\s*=+\s*(.*?)\s*=+\s*$/', '$1', $this->sectiontitle ); $this->edittime = $request->getVal( 'wpEdittime' ); @@ -1132,7 +1123,7 @@ class EditPage { * @since 1.21 */ protected function getContentObject( $def_content = null ) { - global $wgOut, $wgRequest, $wgUser, $wgContLang; + global $wgRequest, $wgUser, $wgContLang; $content = false; @@ -1240,9 +1231,10 @@ class EditPage { $undoMsg = 'norev'; } + $out = $this->context->getOutput(); // Messages: undo-success, undo-failure, undo-norev, undo-nochange $class = ( $undoMsg == 'success' ? '' : 'error ' ) . "mw-undo-{$undoMsg}"; - $this->editFormPageTop .= $wgOut->parse( "
" . + $this->editFormPageTop .= $out->parse( "
" . $this->context->msg( 'undo-' . $undoMsg )->plain() . '
', true, /* interface */true ); } @@ -1469,7 +1461,7 @@ class EditPage { $val = 'restored'; } - $response = RequestContext::getMain()->getRequest()->response(); + $response = $this->context->getRequest()->response(); $response->setCookie( $postEditKey, $val, time() + self::POST_EDIT_COOKIE_DURATION ); } @@ -1515,7 +1507,7 @@ class EditPage { * @return bool False, if output is done, true if rest of the form should be displayed */ private function handleStatus( Status $status, $resultDetails ) { - global $wgUser, $wgOut; + global $wgUser; /** * @todo FIXME: once the interface for internalAttemptSave() is made @@ -1532,9 +1524,11 @@ class EditPage { } } + $out = $this->context->getOutput(); + // "wpExtraQueryRedirect" is a hidden input to modify // after save URL and is not used by actual edit form - $request = RequestContext::getMain()->getRequest(); + $request = $this->context->getRequest(); $extraQueryRedirect = $request->getVal( 'wpExtraQueryRedirect' ); switch ( $status->value ) { @@ -1555,7 +1549,7 @@ class EditPage { case self::AS_CANNOT_USE_CUSTOM_MODEL: case self::AS_PARSE_ERROR: - $wgOut->addWikiText( '
' . "\n" . $status->getWikiText() . '
' ); + $out->addWikiText( '
' . "\n" . $status->getWikiText() . '
' ); return true; case self::AS_SUCCESS_NEW_ARTICLE: @@ -1568,7 +1562,7 @@ class EditPage { } } $anchor = isset( $resultDetails['sectionanchor'] ) ? $resultDetails['sectionanchor'] : ''; - $wgOut->redirect( $this->mTitle->getFullURL( $query ) . $anchor ); + $out->redirect( $this->mTitle->getFullURL( $query ) . $anchor ); return false; case self::AS_SUCCESS_UPDATE: @@ -1596,7 +1590,7 @@ class EditPage { } } - $wgOut->redirect( $this->mTitle->getFullURL( $extraQuery ) . $sectionanchor ); + $out->redirect( $this->mTitle->getFullURL( $extraQuery ) . $sectionanchor ); return false; case self::AS_SPAM_ERROR: @@ -1726,7 +1720,7 @@ class EditPage { * - spam (string): Spam string from content if any spam is detected by * matchSpamRegex. * - sectionanchor (string): Section anchor for a section save. - * - nullEdit (boolean): Set if doEditContent is OK. True if null edit, + * - nullEdit (bool): Set if doEditContent is OK. True if null edit, * false otherwise. * - redirect (bool): Set if doEditContent is OK. True if resulting * revision is a redirect. @@ -2351,29 +2345,31 @@ class EditPage { } public function setHeaders() { - global $wgOut, $wgUser, $wgAjaxEditStash; + global $wgUser, $wgAjaxEditStash; + + $out = $this->context->getOutput(); - $wgOut->addModules( 'mediawiki.action.edit' ); - $wgOut->addModuleStyles( 'mediawiki.action.edit.styles' ); + $out->addModules( 'mediawiki.action.edit' ); + $out->addModuleStyles( 'mediawiki.action.edit.styles' ); if ( $wgUser->getOption( 'showtoolbar' ) ) { // The addition of default buttons is handled by getEditToolbar() which // has its own dependency on this module. The call here ensures the module // is loaded in time (it has position "top") for other modules to register // buttons (e.g. extensions, gadgets, user scripts). - $wgOut->addModules( 'mediawiki.toolbar' ); + $out->addModules( 'mediawiki.toolbar' ); } if ( $wgUser->getOption( 'uselivepreview' ) ) { - $wgOut->addModules( 'mediawiki.action.edit.preview' ); + $out->addModules( 'mediawiki.action.edit.preview' ); } if ( $wgUser->getOption( 'useeditwarning' ) ) { - $wgOut->addModules( 'mediawiki.action.edit.editWarning' ); + $out->addModules( 'mediawiki.action.edit.editWarning' ); } # Enabled article-related sidebar, toplinks, etc. - $wgOut->setArticleRelated( true ); + $out->setArticleRelated( true ); $contextTitle = $this->getContextTitle(); if ( $this->isConflict ) { @@ -2396,10 +2392,10 @@ class EditPage { if ( $displayTitle === false ) { $displayTitle = $contextTitle->getPrefixedText(); } - $wgOut->setPageTitle( $this->context->msg( $msg, $displayTitle ) ); + $out->setPageTitle( $this->context->msg( $msg, $displayTitle ) ); # Transmit the name of the message to JavaScript for live preview # Keep Resources.php/mediawiki.action.edit.preview in sync with the possible keys - $wgOut->addJsConfigVars( [ + $out->addJsConfigVars( [ 'wgEditMessage' => $msg, 'wgAjaxEditStash' => $wgAjaxEditStash, ] ); @@ -2409,16 +2405,17 @@ class EditPage { * Show all applicable editing introductions */ protected function showIntro() { - global $wgOut, $wgUser; + global $wgUser; if ( $this->suppressIntro ) { return; } + $out = $this->context->getOutput(); $namespace = $this->mTitle->getNamespace(); if ( $namespace == NS_MEDIAWIKI ) { # Show a warning if editing an interface message - $wgOut->wrapWikiMsg( "
\n$1\n
", 'editinginterface' ); + $out->wrapWikiMsg( "
\n$1\n
", 'editinginterface' ); # If this is a default message (but not css or js), # show a hint that it is translatable on translatewiki.net if ( !$this->mTitle->hasContentModel( CONTENT_MODEL_CSS ) @@ -2426,7 +2423,7 @@ class EditPage { ) { $defaultMessageText = $this->mTitle->getDefaultMessageText(); if ( $defaultMessageText !== false ) { - $wgOut->wrapWikiMsg( "
\n$1\n
", + $out->wrapWikiMsg( "
\n$1\n
", 'translateinterface' ); } } @@ -2438,11 +2435,11 @@ class EditPage { # there must be a description url to show a hint to shared repo if ( $descUrl ) { if ( !$this->mTitle->exists() ) { - $wgOut->wrapWikiMsg( "
\n$1\n
", [ + $out->wrapWikiMsg( "
\n$1\n
", [ 'sharedupload-desc-create', $file->getRepo()->getDisplayName(), $descUrl ] ); } else { - $wgOut->wrapWikiMsg( "
\n$1\n
", [ + $out->wrapWikiMsg( "
\n$1\n
", [ 'sharedupload-desc-edit', $file->getRepo()->getDisplayName(), $descUrl ] ); } @@ -2458,12 +2455,12 @@ class EditPage { $ip = User::isIP( $username ); $block = Block::newFromTarget( $user, $user ); if ( !( $user && $user->isLoggedIn() ) && !$ip ) { # User does not exist - $wgOut->wrapWikiMsg( "
\n$1\n
", + $out->wrapWikiMsg( "
\n$1\n
", [ 'userpage-userdoesnotexist', wfEscapeWikiText( $username ) ] ); } elseif ( !is_null( $block ) && $block->getType() != Block::TYPE_AUTO ) { # Show log extract if the user is currently blocked LogEventsList::showLogExtract( - $wgOut, + $out, 'block', MWNamespace::getCanonicalName( NS_USER ) . ':' . $block->getTarget(), '', @@ -2484,7 +2481,7 @@ class EditPage { $this->context->msg( 'helppage' )->inContentLanguage()->text() ) ); if ( $wgUser->isLoggedIn() ) { - $wgOut->wrapWikiMsg( + $out->wrapWikiMsg( // Suppress the external link icon, consider the help url an internal one "
\n$1\n
", [ @@ -2493,7 +2490,7 @@ class EditPage { ] ); } else { - $wgOut->wrapWikiMsg( + $out->wrapWikiMsg( // Suppress the external link icon, consider the help url an internal one "
\n$1\n
", [ @@ -2507,7 +2504,7 @@ class EditPage { if ( !$this->mTitle->exists() ) { $dbr = wfGetDB( DB_REPLICA ); - LogEventsList::showLogExtract( $wgOut, [ 'delete', 'move' ], $this->mTitle, + LogEventsList::showLogExtract( $out, [ 'delete', 'move' ], $this->mTitle, '', [ 'lim' => 10, @@ -2528,9 +2525,8 @@ class EditPage { if ( $this->editintro ) { $title = Title::newFromText( $this->editintro ); if ( $title instanceof Title && $title->exists() && $title->userCan( 'read' ) ) { - global $wgOut; // Added using template syntax, to take 's into account. - $wgOut->addWikiTextTitleTidy( + $this->context->getOutput()->addWikiTextTitleTidy( '
{{:' . $title->getFullText() . '}}
', $this->mTitle ); @@ -2602,7 +2598,7 @@ class EditPage { } /** - * Send the edit form and related headers to $wgOut + * Send the edit form and related headers to OutputPage * @param callable|null $formCallback That takes an OutputPage parameter; will be called * during form output near the top, for captchas and the like. * @@ -2610,7 +2606,7 @@ class EditPage { * use the EditPage::showEditForm:fields hook instead. */ public function showEditForm( $formCallback = null ) { - global $wgOut, $wgUser; + global $wgUser; # need to parse the preview early so that we know which templates are used, # otherwise users with "show preview after edit box" will get a blank list @@ -2621,9 +2617,11 @@ class EditPage { $previewOutput = $this->getPreviewText(); } + $out = $this->context->getOutput(); + // Avoid PHP 7.1 warning of passing $this by reference $editPage = $this; - Hooks::run( 'EditPage::showEditForm:initial', [ &$editPage, &$wgOut ] ); + Hooks::run( 'EditPage::showEditForm:initial', [ &$editPage, &$out ] ); $this->setHeaders(); @@ -2636,19 +2634,19 @@ class EditPage { // We use $this->section to much before this and getVal('wgSection') directly in other places // at this point we can't reset $this->section to '' to fallback to non-section editing. // Someone is welcome to try refactoring though - $wgOut->showErrorPage( 'sectioneditnotsupported-title', 'sectioneditnotsupported-text' ); + $out->showErrorPage( 'sectioneditnotsupported-title', 'sectioneditnotsupported-text' ); return; } $this->showHeader(); - $wgOut->addHTML( $this->editFormPageTop ); + $out->addHTML( $this->editFormPageTop ); if ( $wgUser->getOption( 'previewontop' ) ) { $this->displayPreviewArea( $previewOutput, true ); } - $wgOut->addHTML( $this->editFormTextTop ); + $out->addHTML( $this->editFormTextTop ); $showToolbar = true; if ( $this->wasDeletedSinceLastEdit() ) { @@ -2657,17 +2655,17 @@ class EditPage { // Add an confirmation checkbox and explanation. $showToolbar = false; } else { - $wgOut->wrapWikiMsg( "
\n$1\n
", + $out->wrapWikiMsg( "
\n$1\n
", 'deletedwhileediting' ); } } // @todo add EditForm plugin interface and use it here! // search for textarea1 and textarea2, and allow EditForm to override all uses. - $wgOut->addHTML( Html::openElement( + $out->addHTML( Html::openElement( 'form', [ - 'class' => $this->oouiEnabled ? 'mw-editform-ooui' : 'mw-editform-legacy', + 'class' => 'mw-editform', 'id' => self::EDITFORM_ID, 'name' => self::EDITFORM_ID, 'method' => 'post', @@ -2678,11 +2676,11 @@ class EditPage { if ( is_callable( $formCallback ) ) { wfWarn( 'The $formCallback parameter to ' . __METHOD__ . 'is deprecated' ); - call_user_func_array( $formCallback, [ &$wgOut ] ); + call_user_func_array( $formCallback, [ &$out ] ); } // Add an empty field to trip up spambots - $wgOut->addHTML( + $out->addHTML( Xml::openElement( 'div', [ 'id' => 'antispam-container', 'style' => 'display: none;' ] ) . Html::rawElement( 'label', @@ -2703,21 +2701,21 @@ class EditPage { // Avoid PHP 7.1 warning of passing $this by reference $editPage = $this; - Hooks::run( 'EditPage::showEditForm:fields', [ &$editPage, &$wgOut ] ); + Hooks::run( 'EditPage::showEditForm:fields', [ &$editPage, &$out ] ); // Put these up at the top to ensure they aren't lost on early form submission $this->showFormBeforeText(); if ( $this->wasDeletedSinceLastEdit() && 'save' == $this->formtype ) { $username = $this->lastDelete->user_name; - $comment = $this->lastDelete->log_comment; + $comment = CommentStore::newKey( 'log_comment' )->getComment( $this->lastDelete )->text; // It is better to not parse the comment at all than to have templates expanded in the middle // TODO: can the checkLabel be moved outside of the div so that wrapWikiMsg could be used? $key = $comment === '' ? 'confirmrecreate-noreason' : 'confirmrecreate'; - $wgOut->addHTML( + $out->addHTML( '
' . $this->context->msg( $key, $username, "$comment" )->parse() . Xml::checkLabel( $this->context->msg( 'recreate' )->text(), 'wpRecreate', 'wpRecreate', false, @@ -2729,7 +2727,7 @@ class EditPage { # When the summary is hidden, also hide them on preview/show changes if ( $this->nosummary ) { - $wgOut->addHTML( Html::hidden( 'nosummary', true ) ); + $out->addHTML( Html::hidden( 'nosummary', true ) ); } # If a blank edit summary was previously provided, and the appropriate @@ -2740,15 +2738,15 @@ class EditPage { # For a bit more sophisticated detection of blank summaries, hash the # automatic one and pass that in the hidden field wpAutoSummary. if ( $this->missingSummary || ( $this->section == 'new' && $this->nosummary ) ) { - $wgOut->addHTML( Html::hidden( 'wpIgnoreBlankSummary', true ) ); + $out->addHTML( Html::hidden( 'wpIgnoreBlankSummary', true ) ); } if ( $this->undidRev ) { - $wgOut->addHTML( Html::hidden( 'wpUndidRevision', $this->undidRev ) ); + $out->addHTML( Html::hidden( 'wpUndidRevision', $this->undidRev ) ); } if ( $this->selfRedirect ) { - $wgOut->addHTML( Html::hidden( 'wpIgnoreSelfRedirect', true ) ); + $out->addHTML( Html::hidden( 'wpIgnoreSelfRedirect', true ) ); } if ( $this->hasPresetSummary ) { @@ -2759,35 +2757,29 @@ class EditPage { } $autosumm = $this->autoSumm ? $this->autoSumm : md5( $this->summary ); - $wgOut->addHTML( Html::hidden( 'wpAutoSummary', $autosumm ) ); - - $wgOut->addHTML( Html::hidden( 'oldid', $this->oldid ) ); - $wgOut->addHTML( Html::hidden( 'parentRevId', $this->getParentRevId() ) ); + $out->addHTML( Html::hidden( 'wpAutoSummary', $autosumm ) ); - $wgOut->addHTML( Html::hidden( 'format', $this->contentFormat ) ); - $wgOut->addHTML( Html::hidden( 'model', $this->contentModel ) ); + $out->addHTML( Html::hidden( 'oldid', $this->oldid ) ); + $out->addHTML( Html::hidden( 'parentRevId', $this->getParentRevId() ) ); - // Preserve &ooui=1 / &ooui=0 from URL parameters after submitting the page for preview - $wgOut->addHTML( Html::hidden( 'ooui', $this->oouiEnabled ? '1' : '0' ) ); + $out->addHTML( Html::hidden( 'format', $this->contentFormat ) ); + $out->addHTML( Html::hidden( 'model', $this->contentModel ) ); - // following functions will need OOUI, enable it only once; here. - if ( $this->oouiEnabled ) { - $wgOut->enableOOUI(); - } + $out->enableOOUI(); if ( $this->section == 'new' ) { $this->showSummaryInput( true, $this->summary ); - $wgOut->addHTML( $this->getSummaryPreview( true, $this->summary ) ); + $out->addHTML( $this->getSummaryPreview( true, $this->summary ) ); } - $wgOut->addHTML( $this->editFormTextBeforeContent ); + $out->addHTML( $this->editFormTextBeforeContent ); if ( !$this->isCssJsSubpage && $showToolbar && $wgUser->getOption( 'showtoolbar' ) ) { - $wgOut->addHTML( self::getEditToolbar( $this->mTitle ) ); + $out->addHTML( self::getEditToolbar( $this->mTitle ) ); } if ( $this->blankArticle ) { - $wgOut->addHTML( Html::hidden( 'wpIgnoreBlankArticle', true ) ); + $out->addHTML( Html::hidden( 'wpIgnoreBlankArticle', true ) ); } if ( $this->isConflict ) { @@ -2805,7 +2797,7 @@ class EditPage { $this->showContentForm(); } - $wgOut->addHTML( $this->editFormTextAfterContent ); + $out->addHTML( $this->editFormTextAfterContent ); $this->showStandardInputs(); @@ -2815,17 +2807,17 @@ class EditPage { $this->showEditTools(); - $wgOut->addHTML( $this->editFormTextAfterTools . "\n" ); + $out->addHTML( $this->editFormTextAfterTools . "\n" ); - $wgOut->addHTML( $this->makeTemplatesOnThisPageList( $this->getTemplates() ) ); + $out->addHTML( $this->makeTemplatesOnThisPageList( $this->getTemplates() ) ); - $wgOut->addHTML( Html::rawElement( 'div', [ 'class' => 'hiddencats' ], + $out->addHTML( Html::rawElement( 'div', [ 'class' => 'hiddencats' ], Linker::formatHiddenCategories( $this->page->getHiddenCategories() ) ) ); - $wgOut->addHTML( Html::rawElement( 'div', [ 'class' => 'limitreport' ], + $out->addHTML( Html::rawElement( 'div', [ 'class' => 'limitreport' ], self::getPreviewLimitReport( $this->mParserOutput ) ) ); - $wgOut->addModules( 'mediawiki.action.edit.collapsibleFooter' ); + $out->addModules( 'mediawiki.action.edit.collapsibleFooter' ); if ( $this->isConflict ) { try { @@ -2838,7 +2830,7 @@ class EditPage { $this->contentFormat, $ex->getMessage() ); - $wgOut->addWikiText( '
' . $msg->text() . '
' ); + $out->addWikiText( '
' . $msg->text() . '
' ); } } @@ -2852,12 +2844,12 @@ class EditPage { } else { $mode = 'text'; } - $wgOut->addHTML( Html::hidden( 'mode', $mode, [ 'id' => 'mw-edit-mode' ] ) ); + $out->addHTML( Html::hidden( 'mode', $mode, [ 'id' => 'mw-edit-mode' ] ) ); // Marker for detecting truncated form data. This must be the last // parameter sent in order to be of use, so do not move me. - $wgOut->addHTML( Html::hidden( 'wpUltimateParam', true ) ); - $wgOut->addHTML( $this->editFormTextBottom . "\n\n" ); + $out->addHTML( Html::hidden( 'wpUltimateParam', true ) ); + $out->addHTML( $this->editFormTextBottom . "\n\n" ); if ( !$wgUser->getOption( 'previewontop' ) ) { $this->displayPreviewArea( $previewOutput, false ); @@ -2906,11 +2898,12 @@ class EditPage { } protected function showHeader() { - global $wgOut, $wgUser; + global $wgUser; global $wgAllowUserCss, $wgAllowUserJs; + $out = $this->context->getOutput(); if ( $this->isConflict ) { - $this->addExplainConflictHeader( $wgOut ); + $this->addExplainConflictHeader( $out ); $this->editRevId = $this->page->getLatest(); } else { if ( $this->section != '' && $this->section != 'new' ) { @@ -2925,43 +2918,43 @@ class EditPage { $buttonLabel = $this->context->msg( $this->getSaveButtonLabel() )->text(); if ( $this->missingComment ) { - $wgOut->wrapWikiMsg( "
\n$1\n
", 'missingcommenttext' ); + $out->wrapWikiMsg( "
\n$1\n
", 'missingcommenttext' ); } if ( $this->missingSummary && $this->section != 'new' ) { - $wgOut->wrapWikiMsg( + $out->wrapWikiMsg( "
\n$1\n
", [ 'missingsummary', $buttonLabel ] ); } if ( $this->missingSummary && $this->section == 'new' ) { - $wgOut->wrapWikiMsg( + $out->wrapWikiMsg( "
\n$1\n
", [ 'missingcommentheader', $buttonLabel ] ); } if ( $this->blankArticle ) { - $wgOut->wrapWikiMsg( + $out->wrapWikiMsg( "
\n$1\n
", [ 'blankarticle', $buttonLabel ] ); } if ( $this->selfRedirect ) { - $wgOut->wrapWikiMsg( + $out->wrapWikiMsg( "
\n$1\n
", [ 'selfredirect', $buttonLabel ] ); } if ( $this->hookError !== '' ) { - $wgOut->addWikiText( $this->hookError ); + $out->addWikiText( $this->hookError ); } if ( !$this->checkUnicodeCompliantBrowser() ) { - $wgOut->addWikiMsg( 'nonunicodebrowser' ); + $out->addWikiMsg( 'nonunicodebrowser' ); } if ( $this->section != 'new' ) { @@ -2970,12 +2963,12 @@ class EditPage { // Let sysop know that this will make private content public if saved if ( !$revision->userCan( Revision::DELETED_TEXT, $wgUser ) ) { - $wgOut->wrapWikiMsg( + $out->wrapWikiMsg( "\n", 'rev-deleted-text-permission' ); } elseif ( $revision->isDeleted( Revision::DELETED_TEXT ) ) { - $wgOut->wrapWikiMsg( + $out->wrapWikiMsg( "\n", 'rev-deleted-text-view' ); @@ -2983,26 +2976,26 @@ class EditPage { if ( !$revision->isCurrent() ) { $this->mArticle->setOldSubtitle( $revision->getId() ); - $wgOut->addWikiMsg( 'editingold' ); + $out->addWikiMsg( 'editingold' ); $this->isOldRev = true; } } elseif ( $this->mTitle->exists() ) { // Something went wrong - $wgOut->wrapWikiMsg( "
\n$1\n
\n", + $out->wrapWikiMsg( "
\n$1\n
\n", [ 'missing-revision', $this->oldid ] ); } } } if ( wfReadOnly() ) { - $wgOut->wrapWikiMsg( + $out->wrapWikiMsg( "
\n$1\n
", [ 'readonlywarning', wfReadOnlyReason() ] ); } elseif ( $wgUser->isAnon() ) { if ( $this->formtype != 'preview' ) { - $wgOut->wrapWikiMsg( + $out->wrapWikiMsg( "
\n$1\n
", [ 'anoneditwarning', // Log-in link @@ -3016,7 +3009,7 @@ class EditPage { ] ); } else { - $wgOut->wrapWikiMsg( "
\n$1
", + $out->wrapWikiMsg( "
\n$1
", 'anonpreviewwarning' ); } @@ -3024,25 +3017,25 @@ class EditPage { if ( $this->isCssJsSubpage ) { # Check the skin exists if ( $this->isWrongCaseCssJsPage ) { - $wgOut->wrapWikiMsg( + $out->wrapWikiMsg( "
\n$1\n
", [ 'userinvalidcssjstitle', $this->mTitle->getSkinFromCssJsSubpage() ] ); } if ( $this->getTitle()->isSubpageOf( $wgUser->getUserPage() ) ) { - $wgOut->wrapWikiMsg( '
$1
', + $out->wrapWikiMsg( '
$1
', $this->isCssSubpage ? 'usercssispublic' : 'userjsispublic' ); if ( $this->formtype !== 'preview' ) { if ( $this->isCssSubpage && $wgAllowUserCss ) { - $wgOut->wrapWikiMsg( + $out->wrapWikiMsg( "
\n$1\n
", [ 'usercssyoucanpreview' ] ); } if ( $this->isJsSubpage && $wgAllowUserJs ) { - $wgOut->wrapWikiMsg( + $out->wrapWikiMsg( "
\n$1\n
", [ 'userjsyoucanpreview' ] ); @@ -3086,16 +3079,17 @@ class EditPage { * inferred by the id given to the input. You can remove them both by * passing [ 'id' => false ] to $userInputAttrs. * + * @deprecated since 1.30 Use getSummaryInputWidget() instead * @param string $summary The value of the summary input * @param string $labelText The html to place inside the label * @param array $inputAttrs Array of attrs to use on the input * @param array $spanLabelAttrs Array of attrs to use on the span inside the label - * * @return array An array in the format [ $label, $input ] */ public function getSummaryInput( $summary = "", $labelText = null, $inputAttrs = null, $spanLabelAttrs = null ) { + wfDeprecated( __METHOD__, '1.30' ); $inputAttrs = $this->getSummaryInputAttributes( $inputAttrs ); $inputAttrs += Linker::tooltipAndAccesskeyAttribs( 'summary' ); @@ -3120,9 +3114,9 @@ class EditPage { } /** - * Same as self::getSummaryInput, but uses OOUI, instead of plain HTML. * Builds a standard summary input with a label. * + * @deprecated since 1.30 Use getSummaryInputWidget() instead * @param string $summary The value of the summary input * @param string $labelText The html to place inside the label * @param array $inputAttrs Array of attrs to use on the input @@ -3130,6 +3124,20 @@ class EditPage { * @return OOUI\FieldLayout OOUI FieldLayout with Label and Input */ function getSummaryInputOOUI( $summary = "", $labelText = null, $inputAttrs = null ) { + wfDeprecated( __METHOD__, '1.30' ); + $this->getSummaryInputWidget( $summary, $labelText, $inputAttrs ); + } + + /** + * Builds a standard summary input with a label. + * + * @param string $summary The value of the summary input + * @param string $labelText The html to place inside the label + * @param array $inputAttrs Array of attrs to use on the input + * + * @return OOUI\FieldLayout OOUI FieldLayout with Label and Input + */ + function getSummaryInputWidget( $summary = "", $labelText = null, $inputAttrs = null ) { $inputAttrs = OOUI\Element::configFromHtmlAttributes( $this->getSummaryInputAttributes( $inputAttrs ) ); @@ -3163,8 +3171,6 @@ class EditPage { * @param string $summary The text of the summary to display */ protected function showSummaryInput( $isSubjectPreview, $summary = "" ) { - global $wgOut; - # Add a class if 'missingsummary' is triggered to allow styling of the summary line $summaryClass = $this->missingSummary ? 'mw-summarymissed' : 'mw-summary'; if ( $isSubjectPreview ) { @@ -3178,20 +3184,11 @@ class EditPage { } $labelText = $this->context->msg( $isSubjectPreview ? 'subject' : 'summary' )->parse(); - if ( $this->oouiEnabled ) { - $wgOut->addHTML( $this->getSummaryInputOOUI( + $this->context->getOutput()->addHTML( $this->getSummaryInputWidget( $summary, $labelText, [ 'class' => $summaryClass ] ) ); - } else { - list( $label, $input ) = $this->getSummaryInput( - $summary, - $labelText, - [ 'class' => $summaryClass ] - ); - $wgOut->addHTML( "{$label} {$input}" ); - } } /** @@ -3224,21 +3221,20 @@ class EditPage { } protected function showFormBeforeText() { - global $wgOut; - - $wgOut->addHTML( Html::hidden( 'wpSection', htmlspecialchars( $this->section ) ) ); - $wgOut->addHTML( Html::hidden( 'wpStarttime', $this->starttime ) ); - $wgOut->addHTML( Html::hidden( 'wpEdittime', $this->edittime ) ); - $wgOut->addHTML( Html::hidden( 'editRevId', $this->editRevId ) ); - $wgOut->addHTML( Html::hidden( 'wpScrolltop', $this->scrolltop ) ); + $out = $this->context->getOutput(); + $out->addHTML( Html::hidden( 'wpSection', htmlspecialchars( $this->section ) ) ); + $out->addHTML( Html::hidden( 'wpStarttime', $this->starttime ) ); + $out->addHTML( Html::hidden( 'wpEdittime', $this->edittime ) ); + $out->addHTML( Html::hidden( 'editRevId', $this->editRevId ) ); + $out->addHTML( Html::hidden( 'wpScrolltop', $this->scrolltop, [ 'id' => 'wpScrolltop' ] ) ); if ( !$this->checkUnicodeCompliantBrowser() ) { - $wgOut->addHTML( Html::hidden( 'safemode', '1' ) ); + $out->addHTML( Html::hidden( 'safemode', '1' ) ); } } protected function showFormAfterText() { - global $wgOut, $wgUser; + global $wgUser; /** * To make it harder for someone to slip a user a page * which submits an edit form to the wiki without their @@ -3251,7 +3247,9 @@ class EditPage { * include the constant suffix to prevent editing from * broken text-mangling proxies. */ - $wgOut->addHTML( "\n" . Html::hidden( "wpEditToken", $wgUser->getEditToken() ) . "\n" ); + $this->context->getOutput()->addHTML( + "\n" . Html::hidden( "wpEditToken", $wgUser->getEditToken() ) . "\n" + ); } /** @@ -3325,18 +3323,17 @@ class EditPage { } protected function showTextbox( $text, $name, $customAttribs = [] ) { - global $wgOut, $wgUser; + global $wgUser; $wikitext = $this->safeUnicodeOutput( $text ); $wikitext = $this->addNewLineAtEnd( $wikitext ); $attribs = $this->buildTextboxAttribs( $name, $customAttribs, $wgUser ); - $wgOut->addHTML( Html::textarea( $name, $wikitext, $attribs ) ); + $this->context->getOutput()->addHTML( Html::textarea( $name, $wikitext, $attribs ) ); } protected function displayPreviewArea( $previewOutput, $isOnTop = false ) { - global $wgOut; $classes = []; if ( $isOnTop ) { $classes[] = 'ontop'; @@ -3348,7 +3345,8 @@ class EditPage { $attribs['style'] = 'display: none;'; } - $wgOut->addHTML( Xml::openElement( 'div', $attribs ) ); + $out = $this->context->getOutput(); + $out->addHTML( Xml::openElement( 'div', $attribs ) ); if ( $this->formtype == 'preview' ) { $this->showPreview( $previewOutput ); @@ -3357,10 +3355,10 @@ class EditPage { $pageViewLang = $this->mTitle->getPageViewLanguage(); $attribs = [ 'lang' => $pageViewLang->getHtmlCode(), 'dir' => $pageViewLang->getDir(), 'class' => 'mw-content-' . $pageViewLang->getDir() ]; - $wgOut->addHTML( Html::rawElement( 'div', $attribs ) ); + $out->addHTML( Html::rawElement( 'div', $attribs ) ); } - $wgOut->addHTML( '
' ); + $out->addHTML( '
' ); if ( $this->formtype == 'diff' ) { try { @@ -3372,26 +3370,26 @@ class EditPage { $this->contentFormat, $ex->getMessage() ); - $wgOut->addWikiText( '
' . $msg->text() . '
' ); + $out->addWikiText( '
' . $msg->text() . '
' ); } } } /** - * Append preview output to $wgOut. + * Append preview output to OutputPage. * Includes category rendering if this is a category page. * * @param string $text The HTML to be output for the preview. */ protected function showPreview( $text ) { - global $wgOut; if ( $this->mArticle instanceof CategoryPage ) { $this->mArticle->openShowCategory(); } # This hook seems slightly odd here, but makes things more # consistent for extensions. - Hooks::run( 'OutputPageBeforeHTML', [ &$wgOut, &$text ] ); - $wgOut->addHTML( $text ); + $out = $this->context->getOutput(); + Hooks::run( 'OutputPageBeforeHTML', [ &$out, &$text ] ); + $out->addHTML( $text ); if ( $this->mArticle instanceof CategoryPage ) { $this->mArticle->closeShowCategory(); } @@ -3405,7 +3403,7 @@ class EditPage { * save and then make a comparison. */ public function showDiff() { - global $wgUser, $wgContLang, $wgOut; + global $wgUser, $wgContLang; $oldtitlemsg = 'currentrev'; # if message does not exist, show diff against the preloaded default @@ -3460,7 +3458,7 @@ class EditPage { $difftext = ''; } - $wgOut->addHTML( '
' . $difftext . '
' ); + $this->context->getOutput()->addHTML( '
' . $difftext . '
' ); } /** @@ -3469,8 +3467,7 @@ class EditPage { protected function showHeaderCopyrightWarning() { $msg = 'editpage-head-copy-warn'; if ( !$this->context->msg( $msg )->isDisabled() ) { - global $wgOut; - $wgOut->wrapWikiMsg( "
\n$1\n
", + $this->context->getOutput()->wrapWikiMsg( "
\n$1\n
", 'editpage-head-copy-warn' ); } } @@ -3487,10 +3484,10 @@ class EditPage { $msg = 'editpage-tos-summary'; Hooks::run( 'EditPageTosSummary', [ $this->mTitle, &$msg ] ); if ( !$this->context->msg( $msg )->isDisabled() ) { - global $wgOut; - $wgOut->addHTML( '
' ); - $wgOut->addWikiMsg( $msg ); - $wgOut->addHTML( '
' ); + $out = $this->context->getOutput(); + $out->addHTML( '
' ); + $out->addWikiMsg( $msg ); + $out->addHTML( '
' ); } } @@ -3499,8 +3496,7 @@ class EditPage { * characters not present on most keyboards for copying/pasting. */ protected function showEditTools() { - global $wgOut; - $wgOut->addHTML( '
' . + $this->context->getOutput()->addHTML( '
' . $this->context->msg( 'edittools' )->inContentLanguage()->parse() . '
' ); } @@ -3594,36 +3590,28 @@ class EditPage { } protected function showStandardInputs( &$tabindex = 2 ) { - global $wgOut; - $wgOut->addHTML( "
\n" ); + $out = $this->context->getOutput(); + $out->addHTML( "
\n" ); if ( $this->section != 'new' ) { $this->showSummaryInput( false, $this->summary ); - $wgOut->addHTML( $this->getSummaryPreview( false, $this->summary ) ); + $out->addHTML( $this->getSummaryPreview( false, $this->summary ) ); } - if ( $this->oouiEnabled ) { - $checkboxes = $this->getCheckboxesOOUI( - $tabindex, - [ 'minor' => $this->minoredit, 'watch' => $this->watchthis ] - ); - $checkboxesHTML = new OOUI\HorizontalLayout( [ 'items' => $checkboxes ] ); - } else { - $checkboxes = $this->getCheckboxes( - $tabindex, - [ 'minor' => $this->minoredit, 'watch' => $this->watchthis ] - ); - $checkboxesHTML = implode( $checkboxes, "\n" ); - } + $checkboxes = $this->getCheckboxesWidget( + $tabindex, + [ 'minor' => $this->minoredit, 'watch' => $this->watchthis ] + ); + $checkboxesHTML = new OOUI\HorizontalLayout( [ 'items' => $checkboxes ] ); - $wgOut->addHTML( "
" . $checkboxesHTML . "
\n" ); + $out->addHTML( "
" . $checkboxesHTML . "
\n" ); // Show copyright warning. - $wgOut->addWikiText( $this->getCopywarn() ); - $wgOut->addHTML( $this->editFormTextAfterWarn ); + $out->addWikiText( $this->getCopywarn() ); + $out->addHTML( $this->editFormTextAfterWarn ); - $wgOut->addHTML( "
\n" ); - $wgOut->addHTML( implode( $this->getEditButtons( $tabindex ), "\n" ) . "\n" ); + $out->addHTML( "
\n" ); + $out->addHTML( implode( $this->getEditButtons( $tabindex ), "\n" ) . "\n" ); $cancel = $this->getCancelLink(); if ( $cancel !== '' ) { @@ -3643,13 +3631,13 @@ class EditPage { $this->context->msg( 'word-separator' )->escaped() . $this->context->msg( 'newwindow' )->parse(); - $wgOut->addHTML( " {$cancel}\n" ); - $wgOut->addHTML( " {$edithelp}\n" ); - $wgOut->addHTML( "
\n" ); + $out->addHTML( " {$cancel}\n" ); + $out->addHTML( " {$edithelp}\n" ); + $out->addHTML( "
\n" ); - Hooks::run( 'EditPage::showStandardInputs:options', [ $this, $wgOut, &$tabindex ] ); + Hooks::run( 'EditPage::showStandardInputs:options', [ $this, $out, &$tabindex ] ); - $wgOut->addHTML( "
\n" ); + $out->addHTML( "
\n" ); } /** @@ -3657,14 +3645,13 @@ class EditPage { * If you want to use another entry point to this function, be careful. */ protected function showConflict() { - global $wgOut; - + $out = $this->context->getOutput(); // Avoid PHP 7.1 warning of passing $this by reference $editPage = $this; - if ( Hooks::run( 'EditPageBeforeConflictDiff', [ &$editPage, &$wgOut ] ) ) { + if ( Hooks::run( 'EditPageBeforeConflictDiff', [ &$editPage, &$out ] ) ) { $this->incrementConflictStats(); - $wgOut->wrapWikiMsg( '

$1

', "yourdiff" ); + $out->wrapWikiMsg( '

$1

', "yourdiff" ); $content1 = $this->toEditContent( $this->textbox1 ); $content2 = $this->toEditContent( $this->textbox2 ); @@ -3677,7 +3664,7 @@ class EditPage { $this->context->msg( 'storedversion' )->text() ); - $wgOut->wrapWikiMsg( '

$1

', "yourtext" ); + $out->wrapWikiMsg( '

$1

', "yourtext" ); $this->showTextbox2(); } } @@ -3704,23 +3691,15 @@ class EditPage { } elseif ( $this->getContextTitle()->isRedirect() ) { $cancelParams['redirect'] = 'no'; } - if ( $this->oouiEnabled ) { - return new OOUI\ButtonWidget( [ - 'id' => 'mw-editform-cancel', - 'href' => $this->getContextTitle()->getLinkUrl( $cancelParams ), - 'label' => new OOUI\HtmlSnippet( $this->context->msg( 'cancel' )->parse() ), - 'framed' => false, - 'infusable' => true, - 'flags' => 'destructive', - ] ); - } else { - return MediaWikiServices::getInstance()->getLinkRenderer()->makeKnownLink( - $this->getContextTitle(), - new HtmlArmor( $this->context->msg( 'cancel' )->parse() ), - Html::buttonAttributes( [ 'id' => 'mw-editform-cancel' ], [ 'mw-ui-quiet' ] ), - $cancelParams - ); - } + + return new OOUI\ButtonWidget( [ + 'id' => 'mw-editform-cancel', + 'href' => $this->getContextTitle()->getLinkUrl( $cancelParams ), + 'label' => new OOUI\HtmlSnippet( $this->context->msg( 'cancel' )->parse() ), + 'framed' => false, + 'infusable' => true, + 'flags' => 'destructive', + ] ); } /** @@ -3768,8 +3747,9 @@ class EditPage { */ protected function getLastDelete() { $dbr = wfGetDB( DB_REPLICA ); + $commentQuery = CommentStore::newKey( 'log_comment' )->getJoin(); $data = $dbr->selectRow( - [ 'logging', 'user' ], + [ 'logging', 'user' ] + $commentQuery['tables'], [ 'log_type', 'log_action', @@ -3777,11 +3757,10 @@ class EditPage { 'log_user', 'log_namespace', 'log_title', - 'log_comment', 'log_params', 'log_deleted', 'user_name' - ], [ + ] + $commentQuery['fields'], [ 'log_namespace' => $this->mTitle->getNamespace(), 'log_title' => $this->mTitle->getDBkey(), 'log_type' => 'delete', @@ -3789,7 +3768,10 @@ class EditPage { 'user_id=log_user' ], __METHOD__, - [ 'LIMIT' => 1, 'ORDER BY' => 'log_timestamp DESC' ] + [ 'LIMIT' => 1, 'ORDER BY' => 'log_timestamp DESC' ], + [ + 'user' => [ 'JOIN', 'user_id=log_user' ], + ] + $commentQuery['joins'] ); // Quick paranoid permission checks... if ( is_object( $data ) ) { @@ -3798,7 +3780,8 @@ class EditPage { } if ( $data->log_deleted & LogPage::DELETED_COMMENT ) { - $data->log_comment = $this->context->msg( 'rev-deleted-comment' )->escaped(); + $data->log_comment_text = $this->context->msg( 'rev-deleted-comment' )->escaped(); + $data->log_comment_data = null; } } @@ -3811,9 +3794,11 @@ class EditPage { * @return string */ public function getPreviewText() { - global $wgOut, $wgRawHtml, $wgLang; + global $wgRawHtml, $wgLang; global $wgAllowUserCss, $wgAllowUserJs; + $out = $this->context->getOutput(); + if ( $wgRawHtml && !$this->mTokenOk ) { // Could be an offsite preview attempt. This is very unsafe if // HTML is enabled, as it could be an attack. @@ -3822,7 +3807,7 @@ class EditPage { // Do not put big scary notice, if previewing the empty // string, which happens when you initially edit // a category page, due to automatic preview-on-open. - $parsedNote = $wgOut->parse( "
" . + $parsedNote = $out->parse( "
" . $this->context->msg( 'session_fail_preview_html' )->text() . "
", true, /* interface */true ); } @@ -3910,7 +3895,7 @@ class EditPage { $parserOutput = $parserResult['parserOutput']; $previewHTML = $parserResult['html']; $this->mParserOutput = $parserOutput; - $wgOut->addParserOutputMetadata( $parserOutput ); + $out->addParserOutputMetadata( $parserOutput ); if ( count( $parserOutput->getWarnings() ) ) { $note .= "\n\n" . implode( "\n\n", $parserOutput->getWarnings() ); @@ -3936,7 +3921,7 @@ class EditPage { $previewhead = "
\n" . '

' . $this->context->msg( 'preview' )->escaped() . "

" . - $wgOut->parse( $note, true, /* interface */true ) . $conflict . "
\n"; + $out->parse( $note, true, /* interface */true ) . $conflict . "
\n"; $pageViewLang = $this->mTitle->getPageViewLanguage(); $attribs = [ 'lang' => $pageViewLang->getHtmlCode(), 'dir' => $pageViewLang->getDir(), @@ -4163,7 +4148,7 @@ class EditPage { * where bool indicates the checked status of the checkbox * @return array */ - protected function getCheckboxesDefinition( $checked ) { + public function getCheckboxesDefinition( $checked ) { global $wgUser; $checkboxes = []; @@ -4202,6 +4187,7 @@ class EditPage { * Returns an array of html code of the following checkboxes old style: * minor and watch * + * @deprecated since 1.30 Use getCheckboxesWidget() or getCheckboxesDefinition() instead * @param int &$tabindex Current tabindex * @param array $checked See getCheckboxesDefinition() * @return array @@ -4257,21 +4243,34 @@ class EditPage { } /** - * Returns an array of html code of the following checkboxes: - * minor and watch + * Returns an array of checkboxes for the edit form, including 'minor' and 'watch' checkboxes and + * any other added by extensions. * + * @deprecated since 1.30 Use getCheckboxesWidget() or getCheckboxesDefinition() instead * @param int &$tabindex Current tabindex * @param array $checked Array of checkbox => bool, where bool indicates the checked * status of the checkbox * - * @return array + * @return array Associative array of string keys to OOUI\FieldLayout instances */ public function getCheckboxesOOUI( &$tabindex, $checked ) { + return $this->getCheckboxesWidget( $tabindex, $checked ); + } + + /** + * Returns an array of checkboxes for the edit form, including 'minor' and 'watch' checkboxes and + * any other added by extensions. + * + * @param int &$tabindex Current tabindex + * @param array $checked Array of checkbox => bool, where bool indicates the checked + * status of the checkbox + * + * @return array Associative array of string keys to OOUI\FieldLayout instances + */ + public function getCheckboxesWidget( &$tabindex, $checked ) { $checkboxes = []; $checkboxesDef = $this->getCheckboxesDefinition( $checked ); - $origTabindex = $tabindex; - foreach ( $checkboxesDef as $name => $options ) { $legacyName = isset( $options['legacy-name'] ) ? $options['legacy-name'] : $name; @@ -4284,9 +4283,6 @@ class EditPage { if ( isset( $options['title-message'] ) ) { $title = $this->context->msg( $options['title-message'] )->text(); } - if ( isset( $options['label-id'] ) ) { - $labelAttribs['id'] = $options['label-id']; - } $checkboxes[ $legacyName ] = new OOUI\FieldLayout( new OOUI\CheckboxInputWidget( [ @@ -4310,7 +4306,19 @@ class EditPage { // Backwards-compatibility hack to run the EditPageBeforeEditChecks hook. It's important, // people have used it for the weirdest things completely unrelated to checkboxes... // And if we're gonna run it, might as well allow its legacy checkboxes to be shown. - $legacyCheckboxes = $this->getCheckboxes( $origTabindex, $checked ); + $legacyCheckboxes = []; + if ( !$this->isNew ) { + $legacyCheckboxes['minor'] = ''; + } + $legacyCheckboxes['watch'] = ''; + // Copy new-style checkboxes into an old-style structure + foreach ( $checkboxes as $name => $oouiLayout ) { + $legacyCheckboxes[$name] = (string)$oouiLayout; + } + // Avoid PHP 7.1 warning of passing $this by reference + $ep = $this; + Hooks::run( 'EditPageBeforeEditChecks', [ &$ep, &$legacyCheckboxes, &$tabindex ], '1.29' ); + // Copy back any additional old-style checkboxes into the new-style structure foreach ( $legacyCheckboxes as $name => $html ) { if ( $html && !isset( $checkboxes[$name] ) ) { $checkboxes[$name] = new OOUI\Widget( [ 'content' => new OOUI\HtmlSnippet( $html ) ] ); @@ -4358,74 +4366,56 @@ class EditPage { 'name' => 'wpSave', 'tabindex' => ++$tabindex, ]; - if ( $this->oouiEnabled ) { - $saveConfig = OOUI\Element::configFromHtmlAttributes( $attribs ); - $buttons['save'] = new OOUI\ButtonInputWidget( [ - 'id' => 'wpSaveWidget', - 'inputId' => 'wpSave', - // Support: IE 6 – Use , otherwise it can't distinguish which button was clicked - 'useInputTag' => true, - 'flags' => [ 'constructive', 'primary' ], - 'label' => $buttonLabel, - 'infusable' => true, - 'type' => 'submit', - 'title' => Linker::titleAttrib( 'save' ), - 'accessKey' => Linker::accesskey( 'save' ), - ] + $saveConfig ); - } else { - $buttons['save'] = Html::submitButton( - $buttonLabel, - $attribs + Linker::tooltipAndAccesskeyAttribs( 'save' ) + [ 'id' => 'wpSave' ], - [ 'mw-ui-progressive' ] - ); - } + + $saveConfig = OOUI\Element::configFromHtmlAttributes( $attribs ); + $buttons['save'] = new OOUI\ButtonInputWidget( [ + 'id' => 'wpSaveWidget', + 'inputId' => 'wpSave', + // Support: IE 6 – Use , otherwise it can't distinguish which button was clicked + 'useInputTag' => true, + 'flags' => [ 'constructive', 'primary' ], + 'label' => $buttonLabel, + 'infusable' => true, + 'type' => 'submit', + 'title' => Linker::titleAttrib( 'save' ), + 'accessKey' => Linker::accesskey( 'save' ), + ] + $saveConfig ); $attribs = [ 'name' => 'wpPreview', 'tabindex' => ++$tabindex, ]; - if ( $this->oouiEnabled ) { - $previewConfig = OOUI\Element::configFromHtmlAttributes( $attribs ); - $buttons['preview'] = new OOUI\ButtonInputWidget( [ - 'id' => 'wpPreviewWidget', - 'inputId' => 'wpPreview', - // Support: IE 6 – Use , otherwise it can't distinguish which button was clicked - 'useInputTag' => true, - 'label' => $this->context->msg( 'showpreview' )->text(), - 'infusable' => true, - 'type' => 'submit', - 'title' => Linker::titleAttrib( 'preview' ), - 'accessKey' => Linker::accesskey( 'preview' ), - ] + $previewConfig ); - } else { - $buttons['preview'] = Html::submitButton( - $this->context->msg( 'showpreview' )->text(), - $attribs + Linker::tooltipAndAccesskeyAttribs( 'preview' ) + [ 'id' => 'wpPreview' ] - ); - } + + $previewConfig = OOUI\Element::configFromHtmlAttributes( $attribs ); + $buttons['preview'] = new OOUI\ButtonInputWidget( [ + 'id' => 'wpPreviewWidget', + 'inputId' => 'wpPreview', + // Support: IE 6 – Use , otherwise it can't distinguish which button was clicked + 'useInputTag' => true, + 'label' => $this->context->msg( 'showpreview' )->text(), + 'infusable' => true, + 'type' => 'submit', + 'title' => Linker::titleAttrib( 'preview' ), + 'accessKey' => Linker::accesskey( 'preview' ), + ] + $previewConfig ); + $attribs = [ 'name' => 'wpDiff', 'tabindex' => ++$tabindex, ]; - if ( $this->oouiEnabled ) { - $diffConfig = OOUI\Element::configFromHtmlAttributes( $attribs ); - $buttons['diff'] = new OOUI\ButtonInputWidget( [ - 'id' => 'wpDiffWidget', - 'inputId' => 'wpDiff', - // Support: IE 6 – Use , otherwise it can't distinguish which button was clicked - 'useInputTag' => true, - 'label' => $this->context->msg( 'showdiff' )->text(), - 'infusable' => true, - 'type' => 'submit', - 'title' => Linker::titleAttrib( 'diff' ), - 'accessKey' => Linker::accesskey( 'diff' ), - ] + $diffConfig ); - } else { - $buttons['diff'] = Html::submitButton( - $this->context->msg( 'showdiff' )->text(), - $attribs + Linker::tooltipAndAccesskeyAttribs( 'diff' ) + [ 'id' => 'wpDiff' ] - ); - } + + $diffConfig = OOUI\Element::configFromHtmlAttributes( $attribs ); + $buttons['diff'] = new OOUI\ButtonInputWidget( [ + 'id' => 'wpDiffWidget', + 'inputId' => 'wpDiff', + // Support: IE 6 – Use , otherwise it can't distinguish which button was clicked + 'useInputTag' => true, + 'label' => $this->context->msg( 'showdiff' )->text(), + 'infusable' => true, + 'type' => 'submit', + 'title' => Linker::titleAttrib( 'diff' ), + 'accessKey' => Linker::accesskey( 'diff' ), + ] + $diffConfig ); // Avoid PHP 7.1 warning of passing $this by reference $editPage = $this; @@ -4439,18 +4429,17 @@ class EditPage { * they have attempted to edit a nonexistent section. */ public function noSuchSectionPage() { - global $wgOut; - - $wgOut->prepareErrorPage( $this->context->msg( 'nosuchsectiontitle' ) ); + $out = $this->context->getOutput(); + $out->prepareErrorPage( $this->context->msg( 'nosuchsectiontitle' ) ); $res = $this->context->msg( 'nosuchsectiontext', $this->section )->parseAsBlock(); // Avoid PHP 7.1 warning of passing $this by reference $editPage = $this; Hooks::run( 'EditPageNoSuchSection', [ &$editPage, &$res ] ); - $wgOut->addHTML( $res ); + $out->addHTML( $res ); - $wgOut->returnToMain( false, $this->mTitle ); + $out->returnToMain( false, $this->mTitle ); } /** @@ -4459,28 +4448,29 @@ class EditPage { * @param string|array|bool $match Text (or array of texts) which triggered one or more filters */ public function spamPageWithContent( $match = false ) { - global $wgOut, $wgLang; + global $wgLang; $this->textbox2 = $this->textbox1; if ( is_array( $match ) ) { $match = $wgLang->listToText( $match ); } - $wgOut->prepareErrorPage( $this->context->msg( 'spamprotectiontitle' ) ); + $out = $this->context->getOutput(); + $out->prepareErrorPage( $this->context->msg( 'spamprotectiontitle' ) ); - $wgOut->addHTML( '
' ); - $wgOut->addWikiMsg( 'spamprotectiontext' ); + $out->addHTML( '
' ); + $out->addWikiMsg( 'spamprotectiontext' ); if ( $match ) { - $wgOut->addWikiMsg( 'spamprotectionmatch', wfEscapeWikiText( $match ) ); + $out->addWikiMsg( 'spamprotectionmatch', wfEscapeWikiText( $match ) ); } - $wgOut->addHTML( '
' ); + $out->addHTML( '
' ); - $wgOut->wrapWikiMsg( '

$1

', "yourdiff" ); + $out->wrapWikiMsg( '

$1

', "yourdiff" ); $this->showDiff(); - $wgOut->wrapWikiMsg( '

$1

', "yourtext" ); + $out->wrapWikiMsg( '

$1

', "yourtext" ); $this->showTextbox2(); - $wgOut->addReturnTo( $this->getContextTitle(), [ 'action' => 'edit' ] ); + $out->addReturnTo( $this->getContextTitle(), [ 'action' => 'edit' ] ); } /** @@ -4621,15 +4611,14 @@ class EditPage { * @since 1.29 */ protected function addEditNotices() { - global $wgOut; - + $out = $this->context->getOutput(); $editNotices = $this->mTitle->getEditNotices( $this->oldid ); if ( count( $editNotices ) ) { - $wgOut->addHTML( implode( "\n", $editNotices ) ); + $out->addHTML( implode( "\n", $editNotices ) ); } else { $msg = $this->context->msg( 'editnotice-notext' ); if ( !$msg->isDisabled() ) { - $wgOut->addHTML( + $out->addHTML( '
' . $msg->parseAsBlock() . '
' @@ -4642,10 +4631,8 @@ class EditPage { * @since 1.29 */ protected function addTalkPageText() { - global $wgOut; - if ( $this->mTitle->isTalkPage() ) { - $wgOut->addWikiMsg( 'talkpagetext' ); + $this->context->getOutput()->addWikiMsg( 'talkpagetext' ); } } @@ -4653,14 +4640,15 @@ class EditPage { * @since 1.29 */ protected function addLongPageWarningHeader() { - global $wgMaxArticleSize, $wgOut, $wgLang; + global $wgMaxArticleSize, $wgLang; if ( $this->contentLength === false ) { $this->contentLength = strlen( $this->textbox1 ); } + $out = $this->context->getOutput(); if ( $this->tooBig || $this->contentLength > $wgMaxArticleSize * 1024 ) { - $wgOut->wrapWikiMsg( "
\n$1\n
", + $out->wrapWikiMsg( "
\n$1\n
", [ 'longpageerror', $wgLang->formatNum( round( $this->contentLength / 1024, 3 ) ), @@ -4669,7 +4657,7 @@ class EditPage { ); } else { if ( !$this->context->msg( 'longpage-hint' )->isDisabled() ) { - $wgOut->wrapWikiMsg( "
\n$1\n
", + $out->wrapWikiMsg( "
\n$1\n
", [ 'longpage-hint', $wgLang->formatSize( strlen( $this->textbox1 ) ), @@ -4684,8 +4672,7 @@ class EditPage { * @since 1.29 */ protected function addPageProtectionWarningHeaders() { - global $wgOut; - + $out = $this->context->getOutput(); if ( $this->mTitle->isProtected( 'edit' ) && MWNamespace::getRestrictionLevels( $this->mTitle->getNamespace() ) !== [ '' ] ) { @@ -4696,7 +4683,7 @@ class EditPage { # Then it must be protected based on static groups (regular) $noticeMsg = 'protectedpagewarning'; } - LogEventsList::showLogExtract( $wgOut, 'protect', $this->mTitle, '', + LogEventsList::showLogExtract( $out, 'protect', $this->mTitle, '', [ 'lim' => 1, 'msgKey' => [ $noticeMsg ] ] ); } if ( $this->mTitle->isCascadeProtected() ) { @@ -4712,10 +4699,10 @@ class EditPage { } } $notice .= '
'; - $wgOut->wrapWikiMsg( $notice, [ 'cascadeprotectedwarning', $cascadeSourcesCount ] ); + $out->wrapWikiMsg( $notice, [ 'cascadeprotectedwarning', $cascadeSourcesCount ] ); } if ( !$this->mTitle->exists() && $this->mTitle->getRestrictions( 'create' ) ) { - LogEventsList::showLogExtract( $wgOut, 'protect', $this->mTitle, '', + LogEventsList::showLogExtract( $out, 'protect', $this->mTitle, '', [ 'lim' => 1, 'showIfEmpty' => false, 'msgKey' => [ 'titleprotectedwarning' ], diff --git a/includes/FeedUtils.php b/includes/FeedUtils.php index 96a88d3d98..0def6a0402 100644 --- a/includes/FeedUtils.php +++ b/includes/FeedUtils.php @@ -72,7 +72,8 @@ class FeedUtils { /** * Format a diff for the newsfeed * - * @param object $row Row from the recentchanges table + * @param object $row Row from the recentchanges table, including fields as + * appropriate for CommentStore * @return string */ public static function formatDiff( $row ) { @@ -88,7 +89,9 @@ class FeedUtils { $timestamp, $row->rc_deleted & Revision::DELETED_COMMENT ? wfMessage( 'rev-deleted-comment' )->escaped() - : $row->rc_comment, + : CommentStore::newKey( 'rc_comment' ) + // Legacy from RecentChange::selectFields() via ChangesListSpecialPage::doMainQuery() + ->getCommentLegacy( wfGetDB( DB_REPLICA ), $row )->text, $actiontext ); } diff --git a/includes/Linker.php b/includes/Linker.php index d55f0e0bb5..aedb704a8f 100644 --- a/includes/Linker.php +++ b/includes/Linker.php @@ -1624,14 +1624,16 @@ class Linker { $link, $fallbackAnchor = false ) { $anchorEscaped = htmlspecialchars( $anchor ); - $ret = "$html" - . $link - . ""; + $fallback = ''; if ( $fallbackAnchor !== false && $fallbackAnchor !== $anchor ) { $fallbackAnchor = htmlspecialchars( $fallbackAnchor ); - $ret = "
$ret"; + $fallback = ""; } + $ret = "$html" + . $link + . ""; + return $ret; } diff --git a/includes/MagicWordArray.php b/includes/MagicWordArray.php index 7461191fca..5856e21b71 100644 --- a/includes/MagicWordArray.php +++ b/includes/MagicWordArray.php @@ -95,13 +95,22 @@ class MagicWordArray { public function getBaseRegex() { if ( is_null( $this->baseRegex ) ) { $this->baseRegex = [ 0 => '', 1 => '' ]; + $allGroups = []; foreach ( $this->names as $name ) { $magic = MagicWord::get( $name ); $case = intval( $magic->isCaseSensitive() ); foreach ( $magic->getSynonyms() as $i => $syn ) { // Group name must start with a non-digit in PCRE 8.34+ $it = strtr( $i, '0123456789', 'abcdefghij' ); - $group = "(?P<{$it}_{$name}>" . preg_quote( $syn, '/' ) . ')'; + $groupName = $it . '_' . $name; + $group = '(?P<' . $groupName . '>' . preg_quote( $syn, '/' ) . ')'; + // look for same group names to avoid same named subpatterns in the regex + if ( isset( $allGroups[$groupName] ) ) { + throw new MWException( + __METHOD__ . ': duplicate internal name in magic word array: ' . $name + ); + } + $allGroups[$groupName] = true; if ( $this->baseRegex[$case] === '' ) { $this->baseRegex[$case] = $group; } else { diff --git a/includes/MediaWiki.php b/includes/MediaWiki.php index 4e471844d8..7b59ee93dc 100644 --- a/includes/MediaWiki.php +++ b/includes/MediaWiki.php @@ -607,7 +607,7 @@ class MediaWiki { $request->wasPosted() && $output->getRedirect() && $lbFactory->hasOrMadeRecentMasterChanges( INF ) - ) ? self::getUrlDomainDistance( $output->getRedirect(), $context ) : false; + ) ? self::getUrlDomainDistance( $output->getRedirect() ) : false; $allowHeaders = !( $output->isDisabled() || headers_sent() ); if ( $urlDomainDistance === 'local' || $urlDomainDistance === 'remote' ) { @@ -676,34 +676,14 @@ class MediaWiki { /** * @param string $url - * @param IContextSource $context * @return string Either "local", "remote" if in the farm, "external" otherwise */ - private static function getUrlDomainDistance( $url, IContextSource $context ) { - static $relevantKeys = [ 'host' => true, 'port' => true ]; - - $infoCandidate = wfParseUrl( $url ); - if ( $infoCandidate === false ) { - return 'external'; - } - - $infoCandidate = array_intersect_key( $infoCandidate, $relevantKeys ); - $clusterHosts = array_merge( - // Local wiki host (the most common case) - [ $context->getConfig()->get( 'CanonicalServer' ) ], - // Any local/remote wiki virtual hosts for this wiki farm - $context->getConfig()->get( 'LocalVirtualHosts' ) - ); - - foreach ( $clusterHosts as $i => $clusterHost ) { - $parseUrl = wfParseUrl( $clusterHost ); - if ( !$parseUrl ) { - continue; - } - $infoHost = array_intersect_key( $parseUrl, $relevantKeys ); - if ( $infoCandidate === $infoHost ) { - return ( $i === 0 ) ? 'local' : 'remote'; - } + private static function getUrlDomainDistance( $url ) { + $clusterWiki = WikiMap::getWikiFromUrl( $url ); + if ( $clusterWiki === wfWikiID() ) { + return 'local'; // the current wiki + } elseif ( $clusterWiki !== false ) { + return 'remote'; // another wiki in this cluster/farm } return 'external'; @@ -970,7 +950,7 @@ class MediaWiki { } /** - * @param integer $n Number of jobs to try to run + * @param int $n Number of jobs to try to run * @param LoggerInterface $runJobsLogger */ private function triggerSyncJobs( $n, LoggerInterface $runJobsLogger ) { @@ -979,7 +959,7 @@ class MediaWiki { } /** - * @param integer $n Number of jobs to try to run + * @param int $n Number of jobs to try to run * @param LoggerInterface $runJobsLogger * @return bool Success */ diff --git a/includes/MergeHistory.php b/includes/MergeHistory.php index 48ff97bdf1..9d63869641 100644 --- a/includes/MergeHistory.php +++ b/includes/MergeHistory.php @@ -56,7 +56,7 @@ class MergeHistory { /** @var MWTimestamp|bool Timestamp upto which history from the source will be merged */ protected $timestampLimit; - /** @var integer Number of revisions merged (for Special:MergeHistory success message) */ + /** @var int Number of revisions merged (for Special:MergeHistory success message) */ protected $revisionsMerged; /** diff --git a/includes/MovePage.php b/includes/MovePage.php index 39dc6424db..2f8255ba38 100644 --- a/includes/MovePage.php +++ b/includes/MovePage.php @@ -442,7 +442,6 @@ class MovePage { private function moveToInternal( User $user, &$nt, $reason = '', $createRedirect = true, array $changeTags = [] ) { - global $wgContLang; if ( $nt->exists() ) { $moveOverRedirect = true; $logType = 'move_redir'; @@ -520,8 +519,6 @@ class MovePage { if ( $reason ) { $comment .= wfMessage( 'colon-separator' )->inContentLanguage()->text() . $reason; } - # Truncate for whole multibyte characters. - $comment = $wgContLang->truncate( $comment, 255 ); $dbw = wfGetDB( DB_MASTER ); diff --git a/includes/OutputPage.php b/includes/OutputPage.php index 2a3a7cd147..dd21194bdb 100644 --- a/includes/OutputPage.php +++ b/includes/OutputPage.php @@ -1998,10 +1998,10 @@ class OutputPage extends ContextSource { * the TTL is higher the older the $mtime timestamp is. Essentially, the * TTL is 90% of the age of the object, subject to the min and max. * - * @param string|integer|float|bool|null $mtime Last-Modified timestamp - * @param integer $minTTL Mimimum TTL in seconds [default: 1 minute] - * @param integer $maxTTL Maximum TTL in seconds [default: $wgSquidMaxage] - * @return integer TTL in seconds + * @param string|int|float|bool|null $mtime Last-Modified timestamp + * @param int $minTTL Mimimum TTL in seconds [default: 1 minute] + * @param int $maxTTL Maximum TTL in seconds [default: $wgSquidMaxage] + * @return int TTL in seconds * @since 1.28 */ public function adaptCdnTTL( $mtime, $minTTL = 0, $maxTTL = 0 ) { diff --git a/includes/PHPVersionCheck.php b/includes/PHPVersionCheck.php index cd5bf54998..e9e271ce49 100644 --- a/includes/PHPVersionCheck.php +++ b/includes/PHPVersionCheck.php @@ -98,7 +98,7 @@ class PHPVersionCheck { 'vendor' => 'the PHP Group', 'upstreamSupported' => '5.5.0', 'minSupported' => '5.5.9', - 'upgradeURL' => 'http://www.php.net/downloads.php', + 'upgradeURL' => 'https://secure.php.net/downloads.php', ); } diff --git a/includes/PageProps.php b/includes/PageProps.php index dac756ed75..ff8deee373 100644 --- a/includes/PageProps.php +++ b/includes/PageProps.php @@ -242,6 +242,8 @@ class PageProps { private function getGoodIDs( $titles ) { $result = []; if ( is_array( $titles ) ) { + ( new LinkBatch( $titles ) )->execute(); + foreach ( $titles as $title ) { $pageID = $title->getArticleID(); if ( $pageID > 0 ) { diff --git a/includes/PreConfigSetup.php b/includes/PreConfigSetup.php new file mode 100644 index 0000000000..bda78865b7 --- /dev/null +++ b/includes/PreConfigSetup.php @@ -0,0 +1,54 @@ + 'editing/editor', 'label-message' => 'editfont-style', 'options' => [ - $context->msg( 'editfont-default' )->text() => 'default', $context->msg( 'editfont-monospace' )->text() => 'monospace', $context->msg( 'editfont-sansserif' )->text() => 'sans-serif', $context->msg( 'editfont-serif' )->text() => 'serif', + $context->msg( 'editfont-default' )->text() => 'default', ] ]; } @@ -920,6 +920,9 @@ class Preferences { $defaultPreferences['rcfilters-saved-queries'] = [ 'type' => 'api', ]; + $defaultPreferences['rcfilters-wl-saved-queries'] = [ + 'type' => 'api', + ]; $defaultPreferences['rcfilters-rclimit'] = [ 'type' => 'api', ]; @@ -1682,7 +1685,7 @@ class PreferencesForm extends HTMLForm { $html = parent::getButtons(); if ( $this->getModifiedUser()->isAllowed( 'editmyoptions' ) ) { - $t = SpecialPage::getTitleFor( 'Preferences', 'reset' ); + $t = $this->getTitle()->getSubpage( 'reset' ); $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); $html .= "\n" . $linkRenderer->makeLink( $t, $this->msg( 'restoreprefs' )->text(), diff --git a/includes/Revision.php b/includes/Revision.php index 3d4d161547..006e700645 100644 --- a/includes/Revision.php +++ b/includes/Revision.php @@ -192,7 +192,9 @@ class Revision implements IDBAccessObject { $attribs = $overrides + [ 'page' => isset( $row->ar_page_id ) ? $row->ar_page_id : null, 'id' => isset( $row->ar_rev_id ) ? $row->ar_rev_id : null, - 'comment' => $row->ar_comment, + 'comment' => CommentStore::newKey( 'ar_comment' ) + // Legacy because $row probably came from self::selectArchiveFields() + ->getCommentLegacy( wfGetDB( DB_REPLICA ), $row, true )->text, 'user' => $row->ar_user, 'user_text' => $row->ar_user_text, 'timestamp' => $row->ar_timestamp, @@ -443,6 +445,8 @@ class Revision implements IDBAccessObject { /** * Return the list of revision fields that should be selected to create * a new revision. + * @todo Deprecate this in favor of a method that returns tables and joins + * as well, and use CommentStore::getJoin(). * @return array */ public static function selectFields() { @@ -453,7 +457,6 @@ class Revision implements IDBAccessObject { 'rev_page', 'rev_text_id', 'rev_timestamp', - 'rev_comment', 'rev_user_text', 'rev_user', 'rev_minor_edit', @@ -463,6 +466,8 @@ class Revision implements IDBAccessObject { 'rev_sha1', ]; + $fields += CommentStore::newKey( 'rev_comment' )->getFields(); + if ( $wgContentHandlerUseDB ) { $fields[] = 'rev_content_format'; $fields[] = 'rev_content_model'; @@ -474,6 +479,8 @@ class Revision implements IDBAccessObject { /** * Return the list of revision fields that should be selected to create * a new revision from an archive row. + * @todo Deprecate this in favor of a method that returns tables and joins + * as well, and use CommentStore::getJoin(). * @return array */ public static function selectArchiveFields() { @@ -485,7 +492,6 @@ class Revision implements IDBAccessObject { 'ar_text', 'ar_text_id', 'ar_timestamp', - 'ar_comment', 'ar_user_text', 'ar_user', 'ar_minor_edit', @@ -495,6 +501,8 @@ class Revision implements IDBAccessObject { 'ar_sha1', ]; + $fields += CommentStore::newKey( 'ar_comment' )->getFields(); + if ( $wgContentHandlerUseDB ) { $fields[] = 'ar_content_format'; $fields[] = 'ar_content_model'; @@ -568,7 +576,9 @@ class Revision implements IDBAccessObject { $this->mId = intval( $row->rev_id ); $this->mPage = intval( $row->rev_page ); $this->mTextId = intval( $row->rev_text_id ); - $this->mComment = $row->rev_comment; + $this->mComment = CommentStore::newKey( 'rev_comment' ) + // Legacy because $row probably came from self::selectFields() + ->getCommentLegacy( wfGetDB( DB_REPLICA ), $row, true )->text; $this->mUser = intval( $row->rev_user ); $this->mMinorEdit = intval( $row->rev_minor_edit ); $this->mTimestamp = $row->rev_timestamp; @@ -752,7 +762,7 @@ class Revision implements IDBAccessObject { * This should only be used for proposed revisions that turn out to be null edits * * @since 1.28 - * @param integer $id User ID + * @param int $id User ID * @param string $name User name */ public function setUserIdAndName( $id, $name ) { @@ -1391,7 +1401,7 @@ class Revision implements IDBAccessObject { * * @param IDatabase $dbw (master connection) * @throws MWException - * @return int + * @return int The revision ID */ public function insertOn( $dbw ) { global $wgDefaultExternalStore, $wgContentHandlerUseDB; @@ -1432,10 +1442,8 @@ class Revision implements IDBAccessObject { # Record the text (or external storage URL) to the text table if ( $this->mTextId === null ) { - $old_id = $dbw->nextSequenceValue( 'text_old_id_seq' ); $dbw->insert( 'text', [ - 'old_id' => $old_id, 'old_text' => $data, 'old_flags' => $flags, ], __METHOD__ @@ -1448,14 +1456,9 @@ class Revision implements IDBAccessObject { } # Record the edit in revisions - $rev_id = $this->mId !== null - ? $this->mId - : $dbw->nextSequenceValue( 'revision_rev_id_seq' ); $row = [ - 'rev_id' => $rev_id, 'rev_page' => $this->mPage, 'rev_text_id' => $this->mTextId, - 'rev_comment' => $this->mComment, 'rev_minor_edit' => $this->mMinorEdit ? 1 : 0, 'rev_user' => $this->mUser, 'rev_user_text' => $this->mUserText, @@ -1469,6 +1472,13 @@ class Revision implements IDBAccessObject { ? self::base36Sha1( $this->mText ) : $this->mSha1, ]; + if ( $this->mId !== null ) { + $row['rev_id'] = $this->mId; + } + + list( $commentFields, $commentCallback ) = + CommentStore::newKey( 'rev_comment' )->insertWithTempTable( $dbw, $this->mComment ); + $row += $commentFields; if ( $wgContentHandlerUseDB ) { // NOTE: Store null for the default model and format, to save space. @@ -1495,9 +1505,10 @@ class Revision implements IDBAccessObject { $dbw->insert( 'revision', $row, __METHOD__ ); if ( $this->mId === null ) { - // Only if nextSequenceValue() was called + // Only if auto-increment was used $this->mId = $dbw->insertId(); } + $commentCallback( $this->mId ); // Assertion to try to catch T92046 if ( (int)$this->mId === 0 ) { @@ -1507,6 +1518,16 @@ class Revision implements IDBAccessObject { ); } + // Insert IP revision into ip_changes for use when querying for a range. + if ( $this->mUser === 0 && IP::isValid( $this->mUserText ) ) { + $ipcRow = [ + 'ipc_rev_id' => $this->mId, + 'ipc_rev_timestamp' => $row['rev_timestamp'], + 'ipc_hex' => IP::toHex( $row['rev_user_text'] ), + ]; + $dbw->insert( 'ip_changes', $ipcRow, __METHOD__ ); + } + // Avoid PHP 7.1 warning of passing $this by reference $revision = $this; Hooks::run( 'RevisionInsertComplete', [ &$revision, $data, $flags ] ); @@ -1584,7 +1605,7 @@ class Revision implements IDBAccessObject { * Get the text cache TTL * * @param WANObjectCache $cache - * @return integer + * @return int */ private static function getCacheTTL( WANObjectCache $cache ) { global $wgRevisionCacheExpiry; @@ -1692,7 +1713,7 @@ class Revision implements IDBAccessObject { * @return Revision|null Revision or null on error */ public static function newNullRevision( $dbw, $pageId, $summary, $minor, $user = null ) { - global $wgContentHandlerUseDB, $wgContLang; + global $wgContentHandlerUseDB; $fields = [ 'page_latest', 'page_namespace', 'page_title', 'rev_text_id', 'rev_len', 'rev_sha1' ]; @@ -1719,9 +1740,6 @@ class Revision implements IDBAccessObject { $user = $wgUser; } - // Truncate for whole multibyte characters - $summary = $wgContLang->truncate( $summary, 255 ); - $row = [ 'page' => $pageId, 'user_text' => $user->getName(), diff --git a/includes/SiteStats.php b/includes/SiteStats.php index 6a2d0e2ada..ce87596a5f 100644 --- a/includes/SiteStats.php +++ b/includes/SiteStats.php @@ -294,7 +294,7 @@ class SiteStatsInit { /** * @param bool|IDatabase $database - * - boolean: Whether to use the master DB + * - bool: Whether to use the master DB * - IDatabase: Database connection to use */ public function __construct( $database = false ) { @@ -379,10 +379,10 @@ class SiteStatsInit { * for the original initStats, but without output. * * @param IDatabase|bool $database - * - boolean: Whether to use the master DB + * - bool: Whether to use the master DB * - IDatabase: Database connection to use * @param array $options Array of options, may contain the following values - * - activeUsers boolean: Whether to update the number of active users (default: false) + * - activeUsers bool: Whether to update the number of active users (default: false) */ public static function doAllAndCommit( $database, array $options = [] ) { $options += [ 'update' => false, 'activeUsers' => false ]; diff --git a/includes/StreamFile.php b/includes/StreamFile.php index cce3fc464b..71113a8691 100644 --- a/includes/StreamFile.php +++ b/includes/StreamFile.php @@ -38,7 +38,7 @@ class StreamFile { * @param array $headers Any additional headers to send if the file exists * @param bool $sendErrors Send error messages if errors occur (like 404) * @param array $optHeaders HTTP request header map (e.g. "range") (use lowercase keys) - * @param integer $flags Bitfield of STREAM_* constants + * @param int $flags Bitfield of STREAM_* constants * @throws MWException * @return bool Success */ @@ -64,7 +64,7 @@ class StreamFile { * Send out a standard 404 message for a file * * @param string $fname Full name and path of the file to stream - * @param integer $flags Bitfield of STREAM_* constants + * @param int $flags Bitfield of STREAM_* constants * @since 1.24 */ public static function send404Message( $fname, $flags = 0 ) { @@ -75,7 +75,7 @@ class StreamFile { * Convert a Range header value to an absolute (start, end) range tuple * * @param string $range Range header value - * @param integer $size File size + * @param int $size File size * @return array|string Returns error string on failure (start, end, length) * @since 1.24 */ diff --git a/includes/Title.php b/includes/Title.php index 05f85fa47d..0687a15589 100644 --- a/includes/Title.php +++ b/includes/Title.php @@ -1036,6 +1036,7 @@ class Title implements LinkTarget { * Can this title have a corresponding talk page? * * @see MWNamespace::hasTalkNamespace + * @since 1.30 * * @return bool True if this title either is a talk page or can have a talk page associated. */ @@ -1324,7 +1325,7 @@ class Title implements LinkTarget { * * @since 1.30 * - * @return Title The object for the talk page, + * @return Title|null The object for the talk page, * or null if no associated talk page can exist, according to canHaveTalkPage(). */ public function getTalkPageIfDefined() { @@ -2669,24 +2670,33 @@ class Title implements LinkTarget { if ( $this->mTitleProtection === null ) { $dbr = wfGetDB( DB_REPLICA ); + $commentStore = new CommentStore( 'pt_reason' ); + $commentQuery = $commentStore->getJoin(); $res = $dbr->select( - 'protected_titles', + [ 'protected_titles' ] + $commentQuery['tables'], [ 'user' => 'pt_user', - 'reason' => 'pt_reason', 'expiry' => 'pt_expiry', 'permission' => 'pt_create_perm' - ], + ] + $commentQuery['fields'], [ 'pt_namespace' => $this->getNamespace(), 'pt_title' => $this->getDBkey() ], - __METHOD__ + __METHOD__, + [], + $commentQuery['joins'] ); // fetchRow returns false if there are no rows. $row = $dbr->fetchRow( $res ); if ( $row ) { - $row['expiry'] = $dbr->decodeExpiry( $row['expiry'] ); + $this->mTitleProtection = [ + 'user' => $row['user'], + 'expiry' => $dbr->decodeExpiry( $row['expiry'] ), + 'permission' => $row['permission'], + 'reason' => $commentStore->getComment( $row )->text, + ]; + } else { + $this->mTitleProtection = false; } - $this->mTitleProtection = $row; } return $this->mTitleProtection; } diff --git a/includes/WatchedItemQueryService.php b/includes/WatchedItemQueryService.php index 1fafb24dbe..d0f45bec17 100644 --- a/includes/WatchedItemQueryService.php +++ b/includes/WatchedItemQueryService.php @@ -55,6 +55,10 @@ class WatchedItemQueryService { /** @var WatchedItemQueryServiceExtension[]|null */ private $extensions = null; + /** + * @var CommentStore|null */ + private $commentStore = null; + public function __construct( LoadBalancer $loadBalancer ) { $this->loadBalancer = $loadBalancer; } @@ -78,6 +82,13 @@ class WatchedItemQueryService { return $this->loadBalancer->getConnectionRef( DB_REPLICA, [ 'watchlist' ] ); } + private function getCommentStore() { + if ( !$this->commentStore ) { + $this->commentStore = new CommentStore( 'rc_comment' ); + } + return $this->commentStore; + } + /** * @param User $user * @param array $options Allowed keys: @@ -172,13 +183,9 @@ class WatchedItemQueryService { ); } - $tables = [ 'recentchanges', 'watchlist' ]; - if ( !$options['allRevisions'] ) { - $tables[] = 'page'; - } - $db = $this->getConnection(); + $tables = $this->getWatchedItemsWithRCInfoQueryTables( $options ); $fields = $this->getWatchedItemsWithRCInfoQueryFields( $options ); $conds = $this->getWatchedItemsWithRCInfoQueryConds( $db, $user, $options ); $dbOptions = $this->getWatchedItemsWithRCInfoQueryDbOptions( $options ); @@ -320,6 +327,17 @@ class WatchedItemQueryService { return array_intersect_key( $allFields, array_flip( $rcKeys ) ); } + private function getWatchedItemsWithRCInfoQueryTables( array $options ) { + $tables = [ 'recentchanges', 'watchlist' ]; + if ( !$options['allRevisions'] ) { + $tables[] = 'page'; + } + if ( in_array( self::INCLUDE_COMMENT, $options['includeFields'] ) ) { + $tables += $this->getCommentStore()->getJoin()['tables']; + } + return $tables; + } + private function getWatchedItemsWithRCInfoQueryFields( array $options ) { $fields = [ 'rc_id', @@ -355,7 +373,7 @@ class WatchedItemQueryService { $fields[] = 'rc_user'; } if ( in_array( self::INCLUDE_COMMENT, $options['includeFields'] ) ) { - $fields[] = 'rc_comment'; + $fields += $this->getCommentStore()->getJoin()['fields']; } if ( in_array( self::INCLUDE_PATROL_INFO, $options['includeFields'] ) ) { $fields = array_merge( $fields, [ 'rc_patrolled', 'rc_log_type' ] ); @@ -657,6 +675,9 @@ class WatchedItemQueryService { if ( !$options['allRevisions'] ) { $joinConds['page'] = [ 'LEFT JOIN', 'rc_cur_id=page_id' ]; } + if ( in_array( self::INCLUDE_COMMENT, $options['includeFields'] ) ) { + $joinConds += $this->getCommentStore()->getJoin()['joins']; + } return $joinConds; } diff --git a/includes/WebStart.php b/includes/WebStart.php index e281b6f267..8a58e6f032 100644 --- a/includes/WebStart.php +++ b/includes/WebStart.php @@ -59,31 +59,7 @@ if ( $IP === false ) { $IP = realpath( '.' ) ?: dirname( __DIR__ ); } -# Grab profiling functions -require_once "$IP/includes/profiler/ProfilerFunctions.php"; - -# Start the autoloader, so that extensions can derive classes from core files -require_once "$IP/includes/AutoLoader.php"; - -# Load up some global defines. -require_once "$IP/includes/Defines.php"; - -# Start the profiler -$wgProfiler = []; -if ( file_exists( "$IP/StartProfiler.php" ) ) { - require "$IP/StartProfiler.php"; -} - -# Load default settings -require_once "$IP/includes/DefaultSettings.php"; - -# Load global functions -require_once "$IP/includes/GlobalFunctions.php"; - -# Load composer's autoloader if present -if ( is_readable( "$IP/vendor/autoload.php" ) ) { - require_once "$IP/vendor/autoload.php"; -} +require_once "$IP/includes/PreConfigSetup.php"; # Assert that composer dependencies were successfully loaded # Purposely no leading \ due to it breaking HHVM RepoAuthorative mode diff --git a/includes/WikiMap.php b/includes/WikiMap.php index 6a532e5da5..4f3c461699 100644 --- a/includes/WikiMap.php +++ b/includes/WikiMap.php @@ -20,8 +20,10 @@ * @file */ +use MediaWiki\MediaWikiServices; + /** - * Helper tools for dealing with other wikis. + * Helper tools for dealing with other locally-hosted wikis. */ class WikiMap { @@ -81,7 +83,7 @@ class WikiMap { * @return WikiReference|null WikiReference object or null if the wiki was not found */ private static function getWikiWikiReferenceFromSites( $wikiID ) { - $siteLookup = \MediaWiki\MediaWikiServices::getInstance()->getSiteLookup(); + $siteLookup = MediaWikiServices::getInstance()->getSiteLookup(); $site = $siteLookup->getSite( $wikiID ); if ( !$site instanceof MediaWikiSite ) { @@ -174,4 +176,67 @@ class WikiMap { return false; } + + /** + * Get canonical server info for all local wikis in the map that have one + * + * @return array Map of (local wiki ID => map of (url,parts)) + * @since 1.30 + */ + public static function getCanonicalServerInfoForAllWikis() { + $cache = MediaWikiServices::getInstance()->getLocalServerObjectCache(); + + return $cache->getWithSetCallback( + $cache->makeGlobalKey( 'wikimap', 'canonical-urls' ), + $cache::TTL_DAY, + function () { + global $wgLocalDatabases, $wgCanonicalServer; + + $infoMap = []; + // Make sure at least the current wiki is set, for simple configurations. + // This also makes it the first in the map, which is useful for common cases. + $infoMap[wfWikiID()] = [ + 'url' => $wgCanonicalServer, + 'parts' => wfParseUrl( $wgCanonicalServer ) + ]; + + foreach ( $wgLocalDatabases as $wikiId ) { + $wikiReference = self::getWiki( $wikiId ); + if ( $wikiReference ) { + $url = $wikiReference->getCanonicalServer(); + $infoMap[$wikiId] = [ 'url' => $url, 'parts' => wfParseUrl( $url ) ]; + } + } + + return $infoMap; + } + ); + } + + /** + * @param string $url + * @return bool|string Wiki ID or false + * @since 1.30 + */ + public static function getWikiFromUrl( $url ) { + $urlPartsCheck = wfParseUrl( $url ); + if ( $urlPartsCheck === false ) { + return false; + } + + $urlPartsCheck = array_intersect_key( $urlPartsCheck, [ 'host' => 1, 'port' => 1 ] ); + foreach ( self::getCanonicalServerInfoForAllWikis() as $wikiId => $info ) { + $urlParts = $info['parts']; + if ( $urlParts === false ) { + continue; // sanity + } + + $urlParts = array_intersect_key( $urlParts, [ 'host' => 1, 'port' => 1 ] ); + if ( $urlParts == $urlPartsCheck ) { + return $wikiId; + } + } + + return false; + } } diff --git a/includes/actions/CreditsAction.php b/includes/actions/CreditsAction.php index 021f426ee3..7025477803 100644 --- a/includes/actions/CreditsAction.php +++ b/includes/actions/CreditsAction.php @@ -131,7 +131,7 @@ class CreditsAction extends FormlessAction { $anon_ips = []; # Sift for real versus user names - /** @var $user User */ + /** @var User $user */ foreach ( $contributors as $user ) { $cnt--; if ( $user->isLoggedIn() ) { diff --git a/includes/actions/InfoAction.php b/includes/actions/InfoAction.php index 68dda37b6d..d3ba0aa49c 100644 --- a/includes/actions/InfoAction.php +++ b/includes/actions/InfoAction.php @@ -848,7 +848,7 @@ class InfoAction extends FormlessAction { $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); # Sift for real versus user names - /** @var $user User */ + /** @var User $user */ foreach ( $contributors as $user ) { $page = $user->isAnon() ? SpecialPage::getTitleFor( 'Contributions', $user->getName() ) diff --git a/includes/api/ApiBase.php b/includes/api/ApiBase.php index 2012e7d8cf..80aeff5478 100644 --- a/includes/api/ApiBase.php +++ b/includes/api/ApiBase.php @@ -204,6 +204,19 @@ abstract class ApiBase extends ContextSource { */ const PARAM_DEPRECATED_VALUES = 20; + /** + * (integer) Maximum number of values, for normal users. Must be used with PARAM_ISMULTI. + * @since 1.30 + */ + const PARAM_ISMULTI_LIMIT1 = 21; + + /** + * (integer) Maximum number of values, for users with the apihighimits right. + * Must be used with PARAM_ISMULTI. + * @since 1.30 + */ + const PARAM_ISMULTI_LIMIT2 = 22; + /**@}*/ const ALL_DEFAULT_STRING = '*'; @@ -1024,6 +1037,12 @@ abstract class ApiBase extends ContextSource { $multi = isset( $paramSettings[self::PARAM_ISMULTI] ) ? $paramSettings[self::PARAM_ISMULTI] : false; + $multiLimit1 = isset( $paramSettings[self::PARAM_ISMULTI_LIMIT1] ) + ? $paramSettings[self::PARAM_ISMULTI_LIMIT1] + : null; + $multiLimit2 = isset( $paramSettings[self::PARAM_ISMULTI_LIMIT2] ) + ? $paramSettings[self::PARAM_ISMULTI_LIMIT2] + : null; $type = isset( $paramSettings[self::PARAM_TYPE] ) ? $paramSettings[self::PARAM_TYPE] : null; @@ -1148,7 +1167,9 @@ abstract class ApiBase extends ContextSource { $value, $multi, is_array( $type ) ? $type : null, - $allowAll ? $allSpecifier : null + $allowAll ? $allSpecifier : null, + $multiLimit1, + $multiLimit2 ); } @@ -1350,21 +1371,25 @@ abstract class ApiBase extends ContextSource { * null, all values are accepted. * @param string|null $allSpecifier String to use to specify all allowed values, or null * if this behavior should not be allowed + * @param int|null $limit1 Maximum number of values, for normal users. + * @param int|null $limit2 Maximum number of values, for users with the apihighlimits right. * @return string|string[] (allowMultiple ? an_array_of_values : a_single_value) */ protected function parseMultiValue( $valueName, $value, $allowMultiple, $allowedValues, - $allSpecifier = null + $allSpecifier = null, $limit1 = null, $limit2 = null ) { if ( ( trim( $value ) === '' || trim( $value ) === "\x1f" ) && $allowMultiple ) { return []; } + $limit1 = $limit1 ?: self::LIMIT_SML1; + $limit2 = $limit2 ?: self::LIMIT_SML2; // This is a bit awkward, but we want to avoid calling canApiHighLimits() // because it unstubs $wgUser - $valuesList = $this->explodeMultiValue( $value, self::LIMIT_SML2 + 1 ); - $sizeLimit = count( $valuesList ) > self::LIMIT_SML1 && $this->mMainModule->canApiHighLimits() - ? self::LIMIT_SML2 - : self::LIMIT_SML1; + $valuesList = $this->explodeMultiValue( $value, $limit2 + 1 ); + $sizeLimit = count( $valuesList ) > $limit1 && $this->mMainModule->canApiHighLimits() + ? $limit2 + : $limit1; if ( $allowMultiple && is_array( $allowedValues ) && $allSpecifier && count( $valuesList ) === 1 && $valuesList[0] === $allSpecifier diff --git a/includes/api/ApiEditPage.php b/includes/api/ApiEditPage.php index 2245195cb0..4360b4d782 100644 --- a/includes/api/ApiEditPage.php +++ b/includes/api/ApiEditPage.php @@ -62,7 +62,7 @@ class ApiEditPage extends ApiBase { $redirValues = []; - /** @var $newTitle Title */ + /** @var Title $newTitle */ foreach ( $titles as $id => $newTitle ) { if ( !isset( $titles[$id - 1] ) ) { $titles[$id - 1] = $oldTitle; @@ -359,7 +359,7 @@ class ApiEditPage extends ApiBase { $articleContext->setWikiPage( $pageObj ); $articleContext->setUser( $this->getUser() ); - /** @var $articleObject Article */ + /** @var Article $articleObject */ $articleObject = Article::newFromWikiPage( $pageObj, $articleContext ); $ep = new EditPage( $articleObject ); diff --git a/includes/api/ApiHelp.php b/includes/api/ApiHelp.php index 12e778bfb6..318555a93b 100644 --- a/includes/api/ApiHelp.php +++ b/includes/api/ApiHelp.php @@ -485,7 +485,9 @@ class ApiHelp extends ApiBase { $type = $settings[ApiBase::PARAM_TYPE]; $multi = !empty( $settings[ApiBase::PARAM_ISMULTI] ); $hintPipeSeparated = true; - $count = ApiBase::LIMIT_SML2 + 1; + $count = !empty( $settings[ApiBase::PARAM_ISMULTI_LIMIT2] ) + ? $settings[ApiBase::PARAM_ISMULTI_LIMIT2] + 1 + : ApiBase::LIMIT_SML2 + 1; if ( is_array( $type ) ) { $count = count( $type ); @@ -669,13 +671,25 @@ class ApiHelp extends ApiBase { if ( $multi ) { $extra = []; + $lowcount = !empty( $settings[ApiBase::PARAM_ISMULTI_LIMIT1] ) + ? $settings[ApiBase::PARAM_ISMULTI_LIMIT1] + : ApiBase::LIMIT_SML1; + $highcount = !empty( $settings[ApiBase::PARAM_ISMULTI_LIMIT2] ) + ? $settings[ApiBase::PARAM_ISMULTI_LIMIT2] + : ApiBase::LIMIT_SML2; + if ( $hintPipeSeparated ) { $extra[] = $context->msg( 'api-help-param-multi-separate' )->parse(); } - if ( $count > ApiBase::LIMIT_SML1 ) { - $extra[] = $context->msg( 'api-help-param-multi-max' ) - ->numParams( ApiBase::LIMIT_SML1, ApiBase::LIMIT_SML2 ) - ->parse(); + if ( $count > $lowcount ) { + if ( $lowcount === $highcount ) { + $msg = $context->msg( 'api-help-param-multi-max-simple' ) + ->numParams( $lowcount ); + } else { + $msg = $context->msg( 'api-help-param-multi-max' ) + ->numParams( $lowcount, $highcount ); + } + $extra[] = $msg->parse(); } if ( $extra ) { $info[] = implode( ' ', $extra ); diff --git a/includes/api/ApiMove.php b/includes/api/ApiMove.php index 1fb034f85f..e7b280803e 100644 --- a/includes/api/ApiMove.php +++ b/includes/api/ApiMove.php @@ -59,7 +59,7 @@ class ApiMove extends ApiBase { if ( !$toTitle || $toTitle->isExternal() ) { $this->dieWithError( [ 'apierror-invalidtitle', wfEscapeWikiText( $params['to'] ) ] ); } - $toTalk = $toTitle->canTalk() ? $toTitle->getTalkPage() : null; + $toTalk = $toTitle->getTalkPageIfDefined(); if ( $toTitle->getNamespace() == NS_FILE && !RepoGroup::singleton()->getLocalRepo()->findFile( $toTitle ) diff --git a/includes/api/ApiParamInfo.php b/includes/api/ApiParamInfo.php index 17b00933a1..2fa20a96ea 100644 --- a/includes/api/ApiParamInfo.php +++ b/includes/api/ApiParamInfo.php @@ -163,7 +163,7 @@ class ApiParamInfo extends ApiBase { /** * List all submodules of a module * @param ApiBase $module - * @param boolean $recursive + * @param bool $recursive * @return string[] */ private function listAllSubmodules( ApiBase $module, $recursive ) { @@ -371,11 +371,15 @@ class ApiParamInfo extends ApiBase { $item['multi'] = !empty( $settings[ApiBase::PARAM_ISMULTI] ); if ( $item['multi'] ) { - $item['limit'] = $this->getMain()->canApiHighLimits() ? - ApiBase::LIMIT_SML2 : - ApiBase::LIMIT_SML1; - $item['lowlimit'] = ApiBase::LIMIT_SML1; - $item['highlimit'] = ApiBase::LIMIT_SML2; + $item['lowlimit'] = !empty( $settings[ApiBase::PARAM_ISMULTI_LIMIT1] ) + ? $settings[ApiBase::PARAM_ISMULTI_LIMIT1] + : ApiBase::LIMIT_SML1; + $item['highlimit'] = !empty( $settings[ApiBase::PARAM_ISMULTI_LIMIT2] ) + ? $settings[ApiBase::PARAM_ISMULTI_LIMIT2] + : ApiBase::LIMIT_SML2; + $item['limit'] = $this->getMain()->canApiHighLimits() + ? $item['highlimit'] + : $item['lowlimit']; } if ( !empty( $settings[ApiBase::PARAM_ALLOW_DUPLICATES] ) ) { diff --git a/includes/api/ApiQuery.php b/includes/api/ApiQuery.php index e6f3fc45f7..987bb99289 100644 --- a/includes/api/ApiQuery.php +++ b/includes/api/ApiQuery.php @@ -245,7 +245,7 @@ class ApiQuery extends ApiBase { $cacheMode = $this->mPageSet->getCacheMode(); // Execute all unfinished modules - /** @var $module ApiQueryBase */ + /** @var ApiQueryBase $module */ foreach ( $modules as $module ) { $params = $module->extractRequestParams(); $cacheMode = $this->mergeCacheMode( @@ -381,7 +381,7 @@ class ApiQuery extends ApiBase { ]; } // Report special pages - /** @var $title Title */ + /** @var Title $title */ foreach ( $pageSet->getSpecialTitles() as $fakeId => $title ) { $vals = []; ApiQueryBase::addTitleInfo( $vals, $title ); @@ -434,7 +434,7 @@ class ApiQuery extends ApiBase { $titles = $pageSet->getGoodTitles(); if ( count( $titles ) ) { $user = $this->getUser(); - /** @var $title Title */ + /** @var Title $title */ foreach ( $titles as $title ) { if ( $title->userCan( 'read', $user ) ) { $exportTitles[] = $title; diff --git a/includes/api/ApiQueryAllUsers.php b/includes/api/ApiQueryAllUsers.php index fd95e1785a..d594ad44a0 100644 --- a/includes/api/ApiQueryAllUsers.php +++ b/includes/api/ApiQueryAllUsers.php @@ -49,6 +49,7 @@ class ApiQueryAllUsers extends ApiQueryBase { $activeUserDays = $this->getConfig()->get( 'ActiveUserDays' ); $db = $this->getDB(); + $commentStore = new CommentStore( 'ipb_reason' ); $prop = $params['prop']; if ( !is_null( $prop ) ) { @@ -263,7 +264,7 @@ class ApiQueryAllUsers extends ApiQueryBase { $data['blockedby'] = $row->ipb_by_text; $data['blockedbyid'] = (int)$row->ipb_by; $data['blockedtimestamp'] = wfTimestamp( TS_ISO_8601, $row->ipb_timestamp ); - $data['blockreason'] = $row->ipb_reason; + $data['blockreason'] = $commentStore->getComment( $row )->text; $data['blockexpiry'] = $row->ipb_expiry; } if ( $row->ipb_deleted ) { diff --git a/includes/api/ApiQueryBacklinks.php b/includes/api/ApiQueryBacklinks.php index 56cbaac3c1..54be254d59 100644 --- a/includes/api/ApiQueryBacklinks.php +++ b/includes/api/ApiQueryBacklinks.php @@ -228,7 +228,7 @@ class ApiQueryBacklinks extends ApiQueryGeneratorBase { $titleWhere = []; $allRedirNs = []; $allRedirDBkey = []; - /** @var $t Title */ + /** @var Title $t */ foreach ( $this->redirTitles as $t ) { $redirNs = $t->getNamespace(); $redirDBkey = $t->getDBkey(); diff --git a/includes/api/ApiQueryBase.php b/includes/api/ApiQueryBase.php index 44526e88b1..fe16134c7b 100644 --- a/includes/api/ApiQueryBase.php +++ b/includes/api/ApiQueryBase.php @@ -456,10 +456,13 @@ abstract class ApiQueryBase extends ApiBase { 'ipb_id', 'ipb_by', 'ipb_by_text', - 'ipb_reason', 'ipb_expiry', 'ipb_timestamp' ] ); + $commentQuery = CommentStore::newKey( 'ipb_reason' )->getJoin(); + $this->addTables( $commentQuery['tables'] ); + $this->addFields( $commentQuery['fields'] ); + $this->addJoinConds( $commentQuery['joins'] ); } // Don't show hidden names diff --git a/includes/api/ApiQueryBlocks.php b/includes/api/ApiQueryBlocks.php index 076a09efdf..698c13c53d 100644 --- a/includes/api/ApiQueryBlocks.php +++ b/includes/api/ApiQueryBlocks.php @@ -37,6 +37,7 @@ class ApiQueryBlocks extends ApiQueryBase { public function execute() { $db = $this->getDB(); + $commentStore = new CommentStore( 'ipb_reason' ); $params = $this->extractRequestParams(); $this->requireMaxOneParameter( $params, 'users', 'ip' ); @@ -61,12 +62,18 @@ class ApiQueryBlocks extends ApiQueryBase { $this->addFieldsIf( 'ipb_by_text', $fld_by ); $this->addFieldsIf( 'ipb_by', $fld_byid ); $this->addFieldsIf( 'ipb_expiry', $fld_expiry ); - $this->addFieldsIf( 'ipb_reason', $fld_reason ); $this->addFieldsIf( [ 'ipb_range_start', 'ipb_range_end' ], $fld_range ); $this->addFieldsIf( [ 'ipb_anon_only', 'ipb_create_account', 'ipb_enable_autoblock', 'ipb_block_email', 'ipb_deleted', 'ipb_allow_usertalk' ], $fld_flags ); + if ( $fld_reason ) { + $commentQuery = $commentStore->getJoin(); + $this->addTables( $commentQuery['tables'] ); + $this->addFields( $commentQuery['fields'] ); + $this->addJoinConds( $commentQuery['joins'] ); + } + $this->addOption( 'LIMIT', $params['limit'] + 1 ); $this->addTimestampWhereRange( 'ipb_timestamp', @@ -205,7 +212,7 @@ class ApiQueryBlocks extends ApiQueryBase { $block['expiry'] = ApiResult::formatExpiry( $row->ipb_expiry ); } if ( $fld_reason ) { - $block['reason'] = $row->ipb_reason; + $block['reason'] = $commentStore->getComment( $row )->text; } if ( $fld_range && !$row->ipb_auto ) { $block['rangestart'] = IP::formatHex( $row->ipb_range_start ); diff --git a/includes/api/ApiQueryCategoryInfo.php b/includes/api/ApiQueryCategoryInfo.php index 2a3bf38718..25e9b27499 100644 --- a/includes/api/ApiQueryCategoryInfo.php +++ b/includes/api/ApiQueryCategoryInfo.php @@ -47,7 +47,7 @@ class ApiQueryCategoryInfo extends ApiQueryBase { $titles = $this->getPageSet()->getGoodAndMissingTitles(); $cattitles = []; foreach ( $categories as $c ) { - /** @var $t Title */ + /** @var Title $t */ $t = $titles[$c]; $cattitles[$c] = $t->getDBkey(); } diff --git a/includes/api/ApiQueryDeletedrevs.php b/includes/api/ApiQueryDeletedrevs.php index b68a8682c5..5dd007b49a 100644 --- a/includes/api/ApiQueryDeletedrevs.php +++ b/includes/api/ApiQueryDeletedrevs.php @@ -44,6 +44,7 @@ class ApiQueryDeletedrevs extends ApiQueryBase { $user = $this->getUser(); $db = $this->getDB(); + $commentStore = new CommentStore( 'ar_comment' ); $params = $this->extractRequestParams( false ); $prop = array_flip( $params['prop'] ); $fld_parentid = isset( $prop['parentid'] ); @@ -115,11 +116,17 @@ class ApiQueryDeletedrevs extends ApiQueryBase { $this->addFieldsIf( 'ar_rev_id', $fld_revid ); $this->addFieldsIf( 'ar_user_text', $fld_user ); $this->addFieldsIf( 'ar_user', $fld_userid ); - $this->addFieldsIf( 'ar_comment', $fld_comment || $fld_parsedcomment ); $this->addFieldsIf( 'ar_minor_edit', $fld_minor ); $this->addFieldsIf( 'ar_len', $fld_len ); $this->addFieldsIf( 'ar_sha1', $fld_sha1 ); + if ( $fld_comment || $fld_parsedcomment ) { + $commentQuery = $commentStore->getJoin(); + $this->addTables( $commentQuery['tables'] ); + $this->addFields( $commentQuery['fields'] ); + $this->addJoinConds( $commentQuery['joins'] ); + } + if ( $fld_tags ) { $this->addTables( 'tag_summary' ); $this->addJoinConds( @@ -322,12 +329,13 @@ class ApiQueryDeletedrevs extends ApiQueryBase { $anyHidden = true; } if ( Revision::userCanBitfield( $row->ar_deleted, Revision::DELETED_COMMENT, $user ) ) { + $comment = $commentStore->getComment( $row )->text; if ( $fld_comment ) { - $rev['comment'] = $row->ar_comment; + $rev['comment'] = $comment; } if ( $fld_parsedcomment ) { $title = Title::makeTitle( $row->ar_namespace, $row->ar_title ); - $rev['parsedcomment'] = Linker::formatComment( $row->ar_comment, $title ); + $rev['parsedcomment'] = Linker::formatComment( $comment, $title ); } } } diff --git a/includes/api/ApiQueryDuplicateFiles.php b/includes/api/ApiQueryDuplicateFiles.php index 2ebd6de7d6..0eaeaece73 100644 --- a/includes/api/ApiQueryDuplicateFiles.php +++ b/includes/api/ApiQueryDuplicateFiles.php @@ -91,7 +91,7 @@ class ApiQueryDuplicateFiles extends ApiQueryGeneratorBase { $sha1s = []; foreach ( $files as $file ) { - /** @var $file File */ + /** @var File $file */ $sha1s[$file->getName()] = $file->getSha1(); } @@ -114,7 +114,7 @@ class ApiQueryDuplicateFiles extends ApiQueryGeneratorBase { if ( $params['dir'] == 'descending' ) { $dupFiles = array_reverse( $dupFiles ); } - /** @var $dupFile File */ + /** @var File $dupFile */ foreach ( $dupFiles as $dupFile ) { $dupName = $dupFile->getName(); if ( $image == $dupName && $dupFile->isLocal() ) { diff --git a/includes/api/ApiQueryFilearchive.php b/includes/api/ApiQueryFilearchive.php index 7383cba6cb..212b61340a 100644 --- a/includes/api/ApiQueryFilearchive.php +++ b/includes/api/ApiQueryFilearchive.php @@ -43,6 +43,7 @@ class ApiQueryFilearchive extends ApiQueryBase { $user = $this->getUser(); $db = $this->getDB(); + $commentStore = new CommentStore( 'fa_description' ); $params = $this->extractRequestParams(); @@ -66,13 +67,19 @@ class ApiQueryFilearchive extends ApiQueryBase { $this->addFieldsIf( 'fa_sha1', $fld_sha1 ); $this->addFieldsIf( [ 'fa_user', 'fa_user_text' ], $fld_user ); $this->addFieldsIf( [ 'fa_height', 'fa_width', 'fa_size' ], $fld_dimensions || $fld_size ); - $this->addFieldsIf( 'fa_description', $fld_description ); $this->addFieldsIf( [ 'fa_major_mime', 'fa_minor_mime' ], $fld_mime ); $this->addFieldsIf( 'fa_media_type', $fld_mediatype ); $this->addFieldsIf( 'fa_metadata', $fld_metadata ); $this->addFieldsIf( 'fa_bits', $fld_bitdepth ); $this->addFieldsIf( 'fa_archive_name', $fld_archivename ); + if ( $fld_description ) { + $commentQuery = $commentStore->getJoin(); + $this->addTables( $commentQuery['tables'] ); + $this->addFields( $commentQuery['fields'] ); + $this->addJoinConds( $commentQuery['joins'] ); + } + if ( !is_null( $params['continue'] ) ) { $cont = explode( '|', $params['continue'] ); $this->dieContinueUsageIf( count( $cont ) != 3 ); @@ -165,10 +172,10 @@ class ApiQueryFilearchive extends ApiQueryBase { if ( $fld_description && Revision::userCanBitfield( $row->fa_deleted, File::DELETED_COMMENT, $user ) ) { - $file['description'] = $row->fa_description; + $file['description'] = $commentStore->getComment( $row )->text; if ( isset( $prop['parseddescription'] ) ) { $file['parseddescription'] = Linker::formatComment( - $row->fa_description, $title ); + $file['description'], $title ); } } if ( $fld_user && diff --git a/includes/api/ApiQueryImageInfo.php b/includes/api/ApiQueryImageInfo.php index 7b0080eb23..b1df982da7 100644 --- a/includes/api/ApiQueryImageInfo.php +++ b/includes/api/ApiQueryImageInfo.php @@ -124,7 +124,7 @@ class ApiQueryImageInfo extends ApiQueryBase { } } - /** @var $img File */ + /** @var File $img */ $img = $images[$title]; if ( self::getTransformCount() >= self::TRANSFORM_LIMIT ) { @@ -199,7 +199,7 @@ class ApiQueryImageInfo extends ApiQueryBase { // Get one more to facilitate query-continue functionality $count = ( $gotOne ? 1 : 0 ); $oldies = $img->getHistory( $params['limit'] - $count + 1, $start, $params['end'] ); - /** @var $oldie File */ + /** @var File $oldie */ foreach ( $oldies as $oldie ) { if ( ++$count > $params['limit'] ) { // We've reached the extra one which shows that there are diff --git a/includes/api/ApiQueryInfo.php b/includes/api/ApiQueryInfo.php index ecdebd4dd9..bff19780f6 100644 --- a/includes/api/ApiQueryInfo.php +++ b/includes/api/ApiQueryInfo.php @@ -372,7 +372,7 @@ class ApiQueryInfo extends ApiQueryBase { $this->getDisplayTitle(); } - /** @var $title Title */ + /** @var Title $title */ foreach ( $this->everything as $pageid => $title ) { $pageInfo = $this->extractPageInfo( $pageid, $title ); $fit = $pageInfo !== null && $result->addValue( [ @@ -548,7 +548,7 @@ class ApiQueryInfo extends ApiQueryBase { $res = $this->select( __METHOD__ ); foreach ( $res as $row ) { - /** @var $title Title */ + /** @var Title $title */ $title = $this->titles[$row->pr_page]; $a = [ 'type' => $row->pr_type, @@ -688,7 +688,7 @@ class ApiQueryInfo extends ApiQueryBase { private function getTSIDs() { $getTitles = $this->talkids = $this->subjectids = []; - /** @var $t Title */ + /** @var Title $t */ foreach ( $this->everything as $t ) { if ( MWNamespace::isTalk( $t->getNamespace() ) ) { if ( $this->fld_subjectid ) { diff --git a/includes/api/ApiQueryLinks.php b/includes/api/ApiQueryLinks.php index 3639c06dbc..d29a763fe8 100644 --- a/includes/api/ApiQueryLinks.php +++ b/includes/api/ApiQueryLinks.php @@ -137,7 +137,7 @@ class ApiQueryLinks extends ApiQueryGeneratorBase { $order[] = $this->prefix . '_title' . $sort; $this->addOption( 'ORDER BY', $order ); - $this->addOption( 'USE INDEX', $this->prefix . '_from' ); + $this->addOption( 'USE INDEX', [ $this->table => 'PRIMARY' ] ); $this->addOption( 'LIMIT', $params['limit'] + 1 ); $res = $this->select( __METHOD__ ); diff --git a/includes/api/ApiQueryLogEvents.php b/includes/api/ApiQueryLogEvents.php index 3e8bccc74d..3066720d1c 100644 --- a/includes/api/ApiQueryLogEvents.php +++ b/includes/api/ApiQueryLogEvents.php @@ -31,6 +31,8 @@ */ class ApiQueryLogEvents extends ApiQueryBase { + private $commentStore; + public function __construct( ApiQuery $query, $moduleName ) { parent::__construct( $query, $moduleName, 'le' ); } @@ -43,6 +45,7 @@ class ApiQueryLogEvents extends ApiQueryBase { public function execute() { $params = $this->extractRequestParams(); $db = $this->getDB(); + $this->commentStore = new CommentStore( 'log_comment' ); $this->requireMaxOneParameter( $params, 'title', 'prefix', 'namespace' ); $prop = array_flip( $params['prop'] ); @@ -91,9 +94,15 @@ class ApiQueryLogEvents extends ApiQueryBase { [ 'log_namespace', 'log_title' ], $this->fld_title || $this->fld_parsedcomment ); - $this->addFieldsIf( 'log_comment', $this->fld_comment || $this->fld_parsedcomment ); $this->addFieldsIf( 'log_params', $this->fld_details ); + if ( $this->fld_comment || $this->fld_parsedcomment ) { + $commentQuery = $this->commentStore->getJoin(); + $this->addTables( $commentQuery['tables'] ); + $this->addFields( $commentQuery['fields'] ); + $this->addJoinConds( $commentQuery['joins'] ); + } + if ( $this->fld_tags ) { $this->addTables( 'tag_summary' ); $this->addJoinConds( [ 'tag_summary' => [ 'LEFT JOIN', 'log_id=ts_log_id' ] ] ); @@ -327,18 +336,19 @@ class ApiQueryLogEvents extends ApiQueryBase { $vals['timestamp'] = wfTimestamp( TS_ISO_8601, $row->log_timestamp ); } - if ( ( $this->fld_comment || $this->fld_parsedcomment ) && isset( $row->log_comment ) ) { + if ( $this->fld_comment || $this->fld_parsedcomment ) { if ( LogEventsList::isDeleted( $row, LogPage::DELETED_COMMENT ) ) { $vals['commenthidden'] = true; $anyHidden = true; } if ( LogEventsList::userCan( $row, LogPage::DELETED_COMMENT, $user ) ) { + $comment = $this->commentStore->getComment( $row )->text; if ( $this->fld_comment ) { - $vals['comment'] = $row->log_comment; + $vals['comment'] = $comment; } if ( $this->fld_parsedcomment ) { - $vals['parsedcomment'] = Linker::formatComment( $row->log_comment, $title ); + $vals['parsedcomment'] = Linker::formatComment( $comment, $title ); } } } diff --git a/includes/api/ApiQueryProtectedTitles.php b/includes/api/ApiQueryProtectedTitles.php index 5f6510ea28..b69a29967b 100644 --- a/includes/api/ApiQueryProtectedTitles.php +++ b/includes/api/ApiQueryProtectedTitles.php @@ -55,10 +55,17 @@ class ApiQueryProtectedTitles extends ApiQueryGeneratorBase { $prop = array_flip( $params['prop'] ); $this->addFieldsIf( 'pt_user', isset( $prop['user'] ) || isset( $prop['userid'] ) ); - $this->addFieldsIf( 'pt_reason', isset( $prop['comment'] ) || isset( $prop['parsedcomment'] ) ); $this->addFieldsIf( 'pt_expiry', isset( $prop['expiry'] ) ); $this->addFieldsIf( 'pt_create_perm', isset( $prop['level'] ) ); + if ( isset( $prop['comment'] ) || isset( $prop['parsedcomment'] ) ) { + $commentStore = new CommentStore( 'pt_reason' ); + $commentQuery = $commentStore->getJoin(); + $this->addTables( $commentQuery['tables'] ); + $this->addFields( $commentQuery['fields'] ); + $this->addJoinConds( $commentQuery['joins'] ); + } + $this->addTimestampWhereRange( 'pt_timestamp', $params['dir'], $params['start'], $params['end'] ); $this->addWhereFld( 'pt_namespace', $params['namespace'] ); $this->addWhereFld( 'pt_create_perm', $params['level'] ); @@ -127,11 +134,13 @@ class ApiQueryProtectedTitles extends ApiQueryGeneratorBase { } if ( isset( $prop['comment'] ) ) { - $vals['comment'] = $row->pt_reason; + $vals['comment'] = $commentStore->getComment( $row )->text; } if ( isset( $prop['parsedcomment'] ) ) { - $vals['parsedcomment'] = Linker::formatComment( $row->pt_reason, $title ); + $vals['parsedcomment'] = Linker::formatComment( + $commentStore->getComment( $row )->text, $titles + ); } if ( isset( $prop['expiry'] ) ) { diff --git a/includes/api/ApiQueryQueryPage.php b/includes/api/ApiQueryQueryPage.php index caa5f05743..46c2265501 100644 --- a/includes/api/ApiQueryQueryPage.php +++ b/includes/api/ApiQueryQueryPage.php @@ -59,7 +59,7 @@ class ApiQueryQueryPage extends ApiQueryGeneratorBase { $params = $this->extractRequestParams(); $result = $this->getResult(); - /** @var $qp QueryPage */ + /** @var QueryPage $qp */ $qp = new $this->qpMap[$params['page']](); if ( !$qp->userCanExecute( $this->getUser() ) ) { $this->dieWithError( 'apierror-specialpage-cantexecute' ); @@ -129,7 +129,7 @@ class ApiQueryQueryPage extends ApiQueryGeneratorBase { } public function getCacheMode( $params ) { - /** @var $qp QueryPage */ + /** @var QueryPage $qp */ $qp = new $this->qpMap[$params['page']](); if ( $qp->getRestriction() != '' ) { return 'private'; diff --git a/includes/api/ApiQueryRecentChanges.php b/includes/api/ApiQueryRecentChanges.php index 0dc01aabc2..9af4e3e4a2 100644 --- a/includes/api/ApiQueryRecentChanges.php +++ b/includes/api/ApiQueryRecentChanges.php @@ -36,6 +36,8 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase { parent::__construct( $query, $moduleName, 'rc' ); } + private $commentStore; + private $fld_comment = false, $fld_parsedcomment = false, $fld_user = false, $fld_userid = false, $fld_flags = false, $fld_timestamp = false, $fld_title = false, $fld_ids = false, $fld_sizes = false, $fld_redirect = false, $fld_patrolled = false, $fld_loginfo = false, @@ -274,7 +276,6 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase { /* Add fields to our query if they are specified as a needed parameter. */ $this->addFieldsIf( [ 'rc_this_oldid', 'rc_last_oldid' ], $this->fld_ids ); - $this->addFieldsIf( 'rc_comment', $this->fld_comment || $this->fld_parsedcomment ); $this->addFieldsIf( 'rc_user', $this->fld_user || $this->fld_userid ); $this->addFieldsIf( 'rc_user_text', $this->fld_user ); $this->addFieldsIf( [ 'rc_minor', 'rc_type', 'rc_bot' ], $this->fld_flags ); @@ -286,6 +287,14 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase { ); $showRedirects = $this->fld_redirect || isset( $show['redirect'] ) || isset( $show['!redirect'] ); + + if ( $this->fld_comment || $this->fld_parsedcomment ) { + $this->commentStore = new CommentStore( 'rc_comment' ); + $commentQuery = $this->commentStore->getJoin(); + $this->addTables( $commentQuery['tables'] ); + $this->addFields( $commentQuery['fields'] ); + $this->addJoinConds( $commentQuery['joins'] ); + } } $this->addFieldsIf( [ 'rc_this_oldid' ], $resultPageSet && $params['generaterevisions'] ); @@ -500,12 +509,13 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase { $anyHidden = true; } if ( Revision::userCanBitfield( $row->rc_deleted, Revision::DELETED_COMMENT, $user ) ) { - if ( $this->fld_comment && isset( $row->rc_comment ) ) { - $vals['comment'] = $row->rc_comment; + $comment = $this->commentStore->getComment( $row )->text; + if ( $this->fld_comment ) { + $vals['comment'] = $comment; } - if ( $this->fld_parsedcomment && isset( $row->rc_comment ) ) { - $vals['parsedcomment'] = Linker::formatComment( $row->rc_comment, $title ); + if ( $this->fld_parsedcomment ) { + $vals['parsedcomment'] = Linker::formatComment( $comment, $title ); } } } diff --git a/includes/api/ApiQueryRevisions.php b/includes/api/ApiQueryRevisions.php index a4f0315e9f..2dfa42a3a4 100644 --- a/includes/api/ApiQueryRevisions.php +++ b/includes/api/ApiQueryRevisions.php @@ -166,7 +166,7 @@ class ApiQueryRevisions extends ApiQueryRevisionsBase { // For each page we will request, the user must have read rights for that page $user = $this->getUser(); $status = Status::newGood(); - /** @var $title Title */ + /** @var Title $title */ foreach ( $pageSet->getGoodTitles() as $title ) { if ( !$title->userCan( 'read', $user ) ) { $status->fatal( ApiMessage::create( diff --git a/includes/api/ApiQueryUserContributions.php b/includes/api/ApiQueryUserContributions.php index 181cddbeda..bb0f335bcb 100644 --- a/includes/api/ApiQueryUserContributions.php +++ b/includes/api/ApiQueryUserContributions.php @@ -36,7 +36,7 @@ class ApiQueryContributions extends ApiQueryBase { } private $params, $prefixMode, $userprefix, $multiUserMode, $idMode, $usernames, $userids, - $parentLens; + $parentLens, $commentStore; private $fld_ids = false, $fld_title = false, $fld_timestamp = false, $fld_comment = false, $fld_parsedcomment = false, $fld_flags = false, $fld_patrolled = false, $fld_tags = false, $fld_size = false, $fld_sizediff = false; @@ -45,6 +45,8 @@ class ApiQueryContributions extends ApiQueryBase { // Parse some parameters $this->params = $this->extractRequestParams(); + $this->commentStore = new CommentStore( 'rev_comment' ); + $prop = array_flip( $this->params['prop'] ); $this->fld_ids = isset( $prop['ids'] ); $this->fld_title = isset( $prop['title'] ); @@ -341,12 +343,18 @@ class ApiQueryContributions extends ApiQueryBase { $this->addFieldsIf( 'rev_page', $this->fld_ids ); $this->addFieldsIf( 'page_latest', $this->fld_flags ); // $this->addFieldsIf( 'rev_text_id', $this->fld_ids ); // Should this field be exposed? - $this->addFieldsIf( 'rev_comment', $this->fld_comment || $this->fld_parsedcomment ); $this->addFieldsIf( 'rev_len', $this->fld_size || $this->fld_sizediff ); $this->addFieldsIf( 'rev_minor_edit', $this->fld_flags ); $this->addFieldsIf( 'rev_parent_id', $this->fld_flags || $this->fld_sizediff || $this->fld_ids ); $this->addFieldsIf( 'rc_patrolled', $this->fld_patrolled ); + if ( $this->fld_comment || $this->fld_parsedcomment ) { + $commentQuery = $this->commentStore->getJoin(); + $this->addTables( $commentQuery['tables'] ); + $this->addFields( $commentQuery['fields'] ); + $this->addJoinConds( $commentQuery['joins'] ); + } + if ( $this->fld_tags ) { $this->addTables( 'tag_summary' ); $this->addJoinConds( @@ -416,7 +424,7 @@ class ApiQueryContributions extends ApiQueryBase { $vals['top'] = $row->page_latest == $row->rev_id; } - if ( ( $this->fld_comment || $this->fld_parsedcomment ) && isset( $row->rev_comment ) ) { + if ( $this->fld_comment || $this->fld_parsedcomment ) { if ( $row->rev_deleted & Revision::DELETED_COMMENT ) { $vals['commenthidden'] = true; $anyHidden = true; @@ -428,12 +436,13 @@ class ApiQueryContributions extends ApiQueryBase { ); if ( $userCanView ) { + $comment = $this->commentStore->getComment( $row )->text; if ( $this->fld_comment ) { - $vals['comment'] = $row->rev_comment; + $vals['comment'] = $comment; } if ( $this->fld_parsedcomment ) { - $vals['parsedcomment'] = Linker::formatComment( $row->rev_comment, $title ); + $vals['parsedcomment'] = Linker::formatComment( $comment, $title ); } } } diff --git a/includes/api/ApiQueryUsers.php b/includes/api/ApiQueryUsers.php index 2a0eaddfb6..fbf1f9ebfb 100644 --- a/includes/api/ApiQueryUsers.php +++ b/includes/api/ApiQueryUsers.php @@ -99,6 +99,7 @@ class ApiQueryUsers extends ApiQueryBase { public function execute() { $db = $this->getDB(); + $commentStore = new CommentStore( 'ipb_reason' ); $params = $this->extractRequestParams(); $this->requireMaxOneParameter( $params, 'userids', 'users' ); @@ -236,7 +237,7 @@ class ApiQueryUsers extends ApiQueryBase { $data[$key]['blockedby'] = $row->ipb_by_text; $data[$key]['blockedbyid'] = (int)$row->ipb_by; $data[$key]['blockedtimestamp'] = wfTimestamp( TS_ISO_8601, $row->ipb_timestamp ); - $data[$key]['blockreason'] = $row->ipb_reason; + $data[$key]['blockreason'] = $commentStore->getComment( $row )->text; $data[$key]['blockexpiry'] = $row->ipb_expiry; } diff --git a/includes/api/ApiQueryWatchlist.php b/includes/api/ApiQueryWatchlist.php index 9883480500..2ab85240d8 100644 --- a/includes/api/ApiQueryWatchlist.php +++ b/includes/api/ApiQueryWatchlist.php @@ -34,6 +34,8 @@ use MediaWiki\MediaWikiServices; */ class ApiQueryWatchlist extends ApiQueryGeneratorBase { + private $commentStore; + public function __construct( ApiQuery $query, $moduleName ) { parent::__construct( $query, $moduleName, 'wl' ); } @@ -85,6 +87,10 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase { $this->dieWithError( 'apierror-permissiondenied-patrolflag', 'patrol' ); } } + + if ( $this->fld_comment || $this->fld_parsedcomment ) { + $this->commentStore = new CommentStore( 'rc_comment' ); + } } $options = [ @@ -353,12 +359,13 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase { Revision::DELETED_COMMENT, $user ) ) { - if ( $this->fld_comment && isset( $recentChangeInfo['rc_comment'] ) ) { - $vals['comment'] = $recentChangeInfo['rc_comment']; + $comment = $this->commentStore->getComment( $recentChangeInfo )->text; + if ( $this->fld_comment ) { + $vals['comment'] = $comment; } - if ( $this->fld_parsedcomment && isset( $recentChangeInfo['rc_comment'] ) ) { - $vals['parsedcomment'] = Linker::formatComment( $recentChangeInfo['rc_comment'], $title ); + if ( $this->fld_parsedcomment ) { + $vals['parsedcomment'] = Linker::formatComment( $comment, $title ); } } } diff --git a/includes/api/ApiSetNotificationTimestamp.php b/includes/api/ApiSetNotificationTimestamp.php index 663416e69e..b6a0a7838e 100644 --- a/includes/api/ApiSetNotificationTimestamp.php +++ b/includes/api/ApiSetNotificationTimestamp.php @@ -150,7 +150,7 @@ class ApiSetNotificationTimestamp extends ApiBase { ); // Now, put the valid titles into the result - /** @var $title Title */ + /** @var Title $title */ foreach ( $pageSet->getTitles() as $title ) { $ns = $title->getNamespace(); $dbkey = $title->getDBkey(); diff --git a/includes/api/ApiUpload.php b/includes/api/ApiUpload.php index a283b5a215..cfe1968938 100644 --- a/includes/api/ApiUpload.php +++ b/includes/api/ApiUpload.php @@ -71,7 +71,7 @@ class ApiUpload extends ApiBase { $this->checkPermissions( $user ); // Fetch the file (usually a no-op) - /** @var $status Status */ + /** @var Status $status */ $status = $this->mUpload->fetchFile(); if ( !$status->isGood() ) { $this->dieStatus( $status ); @@ -772,7 +772,7 @@ class ApiUpload extends ApiBase { $this->mParams['text'] = $this->mParams['comment']; } - /** @var $file LocalFile */ + /** @var LocalFile $file */ $file = $this->mUpload->getLocalFile(); // For preferences mode, we want to watch if 'watchdefault' is set, @@ -829,7 +829,7 @@ class ApiUpload extends ApiBase { $result['result'] = 'Poll'; $result['stage'] = 'queued'; } else { - /** @var $status Status */ + /** @var Status $status */ $status = $this->mUpload->performUpload( $this->mParams['comment'], $this->mParams['text'], $watch, $this->getUser(), $this->mParams['tags'] ); diff --git a/includes/api/i18n/de.json b/includes/api/i18n/de.json index 8a2fd5ff38..a4738934e1 100644 --- a/includes/api/i18n/de.json +++ b/includes/api/i18n/de.json @@ -1012,7 +1012,7 @@ "api-help-datatypes-header": "Datentypen", "api-help-param-type-limit": "Typ: Ganzzahl oder max", "api-help-param-type-integer": "Typ: {{PLURAL:$1|1=Ganzzahl|2=Liste von Ganzzahlen}}", - "api-help-param-type-boolean": "Typ: boolisch ([[Special:ApiHelp/main#main/datatypes|Einzelheiten]])", + "api-help-param-type-boolean": "Typ: boolesch ([[Special:ApiHelp/main#main/datatypes|Einzelheiten]])", "api-help-param-type-timestamp": "Typ: {{PLURAL:$1|1=Zeitstempel|2=Liste von Zeitstempeln}} ([[Special:ApiHelp/main#main/datatypes|erlaubte Formate]])", "api-help-param-type-user": "Typ: {{PLURAL:$1|1=Benutzername|2=Liste von Benutzernamen}}", "api-help-param-list": "{{PLURAL:$1|1=Einer der folgenden Werte|2=Werte (mit {{!}} trennen oder [[Special:ApiHelp/main#main/datatypes|Alternative]])}}: $2", @@ -1025,6 +1025,7 @@ "api-help-param-upload": "Muss als Dateiupload mithilfe eines multipart/form-data-Formular bereitgestellt werden.", "api-help-param-multi-separate": "Werte mit | trennen oder [[Special:ApiHelp/main#main/datatypes|Alternative]].", "api-help-param-multi-max": "Maximale Anzahl der Werte ist {{PLURAL:$1|$1}} ({{PLURAL:$2|$2}} für Bots).", + "api-help-param-multi-max-simple": "Die maximale Anzahl der Werte ist {{PLURAL:$1|$1}}.", "api-help-param-multi-all": "Um alle Werte anzugeben, verwende $1.", "api-help-param-default": "Standard: $1", "api-help-param-default-empty": "Standard: (leer)", diff --git a/includes/api/i18n/en.json b/includes/api/i18n/en.json index 3d4a100419..9fbc0127fe 100644 --- a/includes/api/i18n/en.json +++ b/includes/api/i18n/en.json @@ -1593,6 +1593,7 @@ "api-help-param-upload": "Must be posted as a file upload using multipart/form-data.", "api-help-param-multi-separate": "Separate values with | or [[Special:ApiHelp/main#main/datatypes|alternative]].", "api-help-param-multi-max": "Maximum number of values is {{PLURAL:$1|$1}} ({{PLURAL:$2|$2}} for bots).", + "api-help-param-multi-max-simple": "Maximum number of values is {{PLURAL:$1|$1}}.", "api-help-param-multi-all": "To specify all values, use $1.", "api-help-param-default": "Default: $1", "api-help-param-default-empty": "Default: (empty)", diff --git a/includes/api/i18n/es.json b/includes/api/i18n/es.json index 6272f4e381..9b6b81ddb3 100644 --- a/includes/api/i18n/es.json +++ b/includes/api/i18n/es.json @@ -170,7 +170,7 @@ "apihelp-expandtemplates-param-generatexml": "Generar un árbol de análisis XML (remplazado por $1prop=parsetree).", "apihelp-expandtemplates-example-simple": "Expandir el wikitexto {{Project:Sandbox}}.", "apihelp-feedcontributions-summary": "Devuelve el canal de contribuciones de un usuario.", - "apihelp-feedcontributions-param-feedformat": "El formato del canal.", + "apihelp-feedcontributions-param-feedformat": "El formato del suministro.", "apihelp-feedcontributions-param-user": "De qué usuarios recibir contribuciones.", "apihelp-feedcontributions-param-namespace": "Espacio de nombre para filtrar las contribuciones.", "apihelp-feedcontributions-param-year": "A partir del año (y anteriores).", @@ -183,7 +183,7 @@ "apihelp-feedcontributions-param-showsizediff": "Mostrar la diferencia de tamaño entre revisiones.", "apihelp-feedcontributions-example-simple": "Devolver las contribuciones del usuario Example.", "apihelp-feedrecentchanges-summary": "Devuelve un canal de cambios recientes.", - "apihelp-feedrecentchanges-param-feedformat": "El formato del canal.", + "apihelp-feedrecentchanges-param-feedformat": "El formato del suministro.", "apihelp-feedrecentchanges-param-namespace": "Espacio de nombres al cual limitar los resultados.", "apihelp-feedrecentchanges-param-invert": "Todos los espacios de nombres menos el que está seleccionado.", "apihelp-feedrecentchanges-param-associated": "Incluir el espacio de nombres asociado (discusión o principal).", @@ -205,7 +205,7 @@ "apihelp-feedrecentchanges-example-simple": "Mostrar los cambios recientes.", "apihelp-feedrecentchanges-example-30days": "Mostrar los cambios recientes limitados a 30 días.", "apihelp-feedwatchlist-summary": "Devuelve el canal de una lista de seguimiento.", - "apihelp-feedwatchlist-param-feedformat": "El formato del canal.", + "apihelp-feedwatchlist-param-feedformat": "El formato del suministro.", "apihelp-feedwatchlist-param-hours": "Listar las páginas modificadas desde estas horas hasta ahora.", "apihelp-feedwatchlist-param-linktosections": "Enlazar directamente a las secciones cambiadas de ser posible.", "apihelp-feedwatchlist-example-default": "Mostrar el canal de la lista de seguimiento.", @@ -1048,7 +1048,7 @@ "apihelp-query+revisions+base-param-section": "Recuperar solamente el contenido de este número de sección.", "apihelp-query+revisions+base-param-contentformat": "Formato de serialización utilizado para $1difftotext y esperado para la salida de contenido.", "apihelp-query+search-summary": "Realizar una búsqueda de texto completa.", - "apihelp-query+search-param-namespace": "Buscar sólo en estos espacios de nombres.", + "apihelp-query+search-param-namespace": "Buscar solo en estos espacios de nombres.", "apihelp-query+search-param-what": "Tipo de búsqueda que realizar.", "apihelp-query+search-param-info": "Qué metadatos devolver.", "apihelp-query+search-param-prop": "Qué propiedades se devolverán:", @@ -1227,7 +1227,7 @@ "apihelp-query+watchlistraw-param-limit": "Número de resultados que devolver en cada petición.", "apihelp-query+watchlistraw-param-prop": "Qué propiedades adicionales se obtendrán:", "apihelp-query+watchlistraw-paramvalue-prop-changed": "Añade la marca de tiempo de la última notificación al usuario sobre la edición.", - "apihelp-query+watchlistraw-param-show": "Sólo listar los elementos que cumplen estos criterios.", + "apihelp-query+watchlistraw-param-show": "Mostrar solo los elementos que cumplen con estos criterios.", "apihelp-query+watchlistraw-param-owner": "Utilizado junto con $1token para acceder a la lista de seguimiento de otro usuario.", "apihelp-query+watchlistraw-param-dir": "La dirección en la que se listará.", "apihelp-query+watchlistraw-param-fromtitle": "Título (con el prefijo de espacio de nombres) desde el que se empezará a enumerar.", diff --git a/includes/api/i18n/eu.json b/includes/api/i18n/eu.json index 1e03f5d43e..9a16e81789 100644 --- a/includes/api/i18n/eu.json +++ b/includes/api/i18n/eu.json @@ -4,34 +4,91 @@ "Subi", "Sator", "An13sa", - "Gorkaazk" + "Gorkaazk", + "Mikel Ibaiba" ] }, "apihelp-main-param-action": "Zein ekintza burutuko da.", "apihelp-main-param-format": "Irteerako formatua.", + "apihelp-main-param-assertuser": "Egiaztatu erabiltzaile hau izendatutakoa dela.", + "apihelp-main-param-requestid": "Hemen emandako edozein balio erantzunean kontuan hartuko da. Eskaerak ezberdintzeko erabili ahalko da.", + "apihelp-main-param-curtimestamp": "Emaitzan oraingo denbora-zigilua jarri.", "apihelp-block-summary": "Blokeatu erabiltzaile bat.", + "apihelp-block-param-userid": "Erabiltzaile IDa blokeatzear. Ezin da honekin batera erabili: $1user.", "apihelp-block-param-reason": "Blokeatzeko arrazoia.", + "apihelp-block-param-anononly": "Erabiltzaile ezezagunak bakarrik blokeatu (adb. IP helbide honetarako ezezagunen aldaketak ezgaitu).", + "apihelp-block-param-nocreate": "Saihestu kontuak sortzea.", + "apihelp-block-param-reblock": "Erabiltzailea honezkero blokeatuta badago, lehendik dagoen blokea gainidatzi.", + "apihelp-block-param-watchuser": "Ikusi erabiltzaile edo IP helbidearen erabiltzaileak eta mintzamen orriak.", + "apihelp-checktoken-param-token": "Testatzeko hartuta.", + "apihelp-compare-summary": "Bi orrien arteko ezberdintasuna jaso.", + "apihelp-compare-param-fromtitle": "Aldaratzeko lehenengo izenburua", + "apihelp-compare-param-fromid": "Aldaratzeko lehenengo orri IDa", + "apihelp-compare-param-fromrev": "Lehenengo berrikusketa aldaratzeko", + "apihelp-compare-param-totitle": "Aldaratzeko bigarren izenburua.", + "apihelp-compare-param-toid": "Aldaratzeko bigarren orri IDa.", + "apihelp-compare-param-torev": "Aldaratzeko bigarren berrikusketa.", + "apihelp-compare-param-prop": "Hartu beharreko informazio zatiak.", + "apihelp-compare-paramvalue-prop-diff": "HTML diff-a", + "apihelp-compare-paramvalue-prop-diffsize": "HTML diff-aren tamainia, byte-tan", + "apihelp-compare-example-1": "1. eta 2. berrikusketen arteko \"diff\"-a sortu.", "apihelp-createaccount-summary": "Erabiltzaile kontu berria sortu.", "apihelp-createaccount-param-name": "Erabiltzaile izena.", + "apihelp-createaccount-param-domain": "Kanpoko autentifikaziorako domeinua (aukerakoa).", + "apihelp-createaccount-param-token": "Lehenengo eskaeran lortutako kontu sorrera token-a.", "apihelp-createaccount-param-email": "Erabiltzailearen helbide elektronikoa (aukerakoa).", "apihelp-createaccount-param-realname": "Erabiltzailearen benetako izena (aukerakoa).", + "apihelp-createaccount-param-mailpassword": "Edozein baliorako jarriz, erabiltzaileari mezu elektroniko baten bitartez ausazko pasahitza bidaliko zaio.", + "apihelp-createaccount-param-language": "Erabiltzailearentzako lehenetsiko den hizkuntza kodea (aukerakoa, edukien hizkuntza lehenetsia).", "apihelp-delete-summary": "Orrialde bat ezabatu.", + "apihelp-delete-param-title": "Ezabatzeko orri izenburua. Hurrengoarekin batera ezin da erabili: $1pageid.", + "apihelp-delete-param-pageid": "Ezabatzeko orri edo ID orria. Hurrengoarekin batera ezin da erabili: $1title.", + "apihelp-delete-param-reason": "Ezabatzeko arrazoia. Ezartzen ez bada, automatikoki sortutako arrazoi bat erabiliko da.", + "apihelp-delete-param-watch": "Orria erabiltzaile honen ikus-zerrendan sartu.", + "apihelp-delete-param-unwatch": "Erabiltzailearen oraingo ikus-zerrendatik orria kendu.", "apihelp-delete-example-simple": "Ezabatu Main Page.", + "apihelp-delete-example-reason": "Ezabatu Orri Nagusia arrazoiarekin hurrengoa mugitzeko prestatuz:.", "apihelp-disabled-summary": "Modulu hau ezgaitu da.", "apihelp-edit-summary": "Orrialdeak sortu eta aldatu.", + "apihelp-edit-param-title": "Orri izenburua aldatzeke. Hurrengoarekin batera ezin da erabili: $1pageid.", + "apihelp-edit-param-pageid": "Ezabatzeko orri edo ID orria. Hurrengoarekin batera ezin da erabili: $1title.", "apihelp-edit-param-sectiontitle": "Atal berri baten titulua.", "apihelp-edit-param-text": "Orrialdearen edukia.", + "apihelp-edit-param-tags": "Aldatu etiketak berrikusketa eskatzeko.", "apihelp-edit-param-minor": "Aldaketa txikia.", + "apihelp-edit-param-notminor": "Aldaketa ez-txikiak", + "apihelp-edit-param-bot": "Aldaketa hau errobot aldaketa bezala markatu.", + "apihelp-edit-param-createonly": "Ez aldatu orria jadanik existitzen bada.", + "apihelp-edit-param-nocreate": "Orria ez bada existitzen akatsa bota.", + "apihelp-edit-param-watch": "Orria erabiltzaile honen ikus-zerrendan sartu.", + "apihelp-edit-param-unwatch": "Erabiltzailearen oraingo ikus-zerrendatik orria kendu.", + "apihelp-edit-param-redirect": "Birbideratzeak automatikoki konpondu.", + "apihelp-edit-param-contentmodel": "Eduki berriko eduki eredua.", "apihelp-edit-example-edit": "Orrialde bat aldatu", "apihelp-emailuser-summary": "Erabiltzaileari e-maila bidali", + "apihelp-emailuser-param-target": "Email-a bidaltzeko erabiltzailea.", "apihelp-emailuser-param-subject": "Gaiaren goiburua.", "apihelp-emailuser-param-text": "Mezuaren gorputza.", + "apihelp-emailuser-param-ccme": "Bidal iezadazu mezu elektroniko honen kopia bat.", + "apihelp-emailuser-example-email": "WikiSysop erabiltzaileari mezu elektronikoa bidali Edukia testuarekin.", "apihelp-expandtemplates-param-title": "Orrialdearen izenburua.", + "apihelp-expandtemplates-param-text": "Bihurtzeko Wikitestua", + "apihelp-expandtemplates-param-revid": "Berrikusketa ID, {{BERRIKUSKETAID}} eta antzeko aldagaientzako.", "apihelp-expandtemplates-paramvalue-prop-wikitext": "Wikitestu zabaldua.", + "apihelp-expandtemplates-paramvalue-prop-ttl": "Emaitzen cache-ak baliogabetu baino lehen iraun dezaketen denbora.", + "apihelp-feedcontributions-param-feedformat": "Produktuaren formatua.", + "apihelp-feedcontributions-param-user": "Zeintzuk erabiltzaileei ekarpenak egin.", "apihelp-feedcontributions-param-year": "Urtetik aurrera (eta lehenagotik)", "apihelp-feedcontributions-param-month": "Hilabetetik aurrera (eta lehenagotik)", + "apihelp-feedcontributions-param-tagfilter": "Etiketa hauek dituzten laguntzak iragazki.", + "apihelp-feedcontributions-param-deletedonly": "Ezabatutako laguntzak soilik erakutsi.", + "apihelp-feedcontributions-param-toponly": "Soilik azkenengo berriskusketak diren aldaketak erakutsi.", "apihelp-feedcontributions-param-newonly": "Orrialde sorkuntza direnak soilik erakutsi", "apihelp-feedcontributions-param-hideminor": "Aldaketa txikiak ezkutatu", + "apihelp-feedcontributions-param-showsizediff": "Berrikusketen arteko tamaina aldea erakutsi.", + "apihelp-feedrecentchanges-param-feedformat": "Produktuaren formatua.", + "apihelp-feedrecentchanges-param-days": "Egunen arabera emaitzak murriztu.", + "apihelp-feedrecentchanges-param-from": "Momentu horretatik aurrerako aldaketak erakutsi.", "apihelp-feedrecentchanges-param-hideminor": "Ezkutatu aldaketa txikiak.", "apihelp-feedrecentchanges-param-hidebots": "Ezkutatu botek egindako aldaketak.", "apihelp-feedrecentchanges-param-hideanons": "Ezkutatu erabiltzaile anonimoek egindako aldaketak.", @@ -41,42 +98,122 @@ "apihelp-feedrecentchanges-param-tagfilter": "Iragazi etiketen arabera.", "apihelp-feedrecentchanges-example-simple": "Erakutsi aldaketa berriak", "apihelp-feedrecentchanges-example-30days": "Erakutsi aldaketa berriak 30 egunez", + "apihelp-feedwatchlist-param-feedformat": "Produktuaren formatua.", + "apihelp-filerevert-summary": "Artxibo bat bertsio zaharrera bueltatu.", "apihelp-filerevert-param-comment": "Iruzkina igo.", "apihelp-help-example-recursive": "Laguntza guztia orrialde batean.", "apihelp-imagerotate-summary": "Irudi bat edo gehiago biratu.", + "apihelp-imagerotate-param-rotation": "Irudia erloju-orratzen norabidean biratzeko graduak.", "apihelp-import-param-summary": "Inportazioaren laburpena.", "apihelp-import-param-xml": "XML fitxategia igo da.", + "apihelp-import-param-tags": "Aldatu etiketak sarrera aplikatzeko inportatzeko sarreran eta inportatutako orrialdeetan berrikuspena kentzeko.", "apihelp-login-param-name": "Erabiltzaile izena.", "apihelp-login-param-password": "Pasahitza.", "apihelp-login-param-domain": "Domeinua (hautazkoa).", "apihelp-login-example-login": "Hasi saioa", + "apihelp-logout-summary": "Saioa itxi eta saioko datuak garbitu.", + "apihelp-logout-example-logout": "Erabiltzaile honi sesioa itxi.", + "apihelp-mergehistory-summary": "Orrialdeen historiak erakutsi.", "apihelp-move-summary": "Orrialde bat mugitu", "apihelp-move-param-reason": "Berrizenpenaren arrazoia.", "apihelp-move-param-noredirect": "Birzuzenketarik ez sortu.", "apihelp-move-param-ignorewarnings": "Edozein ohar ezikusi.", + "apihelp-opensearch-param-search": "Bilatu katea.", + "apihelp-opensearch-param-limit": "Bueltatzeko gehienezko emaitza kopurua.", "apihelp-opensearch-param-namespace": "Bilatzeko izen-tarteak.", "apihelp-opensearch-param-format": "Irteerako formatua.", "apihelp-options-example-reset": "Berrezarri hobespen guztiak.", "apihelp-paraminfo-summary": "API moduluei buruzko informazioa eskuratu.", + "apihelp-paraminfo-param-helpformat": "Laguntza-kateen formatua.", "apihelp-parse-param-summary": "Analizatzeko laburpena.", + "apihelp-parse-param-preview": "Aurrebista moduaren bitartez aztertu.", + "apihelp-parse-example-page": "Aztertu orri bat.", + "apihelp-parse-example-text": "Wikitestua aztertu.", + "apihelp-parse-example-texttitle": "Wikitestua aztertu, orri izenburua zehaztuz.", + "apihelp-parse-example-summary": "Laburpen bat aztertu.", + "apihelp-patrol-summary": "Orri edo berrikusketa bat patruilatu.", + "apihelp-patrol-param-revid": "Patruilatzeko ID bat berrikusi.", + "apihelp-patrol-example-rcid": "Azkenaldian egindako aldaketa bat patruilatu.", + "apihelp-patrol-example-revid": "Patruilatu berrikusketa bat.", + "apihelp-protect-summary": "Aldatu orri baten segurtasun maila.", "apihelp-protect-param-reason": "Babesteko edo babesa kentzeko zergatia.", "apihelp-protect-example-protect": "Orrialde bat babestu", + "apihelp-purge-param-forcelinkupdate": "Eguneratu taula linkak.", + "apihelp-query-param-list": "Jasotzeko zerrendak.", + "apihelp-query-param-meta": "Jasotzeko metadata.", "apihelp-query+allcategories-summary": "Kategoria guztiak zenbakitu.", + "apihelp-query+allcategories-param-prefix": "Balio honekin hasten diren kategoria guztiak bilatu.", + "apihelp-query+allcategories-param-dir": "Sailkatzeko norabidea.", + "apihelp-query+allcategories-param-min": "Soilik itzuli gutxienez kide kopuru hauek dituzten sailkapenetara.", + "apihelp-query+allcategories-param-max": "Soilik itzuli gehienez kide kopuru hauek dituzten sailkapenetara.", + "apihelp-query+allcategories-param-limit": "Zenbat kategorietara itzuli.", + "apihelp-query+allcategories-param-prop": "Zeintzuk propietateak hartu:", + "apihelp-query+alldeletedrevisions-param-from": "Zerrendatzen hasi titulu honetan.", + "apihelp-query+alldeletedrevisions-param-to": "Zerrendatzeari utzi titulu honetan.", + "apihelp-query+alldeletedrevisions-param-prefix": "Balio honekin hasten diren orri izenburu guztiak bilatu.", + "apihelp-query+alldeletedrevisions-param-excludeuser": "Erabiltzaile honen berrikusketak ez zerrendatu.", + "apihelp-query+allfileusages-param-prefix": "Balio honekin hasten diren artxibo izenburu guztiak bilatu.", + "apihelp-query+allfileusages-param-prop": "Sartu beharreko informazio zatiak:", + "apihelp-query+allfileusages-paramvalue-prop-title": "Fitxategiaren izenburua gehitzen du.", + "apihelp-query+allfileusages-param-limit": "Guztira bueltatzeko elementu kopurua.", + "apihelp-query+allfileusages-param-dir": "Zerrendatzeko norabidea.", + "apihelp-query+allfileusages-example-unique": "Zerrendatu artxibo izenburu bakarrak.", + "apihelp-query+allfileusages-example-unique-generator": "Artxibo izenburu guztiak hartzen ditu, falta direnak markatuz.", + "apihelp-query+allfileusages-example-generator": "Artxiboak dituzten orriak lortzen ditu.", + "apihelp-query+allimages-summary": "Sekuentzialki zenbakitzen ditu irudi guztiak.", + "apihelp-query+allimages-param-dir": "Zerrendatzeko norabidea.", + "apihelp-query+allimages-param-limit": "Guztira zenbat irudietara itzuli.", + "apihelp-query+alllinks-paramvalue-prop-title": "Link-aren izenburua gehitzen du.", + "apihelp-query+allmessages-param-prop": "Zeintzuk propietateak hartu.", + "apihelp-query+allmessages-param-lang": "Hizkuntza honetan dauden mezuak itzuli.", + "apihelp-query+allmessages-param-from": "Mezu honetan hasten diren mezuak itzuli.", + "apihelp-query+allmessages-param-to": "Mezu honetan bukatzen duten mezuak itzuli.", + "apihelp-query+allmessages-param-prefix": "Aurrizki hau daramaten mezuak itzuli.", + "apihelp-query+allmessages-example-ipb": "Erakutsi honela hasten diren mezuak: ipb-.", + "apihelp-query+allpages-param-prefix": "Balio honekin hasten diren orri izenburu guztiak bilatu.", + "apihelp-query+allpages-param-filterredir": "Zeintzuk orri zerrendatu.", + "apihelp-query+allpages-param-minsize": "Gutxieneko byte kopuru hau betetzen duten orrietara mugatu.", + "apihelp-query+allpages-param-maxsize": "Gehienez byte kopuru hau betetzen duten orrietara mugatu.", + "apihelp-query+allpages-param-prtype": "Babestutako orrietara soilik mugatu.", + "apihelp-query+allrevisions-summary": "Zerrendatu berrikusketa guztiak.", + "apihelp-query+allrevisions-param-user": "Erabiltzaile honen berrikusketak soilik zerrendatu.", + "apihelp-query+allrevisions-param-excludeuser": "Erabiltzaile honen berrikusketak ez zerrendatu.", + "apihelp-query+allrevisions-example-user": "Eredua egindako azken 50 ekarpenak zerrendatu.", + "apihelp-query+mystashedfiles-param-limit": "Hartzeko artxibo kopurua", + "apihelp-query+alltransclusions-param-prop": "Sartu beharreko informazio zatiak:", + "apihelp-query+alltransclusions-param-limit": "Guztira bueltatzeko elementu kopurua.", + "apihelp-query+alltransclusions-param-dir": "Zerrendatzeko norabidea.", + "apihelp-query+allusers-summary": "Zerrendatu erregistratuko erabiltzaile guztiak.", + "apihelp-query+allusers-param-from": "Zerrendatzen hasteko erabiltzaile izen honetatik.", + "apihelp-query+allusers-param-to": "Zerrendatzen gelditzeko erabiltzaile izen honetatik.", + "apihelp-query+allusers-param-prefix": "Balio honekin hasten diren erabiltzaile guztiak bilatu.", + "apihelp-query+allusers-param-dir": "Sailkatzeko norabidea.", + "apihelp-query+allusers-param-group": "Soilik talde hauetatik erabiltzaileak hartu.", "apihelp-query+allusers-param-witheditsonly": "Bakarrik zerrendatu aldaketak egin dituzten erabiltzaileak.", "apihelp-query+allusers-param-activeusers": "Bakarrik zerrendatu azken {{PLURAL:$1|eguneko|$1 egunetako}} erabiltzaile aktiboak.", "apihelp-query+blocks-summary": "Zerrendatu blokeatutako erabiltzaile eta IP helbide guztiak.", + "apihelp-query+blocks-example-simple": "Blokeak zerrendatu.", + "apihelp-query+categorymembers-paramvalue-prop-ids": "Orri IDa gehitzen du.", + "apihelp-query+filearchive-example-simple": "Erakutsi ezabatutako fitxategi guztien zerrenda", "apihelp-query+imageinfo-param-urlheight": "$1urlwidth-en antzekoa.", "apihelp-query+imageusage-example-simple": "Erakutsi [[:File:Albert Einstein Head.jpg]] darabilten orriak", + "apihelp-query+iwbacklinks-param-prefix": "Interwikiaren aurrizkia.", "apihelp-query+langlinks-param-inlanguagecode": "Hizkuntza izenak aurkitzeko hizkuntza kodea.", "apihelp-query+prefixsearch-param-search": "Bilatu katea.", "apihelp-query+protectedtitles-example-simple": "Zerrendatu babestutako izenburuak", "apihelp-query+recentchanges-example-simple": "Zerrendatu aldaketa berriak.", "apihelp-query+revisions-example-last5": "Orrialde Nagusiaren azken 5 berrikuspenak eskuratu.", "apihelp-query+revisions-example-first5": "Orrialde Nagusiaren lehen 5 berrikuspenak eskuratu.", + "apihelp-query+search-paramvalue-prop-score": "Ezikusia.", + "apihelp-query+search-paramvalue-prop-hasrelated": "Ezikusia.", + "apihelp-query+userinfo-paramvalue-prop-preferencestoken": "Ikurra lortu oraingo lehentasunak aldatzeko.", + "apihelp-query+watchlist-paramvalue-prop-title": "Orrialdearen izenburua gehitzen du.", + "apihelp-query+watchlist-paramvalue-prop-user": "Aldaketa egin duen erabiltzailea gehitzen du.", "apihelp-upload-param-file": "Fitxategiaren edukia.", "apihelp-upload-example-url": "Igo URL batetik.", "apihelp-userrights-param-reason": "Aldaketarako arrazoia.", "api-help-main-header": "Modulu nagusia", + "api-help-undocumented-module": "Ez dago dokumentaziorik $1 modulurako.", "api-help-flag-deprecated": "Modulu hau zaharkitua dago.", "api-help-source": "Iturria: $1", "api-help-source-unknown": "Iturria: ezezaguna", @@ -100,6 +237,10 @@ "api-help-param-no-description": "(deskribapenik gabe)", "api-help-examples": "{{PLURAL:$1|Adibidea|Adibideak}}:", "api-help-permissions": "{{PLURAL:$1|Baimena|Baimenak}}:", + "apierror-timeout": "Zerbitzariak ez du erantzun espero zitekeen denboran.", + "apiwarn-invalidcategory": "\"$1\" ez da kategoria.", + "apiwarn-invalidtitle": "\"$1\" ez da baliozko izenburua.", + "apiwarn-notfile": "\"$1\" ez da fitxategia.", "api-credits-header": "Kredituak", "api-credits": "API garatzaileak:\n* Roan Kattouw (garatzaile nagusia, 2007ko ira.–2009)\n* Victor Vasiliev\n* Bryan Tong Minh\n* Sam Reed\n* Yuri Astrakhan (sortzailea, garatzaile nagusia, 2006ko ira.–2007ko ira.)\n* Brad Jorsch (garatzaile nagusia 2013–gaur egun)\n\nMesedez, bidal iezazkiguzu zure iruzkinak, iradokizunak eta galderak mediawiki-api@lists.wikimedia.org helbidera edo bete ezazu errore-txostena https://phabricator.wikimedia.org/ helbidean." } diff --git a/includes/api/i18n/fa.json b/includes/api/i18n/fa.json index 36ab4c9f2f..c137611905 100644 --- a/includes/api/i18n/fa.json +++ b/includes/api/i18n/fa.json @@ -55,6 +55,8 @@ "apihelp-compare-param-totitle": "عنوان دوم برای مقایسه.", "apihelp-compare-param-toid": "شناسه صفحه دوم برای مقایسه.", "apihelp-compare-param-torev": "نسخه دوم برای مقایسه.", + "apihelp-compare-paramvalue-prop-diff": "تفاوت اچ‌تی‌ام‌ال.", + "apihelp-compare-paramvalue-prop-diffsize": "اندازهٔ تفاوت اچ‌تی‌ام‌ال، به بایت.", "apihelp-compare-example-1": "ایجاد تفاوت بین نسخه 1 و 2", "apihelp-createaccount-summary": "ایجاد حساب کاربری", "apihelp-createaccount-param-name": "نام کاربری.", diff --git a/includes/api/i18n/fr.json b/includes/api/i18n/fr.json index b73d537ef2..4c6da2fb1c 100644 --- a/includes/api/i18n/fr.json +++ b/includes/api/i18n/fr.json @@ -1492,6 +1492,7 @@ "api-help-param-upload": "Doit être envoyé comme un fichier importé utilisant multipart/form-data.", "api-help-param-multi-separate": "Valeurs séparées par | ou [[Special:ApiHelp/main#main/datatypes|autre]].", "api-help-param-multi-max": "Le nombre maximal de valeurs est {{PLURAL:$1|$1}} ({{PLURAL:$2|$2}} pour les robots).", + "api-help-param-multi-max-simple": "Le nombre maximum de valeurs est {{PLURAL:$1|$1}}.", "api-help-param-multi-all": "Pour spécifier toutes les valeurs, utiliser $1.", "api-help-param-default": "Par défaut : $1", "api-help-param-default-empty": "Par défaut : (vide)", diff --git a/includes/api/i18n/gl.json b/includes/api/i18n/gl.json index 1a0cad9e9b..c873685e0a 100644 --- a/includes/api/i18n/gl.json +++ b/includes/api/i18n/gl.json @@ -1457,6 +1457,7 @@ "api-help-param-upload": "Debe ser enviado como un ficheiro importado usando multipart/form-data.", "api-help-param-multi-separate": "Separe os valores con | ou [[Special:ApiHelp/main#main/datatypes|outros]].", "api-help-param-multi-max": "O número máximo de valores é {{PLURAL:$1|$1}} ({{PLURAL:$2|$2}} para os bots).", + "api-help-param-multi-max-simple": "O número máximo de valores é {{PLURAL:1$|1$}}.", "api-help-param-multi-all": "Para especificar tódolos valores use $1.", "api-help-param-default": "Por defecto: $1", "api-help-param-default-empty": "Por defecto: (baleiro)", diff --git a/includes/api/i18n/he.json b/includes/api/i18n/he.json index aa06dcfa60..dcb4efb748 100644 --- a/includes/api/i18n/he.json +++ b/includes/api/i18n/he.json @@ -1479,6 +1479,7 @@ "api-help-param-upload": "חייב להישלח (posted) בתור העלאת קובץ באמצעות multipart/form-data.", "api-help-param-multi-separate": "הפרדה בין ערכים נעשית באמצעות | או [[Special:ApiHelp/main#main/datatypes|תו חלופי]].", "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": "ברירת מחדל: (ריק)", diff --git a/includes/api/i18n/it.json b/includes/api/i18n/it.json index 23b86ab659..fd88c186fb 100644 --- a/includes/api/i18n/it.json +++ b/includes/api/i18n/it.json @@ -669,6 +669,7 @@ "api-help-param-integer-minmax": "{{PLURAL:$1|1=Il valore deve essere compreso|2=I valori devono essere compresi}} tra $2 e $3.", "api-help-param-multi-separate": "Separa i valori con | o [[Special:ApiHelp/main#main/datatypes|alternativa]].", "api-help-param-multi-max": "Il numero massimo di valori è {{PLURAL:$1|$1}} ({{PLURAL:$2|$2}} per i bot).", + "api-help-param-multi-max-simple": "Il numero massimo di valori è {{PLURAL:$1|$1}}.", "api-help-param-multi-all": "Per specificare tutti i valori, utilizza $1.", "api-help-param-default": "Predefinito: $1", "api-help-param-default-empty": "Predefinito: (vuoto)", diff --git a/includes/api/i18n/ja.json b/includes/api/i18n/ja.json index c9eabbbdb6..e637be3994 100644 --- a/includes/api/i18n/ja.json +++ b/includes/api/i18n/ja.json @@ -865,6 +865,7 @@ "apihelp-setpagelanguage-extended-description-disabled": "ページ言語の変更はこのwikiでは許可されていません。\n\nこの操作を利用するには、[[mw:Special:MyLanguage/Manual:$wgPageLanguageUseDB|$wgPageLanguageUseDB]] を設定してください。", "apihelp-setpagelanguage-param-title": "言語を変更したいページのページ名。$1pageid とは同時に使用できません。", "apihelp-setpagelanguage-param-pageid": "言語を変更したいページのページID。$1title とは同時に使用できません。", + "apihelp-setpagelanguage-param-reason": "変更の理由。", "apihelp-stashedit-param-title": "編集されているページのページ名。", "apihelp-stashedit-param-section": "節番号です。先頭の節の場合は 0、新しい節の場合は newを指定します。", "apihelp-stashedit-param-sectiontitle": "新しい節の名前です。", diff --git a/includes/api/i18n/ko.json b/includes/api/i18n/ko.json index bff361e40b..edcd41b8c5 100644 --- a/includes/api/i18n/ko.json +++ b/includes/api/i18n/ko.json @@ -716,6 +716,7 @@ "api-help-param-upload": "여러 부분/폼 데이터를 사용한 파일 업로드로 게시되어야 합니다.", "api-help-param-multi-separate": "| 또는 [[Special:ApiHelp/main#main/datatypes|대안]]으로 값을 구분합니다.", "api-help-param-multi-max": "값들의 최대 수는 {{PLURAL:$1|$1}}입니다. (봇의 경우 {{PLURAL:$2|$2}})", + "api-help-param-multi-max-simple": "값의 최대 수는 {{PLURAL:$1|$1}}입니다.", "api-help-param-default": "기본값: $1", "api-help-param-default-empty": "기본값: (비어 있음)", "api-help-param-token": "\"$1\" 토큰은 [[Special:ApiHelp/query+tokens|action=query&meta=tokens]]에서 가져옵니다", diff --git a/includes/api/i18n/lb.json b/includes/api/i18n/lb.json index 085821cebe..0d5f22481e 100644 --- a/includes/api/i18n/lb.json +++ b/includes/api/i18n/lb.json @@ -202,6 +202,7 @@ "api-help-param-required": "Dëse Parameter ass obligatoresch.", "api-help-datatypes-header": "Datentypen", "api-help-param-type-user": "Typ: {{PLURAL:$1|1=Benotzernumm|2=Lëscht vu Benotzernimm}}", + "api-help-param-multi-max-simple": "Maximal Zuel vun de Wäerter ass {{PLURAL:$1|$1}}.", "api-help-examples": "{{PLURAL:$1|Beispill|Beispiler}}:", "api-help-permissions": "{{PLURAL:$1|Autorisatioun|Autorisatiounen}}:", "api-help-open-in-apisandbox": "[an der Sandkëscht opmaachen]", diff --git a/includes/api/i18n/pt-br.json b/includes/api/i18n/pt-br.json index b09f57068d..0b9a57be48 100644 --- a/includes/api/i18n/pt-br.json +++ b/includes/api/i18n/pt-br.json @@ -1477,6 +1477,7 @@ "api-help-param-upload": "Deve ser postado como um upload de arquivo usando multipart/form-data.", "api-help-param-multi-separate": "Valores separados com | ou [[Special:ApiHelp/main#main/datatypes|alternativas]].", "api-help-param-multi-max": "O número máximo de valores é {{PLURAL:$1|$1}} ({{PLURAL:$2|$2}} para bots).", + "api-help-param-multi-max-simple": "O número máximo de valores é {{PLURAL:$1|$1}}.", "api-help-param-multi-all": "Para especificar todos os valores, use $1.", "api-help-param-default": "Padrão: $1", "api-help-param-default-empty": "Padrão: (vazio)", diff --git a/includes/api/i18n/pt.json b/includes/api/i18n/pt.json index 775cd15ca9..299cb5ef05 100644 --- a/includes/api/i18n/pt.json +++ b/includes/api/i18n/pt.json @@ -1471,6 +1471,7 @@ "api-help-param-upload": "Tem ser enviado (''posted'') como um carregamento de ficheiro usando multipart/form-data.", "api-help-param-multi-separate": "Separar os valores com | ou [[Special:ApiHelp/main#main/datatypes|alternativas]].", "api-help-param-multi-max": "O número máximo de valores é {{PLURAL:$1|$1}} ({{PLURAL:$2|$2}} para robôs).", + "api-help-param-multi-max-simple": "O número máximo de valores é {{PLURAL:$1|$1}}.", "api-help-param-multi-all": "Para especificar todos os valores, use $1.", "api-help-param-default": "Valor por omissão: $1", "api-help-param-default-empty": "Padrão: (vazio)", diff --git a/includes/api/i18n/qqq.json b/includes/api/i18n/qqq.json index 4336c29349..c878a539e6 100644 --- a/includes/api/i18n/qqq.json +++ b/includes/api/i18n/qqq.json @@ -1483,7 +1483,8 @@ "api-help-param-integer-minmax": "Used to display an integer parameter with a maximum and minimum values\n\nParameters:\n* $1 - 1 if the parameter takes one value, 2 if the parameter takes any number of values\n* $2 - Minimum value\n* $3 - Maximum value\n\nSee also:\n* {{msg-mw|api-help-param-integer-min}}\n* {{msg-mw|api-help-param-integer-max}}", "api-help-param-upload": "{{technical}} Used to indicate that an 'upload'-type parameter must be posted as a file upload using multipart/form-data", "api-help-param-multi-separate": "Used to indicate how to separate multiple values. Not used with {{msg-mw|api-help-param-list}}.", - "api-help-param-multi-max": "Used to indicate the maximum number of values accepted for a multi-valued parameter.\n\nParameters:\n* $1 - Maximum value without the apihighlimits right\n* $2 - Maximum value with the apihighlimits right", + "api-help-param-multi-max": "Used to indicate the maximum number of values accepted for a multi-valued parameter when that value is influenced by the user having apihighlimits right (otherwise {{msg-mw|api-help-param-multi-max-simple}} is used).\n\nParameters:\n* $1 - Maximum value without the apihighlimits right\n* $2 - Maximum value with the apihighlimits right", + "api-help-param-multi-max-simple": "Used to indicate the maximum number of values accepted for a multi-valued parameter when that value is not influenced by the user having apihighlimits right (otherwise {{msg-mw|api-help-param-multi-max}} is used).\n\nParameters:\n* $1 - Maximum value", "api-help-param-multi-all": "Used to indicate what string can be used to specify all possible values of a multi-valued parameter. \n\nParameters:\n* $1 - String to specify all possible values of the parameter", "api-help-param-default": "Used to display the default value for an API parameter\n\nParameters:\n* $1 - Default value\n\nSee also:\n* {{msg-mw|api-help-param-default-empty}}\n{{Identical|Default}}", "api-help-param-default-empty": "Used to display the default value for an API parameter when that default is an empty value\n\nSee also:\n* {{msg-mw|api-help-param-default}}", diff --git a/includes/api/i18n/zh-hans.json b/includes/api/i18n/zh-hans.json index d8fbfe0ecb..dbd4d0e40d 100644 --- a/includes/api/i18n/zh-hans.json +++ b/includes/api/i18n/zh-hans.json @@ -1486,6 +1486,7 @@ "api-help-param-upload": "必须被公布为使用multipart/form-data的一次文件上传。", "api-help-param-multi-separate": "通过|或[[Special:ApiHelp/main#main/datatypes|替代物]]隔开各值。", "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": "默认:(空)", diff --git a/includes/api/i18n/zh-hant.json b/includes/api/i18n/zh-hant.json index a311728662..0767b3ea24 100644 --- a/includes/api/i18n/zh-hant.json +++ b/includes/api/i18n/zh-hant.json @@ -12,10 +12,11 @@ "Arthur2e5", "烈羽", "Corainn", - "A2093064" + "A2093064", + "Wwycheuk" ] }, - "apihelp-main-extended-description": "
\n* [[mw:API:Main_page|說明文件]]\n* [[mw:API:FAQ|常見問題]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api 郵寄清單]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce API公告]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R 報告錯誤及請求功能]\n
\n狀態資訊:本頁所展示的所有功能都應正常工作,但是API仍在開發當中,將會隨時變化。請訂閱[https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ mediawiki-api-announce 郵件清單]以便得到更新通知。\n\n錯誤的請求:當API收到錯誤的請求時,會發出以「MediaWiki-API-Error」為鍵的HTTP頭欄位,隨後頭欄位的值與錯誤碼將會被設為相同的值。詳細資訊請參閱[[mw:API:Errors_and_warnings|API: 錯誤與警告]]。\n\n測試:要簡化API請求的測試過程,請見[[Special:ApiSandbox]]。", + "apihelp-main-extended-description": "
\n* [[mw:Special:MyLanguage/API:Main_page|說明文件]]\n* [[mw:Special:MyLanguage/API:FAQ|常見問題]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api 郵遞清單]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce API公告]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R 報告錯誤及請求功能]\n
\n狀態資訊:本頁所展示的所有功能都應正常運作,但API仍在開發,會隨時變化。請訂閱[https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ mediawiki-api-announce 郵遞清單]以便獲得更新通知。\n\n錯誤的請求:當API收到錯誤的請求,會發出以「MediaWiki-API-Error」為鍵的HTTP標頭欄位,隨後標頭欄位的值,以及傳回的錯誤碼會設為相同值。詳細資訊請參閱[[mw:Special:MyLanguage/API:Errors_and_warnings|API: 錯誤與警告]]。\n\n測試:要簡化API請求的測試過程,請見[[Special:ApiSandbox]]。", "apihelp-main-param-action": "要執行的動作。", "apihelp-main-param-format": "輸出的格式。", "apihelp-main-param-smaxage": "將HTTP緩存控制頭欄位設為s-maxage秒。錯誤不會做緩存。", @@ -27,18 +28,19 @@ "apihelp-main-param-curtimestamp": "在結果中包括目前的時間戳。", "apihelp-main-param-responselanginfo": "在結果中包括uselang和errorlang所用的語言。", "apihelp-block-summary": "封鎖使用者。", - "apihelp-block-param-user": "您要封鎖的使用者名稱、IP 位址或 IP 範圍。", + "apihelp-block-param-user": "要封鎖的使用者名稱、IP 位址或 IP 範圍。不能與 $1userid 一起使用", "apihelp-block-param-reason": "封鎖原因。", "apihelp-block-param-anononly": "僅封鎖匿名使用者 (禁止這個 IP 位址的匿名使用者編輯)。", "apihelp-block-param-nocreate": "禁止建立帳號。", "apihelp-block-param-autoblock": "自動封鎖最後使用的 IP 位址,以及在這之後嘗試登入的 IP 位址。", "apihelp-block-param-noemail": "禁止使用者透過 Wiki 寄送電子郵件。 (需要 blockemail 權限)。", "apihelp-block-param-hidename": "隱藏封鎖日誌的使用者名稱。 (需要 hideuser 權限)。", - "apihelp-block-param-allowusertalk": "允許使用者編輯自己的對話頁面 (依據 [[mw:Manual:$wgBlockAllowsUTEdit|$wgBlockAllowsUTEdit]] 的設定)。", + "apihelp-block-param-allowusertalk": "允許使用者編輯自己的對話頁面 (依據 [[mw:Special:MyLanguage/Manual:$wgBlockAllowsUTEdit|$wgBlockAllowsUTEdit]] 的設定)。", "apihelp-block-param-reblock": "若使用者已被封鎖,覆寫既有的封鎖設定值。", "apihelp-block-param-watchuser": "監視使用者或 IP 位址的使用者頁面與對話頁面。", "apihelp-block-example-ip-simple": "封鎖 IP 位址 192.0.2.5 三天,原因為 First strike。", "apihelp-block-example-user-complex": "永久封鎖 IP 位址 Vandal,原因為 Vandalism。", + "apihelp-changeauthenticationdata-summary": "為目前使用者變更身分核對資料。", "apihelp-checktoken-summary": "檢查來自 [[Special:ApiHelp/query+tokens|action=query&meta=tokens]] 的密鑰有效性。", "apihelp-checktoken-param-type": "要測試的密鑰類型。", "apihelp-checktoken-param-token": "要測試的密鑰。", @@ -58,10 +60,10 @@ "apihelp-createaccount-summary": "建立新使用者帳號。", "apihelp-createaccount-param-name": "使用者名稱。", "apihelp-createaccount-param-password": "密碼 (若有設定 $1mailpassword 則可略過)。", - "apihelp-createaccount-param-domain": "外部認證使用的網域 (選填)。", + "apihelp-createaccount-param-domain": "外部身分核對使用的網域 (可有可無)。", "apihelp-createaccount-param-token": "在第一次請求時已取得的帳號建立金鑰。", - "apihelp-createaccount-param-email": "使用者的電子郵件地址 (選填) 。", - "apihelp-createaccount-param-realname": "使用者的真實姓名 (選填)。", + "apihelp-createaccount-param-email": "使用者的電子郵件地址 (可有可無) 。", + "apihelp-createaccount-param-realname": "使用者的真實姓名 (可有可無)。", "apihelp-createaccount-param-mailpassword": "若設為其他值,將會以電子郵件寄送隨機密碼給使用者。", "apihelp-createaccount-param-reason": "建立帳號時選填的原因,會被記錄到日誌當中。", "apihelp-createaccount-param-language": "要設定的使用者預設語言代碼 (選填,預設依據內容語言)。", @@ -133,11 +135,12 @@ "apihelp-import-param-interwikipage": "用於跨 wiki 匯入:匯入的頁面。", "apihelp-import-param-fullhistory": "用於跨 wiki 匯入:完整匯入歷史,而不只是最新版本。", "apihelp-import-param-templates": "用於跨 wiki 匯入:匯入一切包含的模板。", - "apihelp-import-param-namespace": "用於跨 wiki 匯入:匯入至此命名空間。", - "apihelp-import-param-rootpage": "匯入作為此頁面的子頁面。", + "apihelp-import-param-namespace": "匯入至此命名空間。無法與 $1rootpage 一起使用。", + "apihelp-import-param-rootpage": "匯入作為此頁面的子頁面。無法與 $1namespace 一起使用。", + "apihelp-login-summary": "登入並取得身分核對 cookies", "apihelp-login-param-name": "使用者名稱。", "apihelp-login-param-password": "密碼。", - "apihelp-login-param-domain": "網域名稱(可選)。", + "apihelp-login-param-domain": "網域名稱(可有可無)。", "apihelp-login-example-login": "登入", "apihelp-logout-summary": "登出並清除 session 資料。", "apihelp-logout-example-logout": "登出當前使用者", @@ -162,16 +165,16 @@ "apihelp-opensearch-param-search": "搜尋字串。", "apihelp-opensearch-param-limit": "回傳的結果數量上限。", "apihelp-opensearch-param-namespace": "搜尋的命名空間。", - "apihelp-opensearch-param-suggest": "若[[mw:Manual:$wgEnableOpenSearchSuggest|$wgEnableOpenSearchSuggest]]設定為false,則不做任何事。", + "apihelp-opensearch-param-suggest": "若[[mw:Special:MyLanguage/Manual:$wgEnableOpenSearchSuggest|$wgEnableOpenSearchSuggest]]設定為false,則不做任何事。", "apihelp-opensearch-param-redirects": "如何處理重定向:\n;return:傳回重定向本身。\n;resolve:傳回目標頁面,傳回的結果數目可能少於$1limit。\n由於歷史原因,$1format=json的預設值為「return」,其他格式則為「resolve」。", "apihelp-opensearch-param-format": "輸出的格式。", "apihelp-options-param-reset": "重設偏好設定為網站預設值。", "apihelp-options-example-reset": "重設所有偏好設定", - "apihelp-parse-example-page": "解析一個頁面。", + "apihelp-parse-example-page": "解析頁面。", "apihelp-parse-example-text": "解析 wikitext。", "apihelp-parse-example-texttitle": "解析 wikitext,指定頁面標題。", - "apihelp-parse-example-summary": "解析一個摘要。", - "apihelp-patrol-summary": "巡查一個頁面或修訂。", + "apihelp-parse-example-summary": "解析摘要。", + "apihelp-patrol-summary": "巡查頁面或修訂。", "apihelp-patrol-param-rcid": "要巡查的最近變更 ID。", "apihelp-patrol-param-revid": "要巡查的修訂 ID。", "apihelp-patrol-example-rcid": "巡查一次最近變更。", @@ -179,7 +182,7 @@ "apihelp-protect-summary": "變更頁面的保護層級。", "apihelp-protect-param-title": "要(解除)保護頁面的標題。 不能與 $1pageid 一起使用。", "apihelp-protect-param-pageid": "要(解除)保護頁面的 ID。 不能與 $1title 一起使用。", - "apihelp-protect-param-protections": "保護層級清單,格式為 action=level (例如 edit=sysop)。\n\n注意: 任何未列入清單項目的限制將會被移除。", + "apihelp-protect-param-protections": "保護層級清單,格式為 action=level (例如 edit=sysop)。all 層級代表所有人都可以進行行動,亦即無限制。\n\n注意:未列入清單項目的限制皆會移除。", "apihelp-protect-param-expiry": "期限時間戳記,若只設定一個時間戳記,該時間戳記將會套用至所有的保護層級。 使用 infinite、indefinite、infinity 或 never 來設定保護層級期限為永遠。", "apihelp-protect-param-reason": "(解除)保護的原因。", "apihelp-query-summary": "擷取來自及有關MediaWiki的數據。", @@ -192,6 +195,7 @@ "apihelp-query+allredirects-param-limit": "要回傳的項目總數。", "apihelp-query+allrevisions-summary": "列出所有修訂版本。", "apihelp-query+alltransclusions-param-limit": "要回傳的項目總數。", + "apihelp-query+authmanagerinfo-summary": "取得目前身分核對狀態的資訊。", "apihelp-query+categories-param-limit": "要回傳的分類數量。", "apihelp-query+categoryinfo-summary": "回傳有關指定分類的資訊。", "apihelp-query+categorymembers-summary": "在指定的分類中列出所有頁面。", @@ -245,6 +249,7 @@ "apihelp-query+usercontribs-param-limit": "回傳的貢獻數量上限。", "apihelp-query+watchlist-param-limit": "每個請求要回傳的結果總數。", "apihelp-query+watchlistraw-param-limit": "每個請求要回傳的結果總數。", + "apihelp-removeauthenticationdata-summary": "為目前使用者移除身分核對資料。", "apihelp-revisiondelete-summary": "刪除和取消刪除修訂。", "apihelp-stashedit-param-title": "正在編輯此頁面的標題。", "apihelp-stashedit-param-text": "頁面內容。", @@ -257,10 +262,10 @@ "apihelp-userrights-summary": "更改一位使用者的群組成員。", "apihelp-userrights-param-user": "使用者名稱。", "apihelp-userrights-param-userid": "使用者 ID。", - "apihelp-userrights-param-add": "加入使用者至這些群組。", + "apihelp-userrights-param-add": "加入使用者至這些群組;若已是成員,則更新失效時間。", "apihelp-userrights-param-remove": "從這些群組移除使用者。", "apihelp-userrights-param-reason": "變更的原因。", - "apihelp-format-example-generic": "格式化查詢結果為 $1 格式", + "apihelp-format-example-generic": "以 $1 格式傳回查詢結果。", "apihelp-json-summary": "使用 JSON 格式輸出資料。", "apihelp-jsonfm-summary": "使用 JSON 格式輸出資料 (使用 HTML 格式顯示)。", "apihelp-none-summary": "不輸出。", @@ -283,7 +288,7 @@ "api-help-parameters": "{{PLURAL:$1|參數}}:", "api-help-param-deprecated": "已停用。", "api-help-param-required": "此參數為必填。", - "api-help-param-list": "{{PLURAL:$1|1=單值|2=多值 (以 {{!}} 分隔)}}:$2", + "api-help-param-list": "{{PLURAL:$1|1=單值|2=多值 (以 {{!}} 或 [[Special:ApiHelp/main#main/datatypes|alternative]] 分隔)}}:$2", "api-help-param-list-can-be-empty": "{{PLURAL:$1|0=必須空白|可以空白,或 $2}}", "api-help-param-limit": "不允許超過 $1。", "api-help-param-limit2": "不允許超過 $1 (機器人為 $2)。", @@ -291,7 +296,7 @@ "api-help-param-integer-max": "{{PLURAL:$1|1=數值|2=數值}}不可大於 $3。", "api-help-param-integer-minmax": "{{PLURAL:$1|1=數值|2=數值}}必須在 $2 與 $3 之間。", "api-help-param-upload": "必須使用 multipart/form-data 以檔案上傳的方式傳送。", - "api-help-param-multi-separate": "使用 | 分隔數值。", + "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-default": "預設值:$1", "api-help-param-default-empty": "預設值:(空)", @@ -301,7 +306,10 @@ "api-help-permissions": "{{PLURAL:$1|權限}}:", "api-help-permissions-granted-to": "{{PLURAL:$1|已授權給}}: $2", "api-help-authmanager-general-usage": "使用此模組的一般程式是:\n# 通過amirequestsfor=$4取得來自[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]的可用欄位,和來自[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]的$5令牌。\n# 向用戶顯示欄位,並獲得其提交的內容。\n# 提交(POST)至此模組,提供$1returnurl及任何相關欄位。\n# 在回应中檢查status。\n#* 如果您收到了PASS(成功)或FAIL(失敗),則認為操作結束。成功與否如上句所示。\n#* 如果您收到了UI,向用戶顯示新欄位,並再次獲取其提交的內容。然後再次使用$1continue,向本模組提交相關欄位,並重復第四步。\n#* 如果您收到了REDIRECT,將使用者指向redirecttarget中的目標,等待其返回$1returnurl。然後再次使用$1continue,向本模組提交返回URL中提供的一切欄位,並重復第四步。\n#* 如果您收到了RESTART,這意味著身份驗證正常運作,但我們沒有連結的使用者賬戶。您可以將此看做UI或FAIL。", - "apierror-timeout": "伺服器沒有在預期的時間內回應。", + "apierror-mustbeloggedin-changeauth": "必須登入,才能變更身分核對資取。", + "apierror-mustbeloggedin-removeauth": "必須登入,才能移除身分核對資取。", + "apierror-reauthenticate": "於本工作階段還未核對身分,請重新核對。", + "apierror-timeout": "伺服器未有在預計的時間內回應。", "api-credits-header": "製作群", "api-credits": "API 開發人員:\n* Roan Kattouw (首席開發者 Sep 2007–2009)\n* Victor Vasiliev\n* Bryan Tong Minh\n* Sam Reed\n* Yuri Astrakhan (創立者,首席開發者 Sep 2006–Sep 2007)\n* Brad Jorsch (首席開發者 2013–present)\n\n請傳送您的評論、建議以及問題至 mediawiki-api@lists.wikimedia.org\n或者回報問題至 https://phabricator.wikimedia.org/。" } diff --git a/includes/auth/AuthManager.php b/includes/auth/AuthManager.php index c3f798fd49..9407c42274 100644 --- a/includes/auth/AuthManager.php +++ b/includes/auth/AuthManager.php @@ -975,7 +975,7 @@ class AuthManager implements LoggerAwareInterface { public function checkAccountCreatePermissions( User $creator ) { // Wiki is read-only? if ( wfReadOnly() ) { - return Status::newFatal( 'readonlytext', wfReadOnlyReason() ); + return Status::newFatal( wfMessage( 'readonlytext', wfReadOnlyReason() ) ); } // This is awful, this permission check really shouldn't go through Title. @@ -1579,7 +1579,7 @@ class AuthManager implements LoggerAwareInterface { ] ); $user->setId( 0 ); $user->loadFromId(); - return Status::newFatal( 'readonlytext', wfReadOnlyReason() ); + return Status::newFatal( wfMessage( 'readonlytext', wfReadOnlyReason() ) ); } // Check the session, if we tried to create this user already there's @@ -2131,7 +2131,7 @@ class AuthManager implements LoggerAwareInterface { * @param AuthenticationRequest[] &$reqs * @param string $action * @param string|null $username - * @param boolean $forceAction + * @param bool $forceAction */ private function fillRequests( array &$reqs, $action, $username, $forceAction = false ) { foreach ( $reqs as $req ) { diff --git a/includes/auth/CreateFromLoginAuthenticationRequest.php b/includes/auth/CreateFromLoginAuthenticationRequest.php index ddeb13d9d6..db827972cb 100644 --- a/includes/auth/CreateFromLoginAuthenticationRequest.php +++ b/includes/auth/CreateFromLoginAuthenticationRequest.php @@ -66,7 +66,7 @@ class CreateFromLoginAuthenticationRequest extends AuthenticationRequest { * Indicate whether this request contains any state for the specified * action. * @param string $action One of the AuthManager::ACTION_* constants - * @return boolean + * @return bool */ public function hasStateForAction( $action ) { switch ( $action ) { @@ -83,7 +83,7 @@ class CreateFromLoginAuthenticationRequest extends AuthenticationRequest { * Indicate whether this request contains state for the specified * action sufficient to replace other primary-required requests. * @param string $action One of the AuthManager::ACTION_* constants - * @return boolean + * @return bool */ public function hasPrimaryStateForAction( $action ) { switch ( $action ) { diff --git a/includes/cache/HTMLFileCache.php b/includes/cache/HTMLFileCache.php index b0a3a1c262..7ae2ee0e21 100644 --- a/includes/cache/HTMLFileCache.php +++ b/includes/cache/HTMLFileCache.php @@ -87,7 +87,7 @@ class HTMLFileCache extends FileCacheBase { /** * Check if pages can be cached for this request/user * @param IContextSource $context - * @param integer $mode One of the HTMLFileCache::MODE_* constants (since 1.28) + * @param int $mode One of the HTMLFileCache::MODE_* constants (since 1.28) * @return bool */ public static function useFileCache( IContextSource $context, $mode = self::MODE_NORMAL ) { @@ -140,7 +140,7 @@ class HTMLFileCache extends FileCacheBase { /** * Read from cache to context output * @param IContextSource $context - * @param integer $mode One of the HTMLFileCache::MODE_* constants + * @param int $mode One of the HTMLFileCache::MODE_* constants * @return void */ public function loadFromFileCache( IContextSource $context, $mode = self::MODE_NORMAL ) { diff --git a/includes/cache/LinkBatch.php b/includes/cache/LinkBatch.php index 38cb6be566..30d105b212 100644 --- a/includes/cache/LinkBatch.php +++ b/includes/cache/LinkBatch.php @@ -43,7 +43,7 @@ class LinkBatch { protected $caller; /** - * @param LinkTarget[] $arr Initial items to be added to the batch + * @param Traversable|LinkTarget[] $arr Initial items to be added to the batch */ public function __construct( $arr = [] ) { foreach ( $arr as $item ) { diff --git a/includes/cache/MessageCache.php b/includes/cache/MessageCache.php index 16c1ac55fc..768f980b26 100644 --- a/includes/cache/MessageCache.php +++ b/includes/cache/MessageCache.php @@ -253,7 +253,7 @@ class MessageCache { * is disabled. * * @param string $code Language to which load messages - * @param integer $mode Use MessageCache::FOR_UPDATE to skip process cache [optional] + * @param int $mode Use MessageCache::FOR_UPDATE to skip process cache [optional] * @throws MWException * @return bool */ @@ -396,7 +396,7 @@ class MessageCache { /** * @param string $code * @param array &$where List of wfDebug() comments - * @param integer $mode Use MessageCache::FOR_UPDATE to use DB_MASTER + * @param int $mode Use MessageCache::FOR_UPDATE to use DB_MASTER * @return bool|string True on success or one of ("cantacquire", "disabled") */ protected function loadFromDBWithLock( $code, array &$where, $mode = null ) { @@ -458,7 +458,7 @@ class MessageCache { * on-demand from the database later. * * @param string $code Language code - * @param integer $mode Use MessageCache::FOR_UPDATE to skip process cache + * @param int $mode Use MessageCache::FOR_UPDATE to skip process cache * @return array Loaded messages for storing in caches */ protected function loadFromDB( $code, $mode = null ) { @@ -755,7 +755,7 @@ class MessageCache { /** * @param string $key A language message cache key that stores blobs - * @param integer $timeout Wait timeout in seconds + * @param int $timeout Wait timeout in seconds * @return null|ScopedCallback */ protected function getReentrantScopedLock( $key, $timeout = self::WAIT_SEC ) { diff --git a/includes/cache/localisation/LocalisationCache.php b/includes/cache/localisation/LocalisationCache.php index e0da22eaaa..a0ce95e47a 100644 --- a/includes/cache/localisation/LocalisationCache.php +++ b/includes/cache/localisation/LocalisationCache.php @@ -20,8 +20,6 @@ * @file */ -use Cdb\Reader as CdbReader; -use Cdb\Writer as CdbWriter; use CLDRPluralRuleParser\Evaluator; use CLDRPluralRuleParser\Error as CLDRPluralRuleError; use MediaWiki\MediaWikiServices; diff --git a/includes/changes/CategoryMembershipChange.php b/includes/changes/CategoryMembershipChange.php index 5d199612df..6fa6907007 100644 --- a/includes/changes/CategoryMembershipChange.php +++ b/includes/changes/CategoryMembershipChange.php @@ -134,7 +134,8 @@ class CategoryMembershipChange { ), $this->pageTitle, $this->getPreviousRevisionTimestamp(), - $this->revision + $this->revision, + $type === self::CATEGORY_ADDITION ); } @@ -146,6 +147,7 @@ class CategoryMembershipChange { * @param Title $pageTitle Title of the page that is being added or removed * @param string $lastTimestamp Parent revision timestamp of this change in TS_MW format * @param Revision|null $revision + * @param bool $added true, if the category was added, false for removed * * @throws MWException */ @@ -156,7 +158,8 @@ class CategoryMembershipChange { $comment, Title $pageTitle, $lastTimestamp, - $revision + $revision, + $added ) { $deleted = $revision ? $revision->getVisibility() & Revision::SUPPRESSED_USER : 0; $newRevId = $revision ? $revision->getId() : 0; @@ -197,7 +200,8 @@ class CategoryMembershipChange { $lastTimestamp, $bot, $ip, - $deleted + $deleted, + $added ] ); $rc->save(); diff --git a/includes/changes/ChangesListBooleanFilter.php b/includes/changes/ChangesListBooleanFilter.php index 01e67f5079..913bd3832f 100644 --- a/includes/changes/ChangesListBooleanFilter.php +++ b/includes/changes/ChangesListBooleanFilter.php @@ -66,6 +66,13 @@ class ChangesListBooleanFilter extends ChangesListFilter { */ protected $queryCallable; + /** + * Value that defined when this filter is considered active + * + * @var bool $activeValue + */ + protected $activeValue; + /** * Create a new filter with the specified configuration. * @@ -90,6 +97,8 @@ class ChangesListBooleanFilter extends ChangesListFilter { * to true. It does not need to be set if the exact same filter is simply visible * on both. * * $filterDefinition['default'] bool Default + * * $filterDefinition['activeValue'] bool This filter is considered active when + * its value is equal to its activeValue. Default is true. * * $filterDefinition['priority'] int Priority integer. Higher value means higher * up in the group's filter list. * * $filterDefinition['queryCallable'] callable Callable accepting parameters, used @@ -126,6 +135,12 @@ class ChangesListBooleanFilter extends ChangesListFilter { if ( isset( $filterDefinition['queryCallable'] ) ) { $this->queryCallable = $filterDefinition['queryCallable']; } + + if ( isset( $filterDefinition['activeValue'] ) ) { + $this->activeValue = $filterDefinition['activeValue']; + } else { + $this->activeValue = true; + } } /** @@ -136,7 +151,7 @@ class ChangesListBooleanFilter extends ChangesListFilter { */ public function getDefault( $structuredUI = false ) { return $this->isReplacedInStructuredUi && $structuredUI ? - false : + !$this->activeValue : $this->defaultValue; } @@ -225,4 +240,17 @@ class ChangesListBooleanFilter extends ChangesListFilter { return $opts[ $sibling->getName() ]; } ); } + + /** + * @param FormOptions $opts Query parameters merged with defaults + * @param bool $isStructuredUI Whether the structured UI is currently enabled + * @return bool Whether this filter should be considered active + */ + public function isActive( FormOptions $opts, $isStructuredUI ) { + if ( $this->isReplacedInStructuredUi && $isStructuredUI ) { + return false; + } + + return $opts[ $this->getName() ] === $this->activeValue; + } } diff --git a/includes/changes/EnhancedChangesList.php b/includes/changes/EnhancedChangesList.php index 21a811ee8a..8e24efe77b 100644 --- a/includes/changes/EnhancedChangesList.php +++ b/includes/changes/EnhancedChangesList.php @@ -515,7 +515,7 @@ class EnhancedChangesList extends ChangesList { $sinceLast = 0; $unvisitedOldid = null; - /** @var $rcObj RCCacheEntry */ + /** @var RCCacheEntry $rcObj */ foreach ( $block as $rcObj ) { // Same logic as below inside main foreach if ( $rcObj->watched && $rcObj->mAttribs['rc_timestamp'] >= $rcObj->watched ) { @@ -537,7 +537,7 @@ class EnhancedChangesList extends ChangesList { # Total change link $links = []; - /** @var $block0 RecentChange */ + /** @var RecentChange $block0 */ $block0 = $block[0]; $last = $block[count( $block ) - 1]; if ( !$allLogs ) { diff --git a/includes/changes/RecentChange.php b/includes/changes/RecentChange.php index f1233639fe..fd789a6421 100644 --- a/includes/changes/RecentChange.php +++ b/includes/changes/RecentChange.php @@ -59,6 +59,10 @@ * temporary: not stored in the database * notificationtimestamp * numberofWatchingusers + * + * @todo Deprecate access to mAttribs (direct or via getAttributes). Right now + * we're having to include both rc_comment and rc_comment_text/rc_comment_data + * so random crap works right. */ class RecentChange { // Constants for the rc_source field. Extensions may also have @@ -199,6 +203,8 @@ class RecentChange { /** * Return the list of recentchanges fields that should be selected to create * a new recentchanges object. + * @todo Deprecate this in favor of a method that returns tables and joins + * as well, and use CommentStore::getJoin(). * @return array */ public static function selectFields() { @@ -209,7 +215,6 @@ class RecentChange { 'rc_user_text', 'rc_namespace', 'rc_title', - 'rc_comment', 'rc_minor', 'rc_bot', 'rc_new', @@ -227,7 +232,7 @@ class RecentChange { 'rc_log_type', 'rc_log_action', 'rc_params', - ]; + ] + CommentStore::newKey( 'rc_comment' )->getFields(); } # Accessors @@ -279,7 +284,7 @@ class RecentChange { * @param bool $noudp */ public function save( $noudp = false ) { - global $wgPutIPinRC, $wgUseEnotif, $wgShowUpdatedMarker, $wgContLang; + global $wgPutIPinRC, $wgUseEnotif, $wgShowUpdatedMarker; $dbw = wfGetDB( DB_MASTER ); if ( !is_array( $this->mExtra ) ) { @@ -310,20 +315,26 @@ class RecentChange { # Trim spaces on user supplied text $this->mAttribs['rc_comment'] = trim( $this->mAttribs['rc_comment'] ); - # Make sure summary is truncated (whole multibyte characters) - $this->mAttribs['rc_comment'] = $wgContLang->truncate( $this->mAttribs['rc_comment'], 255 ); - # Fixup database timestamps $this->mAttribs['rc_timestamp'] = $dbw->timestamp( $this->mAttribs['rc_timestamp'] ); - $this->mAttribs['rc_id'] = $dbw->nextSequenceValue( 'recentchanges_rc_id_seq' ); # # If we are using foreign keys, an entry of 0 for the page_id will fail, so use NULL if ( $this->mAttribs['rc_cur_id'] == 0 ) { unset( $this->mAttribs['rc_cur_id'] ); } + # Convert mAttribs['rc_comment'] for CommentStore + $row = $this->mAttribs; + $comment = $row['rc_comment']; + unset( $row['rc_comment'], $row['rc_comment_text'], $row['rc_comment_data'] ); + $row += CommentStore::newKey( 'rc_comment' )->insert( $dbw, $comment ); + + # Don't reuse an existing rc_id for the new row, if one happens to be + # set for some reason. + unset( $row['rc_id'] ); + # Insert new row - $dbw->insert( 'recentchanges', $this->mAttribs, __METHOD__ ); + $dbw->insert( 'recentchanges', $row, __METHOD__ ); # Set the ID $this->mAttribs['rc_id'] = $dbw->insertId(); @@ -350,8 +361,8 @@ class RecentChange { // Never send an RC notification email about categorization changes if ( - $this->mAttribs['rc_type'] != RC_CATEGORIZE && - Hooks::run( 'AbortEmailNotification', [ $editor, $title, $this ] ) + Hooks::run( 'AbortEmailNotification', [ $editor, $title, $this ] ) && + $this->mAttribs['rc_type'] != RC_CATEGORIZE ) { // @FIXME: This would be better as an extension hook // Send emails or email jobs once this row is safely committed @@ -586,7 +597,9 @@ class RecentChange { 'rc_cur_id' => $title->getArticleID(), 'rc_user' => $user->getId(), 'rc_user_text' => $user->getName(), - 'rc_comment' => $comment, + 'rc_comment' => &$comment, + 'rc_comment_text' => &$comment, + 'rc_comment_data' => null, 'rc_this_oldid' => $newId, 'rc_last_oldid' => $oldId, 'rc_bot' => $bot ? 1 : 0, @@ -659,7 +672,9 @@ class RecentChange { 'rc_cur_id' => $title->getArticleID(), 'rc_user' => $user->getId(), 'rc_user_text' => $user->getName(), - 'rc_comment' => $comment, + 'rc_comment' => &$comment, + 'rc_comment_text' => &$comment, + 'rc_comment_data' => null, 'rc_this_oldid' => $newId, 'rc_last_oldid' => 0, 'rc_bot' => $bot ? 1 : 0, @@ -789,7 +804,9 @@ class RecentChange { 'rc_cur_id' => $target->getArticleID(), 'rc_user' => $user->getId(), 'rc_user_text' => $user->getName(), - 'rc_comment' => $logComment, + 'rc_comment' => &$logComment, + 'rc_comment_text' => &$logComment, + 'rc_comment_data' => null, 'rc_this_oldid' => $revId, 'rc_last_oldid' => 0, 'rc_bot' => $user->isAllowed( 'bot' ) ? (int)$wgRequest->getBool( 'bot', true ) : 0, @@ -833,6 +850,7 @@ class RecentChange { * @param bool $bot true, if the change was made by a bot * @param string $ip IP address of the user, if the change was made anonymously * @param int $deleted Indicates whether the change has been deleted + * @param bool $added true, if the category was added, false for removed * * @return RecentChange */ @@ -847,8 +865,17 @@ class RecentChange { $lastTimestamp, $bot, $ip = '', - $deleted = 0 + $deleted = 0, + $added = null ) { + // Done in a backwards compatible way. + $params = [ + 'hidden-cat' => WikiCategoryPage::factory( $categoryTitle )->isHidden() + ]; + if ( $added !== null ) { + $params['added'] = $added; + } + $rc = new RecentChange; $rc->mTitle = $categoryTitle; $rc->mPerformer = $user; @@ -862,7 +889,9 @@ class RecentChange { 'rc_cur_id' => $pageTitle->getArticleID(), 'rc_user' => $user ? $user->getId() : 0, 'rc_user_text' => $user ? $user->getName() : '', - 'rc_comment' => $comment, + 'rc_comment' => &$comment, + 'rc_comment_text' => &$comment, + 'rc_comment_data' => null, 'rc_this_oldid' => $newRevId, 'rc_last_oldid' => $oldRevId, 'rc_bot' => $bot ? 1 : 0, @@ -875,9 +904,7 @@ class RecentChange { 'rc_logid' => 0, 'rc_log_type' => null, 'rc_log_action' => '', - 'rc_params' => serialize( [ - 'hidden-cat' => WikiCategoryPage::factory( $categoryTitle )->isHidden() - ] ) + 'rc_params' => serialize( $params ) ]; $rc->mExtra = [ @@ -922,6 +949,13 @@ class RecentChange { $this->mAttribs['rc_ip'] = substr( $this->mAttribs['rc_ip'], 0, $n ); } } + + $comment = CommentStore::newKey( 'rc_comment' ) + // Legacy because $row probably came from self::selectFields() + ->getCommentLegacy( wfGetDB( DB_REPLICA ), $row, true )->text; + $this->mAttribs['rc_comment'] = &$comment; + $this->mAttribs['rc_comment_text'] = &$comment; + $this->mAttribs['rc_comment_data'] = null; } /** @@ -931,6 +965,9 @@ class RecentChange { * @return mixed */ public function getAttribute( $name ) { + if ( $name === 'rc_comment' ) { + return CommentStore::newKey( 'rc_comment' )->getComment( $this->mAttribs, true )->text; + } return isset( $this->mAttribs[$name] ) ? $this->mAttribs[$name] : null; } diff --git a/includes/collation/IcuCollation.php b/includes/collation/IcuCollation.php index d93362bcaa..54b04eead8 100644 --- a/includes/collation/IcuCollation.php +++ b/includes/collation/IcuCollation.php @@ -36,7 +36,7 @@ class IcuCollation extends Collation { /** @var Language */ protected $digitTransformLanguage; - /** @var boolean */ + /** @var bool */ private $useNumericCollation = false; /** @var array */ diff --git a/includes/compat/CdbCompat.php b/includes/compat/CdbCompat.php deleted file mode 100644 index 0074cc96b0..0000000000 --- a/includes/compat/CdbCompat.php +++ /dev/null @@ -1,45 +0,0 @@ -http->run( [ 'method' => 'GET', - 'url' => "{$this->protocol}://{$address}/v2/keys/{$this->directory}/", + 'url' => "{$this->protocol}://{$address}/v2/keys/{$this->directory}/?recursive=true", 'headers' => [ 'content-type' => 'application/json' ] ] ); @@ -240,28 +240,65 @@ class EtcdConfig implements Config, LoggerAwareInterface { empty( $terminalCodes[$rcode] ) ]; } + try { + return [ $this->parseResponse( $rbody ), null, false ]; + } catch ( EtcdConfigParseError $e ) { + return [ null, $e->getMessage(), false ]; + } + } + /** + * Parse a response body, throwing EtcdConfigParseError if there is a validation error + * + * @param string $rbody + * @return array + */ + protected function parseResponse( $rbody ) { $info = json_decode( $rbody, true ); - if ( $info === null || !isset( $info['node']['nodes'] ) ) { - return [ null, "Unexpected JSON response; missing 'nodes' list.", false ]; + if ( $info === null ) { + throw new EtcdConfigParseError( "Error unserializing JSON response." ); + } + if ( !isset( $info['node'] ) || !is_array( $info['node'] ) ) { + throw new EtcdConfigParseError( + "Unexpected JSON response: Missing or invalid node at top level." ); } - $config = []; - foreach ( $info['node']['nodes'] as $node ) { + $this->parseDirectory( '', $info['node'], $config ); + return $config; + } + + /** + * Recursively parse a directory node and populate the array passed by + * reference, throwing EtcdConfigParseError if there is a validation error + * + * @param string $dirName The relative directory name + * @param array $dirNode The decoded directory node + * @param array &$config The output array + */ + protected function parseDirectory( $dirName, $dirNode, &$config ) { + if ( !isset( $dirNode['nodes'] ) ) { + throw new EtcdConfigParseError( + "Unexpected JSON response in dir '$dirName'; missing 'nodes' list." ); + } + if ( !is_array( $dirNode['nodes'] ) ) { + throw new EtcdConfigParseError( + "Unexpected JSON response in dir '$dirName'; 'nodes' is not an array." ); + } + + foreach ( $dirNode['nodes'] as $node ) { + $baseName = basename( $node['key'] ); + $fullName = $dirName === '' ? $baseName : "$dirName/$baseName"; if ( !empty( $node['dir'] ) ) { - continue; // skip directories - } + $this->parseDirectory( $fullName, $node, $config ); + } else { + $value = $this->unserialize( $node['value'] ); + if ( !is_array( $value ) || !array_key_exists( 'val', $value ) ) { + throw new EtcdConfigParseError( "Failed to parse value for '$fullName'." ); + } - $name = basename( $node['key'] ); - $value = $this->unserialize( $node['value'] ); - if ( !is_array( $value ) || !array_key_exists( 'val', $value ) ) { - return [ null, "Failed to parse value for '$name'.", false ]; + $config[$fullName] = $value['val']; } - - $config[$name] = $value['val']; } - - return [ $config, null, false ]; } /** diff --git a/includes/config/EtcdConfigParseError.php b/includes/config/EtcdConfigParseError.php new file mode 100644 index 0000000000..cab90a8ef8 --- /dev/null +++ b/includes/config/EtcdConfigParseError.php @@ -0,0 +1,4 @@ + higher QoS) */ - /** @var integer Read from a replica DB/non-quorum */ + /** @var int Read from a replica DB/non-quorum */ const READ_NORMAL = 0; - /** @var integer Read from the master/quorum */ + /** @var int Read from the master/quorum */ const READ_LATEST = 1; - /* @var integer Read from the master/quorum and lock out other writers */ + /* @var int Read from the master/quorum and lock out other writers */ const READ_LOCKING = 3; // READ_LATEST (1) and "LOCK IN SHARE MODE" (2) - /** @var integer Read from the master/quorum and lock out other writers and locking readers */ + /** @var int Read from the master/quorum and lock out other writers and locking readers */ const READ_EXCLUSIVE = 7; // READ_LOCKING (3) and "FOR UPDATE" (4) - /** @var integer Read from a replica DB or without a quorum, using the master/quorum on miss */ + /** @var int Read from a replica DB or without a quorum, using the master/quorum on miss */ const READ_LATEST_IMMUTABLE = 8; // Convenience constant for tracking how data was loaded (higher => higher QoS) diff --git a/includes/db/DatabaseOracle.php b/includes/db/DatabaseOracle.php index 556fe75547..e2feb1fa7c 100644 --- a/includes/db/DatabaseOracle.php +++ b/includes/db/DatabaseOracle.php @@ -37,9 +37,6 @@ class DatabaseOracle extends Database { /** @var int The number of rows affected as an integer */ protected $mAffectedRows; - /** @var int */ - private $mInsertId = null; - /** @var bool */ private $ignoreDupValOnIndex = false; @@ -319,12 +316,10 @@ class DatabaseOracle extends Database { return oci_field_name( $stmt, $n ); } - /** - * This must be called after nextSequenceVal - * @return null|int - */ function insertId() { - return $this->mInsertId; + $res = $this->query( "SELECT lastval_pkg.getLastval FROM dual" ); + $row = $this->fetchRow( $res ); + return is_null( $row[0] ) ? null : (int)$row[0]; } /** @@ -649,20 +644,6 @@ class DatabaseOracle extends Database { return preg_replace( '/.*\.(.*)/', '$1', $name ); } - /** - * Return the next in a sequence, save the value for retrieval via insertId() - * - * @param string $seqName - * @return null|int - */ - function nextSequenceValue( $seqName ) { - $res = $this->query( "SELECT $seqName.nextval FROM dual" ); - $row = $this->fetchRow( $res ); - $this->mInsertId = $row[0]; - - return $this->mInsertId; - } - /** * Return sequence_name if table has a sequence * diff --git a/includes/debug/logger/monolog/WikiProcessor.php b/includes/debug/logger/monolog/WikiProcessor.php index 5e32887a17..e39a2c300a 100644 --- a/includes/debug/logger/monolog/WikiProcessor.php +++ b/includes/debug/logger/monolog/WikiProcessor.php @@ -35,15 +35,13 @@ class WikiProcessor { */ public function __invoke( array $record ) { global $wgVersion; - $record['extra'] = array_merge( - $record['extra'], - [ - 'host' => wfHostname(), - 'wiki' => wfWikiID(), - 'mwversion' => $wgVersion, - 'reqId' => \WebRequest::getRequestId(), - ] - ); + $record['extra']['host'] = wfHostname(); + $record['extra']['wiki'] = wfWikiID(); + $record['extra']['mwversion'] = $wgVersion; + $record['extra']['reqId'] = \WebRequest::getRequestId(); + if ( PHP_SAPI === 'cli' && isset( $_SERVER['argv'] ) ) { + $record['extra']['cli_argv'] = implode( ' ', $_SERVER['argv'] ); + } return $record; } diff --git a/includes/deferred/CdnCacheUpdate.php b/includes/deferred/CdnCacheUpdate.php index 470086ae9f..7fafc0ebca 100644 --- a/includes/deferred/CdnCacheUpdate.php +++ b/includes/deferred/CdnCacheUpdate.php @@ -49,11 +49,12 @@ class CdnCacheUpdate implements DeferrableUpdate, MergeableUpdate { /** * Create an update object from an array of Title objects, or a TitleArray object * - * @param Traversable|array $titles + * @param Traversable|Title[] $titles * @param string[] $urlArr * @return CdnCacheUpdate */ public static function newFromTitles( $titles, $urlArr = [] ) { + ( new LinkBatch( $titles ) )->execute(); /** @var Title $title */ foreach ( $titles as $title ) { $urlArr = array_merge( $urlArr, $title->getCdnUrls() ); diff --git a/includes/deferred/DeferredUpdates.php b/includes/deferred/DeferredUpdates.php index e8f27ef233..e8e250b551 100644 --- a/includes/deferred/DeferredUpdates.php +++ b/includes/deferred/DeferredUpdates.php @@ -71,7 +71,7 @@ class DeferredUpdates { * In CLI mode, callback magic will also be used to run updates when safe * * @param DeferrableUpdate $update Some object that implements doUpdate() - * @param integer $stage DeferredUpdates constant (PRESEND or POSTSEND) (since 1.27) + * @param int $stage DeferredUpdates constant (PRESEND or POSTSEND) (since 1.27) */ public static function addUpdate( DeferrableUpdate $update, $stage = self::POSTSEND ) { global $wgCommandLineMode; @@ -105,7 +105,7 @@ class DeferredUpdates { * @see MWCallableUpdate::__construct() * * @param callable $callable - * @param integer $stage DeferredUpdates constant (PRESEND or POSTSEND) (since 1.27) + * @param int $stage DeferredUpdates constant (PRESEND or POSTSEND) (since 1.27) * @param IDatabase|null $dbw Abort if this DB is rolled back [optional] (since 1.28) */ public static function addCallableUpdate( @@ -118,7 +118,7 @@ class DeferredUpdates { * Do any deferred updates and clear the list * * @param string $mode Use "enqueue" to use the job queue when possible [Default: "run"] - * @param integer $stage DeferredUpdates constant (PRESEND, POSTSEND, or ALL) (since 1.27) + * @param int $stage DeferredUpdates constant (PRESEND, POSTSEND, or ALL) (since 1.27) */ public static function doUpdates( $mode = 'run', $stage = self::ALL ) { $stageEffective = ( $stage === self::ALL ) ? self::POSTSEND : $stage; @@ -149,7 +149,7 @@ class DeferredUpdates { if ( $update instanceof MergeableUpdate ) { $class = get_class( $update ); // fully-qualified class if ( isset( $queue[$class] ) ) { - /** @var $existingUpdate MergeableUpdate */ + /** @var MergeableUpdate $existingUpdate */ $existingUpdate = $queue[$class]; $existingUpdate->merge( $update ); } else { @@ -165,7 +165,7 @@ class DeferredUpdates { * * @param DeferrableUpdate[] &$queue List of DeferrableUpdate objects * @param string $mode Use "enqueue" to use the job queue when possible - * @param integer $stage Class constant (PRESEND, POSTSEND) (since 1.28) + * @param int $stage Class constant (PRESEND, POSTSEND) (since 1.28) * @throws ErrorPageError Happens on top-level calls * @throws Exception Happens on second-level calls */ @@ -238,7 +238,7 @@ class DeferredUpdates { * @param DeferrableUpdate $update * @param LBFactory $lbFactory * @param string $mode - * @param integer $stage + * @param int $stage * @return ErrorPageError|null */ private static function runUpdate( @@ -322,7 +322,7 @@ class DeferredUpdates { } /** - * @return integer Number of enqueued updates + * @return int Number of enqueued updates * @since 1.28 */ public static function pendingUpdatesCount() { @@ -330,7 +330,7 @@ class DeferredUpdates { } /** - * @param integer $stage DeferredUpdates constant (PRESEND, POSTSEND, or ALL) + * @param int $stage DeferredUpdates constant (PRESEND, POSTSEND, or ALL) * @return DeferrableUpdate[] * @since 1.29 */ diff --git a/includes/deferred/LinksDeletionUpdate.php b/includes/deferred/LinksDeletionUpdate.php index 3dd9de6f91..f579a1f12f 100644 --- a/includes/deferred/LinksDeletionUpdate.php +++ b/includes/deferred/LinksDeletionUpdate.php @@ -29,7 +29,7 @@ use Wikimedia\Rdbms\IDatabase; class LinksDeletionUpdate extends DataUpdate implements EnqueueableDataUpdate { /** @var WikiPage */ protected $page; - /** @var integer */ + /** @var int */ protected $pageId; /** @var string */ protected $timestamp; @@ -39,7 +39,7 @@ class LinksDeletionUpdate extends DataUpdate implements EnqueueableDataUpdate { /** * @param WikiPage $page Page we are updating - * @param integer|null $pageId ID of the page we are updating [optional] + * @param int|null $pageId ID of the page we are updating [optional] * @param string|null $timestamp TS_MW timestamp of deletion * @throws MWException */ diff --git a/includes/deferred/LinksUpdate.php b/includes/deferred/LinksUpdate.php index c6facd9bf8..33d4e70826 100644 --- a/includes/deferred/LinksUpdate.php +++ b/includes/deferred/LinksUpdate.php @@ -192,7 +192,7 @@ class LinksUpdate extends DataUpdate implements EnqueueableDataUpdate { * Acquire a lock for performing link table updates for a page on a DB * * @param IDatabase $dbw - * @param integer $pageId + * @param int $pageId * @param string $why One of (job, atomicity) * @return ScopedCallback * @throws RuntimeException @@ -548,7 +548,6 @@ class LinksUpdate extends DataUpdate implements EnqueueableDataUpdate { foreach ( $diffs as $url => $dummy ) { foreach ( wfMakeUrlIndexes( $url ) as $index ) { $arr[] = [ - 'el_id' => $this->getDB()->nextSequenceValue( 'externallinks_el_id_seq' ), 'el_from' => $this->mId, 'el_to' => $url, 'el_index' => $index, diff --git a/includes/diff/DifferenceEngine.php b/includes/diff/DifferenceEngine.php index 7f9af604fd..34f285235a 100644 --- a/includes/diff/DifferenceEngine.php +++ b/includes/diff/DifferenceEngine.php @@ -918,7 +918,7 @@ class DifferenceEngine extends ContextSource { $wikidiff2Version = phpversion( 'wikidiff2' ); if ( $wikidiff2Version !== false && - version_compare( $wikidiff2Version, '0.3.0', '>=' ) + version_compare( $wikidiff2Version, '0.3', '>=' ) ) { $text = wikidiff2_do_diff( $otext, diff --git a/includes/exception/MWExceptionRenderer.php b/includes/exception/MWExceptionRenderer.php index 60d760f3aa..bb5e4f4eda 100644 --- a/includes/exception/MWExceptionRenderer.php +++ b/includes/exception/MWExceptionRenderer.php @@ -33,7 +33,7 @@ class MWExceptionRenderer { /** * @param Exception|Throwable $e Original exception - * @param integer $mode MWExceptionExposer::AS_* constant + * @param int $mode MWExceptionExposer::AS_* constant * @param Exception|Throwable|null $eNew New exception from attempting to show the first */ public static function output( $e, $mode, $eNew = null ) { @@ -262,7 +262,7 @@ class MWExceptionRenderer { } /** - * @param integer $code + * @param int $code */ private static function statusHeader( $code ) { if ( !headers_sent() ) { diff --git a/includes/export/WikiExporter.php b/includes/export/WikiExporter.php index e0ebaa2411..6e2a5a4f0c 100644 --- a/includes/export/WikiExporter.php +++ b/includes/export/WikiExporter.php @@ -260,7 +260,7 @@ class WikiExporter { protected function dumpFrom( $cond = '', $orderRevs = false ) { # For logging dumps... if ( $this->history & self::LOGS ) { - $where = [ 'user_id = log_user' ]; + $where = []; # Hide private logs $hideLogs = LogEventsList::getExcludeClause( $this->db ); if ( $hideLogs ) { @@ -277,12 +277,16 @@ class WikiExporter { $prev = $this->db->bufferResults( false ); } $result = null; // Assuring $result is not undefined, if exception occurs early + + $commentQuery = CommentStore::newKey( 'log_comment' )->getJoin(); + try { - $result = $this->db->select( [ 'logging', 'user' ], - [ "{$logging}.*", 'user_name' ], // grab the user name + $result = $this->db->select( [ 'logging', 'user' ] + $commentQuery['tables'], + [ "{$logging}.*", 'user_name' ] + $commentQuery['fields'], // grab the user name $where, __METHOD__, - [ 'ORDER BY' => 'log_id', 'USE INDEX' => [ 'logging' => 'PRIMARY' ] ] + [ 'ORDER BY' => 'log_id', 'USE INDEX' => [ 'logging' => 'PRIMARY' ] ], + [ 'user' => [ 'JOIN', 'user_id = log_user' ] ] + $commentQuery['joins'] ); $this->outputLogStream( $result ); if ( $this->buffer == self::STREAM ) { @@ -395,8 +399,17 @@ class WikiExporter { Hooks::run( 'ModifyExportQuery', [ $this->db, &$tables, &$cond, &$opts, &$join ] ); + $commentQuery = CommentStore::newKey( 'rev_comment' )->getJoin(); + # Do the query! - $result = $this->db->select( $tables, '*', $cond, __METHOD__, $opts, $join ); + $result = $this->db->select( + $tables + $commentQuery['tables'], + [ '*' ] + $commentQuery['fields'], + $cond, + __METHOD__, + $opts, + $join + $commentQuery['joins'] + ); # Output dump results $this->outputPageStream( $result ); diff --git a/includes/export/XmlDumpWriter.php b/includes/export/XmlDumpWriter.php index 943408cc98..990f16dca0 100644 --- a/includes/export/XmlDumpWriter.php +++ b/includes/export/XmlDumpWriter.php @@ -218,8 +218,11 @@ class XmlDumpWriter { } if ( isset( $row->rev_deleted ) && ( $row->rev_deleted & Revision::DELETED_COMMENT ) ) { $out .= " " . Xml::element( 'comment', [ 'deleted' => 'deleted' ] ) . "\n"; - } elseif ( $row->rev_comment != '' ) { - $out .= " " . Xml::elementClean( 'comment', [], strval( $row->rev_comment ) ) . "\n"; + } else { + $comment = CommentStore::newKey( 'rev_comment' )->getComment( $row )->text; + if ( $comment != '' ) { + $out .= " " . Xml::elementClean( 'comment', [], strval( $comment ) ) . "\n"; + } } if ( isset( $row->rev_content_model ) && !is_null( $row->rev_content_model ) ) { @@ -299,8 +302,11 @@ class XmlDumpWriter { if ( $row->log_deleted & LogPage::DELETED_COMMENT ) { $out .= " " . Xml::element( 'comment', [ 'deleted' => 'deleted' ] ) . "\n"; - } elseif ( $row->log_comment != '' ) { - $out .= " " . Xml::elementClean( 'comment', null, strval( $row->log_comment ) ) . "\n"; + } else { + $comment = CommentStore::newKey( 'log_comment' )->getComment( $row )->text; + if ( $comment != '' ) { + $out .= " " . Xml::elementClean( 'comment', null, strval( $comment ) ) . "\n"; + } } $out .= " " . Xml::element( 'type', null, strval( $row->log_type ) ) . "\n"; diff --git a/includes/externalstore/ExternalStoreDB.php b/includes/externalstore/ExternalStoreDB.php index 6bb1618ff6..e5d36e10cb 100644 --- a/includes/externalstore/ExternalStoreDB.php +++ b/includes/externalstore/ExternalStoreDB.php @@ -92,9 +92,8 @@ class ExternalStoreDB extends ExternalStoreMedium { public function store( $location, $data ) { $dbw = $this->getMaster( $location ); - $id = $dbw->nextSequenceValue( 'blob_blob_id_seq' ); $dbw->insert( $this->getTable( $dbw ), - [ 'blob_id' => $id, 'blob_text' => $data ], + [ 'blob_text' => $data ], __METHOD__ ); $id = $dbw->insertId(); if ( !$id ) { diff --git a/includes/filerepo/FileBackendDBRepoWrapper.php b/includes/filerepo/FileBackendDBRepoWrapper.php index c37a942128..0d5a15d2f0 100644 --- a/includes/filerepo/FileBackendDBRepoWrapper.php +++ b/includes/filerepo/FileBackendDBRepoWrapper.php @@ -282,7 +282,7 @@ class FileBackendDBRepoWrapper extends FileBackend { /** * Get a connection to the repo file registry DB * - * @param integer $index + * @param int $index * @return DBConnRef */ protected function getDB( $index ) { diff --git a/includes/filerepo/ForeignAPIRepo.php b/includes/filerepo/ForeignAPIRepo.php index 56ccc64499..55a19e8327 100644 --- a/includes/filerepo/ForeignAPIRepo.php +++ b/includes/filerepo/ForeignAPIRepo.php @@ -511,7 +511,7 @@ class ForeignAPIRepo extends FileRepo { * @param string $url * @param string $timeout * @param array $options - * @param integer|bool &$mtime Resulting Last-Modified UNIX timestamp if received + * @param int|bool &$mtime Resulting Last-Modified UNIX timestamp if received * @return bool|string */ public static function httpGet( diff --git a/includes/filerepo/LocalRepo.php b/includes/filerepo/LocalRepo.php index 20d51c254a..ed00793508 100644 --- a/includes/filerepo/LocalRepo.php +++ b/includes/filerepo/LocalRepo.php @@ -274,14 +274,13 @@ class LocalRepo extends FileRepo { ); }; - $that = $this; $applyMatchingFiles = function ( ResultWrapper $res, &$searchSet, &$finalFiles ) - use ( $that, $fileMatchesSearch, $flags ) + use ( $fileMatchesSearch, $flags ) { global $wgContLang; - $info = $that->getInfo(); + $info = $this->getInfo(); foreach ( $res as $row ) { - $file = $that->newFileFromRow( $row ); + $file = $this->newFileFromRow( $row ); // There must have been a search for this DB key, but this has to handle the // cases were title capitalization is different on the client and repo wikis. $dbKeysLook = [ strtr( $file->getName(), ' ', '_' ) ]; diff --git a/includes/filerepo/file/ArchivedFile.php b/includes/filerepo/file/ArchivedFile.php index 6984d48c6d..758fb4b5a1 100644 --- a/includes/filerepo/file/ArchivedFile.php +++ b/includes/filerepo/file/ArchivedFile.php @@ -215,6 +215,8 @@ class ArchivedFile { /** * Fields in the filearchive table + * @todo Deprecate this in favor of a method that returns tables and joins + * as well, and use CommentStore::getJoin(). * @return array */ static function selectFields() { @@ -232,14 +234,13 @@ class ArchivedFile { 'fa_media_type', 'fa_major_mime', 'fa_minor_mime', - 'fa_description', 'fa_user', 'fa_user_text', 'fa_timestamp', 'fa_deleted', 'fa_deleted_timestamp', /* Used by LocalFileRestoreBatch */ 'fa_sha1', - ]; + ] + CommentStore::newKey( 'fa_description' )->getFields(); } /** @@ -261,7 +262,9 @@ class ArchivedFile { $this->metadata = $row->fa_metadata; $this->mime = "$row->fa_major_mime/$row->fa_minor_mime"; $this->media_type = $row->fa_media_type; - $this->description = $row->fa_description; + $this->description = CommentStore::newKey( 'fa_description' ) + // Legacy because $row probably came from self::selectFields() + ->getCommentLegacy( wfGetDB( DB_REPLICA ), $row )->text; $this->user = $row->fa_user; $this->user_text = $row->fa_user_text; $this->timestamp = $row->fa_timestamp; diff --git a/includes/filerepo/file/File.php b/includes/filerepo/file/File.php index 71e1c63480..32f4504ba6 100644 --- a/includes/filerepo/file/File.php +++ b/includes/filerepo/file/File.php @@ -862,7 +862,7 @@ abstract class File implements IDBAccessObject { * * Overridden by LocalFile to actually query the DB * - * @param integer $flags Bitfield of File::READ_* constants + * @param int $flags Bitfield of File::READ_* constants */ public function load( $flags = 0 ) { } @@ -1147,7 +1147,7 @@ abstract class File implements IDBAccessObject { if ( !$thumb ) { // bad params? $thumb = false; } elseif ( $thumb->isError() ) { // transform error - /** @var $thumb MediaTransformError */ + /** @var MediaTransformError $thumb */ $this->lastError = $thumb->toText(); // Ignore errors if requested if ( $wgIgnoreImageErrors && !( $flags & self::RENDER_NOW ) ) { @@ -1282,11 +1282,10 @@ abstract class File implements IDBAccessObject { // Thumbnailing a very large file could result in network saturation if // everyone does it at once. if ( $this->getSize() >= 1e7 ) { // 10MB - $that = $this; $work = new PoolCounterWorkViaCallback( 'GetLocalFileCopy', sha1( $this->getName() ), [ - 'doWork' => function () use ( $that ) { - return $that->getLocalRefPath(); + 'doWork' => function () { + return $this->getLocalRefPath(); } ] ); diff --git a/includes/filerepo/file/LocalFile.php b/includes/filerepo/file/LocalFile.php index 33177d3f6f..810f788dfe 100644 --- a/includes/filerepo/file/LocalFile.php +++ b/includes/filerepo/file/LocalFile.php @@ -193,6 +193,8 @@ class LocalFile extends File { /** * Fields in the image table + * @todo Deprecate this in favor of a method that returns tables and joins + * as well, and use CommentStore::getJoin(). * @return array */ static function selectFields() { @@ -206,12 +208,11 @@ class LocalFile extends File { 'img_media_type', 'img_major_mime', 'img_minor_mime', - 'img_description', 'img_user', 'img_user_text', 'img_timestamp', 'img_sha1', - ]; + ] + CommentStore::newKey( 'img_description' )->getFields(); } /** @@ -1194,8 +1195,6 @@ class LocalFile extends File { function upload( $src, $comment, $pageText, $flags = 0, $props = false, $timestamp = false, $user = null, $tags = [] ) { - global $wgContLang; - if ( $this->getRepo()->getReadOnlyReason() !== false ) { return $this->readOnlyFatalStatus(); } @@ -1229,9 +1228,6 @@ class LocalFile extends File { // Trim spaces on user supplied text $comment = trim( $comment ); - // Truncate nicely or the DB will do it for us - // non-nicely (dangling multi-byte chars, non-truncated version in cache). - $comment = $wgContLang->truncate( $comment, 255 ); $this->lock(); // begin $status = $this->publish( $src, $flags, $options ); @@ -1299,6 +1295,8 @@ class LocalFile extends File { function recordUpload2( $oldver, $comment, $pageText, $props = false, $timestamp = false, $user = null, $tags = [] ) { + global $wgCommentTableSchemaMigrationStage; + if ( is_null( $user ) ) { global $wgUser; $user = $wgUser; @@ -1334,6 +1332,9 @@ class LocalFile extends File { # Test to see if the row exists using INSERT IGNORE # This avoids race conditions by locking the row until the commit, and also # doesn't deadlock. SELECT FOR UPDATE causes a deadlock for every race condition. + $commentStore = new CommentStore( 'img_description' ); + list( $commentFields, $commentCallback ) = + $commentStore->insertWithTempTable( $dbw, $comment ); $dbw->insert( 'image', [ 'img_name' => $this->getName(), @@ -1345,17 +1346,16 @@ class LocalFile extends File { 'img_major_mime' => $this->major_mime, 'img_minor_mime' => $this->minor_mime, 'img_timestamp' => $timestamp, - 'img_description' => $comment, 'img_user' => $user->getId(), 'img_user_text' => $user->getName(), 'img_metadata' => $dbw->encodeBlob( $this->metadata ), 'img_sha1' => $this->sha1 - ], + ] + $commentFields, __METHOD__, 'IGNORE' ); - $reupload = ( $dbw->affectedRows() == 0 ); + if ( $reupload ) { if ( $allowTimeKludge ) { # Use LOCK IN SHARE MODE to ignore any transaction snapshotting @@ -1376,33 +1376,65 @@ class LocalFile extends File { } } + $tables = [ 'image' ]; + $fields = [ + 'oi_name' => 'img_name', + 'oi_archive_name' => $dbw->addQuotes( $oldver ), + 'oi_size' => 'img_size', + 'oi_width' => 'img_width', + 'oi_height' => 'img_height', + 'oi_bits' => 'img_bits', + 'oi_timestamp' => 'img_timestamp', + 'oi_user' => 'img_user', + 'oi_user_text' => 'img_user_text', + 'oi_metadata' => 'img_metadata', + 'oi_media_type' => 'img_media_type', + 'oi_major_mime' => 'img_major_mime', + 'oi_minor_mime' => 'img_minor_mime', + 'oi_sha1' => 'img_sha1', + ]; + $joins = []; + + if ( $wgCommentTableSchemaMigrationStage <= MIGRATION_WRITE_BOTH ) { + $fields['oi_description'] = 'img_description'; + } + if ( $wgCommentTableSchemaMigrationStage >= MIGRATION_WRITE_BOTH ) { + $tables[] = 'image_comment_temp'; + $fields['oi_description_id'] = 'imgcomment_description_id'; + $joins['image_comment_temp'] = [ + $wgCommentTableSchemaMigrationStage === MIGRATION_NEW ? 'JOIN' : 'LEFT JOIN', + [ 'imgcomment_name = img_name' ] + ]; + } + + if ( $wgCommentTableSchemaMigrationStage !== MIGRATION_OLD && + $wgCommentTableSchemaMigrationStage !== MIGRATION_NEW + ) { + // Upgrade any rows that are still old-style. Otherwise an upgrade + // might be missed if a deletion happens while the migration script + // is running. + $res = $dbw->select( + [ 'image', 'image_comment_temp' ], + [ 'img_name', 'img_description' ], + [ 'img_name' => $this->getName(), 'imgcomment_name' => null ], + __METHOD__, + [], + [ 'image_comment_temp' => [ 'LEFT JOIN', [ 'imgcomment_name = img_name' ] ] ] + ); + foreach ( $res as $row ) { + list( , $callback ) = $commentStore->insertWithTempTable( $dbw, $row->img_description ); + $callback( $row->img_name ); + } + } + # (T36993) Note: $oldver can be empty here, if the previous # version of the file was broken. Allow registration of the new # version to continue anyway, because that's better than having # an image that's not fixable by user operations. # Collision, this is an update of a file # Insert previous contents into oldimage - $dbw->insertSelect( 'oldimage', 'image', - [ - 'oi_name' => 'img_name', - 'oi_archive_name' => $dbw->addQuotes( $oldver ), - 'oi_size' => 'img_size', - 'oi_width' => 'img_width', - 'oi_height' => 'img_height', - 'oi_bits' => 'img_bits', - 'oi_timestamp' => 'img_timestamp', - 'oi_description' => 'img_description', - 'oi_user' => 'img_user', - 'oi_user_text' => 'img_user_text', - 'oi_metadata' => 'img_metadata', - 'oi_media_type' => 'img_media_type', - 'oi_major_mime' => 'img_major_mime', - 'oi_minor_mime' => 'img_minor_mime', - 'oi_sha1' => 'img_sha1' - ], - [ 'img_name' => $this->getName() ], - __METHOD__ - ); + $dbw->insertSelect( 'oldimage', $tables, $fields, + [ 'img_name' => $this->getName() ], __METHOD__, [], [], $joins ); # Update the current image row $dbw->update( 'image', @@ -1415,16 +1447,20 @@ class LocalFile extends File { 'img_major_mime' => $this->major_mime, 'img_minor_mime' => $this->minor_mime, 'img_timestamp' => $timestamp, - 'img_description' => $comment, 'img_user' => $user->getId(), 'img_user_text' => $user->getName(), 'img_metadata' => $dbw->encodeBlob( $this->metadata ), 'img_sha1' => $this->sha1 - ], + ] + $commentFields, [ 'img_name' => $this->getName() ], __METHOD__ ); + if ( $wgCommentTableSchemaMigrationStage > MIGRATION_OLD ) { + // So $commentCallback can insert the new row + $dbw->delete( 'image_comment_temp', [ 'imgcomment_name' => $this->getName() ], __METHOD__ ); + } } + $commentCallback( $this->getName() ); $descTitle = $this->getTitle(); $descId = $descTitle->getArticleID(); @@ -1515,7 +1551,7 @@ class LocalFile extends File { ); if ( isset( $status->value['revision'] ) ) { - /** @var $rev Revision */ + /** @var Revision $rev */ $rev = $status->value['revision']; // Associate new page revision id $logEntry->setAssociatedRevId( $rev->getId() ); @@ -1523,7 +1559,7 @@ class LocalFile extends File { // This relies on the resetArticleID() call in WikiPage::insertOn(), // which is triggered on $descTitle by doEditContent() above. if ( isset( $status->value['revision'] ) ) { - /** @var $rev Revision */ + /** @var Revision $rev */ $rev = $status->value['revision']; $updateLogPage = $rev->getPage(); } @@ -2255,8 +2291,16 @@ class LocalFileDeleteBatch { } protected function doDBInserts() { + global $wgCommentTableSchemaMigrationStage; + $now = time(); $dbw = $this->file->repo->getMasterDB(); + + $commentStoreImgDesc = new CommentStore( 'img_description' ); + $commentStoreOiDesc = new CommentStore( 'oi_description' ); + $commentStoreFaDesc = new CommentStore( 'fa_description' ); + $commentStoreFaReason = new CommentStore( 'fa_deleted_reason' ); + $encTimestamp = $dbw->addQuotes( $dbw->timestamp( $now ) ); $encUserId = $dbw->addQuotes( $this->user->getId() ); $encReason = $dbw->addQuotes( $this->reason ); @@ -2274,39 +2318,70 @@ class LocalFileDeleteBatch { } if ( $deleteCurrent ) { - $dbw->insertSelect( - 'filearchive', - 'image', - [ - 'fa_storage_group' => $encGroup, - 'fa_storage_key' => $dbw->conditional( - [ 'img_sha1' => '' ], - $dbw->addQuotes( '' ), - $dbw->buildConcat( [ "img_sha1", $encExt ] ) - ), - 'fa_deleted_user' => $encUserId, - 'fa_deleted_timestamp' => $encTimestamp, - 'fa_deleted_reason' => $encReason, - 'fa_deleted' => $this->suppress ? $bitfield : 0, - 'fa_name' => 'img_name', - 'fa_archive_name' => 'NULL', - 'fa_size' => 'img_size', - 'fa_width' => 'img_width', - 'fa_height' => 'img_height', - 'fa_metadata' => 'img_metadata', - 'fa_bits' => 'img_bits', - 'fa_media_type' => 'img_media_type', - 'fa_major_mime' => 'img_major_mime', - 'fa_minor_mime' => 'img_minor_mime', - 'fa_description' => 'img_description', - 'fa_user' => 'img_user', - 'fa_user_text' => 'img_user_text', - 'fa_timestamp' => 'img_timestamp', - 'fa_sha1' => 'img_sha1' - ], - [ 'img_name' => $this->file->getName() ], - __METHOD__ - ); + $tables = [ 'image' ]; + $fields = [ + 'fa_storage_group' => $encGroup, + 'fa_storage_key' => $dbw->conditional( + [ 'img_sha1' => '' ], + $dbw->addQuotes( '' ), + $dbw->buildConcat( [ "img_sha1", $encExt ] ) + ), + 'fa_deleted_user' => $encUserId, + 'fa_deleted_timestamp' => $encTimestamp, + 'fa_deleted' => $this->suppress ? $bitfield : 0, + 'fa_name' => 'img_name', + 'fa_archive_name' => 'NULL', + 'fa_size' => 'img_size', + 'fa_width' => 'img_width', + 'fa_height' => 'img_height', + 'fa_metadata' => 'img_metadata', + 'fa_bits' => 'img_bits', + 'fa_media_type' => 'img_media_type', + 'fa_major_mime' => 'img_major_mime', + 'fa_minor_mime' => 'img_minor_mime', + 'fa_user' => 'img_user', + 'fa_user_text' => 'img_user_text', + 'fa_timestamp' => 'img_timestamp', + 'fa_sha1' => 'img_sha1' + ]; + $joins = []; + + $fields += $commentStoreFaReason->insert( $dbw, $encReason ); + + if ( $wgCommentTableSchemaMigrationStage <= MIGRATION_WRITE_BOTH ) { + $fields['fa_description'] = 'img_description'; + } + if ( $wgCommentTableSchemaMigrationStage >= MIGRATION_WRITE_BOTH ) { + $tables[] = 'image_comment_temp'; + $fields['fa_description_id'] = 'imgcomment_description_id'; + $joins['image_comment_temp'] = [ + $wgCommentTableSchemaMigrationStage === MIGRATION_NEW ? 'JOIN' : 'LEFT JOIN', + [ 'imgcomment_name = img_name' ] + ]; + } + + if ( $wgCommentTableSchemaMigrationStage !== MIGRATION_OLD && + $wgCommentTableSchemaMigrationStage !== MIGRATION_NEW + ) { + // Upgrade any rows that are still old-style. Otherwise an upgrade + // might be missed if a deletion happens while the migration script + // is running. + $res = $dbw->select( + [ 'image', 'image_comment_temp' ], + [ 'img_name', 'img_description' ], + [ 'img_name' => $this->file->getName(), 'imgcomment_name' => null ], + __METHOD__, + [], + [ 'image_comment_temp' => [ 'LEFT JOIN', [ 'imgcomment_name = img_name' ] ] ] + ); + foreach ( $res as $row ) { + list( , $callback ) = $commentStoreImgDesc->insertWithTempTable( $dbw, $row->img_description ); + $callback( $row->img_name ); + } + } + + $dbw->insertSelect( 'filearchive', $tables, $fields, + [ 'img_name' => $this->file->getName() ], __METHOD__, [], [], $joins ); } if ( count( $oldRels ) ) { @@ -2321,34 +2396,38 @@ class LocalFileDeleteBatch { [ 'FOR UPDATE' ] ); $rowsInsert = []; - foreach ( $res as $row ) { - $rowsInsert[] = [ - // Deletion-specific fields - 'fa_storage_group' => 'deleted', - 'fa_storage_key' => ( $row->oi_sha1 === '' ) + if ( $res->numRows() ) { + $reason = $commentStoreFaReason->createComment( $dbw, $this->reason ); + foreach ( $res as $row ) { + // Legacy from OldLocalFile::selectFields() just above + $comment = $commentStoreOiDesc->getCommentLegacy( $dbw, $row ); + $rowsInsert[] = [ + // Deletion-specific fields + 'fa_storage_group' => 'deleted', + 'fa_storage_key' => ( $row->oi_sha1 === '' ) ? '' : "{$row->oi_sha1}{$dotExt}", - 'fa_deleted_user' => $this->user->getId(), - 'fa_deleted_timestamp' => $dbw->timestamp( $now ), - 'fa_deleted_reason' => $this->reason, - // Counterpart fields - 'fa_deleted' => $this->suppress ? $bitfield : $row->oi_deleted, - 'fa_name' => $row->oi_name, - 'fa_archive_name' => $row->oi_archive_name, - 'fa_size' => $row->oi_size, - 'fa_width' => $row->oi_width, - 'fa_height' => $row->oi_height, - 'fa_metadata' => $row->oi_metadata, - 'fa_bits' => $row->oi_bits, - 'fa_media_type' => $row->oi_media_type, - 'fa_major_mime' => $row->oi_major_mime, - 'fa_minor_mime' => $row->oi_minor_mime, - 'fa_description' => $row->oi_description, - 'fa_user' => $row->oi_user, - 'fa_user_text' => $row->oi_user_text, - 'fa_timestamp' => $row->oi_timestamp, - 'fa_sha1' => $row->oi_sha1 - ]; + 'fa_deleted_user' => $this->user->getId(), + 'fa_deleted_timestamp' => $dbw->timestamp( $now ), + // Counterpart fields + 'fa_deleted' => $this->suppress ? $bitfield : $row->oi_deleted, + 'fa_name' => $row->oi_name, + 'fa_archive_name' => $row->oi_archive_name, + 'fa_size' => $row->oi_size, + 'fa_width' => $row->oi_width, + 'fa_height' => $row->oi_height, + 'fa_metadata' => $row->oi_metadata, + 'fa_bits' => $row->oi_bits, + 'fa_media_type' => $row->oi_media_type, + 'fa_major_mime' => $row->oi_major_mime, + 'fa_minor_mime' => $row->oi_minor_mime, + 'fa_user' => $row->oi_user, + 'fa_user_text' => $row->oi_user_text, + 'fa_timestamp' => $row->oi_timestamp, + 'fa_sha1' => $row->oi_sha1 + ] + $commentStoreFaReason->insert( $dbw, $reason ) + + $commentStoreFaDesc->insert( $dbw, $comment ); + } } $dbw->insert( 'filearchive', $rowsInsert, __METHOD__ ); @@ -2356,6 +2435,8 @@ class LocalFileDeleteBatch { } function doDBDeletes() { + global $wgUpdateCompatibleMetadata; + $dbw = $this->file->repo->getMasterDB(); list( $oldRels, $deleteCurrent ) = $this->getOldRels(); @@ -2369,6 +2450,11 @@ class LocalFileDeleteBatch { if ( $deleteCurrent ) { $dbw->delete( 'image', [ 'img_name' => $this->file->getName() ], __METHOD__ ); + if ( $wgUpdateCompatibleMetadata > MIGRATION_OLD ) { + $dbw->delete( + 'image_comment_temp', [ 'imgcomment_name' => $this->file->getName() ], __METHOD__ + ); + } } } @@ -2537,6 +2623,11 @@ class LocalFileRestoreBatch { $lockOwnsTrx = $this->file->lock(); $dbw = $this->file->repo->getMasterDB(); + + $commentStoreImgDesc = new CommentStore( 'img_description' ); + $commentStoreOiDesc = new CommentStore( 'oi_description' ); + $commentStoreFaDesc = new CommentStore( 'fa_description' ); + $status = $this->file->repo->newGood(); $exists = (bool)$dbw->selectField( 'image', '1', @@ -2621,9 +2712,13 @@ class LocalFileRestoreBatch { ]; } + // Legacy from ArchivedFile::selectFields() just above + $comment = $commentStoreFaDesc->getCommentLegacy( $dbw, $row ); if ( $first && !$exists ) { // This revision will be published as the new current version $destRel = $this->file->getRel(); + list( $commentFields, $commentCallback ) = + $commentStoreImgDesc->insertWithTempTable( $dbw, $comment ); $insertCurrent = [ 'img_name' => $row->fa_name, 'img_size' => $row->fa_size, @@ -2634,12 +2729,11 @@ class LocalFileRestoreBatch { 'img_media_type' => $props['media_type'], 'img_major_mime' => $props['major_mime'], 'img_minor_mime' => $props['minor_mime'], - 'img_description' => $row->fa_description, 'img_user' => $row->fa_user, 'img_user_text' => $row->fa_user_text, 'img_timestamp' => $row->fa_timestamp, 'img_sha1' => $sha1 - ]; + ] + $commentFields; // The live (current) version cannot be hidden! if ( !$this->unsuppress && $row->fa_deleted ) { @@ -2671,7 +2765,6 @@ class LocalFileRestoreBatch { 'oi_width' => $row->fa_width, 'oi_height' => $row->fa_height, 'oi_bits' => $row->fa_bits, - 'oi_description' => $row->fa_description, 'oi_user' => $row->fa_user, 'oi_user_text' => $row->fa_user_text, 'oi_timestamp' => $row->fa_timestamp, @@ -2680,7 +2773,8 @@ class LocalFileRestoreBatch { 'oi_major_mime' => $props['major_mime'], 'oi_minor_mime' => $props['minor_mime'], 'oi_deleted' => $this->unsuppress ? 0 : $row->fa_deleted, - 'oi_sha1' => $sha1 ]; + 'oi_sha1' => $sha1 + ] + $commentStoreOiDesc->insert( $dbw, $comment ); } $deleteIds[] = $row->fa_id; @@ -2738,6 +2832,7 @@ class LocalFileRestoreBatch { // This is not ideal, which is why it's important to lock the image row. if ( $insertCurrent ) { $dbw->insert( 'image', $insertCurrent, __METHOD__ ); + $commentCallback( $insertCurrent['img_name'] ); } if ( $insertBatch ) { diff --git a/includes/filerepo/file/OldLocalFile.php b/includes/filerepo/file/OldLocalFile.php index dfaae731c1..b46e1e466f 100644 --- a/includes/filerepo/file/OldLocalFile.php +++ b/includes/filerepo/file/OldLocalFile.php @@ -103,6 +103,8 @@ class OldLocalFile extends LocalFile { /** * Fields in the oldimage table + * @todo Deprecate this in favor of a method that returns tables and joins + * as well, and use CommentStore::getJoin(). * @return array */ static function selectFields() { @@ -117,13 +119,12 @@ class OldLocalFile extends LocalFile { 'oi_media_type', 'oi_major_mime', 'oi_minor_mime', - 'oi_description', 'oi_user', 'oi_user_text', 'oi_timestamp', 'oi_deleted', 'oi_sha1', - ]; + ] + CommentStore::newKey( 'oi_description' )->getFields(); } /** @@ -367,6 +368,7 @@ class OldLocalFile extends LocalFile { return false; } + $commentFields = CommentStore::newKey( 'oi_description' )->insert( $dbw, $comment ); $dbw->insert( 'oldimage', [ 'oi_name' => $this->getName(), @@ -376,7 +378,6 @@ class OldLocalFile extends LocalFile { 'oi_height' => intval( $props['height'] ), 'oi_bits' => $props['bits'], 'oi_timestamp' => $dbw->timestamp( $timestamp ), - 'oi_description' => $comment, 'oi_user' => $user->getId(), 'oi_user_text' => $user->getName(), 'oi_metadata' => $props['metadata'], @@ -384,7 +385,7 @@ class OldLocalFile extends LocalFile { 'oi_major_mime' => $props['major_mime'], 'oi_minor_mime' => $props['minor_mime'], 'oi_sha1' => $props['sha1'], - ], __METHOD__ + ] + $commentFields, __METHOD__ ); return true; diff --git a/includes/htmlform/HTMLForm.php b/includes/htmlform/HTMLForm.php index 7293b99e38..465736bb06 100644 --- a/includes/htmlform/HTMLForm.php +++ b/includes/htmlform/HTMLForm.php @@ -1893,7 +1893,7 @@ class HTMLForm extends ContextSource { * 'novalidate' attribute will be added on the `
` element. It will be removed if the user * agent has JavaScript support, in htmlform.js. * - * @return boolean + * @return bool * @since 1.29 */ public function needsJSForHtml5FormValidation() { diff --git a/includes/htmlform/HTMLFormField.php b/includes/htmlform/HTMLFormField.php index 77ddc1a1b5..3f1c590908 100644 --- a/includes/htmlform/HTMLFormField.php +++ b/includes/htmlform/HTMLFormField.php @@ -357,7 +357,7 @@ abstract class HTMLFormField { * (wpFormIdentifier). * * @param WebRequest $request - * @return boolean + * @return bool */ protected function isSubmitAttempt( WebRequest $request ) { return $request->getCheck( 'wpEditToken' ) || $request->getCheck( 'wpFormIdentifier' ); @@ -1218,7 +1218,7 @@ abstract class HTMLFormField { * Whether this field requires the user agent to have JavaScript enabled for the client-side HTML5 * form validation to work correctly. * - * @return boolean + * @return bool * @since 1.29 */ public function needsJSForHtml5FormValidation() { diff --git a/includes/htmlform/fields/HTMLFormFieldWithButton.php b/includes/htmlform/fields/HTMLFormFieldWithButton.php index bcb07bd1c2..b2290ce3c1 100644 --- a/includes/htmlform/fields/HTMLFormFieldWithButton.php +++ b/includes/htmlform/fields/HTMLFormFieldWithButton.php @@ -6,7 +6,7 @@ class HTMLFormFieldWithButton extends HTMLFormField { /** @var string $mButtonClass CSS class for the button in this field */ protected $mButtonClass = ''; - /** @var string|integer $mButtonId Element ID for the button in this field */ + /** @var string|int $mButtonId Element ID for the button in this field */ protected $mButtonId = ''; /** @var string $mButtonName Name the button in this field */ diff --git a/includes/http/MWHttpRequest.php b/includes/http/MWHttpRequest.php index 88cc510219..0f0118ce00 100644 --- a/includes/http/MWHttpRequest.php +++ b/includes/http/MWHttpRequest.php @@ -33,8 +33,12 @@ use Psr\Log\NullLogger; class MWHttpRequest implements LoggerAwareInterface { const SUPPORTS_FILE_POSTS = false; - protected $content; + /** + * @var int|string + */ protected $timeout = 'default'; + + protected $content; protected $headersOnly = null; protected $postData = null; protected $proxy = null; diff --git a/includes/import/WikiImporter.php b/includes/import/WikiImporter.php index 209970971e..90660797f1 100644 --- a/includes/import/WikiImporter.php +++ b/includes/import/WikiImporter.php @@ -813,7 +813,7 @@ class WikiImporter { $this->debug( "Enter revision handler" ); $revisionInfo = []; - $normalFields = [ 'id', 'timestamp', 'comment', 'minor', 'model', 'format', 'text' ]; + $normalFields = [ 'id', 'timestamp', 'comment', 'minor', 'model', 'format', 'text', 'sha1' ]; $skip = false; @@ -916,6 +916,9 @@ class WikiImporter { } else { $revision->setUsername( 'Unknown user' ); } + if ( isset( $revisionInfo['sha1'] ) ) { + $revision->setSha1Base36( $revisionInfo['sha1'] ); + } $revision->setNoUpdates( $this->mNoUpdates ); return $this->revisionCallback( $revision ); diff --git a/includes/import/WikiRevision.php b/includes/import/WikiRevision.php index f6becb9c92..edb0c9af1c 100644 --- a/includes/import/WikiRevision.php +++ b/includes/import/WikiRevision.php @@ -607,11 +607,12 @@ class WikiRevision { $pageId = $page->getId(); $created = false; + // Note: sha1 has been in XML dumps since 2012. If you have an + // older dump, the duplicate detection here won't work. $prior = $dbw->selectField( 'revision', '1', [ 'rev_page' => $pageId, 'rev_timestamp' => $dbw->timestamp( $this->timestamp ), - 'rev_user_text' => $userText, - 'rev_comment' => $this->getComment() ], + 'rev_sha1' => $this->sha1base36 ], __METHOD__ ); if ( $prior ) { @@ -708,7 +709,6 @@ class WikiRevision { 'log_timestamp' => $dbw->timestamp( $this->timestamp ), 'log_namespace' => $this->getTitle()->getNamespace(), 'log_title' => $this->getTitle()->getDBkey(), - 'log_comment' => $this->getComment(), # 'log_user_text' => $this->user_text, 'log_params' => $this->params ], __METHOD__ @@ -720,9 +720,7 @@ class WikiRevision { . $this->timestamp . "\n" ); return false; } - $log_id = $dbw->nextSequenceValue( 'logging_log_id_seq' ); $data = [ - 'log_id' => $log_id, 'log_type' => $this->type, 'log_action' => $this->action, 'log_timestamp' => $dbw->timestamp( $this->timestamp ), @@ -730,9 +728,8 @@ class WikiRevision { 'log_user_text' => $userText, 'log_namespace' => $this->getTitle()->getNamespace(), 'log_title' => $this->getTitle()->getDBkey(), - 'log_comment' => $this->getComment(), 'log_params' => $this->params - ]; + ] + CommentStore::newKey( 'log_comment' )->insert( $dbw, $this->getComment() ); $dbw->insert( 'logging', $data, __METHOD__ ); return true; diff --git a/includes/installer/DatabaseUpdater.php b/includes/installer/DatabaseUpdater.php index b832d450ee..752bc5445b 100644 --- a/includes/installer/DatabaseUpdater.php +++ b/includes/installer/DatabaseUpdater.php @@ -83,7 +83,8 @@ abstract class DatabaseUpdater { FixDefaultJsonContentPages::class, CleanupEmptyCategories::class, AddRFCAndPMIDInterwiki::class, - PopulatePPSortKey::class + PopulatePPSortKey::class, + PopulateIpChanges::class, ]; /** @@ -1190,4 +1191,25 @@ abstract class DatabaseUpdater { $wgContentHandlerUseDB = $this->holdContentHandlerUseDB; } } + + /** + * Migrate comments to the new 'comment' table + * @since 1.30 + */ + protected function migrateComments() { + global $wgCommentTableSchemaMigrationStage; + if ( $wgCommentTableSchemaMigrationStage >= MIGRATION_WRITE_NEW && + !$this->updateRowExists( 'MigrateComments' ) + ) { + $this->output( + "Migrating comments to the 'comments' table, printing progress markers. For large\n" . + "databases, you may want to hit Ctrl-C and do this manually with\n" . + "maintenance/migrateComments.php.\n" + ); + $task = $this->maintenance->runChild( 'MigrateComments', 'migrateComments.php' ); + $task->execute(); + $this->output( "done.\n" ); + } + } + } diff --git a/includes/installer/Installer.php b/includes/installer/Installer.php index ae80c8bb17..52be321f69 100644 --- a/includes/installer/Installer.php +++ b/includes/installer/Installer.php @@ -1389,7 +1389,7 @@ abstract class Installer { } } closedir( $dh ); - natcasesort( $exts ); + uksort( $exts, 'strnatcasecmp' ); return $exts; } diff --git a/includes/installer/MssqlInstaller.php b/includes/installer/MssqlInstaller.php index 43d3574152..d01f954632 100644 --- a/includes/installer/MssqlInstaller.php +++ b/includes/installer/MssqlInstaller.php @@ -266,7 +266,7 @@ class MssqlInstaller extends DatabaseInstaller { if ( !$status->isOK() ) { return false; } - /** @var $conn Database */ + /** @var Database $conn */ $conn = $status->value; // We need the server-level ALTER ANY LOGIN permission to create new accounts diff --git a/includes/installer/MysqlInstaller.php b/includes/installer/MysqlInstaller.php index 0250b6f9c3..dc638998e5 100644 --- a/includes/installer/MysqlInstaller.php +++ b/includes/installer/MysqlInstaller.php @@ -275,7 +275,7 @@ class MysqlInstaller extends DatabaseInstaller { if ( !$status->isOK() ) { return false; } - /** @var $conn Database */ + /** @var Database $conn */ $conn = $status->value; // Get current account name diff --git a/includes/installer/MysqlUpdater.php b/includes/installer/MysqlUpdater.php index 58728a3755..aeecbb0e3d 100644 --- a/includes/installer/MysqlUpdater.php +++ b/includes/installer/MysqlUpdater.php @@ -170,7 +170,6 @@ class MysqlUpdater extends DatabaseUpdater { [ 'doLogUsertextPopulation' ], [ 'doLogSearchPopulation' ], [ 'addTable', 'l10n_cache', 'patch-l10n_cache.sql' ], - [ 'addIndex', 'log_search', 'ls_field_val', 'patch-log_search-rename-index.sql' ], [ 'addIndex', 'change_tag', 'change_tag_rc_tag', 'patch-change_tag-indexes.sql' ], [ 'addField', 'redirect', 'rd_interwiki', 'patch-rd_interwiki.sql' ], [ 'doUpdateTranscacheField' ], @@ -305,6 +304,31 @@ class MysqlUpdater extends DatabaseUpdater { // 1.30 [ 'modifyField', 'image', 'img_media_type', 'patch-add-3d.sql' ], [ 'addTable', 'ip_changes', 'patch-ip_changes.sql' ], + [ 'renameIndex', 'categorylinks', 'cl_from', 'PRIMARY', false, + 'patch-categorylinks-fix-pk.sql' ], + [ 'renameIndex', 'templatelinks', 'tl_from', 'PRIMARY', false, + 'patch-templatelinks-fix-pk.sql' ], + [ 'renameIndex', 'pagelinks', 'pl_from', 'PRIMARY', false, 'patch-pagelinks-fix-pk.sql' ], + [ 'renameIndex', 'text', 'old_id', 'PRIMARY', false, 'patch-text-fix-pk.sql' ], + [ 'renameIndex', 'imagelinks', 'il_from', 'PRIMARY', false, 'patch-imagelinks-fix-pk.sql' ], + [ 'renameIndex', 'iwlinks', 'iwl_from', 'PRIMARY', false, 'patch-iwlinks-fix-pk.sql' ], + [ 'renameIndex', 'langlinks', 'll_from', 'PRIMARY', false, 'patch-langlinks-fix-pk.sql' ], + [ 'renameIndex', 'log_search', 'ls_field_val', 'PRIMARY', false, 'patch-log_search-fix-pk.sql' ], + [ 'renameIndex', 'module_deps', 'md_module_skin', 'PRIMARY', false, + 'patch-module_deps-fix-pk.sql' ], + [ 'renameIndex', 'objectcache', 'keyname', 'PRIMARY', false, 'patch-objectcache-fix-pk.sql' ], + [ 'renameIndex', 'querycache_info', 'qci_type', 'PRIMARY', false, + 'patch-querycache_info-fix-pk.sql' ], + [ 'renameIndex', 'site_stats', 'ss_row_id', 'PRIMARY', false, 'patch-site_stats-fix-pk.sql' ], + [ 'renameIndex', 'transcache', 'tc_url_idx', 'PRIMARY', false, 'patch-transcache-fix-pk.sql' ], + [ 'renameIndex', 'user_former_groups', 'ufg_user_group', 'PRIMARY', false, + 'patch-user_former_groups-fix-pk.sql' ], + [ 'renameIndex', 'user_properties', 'user_properties_user_property', 'PRIMARY', false, + 'patch-user_properties-fix-pk.sql' ], + [ 'addTable', 'comment', 'patch-comment-table.sql' ], + [ 'migrateComments' ], + [ 'renameIndex', 'l10n_cache', 'lc_lang_key', 'PRIMARY', false, + 'patch-l10n_cache-primary-key.sql' ], ]; } diff --git a/includes/installer/OracleUpdater.php b/includes/installer/OracleUpdater.php index e262eda635..00b96614f8 100644 --- a/includes/installer/OracleUpdater.php +++ b/includes/installer/OracleUpdater.php @@ -123,6 +123,9 @@ class OracleUpdater extends DatabaseUpdater { [ 'addField', 'externallinks', 'el_index_60', 'patch-externallinks-el_index_60.sql' ], [ 'addField', 'user_groups', 'ug_expiry', 'patch-user_groups-ug_expiry.sql' ], + // 1.30 + [ 'doAutoIncrementTriggers' ], + // KEEP THIS AT THE BOTTOM!! [ 'doRebuildDuplicateFunction' ], @@ -273,6 +276,30 @@ class OracleUpdater extends DatabaseUpdater { $this->output( "ok\n" ); } + /** + * Add auto-increment triggers + */ + protected function doAutoIncrementTriggers() { + $this->output( "Adding auto-increment triggers ... " ); + + $meta = $this->db->query( 'SELECT trigger_name FROM user_triggers WHERE table_owner = \'' . + strtoupper( $this->db->getDBname() ) . + '\' AND trigger_name = \'' . + $this->db->tablePrefix() . + 'PAGE_DEFAULT_PAGE_ID\'' + ); + $row = $meta->fetchRow(); + if ( $row['column_name'] ) { + $this->output( "seems to be up to date.\n" ); + + return; + } + + $this->applyPatch( 'patch-auto_increment_triggers.sql', false ); + + $this->output( "ok\n" ); + } + /** * rebuilding of the function that duplicates tables for tests */ diff --git a/includes/installer/PostgresInstaller.php b/includes/installer/PostgresInstaller.php index b501cb37fa..1a3fb104f6 100644 --- a/includes/installer/PostgresInstaller.php +++ b/includes/installer/PostgresInstaller.php @@ -594,7 +594,7 @@ class PostgresInstaller extends DatabaseInstaller { return $status; } - /** @var $conn DatabasePostgres */ + /** @var DatabasePostgres $conn */ $conn = $status->value; if ( $conn->tableExists( 'archive' ) ) { diff --git a/includes/installer/PostgresUpdater.php b/includes/installer/PostgresUpdater.php index d8db6a2d9d..e5a5c9445c 100644 --- a/includes/installer/PostgresUpdater.php +++ b/includes/installer/PostgresUpdater.php @@ -455,6 +455,32 @@ class PostgresUpdater extends DatabaseUpdater { // 1.30 [ 'modifyField', 'image', 'img_media_type', 'patch-add-3d.sql' ], + [ 'setDefault', 'revision', 'rev_comment', '' ], + [ 'changeNullableField', 'revision', 'rev_comment', 'NOT NULL', true ], + [ 'setDefault', 'archive', 'ar_comment', '' ], + [ 'changeNullableField', 'archive', 'ar_comment', 'NOT NULL', true ], + [ 'addPgField', 'archive', 'ar_comment_id', 'INTEGER NOT NULL DEFAULT 0' ], + [ 'setDefault', 'ipblocks', 'ipb_reason', '' ], + [ 'addPgField', 'ipblocks', 'ipb_reason_id', 'INTEGER NOT NULL DEFAULT 0' ], + [ 'setDefault', 'image', 'img_description', '' ], + [ 'setDefault', 'oldimage', 'oi_description', '' ], + [ 'changeNullableField', 'oldimage', 'oi_description', 'NOT NULL', true ], + [ 'addPgField', 'oldimage', 'oi_description_id', 'INTEGER NOT NULL DEFAULT 0' ], + [ 'setDefault', 'filearchive', 'fa_deleted_reason', '' ], + [ 'changeNullableField', 'filearchive', 'fa_deleted_reason', 'NOT NULL', true ], + [ 'addPgField', 'filearchive', 'fa_deleted_reason_id', 'INTEGER NOT NULL DEFAULT 0' ], + [ 'setDefault', 'filearchive', 'fa_description', '' ], + [ 'addPgField', 'filearchive', 'fa_description_id', 'INTEGER NOT NULL DEFAULT 0' ], + [ 'setDefault', 'recentchanges', 'rc_comment', '' ], + [ 'changeNullableField', 'recentchanges', 'rc_comment', 'NOT NULL', true ], + [ 'addPgField', 'recentchanges', 'rc_comment_id', 'INTEGER NOT NULL DEFAULT 0' ], + [ 'setDefault', 'logging', 'log_comment', '' ], + [ 'changeNullableField', 'logging', 'log_comment', 'NOT NULL', true ], + [ 'addPgField', 'logging', 'log_comment_id', 'INTEGER NOT NULL DEFAULT 0' ], + [ 'setDefault', 'protected_titles', 'pt_reason', '' ], + [ 'changeNullableField', 'protected_titles', 'pt_reason', 'NOT NULL', true ], + [ 'addPgField', 'protected_titles', 'pt_reason_id', 'INTEGER NOT NULL DEFAULT 0' ], + [ 'addTable', 'comment', 'patch-comment-table.sql' ], ]; } @@ -761,7 +787,7 @@ END; } } - protected function changeNullableField( $table, $field, $null ) { + protected function changeNullableField( $table, $field, $null, $update = false ) { $fi = $this->db->fieldInfo( $table, $field ); if ( is_null( $fi ) ) { $this->output( "...ERROR: expected column $table.$field to exist\n" ); @@ -771,6 +797,9 @@ END; # # It's NULL - does it need to be NOT NULL? if ( 'NOT NULL' === $null ) { $this->output( "Changing '$table.$field' to not allow NULLs\n" ); + if ( $update ) { + $this->db->query( "UPDATE $table SET $field = DEFAULT WHERE $field IS NULL" ); + } $this->db->query( "ALTER TABLE $table ALTER $field SET NOT NULL" ); } else { $this->output( "...column '$table.$field' is already set as NULL\n" ); diff --git a/includes/installer/SqliteUpdater.php b/includes/installer/SqliteUpdater.php index 1e43d3e7a1..9f71001441 100644 --- a/includes/installer/SqliteUpdater.php +++ b/includes/installer/SqliteUpdater.php @@ -54,7 +54,6 @@ class SqliteUpdater extends DatabaseUpdater { [ 'doLogUsertextPopulation' ], [ 'doLogSearchPopulation' ], [ 'addTable', 'l10n_cache', 'patch-l10n_cache.sql' ], - [ 'addIndex', 'log_search', 'ls_field_val', 'patch-log_search-rename-index.sql' ], [ 'addIndex', 'change_tag', 'change_tag_rc_tag', 'patch-change_tag-indexes.sql' ], [ 'addField', 'redirect', 'rd_interwiki', 'patch-rd_interwiki.sql' ], [ 'doUpdateTranscacheField' ], @@ -169,6 +168,31 @@ class SqliteUpdater extends DatabaseUpdater { // 1.30 [ 'modifyField', 'image', 'img_media_type', 'patch-add-3d.sql' ], [ 'addTable', 'ip_changes', 'patch-ip_changes.sql' ], + [ 'renameIndex', 'categorylinks', 'cl_from', 'PRIMARY', false, + 'patch-categorylinks-fix-pk.sql' ], + [ 'renameIndex', 'templatelinks', 'tl_from', 'PRIMARY', false, + 'patch-templatelinks-fix-pk.sql' ], + [ 'renameIndex', 'pagelinks', 'pl_from', 'PRIMARY', false, 'patch-pagelinks-fix-pk.sql' ], + [ 'renameIndex', 'text', 'old_id', 'PRIMARY', false, 'patch-text-fix-pk.sql' ], + [ 'renameIndex', 'imagelinks', 'il_from', 'PRIMARY', false, 'patch-imagelinks-fix-pk.sql' ], + [ 'renameIndex', 'iwlinks', 'iwl_from', 'PRIMARY', false, 'patch-iwlinks-fix-pk.sql' ], + [ 'renameIndex', 'langlinks', 'll_from', 'PRIMARY', false, 'patch-langlinks-fix-pk.sql' ], + [ 'renameIndex', 'log_search', 'ls_field_val', 'PRIMARY', false, 'patch-log_search-fix-pk.sql' ], + [ 'renameIndex', 'module_deps', 'md_module_skin', 'PRIMARY', false, + 'patch-module_deps-fix-pk.sql' ], + [ 'renameIndex', 'objectcache', 'keyname', 'PRIMARY', false, 'patch-objectcache-fix-pk.sql' ], + [ 'renameIndex', 'querycache_info', 'qci_type', 'PRIMARY', false, + 'patch-querycache_info-fix-pk.sql' ], + [ 'renameIndex', 'site_stats', 'ss_row_id', 'PRIMARY', false, 'patch-site_stats-fix-pk.sql' ], + [ 'renameIndex', 'transcache', 'tc_url_idx', 'PRIMARY', false, 'patch-transcache-fix-pk.sql' ], + [ 'renameIndex', 'user_former_groups', 'ufg_user_group', 'PRIMARY', false, + 'patch-user_former_groups-fix-pk.sql' ], + [ 'renameIndex', 'user_properties', 'user_properties_user_property', 'PRIMARY', false, + 'patch-user_properties-fix-pk.sql' ], + [ 'addTable', 'comment', 'patch-comment-table.sql' ], + [ 'migrateComments' ], + [ 'renameIndex', 'l10n_cache', 'lc_lang_key', 'PRIMARY', false, + 'patch-l10n_cache-primary-key.sql' ], ]; } diff --git a/includes/installer/i18n/cs.json b/includes/installer/i18n/cs.json index 2d2f2072b7..2ff49fcbf8 100644 --- a/includes/installer/i18n/cs.json +++ b/includes/installer/i18n/cs.json @@ -85,6 +85,7 @@ "config-no-cli-uploads-check": "Upozornění: Váš výchozí adresář pro načítané soubory ($1) se při instalaci z příkazového řádku nekontroluje na bezpečnostní hrozbu provádění libovolných skriptů.", "config-brokenlibxml": "Váš systém obsahuje kombinaci verzí PHP a libxml2, která je chybná a může v MediaWiki a dalších webových aplikacích způsobovat skryté poškozování dat.\nAktualizujte na libxml2 2.7.3 nebo novější ([https://bugs.php.net/bug.php?id=45996 chyba evidovaná u PHP]).\nInstalace přerušena.", "config-suhosin-max-value-length": "Je nainstalován Suhosin, který omezuje délku parametrů GET na $1 bajtů.\nKomponenta ResourceLoader z MediaWiki dokáže s tímto omezením pracovat, ale sníží to výkon.\nPokud to je alespoň trochu možné, měli byste v php.ini nastavit suhosin.get.max_value_length na 1024 nebo vyšší a na stejnou hodnotu nastavit v LocalSettings.php proměnnou $wgResourceLoaderMaxQueryLength.", + "config-using-32bit": "Upozornění: Vypadá to, že váš systém běží s 32bitovými celými čísly. To [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:32-bit se nedoporučuje].", "config-db-type": "Typ databáze:", "config-db-host": "Databázový server:", "config-db-host-help": "Pokud je váš databázový server na jiném počítači, zadejte zde jméno stroje nebo IP adresu.\n\nPokud používáte sdílený webový hosting, váš poskytovatel by vám měl v dokumentaci sdělit správné jméno stroje.\n\nPokud instalujete na server běžící na Windows a používáte MySQL, jméno „localhost“ nemusí fungovat. V takovém případě zkuste jako místní IP adresu zadat „127.0.0.1“.\n\nPokud používáte PostgreSQL, můžete se připojit Unixovými sockety tak, že toto pole necháte prázdné.", @@ -318,6 +319,8 @@ "config-help-tooltip": "rozbalíte kliknutím", "config-nofile": "Soubor „$1“ nelze nalézt. Byl smazán?", "config-extension-link": "Věděli jste, že vaše wiki podporuje [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions rozšíření]?\n\nMůžete si prohlédnout [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category seznam rozšíření po kategoriích].", + "config-skins-screenshots": "$1 (snímky obrazovky: $2)", + "config-screenshot": "snímek obrazovky", "mainpagetext": "MediaWiki byla úspěšně nainstalována.", "mainpagedocfooter": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Uživatelská příručka] vám napoví, jak používat MediaWiki.\n\n== Začínáme ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Nastavení konfigurace]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Často kladené otázky o MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce E-mailová konference oznámení MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Překlad MediaWiki do vašeho jazyka]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Naučte se bojovat se spamem na vaší wiki]" } diff --git a/includes/installer/i18n/da.json b/includes/installer/i18n/da.json index dacdf811a1..2afd2ca5dd 100644 --- a/includes/installer/i18n/da.json +++ b/includes/installer/i18n/da.json @@ -6,7 +6,8 @@ "Tjernobyl", "Thomsen", "MGA73", - "Mads Haupt" + "Mads Haupt", + "Joedalton" ] }, "config-desc": "Installationsprogrammet til MediaWiki", @@ -15,8 +16,11 @@ "config-localsettings-upgrade": "En LocalSettings.php-fil er blevet fundet.\nFor at opgradere imstallationen, skriv venligst værdien af $wgUpgradeKey i boksen nedenfor.\nDu finder denne i LocalSettings.php.", "config-localsettings-cli-upgrade": "En LocalSettings.php-fil er blevet fundet.\nFor at opgradere installationen skal du køre update.php i stedet for", "config-localsettings-key": "Opgraderingsnøgle:", - "config-localsettings-badkey": "Den nøgle du indtastede er forkert.", + "config-localsettings-badkey": "Den indtastede opgraderingsnøgle er forkert.", "config-upgrade-key-missing": "En eksisterende installation af MediaWiki er blevet fundet.\nFor at opgradere denne installation skal du tilføje følgende linje i bunden af din LocalSettings.php:\n\n$1", + "config-localsettings-incomplete": "Den eksisterende LocalSettings.php ser ud til at være ufuldstændig.\nVariablen $1 er ikke angivet.\nÆndr venligst LocalSettings.php så denne variabel er angivet, og klik på »{{int:Config-continue}}«.", + "config-localsettings-connection-error": "Der opstod en fejl under tilslutningen til databasen med indstillingerne angivet i LocalSettings.php. Ret venligst disse indstillinger og prøv igen.\n\n$1", + "config-session-error": "Der opstod en fejl under start af session: $1", "config-your-language": "Dit sprog:", "config-your-language-help": "Vælg et sprog som du vil bruge under installationen.", "config-wiki-language": "Wiki-sprog:", @@ -43,13 +47,37 @@ "config-db-type": "Databasetype:", "config-db-host": "Databasevært:", "config-db-name": "Databasenavn:", + "config-db-install-account": "Brugerkonto for installation", + "config-db-username": "Databasens brugernavn:", + "config-db-password": "Databasens adgangskode:", + "config-db-install-username": "Indtast brugernavnet som vil blive brugt til at forbinde til databasen under installationsprocessen.\nDette er ikke brugernavnet for MediaWiki-kontoen; det er brugernavnet på din database.", "config-mysql-old": "MySQL $1 eller nyere kræves. Du har $2.", + "config-type-mssql": "Microsoft SQL-server", "config-header-mysql": "MySQL-indstillinger", "config-header-postgres": "PostgreSQL-indstillinger", "config-header-sqlite": "SQLite-indstillinger", "config-header-oracle": "Oracle-indstillinger", "config-invalid-db-type": "Ugyldig databasetype", + "config-mssql-windowsauth": "Windows-godkendelse", + "config-site-name": "Navn på wiki:", + "config-site-name-blank": "Indtast et hjemmesidenavn.", + "config-ns-generic": "Projekt", + "config-admin-box": "Administratorkonto", + "config-admin-name": "Dit brugernavn:", + "config-admin-password": "Adgangskode:", + "config-admin-password-confirm": "Tast adgangskoden igen:", + "config-admin-email": "E-postadresse:", + "config-optional-continue": "Stil mig flere spørgsmål.", + "config-profile-wiki": "Åbn wiki", + "config-profile-no-anon": "Kontooprettelse er krævet", + "config-profile-fishbowl": "Kun godkendte redaktører", + "config-profile-private": "Privat wiki", + "config-license": "Ophavsret og licens:", + "config-license-pd": "Offentlig ejendom", "config-email-usertalk": "Aktiver notifikationer for brugerdiskussionsside", + "config-upload-deleted": "Mappe for slettede filer:", + "config-help": "hjælp", + "config-help-tooltip": "klik for at udvide", "mainpagetext": "'''MediaWiki er nu installeret.'''", "mainpagedocfooter": "Se [https://meta.wikimedia.org/wiki/Help:Contents brugervejledningen] for oplysninger om brugen af wikiprogrammellet.\n\n== At komme i gang ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Listen over opsætningsmuligheder]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki ofte stillede spørgsmål]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Postliste angående udgivelser af MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Oversæt MediaWiki til dit sprog]" } diff --git a/includes/installer/i18n/el.json b/includes/installer/i18n/el.json index 679c0a8cba..f9bab3edd0 100644 --- a/includes/installer/i18n/el.json +++ b/includes/installer/i18n/el.json @@ -83,7 +83,7 @@ "config-db-username": "Όνομα χρήστη βάσης δεδομένων:", "config-db-password": "Κωδικός πρόσβασης βάσης δεδομένων:", "config-db-install-help": "Εισαγάγετε το όνομα χρήστη και τον κωδικό πρόσβασης που θα χρησιμοποιηθεί για τη σύνδεση με τη βάση δεδομένων κατά τη διάρκεια της διαδικασίας εγκατάστασης.", - "config-db-account-lock": "Χρησιμοποιήστε το ίδιο όνομα χρήστη και κωδικό πρόσβασης μετά την εγκατάσταση", + "config-db-account-lock": "Χρησιμοποιήστε το ίδιο όνομα χρήστη και συνθηματικό κατά τη διάρκεια της κανονικής λειτουργίας", "config-db-wiki-account": "Λογαριασμός χρήστη για κανονική λειτουργία", "config-db-wiki-help": "Πληκτρολογήστε το όνομα χρήστη και τον κωδικό πρόσβασης που θα χρησιμοποιηθεί για τη σύνδεση με τη βάση δεδομένων κατά τη διάρκεια της κανονικής λειτουργίας του wiki.\nΕάν ο λογαριασμός δεν υπάρχει και o λογαριασμός εγκατάστασης έχει επαρκή δικαιώματα, αυτός ο λογαριασμός χρήστη θα δημιουργηθεί με τα ελάχιστα δικαιώματα που απαιτούνται για τη λειτουργία του wiki.", "config-db-prefix": "Πρόθεμα πίνακα βάσης δεδομένων:", @@ -110,7 +110,7 @@ "config-missing-db-name": "Πρέπει να εισαγάγετε μια τιμή για \"{{int:config-db-name}}\".", "config-missing-db-host": "Πρέπει να εισαγάγετε μια τιμή για \"{{int:config-db-host}}\".", "config-missing-db-server-oracle": "Πρέπει να εισαγάγετε μια τιμή για \"{{int:config-db-host-oracle}}\".", - "config-connection-error": "$1.\n\nΕλέγξτε τη διεύθυνση, το όνομα χρήστη και τον κωδικό πρόσβασης και προσπαθήστε ξανά.", + "config-connection-error": "$1.\n\nΕλέγξτε τη διεύθυνση της βάσης δεδομένων, το όνομα χρήστη και το συνθηματικό και προσπαθήστε ξανά.", "config-db-sys-user-exists-oracle": "Ο λογαριασμός χρήστη \"$1\" υπάρχει ήδη. Το SYSDBA μπορεί να χρησιμοποιηθεί μόνο για τη δημιουργία ενός νέου λογαριασμού!", "config-postgres-old": "Απαιτείται PostgreSQL $1 ή νεότερο. Εσείς έχετε $2.", "config-mssql-old": "Απαιτείται Microsoft SQL Server $1 ή νεότερο. Εσείς έχετε $2.", diff --git a/includes/installer/i18n/es.json b/includes/installer/i18n/es.json index 279e26a8e5..be2e65a534 100644 --- a/includes/installer/i18n/es.json +++ b/includes/installer/i18n/es.json @@ -109,6 +109,7 @@ "config-no-cli-uploads-check": "Advertencia: tu directorio predeterminado para cargas ($1) no está comprobado contra la vulnerabilidad\n de ejecución arbitraria de \"scripts\" durante la instalación por línea de comandos.", "config-brokenlibxml": "El sistema tiene una combinación de versiones de PHP y de libxml2 que es poco confiable y puede provocar corrupción oculta en los datos de MediaWiki y otras aplicaciones web.\nActualiza a libxml2 2.7.3 o posterior ([https://bugs.php.net/bug.php?id=45996 bug reportado con PHP]).\nInstalación abortada.", "config-suhosin-max-value-length": "Suhosin está instalado y limita el parámetro length GET a $1 bytes.\nEl componente ResourceLoader (gestor de recursos) de MediaWiki trabajará en este límite, pero eso perjudicará el rendimiento.\nSi es posible, deberías establecer suhosin.get.max_value_length en el valor 1024 o superior en php.ini y establecer $wgResourceLoaderMaxQueryLength en el mismo valor en php.ini.", + "config-using-32bit": "Atención: parece que el sistema funciona con enteros de 32 bits. Esto está [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:32-bit desaconsejado].", "config-db-type": "Tipo de base de datos:", "config-db-host": "Servidor de la base de datos:", "config-db-host-help": "Si tu servidor de base de datos está en otro servidor, escribe el nombre del equipo o su dirección IP aquí.\n\nSi estás utilizando alojamiento web compartido, tu proveedor debería darte el nombre correcto del servidor en su documentación.\n\nSi vas a instalar en un servidor Windows y a utilizar MySQL, el uso de \"localhost\" como nombre del servidor puede no funcionar. Si es así, intenta poner \"127.0.0.1\" como dirección IP local.\n\nSi utilizas PostgreSQL, deja este campo vacío para conectarse a través de un socket de Unix.", @@ -165,7 +166,7 @@ "config-connection-error": "$1.\n\nVerifica el servidor, el nombre de usuario y la contraseña, e intenta de nuevo.", "config-invalid-schema": "El esquema de la base de datos \"$1\" es inválido.\nUse sólo carateres ASCII: letras (a-z, A-Z), guarismos (0-9) y guiones bajos (_).", "config-db-sys-create-oracle": "El instalador sólo admite el empleo de cuentas SYSDBA como método para crear una cuenta nueva.", - "config-db-sys-user-exists-oracle": "La cuenta de usuario \"$1\" ya existe. ¡SYSDBA sólo puede utilizarse para crear una nueva cuenta!", + "config-db-sys-user-exists-oracle": "La cuenta de usuario «$1» ya existe. SYSDBA solo puede utilizarse para crear cuentas nuevas.", "config-postgres-old": "Se requiere PostgreSQL $1 o posterior. Tienes la versión $2.", "config-mssql-old": "Se requiere Microsoft SQL Server $1 o posterior. Tienes la versión $2.", "config-sqlite-name-help": "Elige el nombre que identificará a tu wiki.\nNo uses espacios o guiones.\nEste nombre se usará como nombre del archivo de datos de SQLite.", @@ -235,11 +236,11 @@ "config-pingback-help": "Si seleccionas esta opción, MediaWiki enviará periódicamente a https://www.mediawiki.org datos básicos sobre esta instancia de MediaWiki. Se trata de datos tales como el tipo de sistema, la versión de PHP y la base de datos elegida. La Fundación Wikimedia comparte estos datos con los desarrolladores de MediaWiki para ayudar a guiar el desarrollo futuro. Se enviarán los siguientes datos para tu sistema:\n
$1
", "config-almost-done": "¡Ya casi has terminado!\nAhora puedes saltarte el resto de los pasos e instalar el wiki ya.", "config-optional-continue": "Hazme más preguntas.", - "config-optional-skip": "Ya estoy aburrido, sólo instala el wiki.", + "config-optional-skip": "Ya me aburrí. Tan solo instala el wiki.", "config-profile": "Perfil de derechos de usuario:", "config-profile-wiki": "Wiki abierto", "config-profile-no-anon": "Creación de cuenta requerida", - "config-profile-fishbowl": "Sólo editores autorizados", + "config-profile-fishbowl": "Solo editores autorizados", "config-profile-private": "Wiki privado", "config-profile-help": "Los wikis funcionan mejor cuando dejas que los edite tanta gente como sea posible.\nEn MediaWiki, es fácil revisar los cambios recientes y revertir los daños realizados por usuarios malintencionados o novatos.\nSin embargo, muchos han encontrado que MediaWiki es útil para una amplia variedad de funciones, y a veces no es fácil convencer a todos de los beneficios de la forma wiki.\nPor lo tanto tienes la elección.\n\nEl modelo {{int:config-profile-wiki}} permite que cualquiera pueda editar, sin siquiera iniciar sesión.\nUn wiki con {{int:config-profile-no-anon}} ofrece rendición de cuentas adicional, pero puede disuadir a colaboradores casuales.\n\nEl modelo {{int:config-profile-fishbowl}} permite editar a los usuarios autorizados, pero el público puede ver las páginas, incluyendo el historial.\nUn {{int:config-profile-private}} sólo permite ver páginas a los usuarios autorizados, el mismo grupo al que le está permitido editar.\n\nConfiguraciones más complejas de permisos de usuario están disponibles después de la instalación. Consulta [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights la entrada correspondiente del manual].", "config-license": "Derechos de autor y licencia:", @@ -342,6 +343,8 @@ "config-help-tooltip": "haz clic para ampliar", "config-nofile": "El archivo \"$1\" no se pudo encontrar. ¿Se ha eliminado?", "config-extension-link": "¿Sabías que tu wiki admite [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions extensiones]?\n\nPuedes navegar por las [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category categorías] o visitar el [https://www.mediawiki.org/wiki/Extension_Matrix centro de extensiones] para ver una lista completa.", + "config-skins-screenshots": "$1 (capturas de pantalla: $2)", + "config-screenshot": "captura de pantalla", "mainpagetext": "MediaWiki se ha instalado.", "mainpagedocfooter": "Consulta la [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents guía] para obtener información sobre el uso del software wiki.\n\n== Primeros pasos ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lista de ajustes de configuración]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Preguntas frecuentes sobre MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de correo de anuncios de publicación de MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Traducir MediaWiki a tu idioma]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Aprende a combatir el spam en tu wiki]" } diff --git a/includes/installer/i18n/eu.json b/includes/installer/i18n/eu.json index 430345efd3..0591cbb0b1 100644 --- a/includes/installer/i18n/eu.json +++ b/includes/installer/i18n/eu.json @@ -4,7 +4,8 @@ "An13sa", "පසිඳු කාවින්ද", "Subi", - "Sator" + "Sator", + "Mikel Ibaiba" ] }, "config-desc": "MediaWiki instalatzailea", @@ -97,8 +98,10 @@ "config-license-pd": "Domeinu Askea", "config-license-cc-choose": "Aukeratu Creative Commons lizentzia pertsonalizatua", "config-email-settings": "E-posta hobespenak", + "config-email-sender": "Itzuli helbide elektronikoa:", "config-upload-settings": "Irudi eta fitxategi igoerak", "config-upload-enable": "Fitxategi igoera gaitu", + "config-upload-deleted": "Ezabatutako artxiboentzako direktorioa:", "config-logo": "Logo URL:", "config-instantcommons": "Instant Commons gaitu", "config-cc-again": "Berriz aukeratu...", @@ -106,10 +109,14 @@ "config-extensions": "Luzapenak", "config-skins": "Itxurak", "config-install-step-done": "egina", + "config-install-step-failed": "Huts egin du", "config-install-extensions": "Luzapenak barne", "config-install-database": "Datu-basea konfiguratu", "config-install-schema": "Eskema sortu", + "config-install-user": "Datubase erabiltzailea sortzen", "config-install-user-alreadyexists": "\"$1\" erabiltzailea badago.", + "config-install-user-create-failed": "$1 erabiltzailea sortzerakoan huts egin du: $2", + "config-install-user-grant-failed": "$1ri baimena emateak huts egin du: $2", "config-install-tables": "Taulak sortzen", "config-install-interwiki-list": "Ezin izan da interwiki.list fitxategia irakurri.", "config-install-stats": "Estatistikak hasten", diff --git a/includes/installer/i18n/fr.json b/includes/installer/i18n/fr.json index 9122967fcf..50521f6970 100644 --- a/includes/installer/i18n/fr.json +++ b/includes/installer/i18n/fr.json @@ -104,6 +104,7 @@ "config-no-cli-uploads-check": "'''Attention:''' Votre répertoire par défaut pour les imports($1) n'est pas contrôlé concernant la vulnérabilité d'exécution de scripts arbitraires lors de l'installation CLI.", "config-brokenlibxml": "Votre système utilise une combinaison de versions de PHP et libxml2 qui est boguée et peut engendrer des corruptions cachées de données dans MediaWiki et d’autres applications web.\nVeuillez mettre à jour votre système vers libxml2 2.7.3 ou plus récent ([https://bugs.php.net/bug.php?id=45996 bogue déposé auprès de PHP]).\nInstallation interrompue.", "config-suhosin-max-value-length": "Suhosin est installé et limite la longueur du paramètre GET à $1 octets.\nLe composant ResourceLoader de MediaWiki va répondre en respectant cette limite, mais ses performances seront dégradées. Si possible, vous devriez définir suhosin.get.max_value_length à 1024 ou plus dans le fichier php.ini, et fixer $wgResourceLoaderMaxQueryLength à la même valeur dans LocalSettings.php.", + "config-using-32bit": "Attention: votre système semble utiliser les entiers sur 32 bits. Ceci n'est [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:32-bit pas recommandé].", "config-db-type": "Type de base de données :", "config-db-host": "Nom d’hôte de la base de données :", "config-db-host-help": "Si votre serveur de base de données est sur un serveur différent, saisissez ici son nom d’hôte ou son adresse IP.\n\nSi vous utilisez un hébergement mutualisé, votre hébergeur doit vous avoir fourni le nom d’hôte correct dans sa documentation.\n\nSi vous installez sur un serveur Windows et utilisez MySQL, « localhost » peut ne pas fonctionner comme nom de serveur. S’il ne fonctionne pas, essayez « 127.0.0.1 » comme adresse IP locale.\n\nSi vous utilisez PostgreSQL, laissez ce champ vide pour vous connecter via un socket Unix.", @@ -337,6 +338,8 @@ "config-help-tooltip": "cliquer pour agrandir", "config-nofile": "Le fichier « $1 » est introuvable. A-t-il été supprimé ?", "config-extension-link": "Saviez-vous que votre wiki prend en charge [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions des extensions] ?\n\nVous pouvez consulter les [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category extensions par catégorie] ou la [https://www.mediawiki.org/wiki/Extension_Matrix matrice des extensions] pour voir la liste complète des extensions.", + "config-skins-screenshots": "$1 (captures d’écran : $2)", + "config-screenshot": "Captures d’écrans", "mainpagetext": "MediaWiki a été installé.", "mainpagedocfooter": "Consultez le [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Guide de l’utilisateur du contenu] pour plus d’informations sur l’utilisation de ce logiciel de wiki.\n\n== Pour démarrer ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Liste des paramètres de configuration]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ/fr Questions courantes sur MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Adaptez MediaWiki dans votre langue]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Apprendre comment lutter contre le pourriel dans votre wiki]" } diff --git a/includes/installer/i18n/gl.json b/includes/installer/i18n/gl.json index d4ac7e3a0b..e6e4b67455 100644 --- a/includes/installer/i18n/gl.json +++ b/includes/installer/i18n/gl.json @@ -83,6 +83,7 @@ "config-no-cli-uploads-check": "Atención: Durante a instalación CLI, o seu directorio por defecto para as cargas, $1, non se comproba fronte a posibles vulnerabilidades de execucións arbitrarias de escrituras.", "config-brokenlibxml": "O seu sistema ten unha combinación de versións de PHP e libxml2 que pode ser problemático e causar corrupción de datos en MediaWiki e outras aplicacións web.\nActualice o sistema á versión 2.7.3 ou posterior de libxml2 ([https://bugs.php.net/bug.php?id=45996 erro presentado co PHP]).\nInstalación abortada.", "config-suhosin-max-value-length": "Suhosin está instalado e limita o parámetro GET length a $1 bytes.\nO compoñente ResourceLoader (xestor de recursos) de MediaWiki traballa neste límite, pero este prexudica o rendemento.\nSe é posible, debería establecer suhosin.get.max_value_length no valor 1024 ou superior en php.ini e establecer $wgResourceLoaderMaxQueryLength no mesmo valor en LocalSettings.php.", + "config-using-32bit": "Aviso: o teu sistema semella estar funcionando con números enteiros de 32 bits. Isto é algo [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:32-bit non recomendado].", "config-db-type": "Tipo de base de datos:", "config-db-host": "Servidor da base de datos:", "config-db-host-help": "Se o servidor da súa base de datos está nun servidor diferente, escriba o nome do servidor ou o enderezo IP aquí.\n\nSe está usando un aloxamento web compartido, o seu provedor de hospedaxe debe darlle o nome de servidor correcto na súa documentación.\n\nSe está a realizar a instalación nun servidor de Windows con MySQL, o nome \"localhost\" pode non valer como servidor. Se non funcionase, inténteo con \"127.0.0.1\" como enderezo IP local.\n\nSe está usando PostgreSQL, deixe este campo en branco para facer a conexión a través do conectador Unix.", @@ -316,6 +317,8 @@ "config-help-tooltip": "prema para expandir", "config-nofile": "Non se puido atopar o ficheiro \"$1\". Se cadra, foi borrado.", "config-extension-link": "Sabía que o seu wiki soporta [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions extensións]?\n\nPode explorar as [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category extensións por categoría] ou a [https://www.mediawiki.org/wiki/Extension_Matrix matriz de extensións] para ollar a lista completa de extensións.", + "config-skins-screenshots": "$1 (capturas de pantalla: $2)", + "config-screenshot": "captura de pantalla", "mainpagetext": "Instalouse MediaWiki.", "mainpagedocfooter": "Consulte a [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents guía de usuario] para obter máis información sobre como usar o software wiki.\n\n== Primeiros pasos ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lista das opcións de configuración]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Preguntas máis frecuentes sobre MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de correo dos lanzamentos de MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localice MediaWiki á súa lingua]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Aprenda como combater a publicidade na súa wiki]" } diff --git a/includes/installer/i18n/ko.json b/includes/installer/i18n/ko.json index 66f095a738..f268215f1d 100644 --- a/includes/installer/i18n/ko.json +++ b/includes/installer/i18n/ko.json @@ -88,6 +88,7 @@ "config-no-cli-uploads-check": "경고: 올리기를 위한 기본 디렉터리($1)는 CLI를 설치하는 동안 임의의 스크립트 실행에 대한 취약점에 대해 검사되지 않습니다.", "config-brokenlibxml": "시스템에 버그가 있는 PHP와 libxml2의 조합이 있으며 미디어위키나 다른 웹 애플리케이션에 숨겨진 데이터 손상을 일으킬 수 있습니다.\nlibxml2 2.7.3 이후 버전으로 업그레이드하세요. ([https://bugs.php.net/bug.php?id=45996 PHP에 제기한 버그])\n설치가 중단되었습니다.", "config-suhosin-max-value-length": "수호신(Suhosin)이 설치되고 $1 바이트로 GET 매개 변수 length를 제한하고 있습니다.\n미디어위키의 ResourceLoader 구성 요소는 이 제한을 회피하지만 성능이 저하됩니다.\n가능하면 php.ini의 suhosin.get.max_value_length를 1024 이상으로 설정하고 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-help": "데이터베이스 서버가 다른 서버에 있으면 여기에 호스트 이름이나 IP 주소를 입력하세요.\n\n공유하는 웹 호스팅을 사용하고 있으면 호스팅 제공 업체는 올바른 호스트 이름을 설명하고 있을 것입니다.\n\nWindows 서버에 설치하고 MySQL을 사용하면 \"localhost\"가 서버 이름으로는 작동하지 않을 수 있습니다. 그렇게 된다면 로컬 IP 주소로 \"127.0.0.1\"을 시도하세요.\n\nPostgreSQL을 사용하면 유닉스 소켓을 통해 연결되도록 입력란을 비워두세요.", diff --git a/includes/installer/i18n/lb.json b/includes/installer/i18n/lb.json index 7859d7ae82..e795211477 100644 --- a/includes/installer/i18n/lb.json +++ b/includes/installer/i18n/lb.json @@ -206,6 +206,7 @@ "config-help": "Hëllef", "config-help-tooltip": "klickt fir opzeklappen", "config-nofile": "De Fichier \"$1\" gouf net fonnt. Gouf e geläscht?", + "config-screenshot": "Screenshot", "mainpagetext": "MediaWiki gouf installéiert.", "mainpagedocfooter": "Kuckt w.e.g. [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents d'Benotzerhandbuch] fir Informatiounen iwwer de Gebruach vun der Wiki Software.\n\n== Fir unzefänken ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Hëllef bei der Konfiguratioun]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki-FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailinglëscht vun neie MediaWiki-Versiounen]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Lokaliséiert MediaWiki fir Är Sprooch]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Léiert wéi Spam op Ärer Wiki reduzéiert gi kann]" } diff --git a/includes/installer/i18n/nb.json b/includes/installer/i18n/nb.json index b43f92fa97..1eb418ed45 100644 --- a/includes/installer/i18n/nb.json +++ b/includes/installer/i18n/nb.json @@ -85,6 +85,7 @@ "config-no-cli-uploads-check": "'''Advarsel:''' Din standard-katalog for opplastinger ($1) er ikke kontrollert for sårbarhet overfor vilkårlig skript-kjøring under CLI-installasjonen.", "config-brokenlibxml": "Ditt system bruker en kombinasjon av PHP- og libxml2-versjoner som har feil og kan forårsake skjult dataødeleggelse i MediaWiki og andre web-applikasjoner.\nOppgrader til libxml2 2.7.3 eller nyere ([https://bugs.php.net/bug.php?id=45996 Feil-liste for PHP]).\nInstalleringen ble abortert.", "config-suhosin-max-value-length": "Suhosin er installert og begrenser GET-parameterlengder til $1 bytes. MediaWiki sin ResourceLoader-komponent klarer å komme rundt denne begrensningen, men med redusert ytelse. Om mulig bør du sette suhosin.get.max_value_length til minst 1024 i php.ini, og sette $wgResourceLoaderMaxQueryLength til samme verdi i LocalSettings.php.", + "config-using-32bit": "Adversel: Systemet ditt ser ut til å være 32-bit-basert, mens dette er [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:32-bit not advised].", "config-db-type": "Databasetype:", "config-db-host": "Databasevert:", "config-db-host-help": "Hvis databasen kjører på en annen tjenermaskin, skriv inn vertsnavnet eller IP-adressen her.\n\nHvis du bruker et webhotell, vil du kunne be om aktuelt vertsnavn fra din leverandør.\n\nHvis du installerer på en Windowstjener og bruker MySQL, kan det hende at «localhost» ikke brukes som tjenernavn. Hvis så er tilfelle, prøv «127.0.0.1» som lokal IP-adresse.\n\nHvis du bruker PostgreSQL, la dette feltet være blankt slik at koplingen gjøres via en \"Unix socket\".", diff --git a/includes/installer/i18n/nl.json b/includes/installer/i18n/nl.json index 442054ad32..6185ef4c22 100644 --- a/includes/installer/i18n/nl.json +++ b/includes/installer/i18n/nl.json @@ -20,7 +20,8 @@ "Hex", "Mainframe98", "Rcdeboer", - "Festina90" + "Festina90", + "MarcoSwart" ] }, "config-desc": "Het installatieprogramma voor MediaWiki", @@ -96,7 +97,7 @@ "config-no-cli-uploads-check": "''Waarschuwing:'' uw standaardmap voor uploads ($1) wordt niet gecontroleerd op kwetsbaarheden voor het uitvoeren van willekeurige scripts gedurende de CLI-installatie.", "config-brokenlibxml": "Uw systeem heeft een combinatie van PHP- en libxml2-versies geïnstalleerd die is foutgevoelig is en kan leiden tot onzichtbare beschadiging van gegevens in MediaWiki en andere webapplicaties.\nUpgrade naar libxml2 2.7.3 of hoger([https://bugs.php.net/bug.php?id=45996 bij PHP gerapporteerde fout]).\nDe installatie wordt afgebroken.", "config-suhosin-max-value-length": "Suhosin is geïnstalleerd en beperkt de GET-parameter length tot $1 bytes.\nDe ResourceLoader van MediaWiki omzeilt deze beperking, maar dat is slecht voor de prestaties.\nAls het mogelijk is, moet u de waarde \"suhosin.get.max_value_length\" in php.ini instellen op 1024 of hoger en $wgResourceLoaderMaxQueryLength in LocalSettings.php op dezelfde waarde instellen.", - "config-using-32bit": "Opgepast: uw systeem blijkt met 32-bit integers te werken. Dit is [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:32-bit niet geadviseerd].", + "config-using-32bit": "Pas op: uw systeem lijkt met 32-bit integers te werken. Dit is [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:32-bit anders dan aangeraden].", "config-db-type": "Databasetype:", "config-db-host": "Databasehost:", "config-db-host-help": "Als uw databaseserver een andere server is, voer dan de hostnaam of het IP-adres hier in.\n\nAls u gebruik maakt van gedeelde webhosting, hoort uw provider u de juiste hostnaam te hebben verstrekt.\n\nAls u MediaWiki op een Windowsserver installeert en MySQL gebruikt, dan werkt \"localhost\" mogelijk niet als servernaam.\nAls het inderdaad niet werkt, probeer dan \"127.0.0.1\" te gebruiken als lokaal IP-adres.\n\nAls u PostgreSQL gebruikt, laat dit veld dan leeg om via een Unix-socket te verbinden.", diff --git a/includes/installer/i18n/pt-br.json b/includes/installer/i18n/pt-br.json index 5ae3a0c37e..7a490513d6 100644 --- a/includes/installer/i18n/pt-br.json +++ b/includes/installer/i18n/pt-br.json @@ -98,6 +98,7 @@ "config-no-cli-uploads-check": "Atenção: O seu diretório padrão para envios ($1) não está marcado para vulnerabilidade\npara execução de script arbitrário durante a instalação do CLI.", "config-brokenlibxml": "O sistema tem uma combinação de PHP e libxml2 que é conflitante e pode causar corrupção de dados ocultos no MediaWiki e outros aplicativos da web.\nAtualize para o libxml2 2.7.3 ou mais recente ([https://bugs.php.net/bug.php?id=45996 bugs com o PHP]).\nInstalação abortada.", "config-suhosin-max-value-length": "O Suhosin está instalado e limita o parâmetro GET length para $1 bytes. O componente ResourceLoader trabalhará em torno deste limite, mas degradará a performance.\nSe possível, defina suhosin.get.max_value_length em php.ini para 1024 ou mais e defina $wgResourceLoaderMaxQueryLength em LocalSettings.php para o mesmo valor.", + "config-using-32bit": "Aviso: o seu sistema parece estar sendo executado com inteiros de 32 bits. Isto [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:32-bit não é recomendado].", "config-db-type": "Tipo do banco de dados:", "config-db-host": "Servidor do banco de dados:", "config-db-host-help": "Se a banco de dados do seu servidor está em um servidor diferente, digite o nome do host ou o endereço IP aqui.\n\nSe você está utilizando uma hospedagem web compartilhada, o seu provedor de hospedagem deverá fornecer o nome do host correto na sua documentação.\n\nSe você está instalando em um servidor Windows e usando o MySQL, usar \"localhost\" pode não funcionar para o nome de servidor. Se não funcionar, tente \"127.0.0.1\" para o endereço de IP local.\n\nSe você está usando PostgreSQl, deixe este campo em branco para se conectar através de um socket Unix.", @@ -331,6 +332,8 @@ "config-help-tooltip": "clique para expandir", "config-nofile": "O arquivo \"$1\" não foi encontrado. Ele foi apagado?", "config-extension-link": "Você sabia que sua wiki suporta [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions extensões]?\n\nVocê pode explorar as [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category extensões por categoria] ou visitar a [https://www.mediawiki.org/wiki/Extension_Matrix Matriz de Extensões] para ver a lista completa.", + "config-skins-screenshots": "$1 (screenshots: $2)", + "config-screenshot": "screenshot", "mainpagetext": "O MediaWiki foi instalado.", "mainpagedocfooter": "Consulte o [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Manual de Usuário] para informações de como usar o software wiki.\n\n== Começando ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lista de opções de configuração]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ FAQ do MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de discussão com avisos de novas versões do MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Traduza o MediaWiki para seu idioma]" } diff --git a/includes/installer/i18n/uk.json b/includes/installer/i18n/uk.json index 78730351b6..54339c3b3d 100644 --- a/includes/installer/i18n/uk.json +++ b/includes/installer/i18n/uk.json @@ -88,6 +88,7 @@ "config-no-cli-uploads-check": "'''Увага:''' Ваша типова папка для завантажень ($1) не перевірялась на вразливість до виконання довільних скриптів під час встановлення CLI.", "config-brokenlibxml": "У Вашій системі невдале поєднання версій PHP і libxml2, яке може спричинити пошкодження прихованих даних у MediaWiki та інших веб-застосунках.\nОновіть libxml2 до версії 2.7.3 або пізнішої ([https://bugs.php.net/bug.php?id=45996 відомості про помилку]).\nВстановлення перервано.", "config-suhosin-max-value-length": "Suhosin встановлено і обмежує параметра GET length до $1 байта. Компонент MediaWiki ResourceLoader буде обходити це обмеження, однак це зменшить продуктивність. Якщо це можливо, Вам варто встановити значення suhosin.get.max_value_length як 1024 і більше у php.ini і встановити таке ж значення $wgResourceLoaderMaxQueryLength у LocalSettings.php .", + "config-using-32bit": "Попередження: схоже, що Ваша система працює з 32-бітними цілими числами. Таке [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:32-bit не рекомендується].", "config-db-type": "Тип бази даних:", "config-db-host": "Хост бази даних:", "config-db-host-help": "Якщо сервер бази даних знаходиться на іншому сервері, введіть тут ім'я хосту і IP адресу.\n\nЯкщо Ви використовуєте віртуальний хостинг, Ваш хостинг-провайдер має надати Вам правильне ім'я хосту у його документації.\n\nЯкщо у Вас сервер із Windows Ви використовуєте MySQL, параметр \"localhost\" може не працювати для імені сервера. Якщо не працює, використайте \"127.0.0.1\" як локальну IP-адресу.\n\nЯкщо Ви використовуєте PostgreSQL, залиште це поле пустим, щоб під'єднатись через сокет Unix.", @@ -318,6 +319,8 @@ "config-help-tooltip": "натисніть, щоб розгорнути", "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-screenshot": "скріншот", "mainpagetext": "Програмне забезпечення «MediaWiki» встановлено.", "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 Часті питання з приводу MediaWiki];\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Розсилка повідомлень про появу нових версій MediaWiki];\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Локалізувати MediaWiki своєю мовою]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Дізнатися, як боротися зі спамом у своїй вікі]" } diff --git a/includes/installer/i18n/vi.json b/includes/installer/i18n/vi.json index 0a7f8cd248..1c441cd7e5 100644 --- a/includes/installer/i18n/vi.json +++ b/includes/installer/i18n/vi.json @@ -82,6 +82,7 @@ "config-no-cli-uploads-check": "Cảnh báo: Thư mục tải lên mặc định của bạn ($1) không được kiểm tra lỗ hỏng bảo mật dễ bị khai thác bởi các đoạn mã thực thi xấu trong quá trình cài đặt giao diện dòng lệnh.", "config-brokenlibxml": "Hệ thống của bạn có kết hợp các phiên bản lỗi lầm của PHP và libxml2, điều này có thể gây ra tổn thương không nhìn thấy được đối với dữ liệu trong MediaWiki và các ứng dụng Web khác.\nHãy nâng cấp lên phiên bản libxml2 2.7.3 trở lên ([https://bugs.php.net/bug.php?id=45996 lỗi nộp PHP]).\nCài đặt bị hủy bỏ.", "config-suhosin-max-value-length": "Suhosin được cài đặt và hạn chế tham số GET length (độ dài) không thể vượt quá $1 byte.\nThành phần ResourceLoader của MediaWiki sẽ khắc phục giới hạn này, nhưng điều này sẽ làm giảm hiệu suất.\nNếu có thể, bạn nên tăng suhosin.get.max_value_length lên 1024 trở lên trong php.ini, và đặt $wgResourceLoaderMaxQueryLength cùng giá trị trong LocalSettings.php.", + "config-using-32bit": "Cảnh báo: Máy của bạn hình như sử dụng các số nguyên 32 bit. Chế độ này [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:32-bit không được khuyên khích].", "config-db-type": "Kiểu cơ sở dữ liệu:", "config-db-host": "Máy chủ của cơ sở dữ liệu:", "config-db-host-help": "Nếu máy chủ cơ sở dữ liệu của bạn nằm trên máy chủ khác, hãy điền tên hoặc địa chỉ IP của máy chủ vào đây.\n\nNếu bạn đang dùng Web hosting chia sẻ, tài liệu của nhà cung cấp hosting của bạn sẽ có tên chính xác của máy chủ.\n\nNếu bạn đang cài đặt trên một máy chủ Windows và sử dụng MySQL, việc dùng “localhost” có thể không hợp với tên máy chủ. Nếu bị như vậy, hãy thử “127.0.0.1” tức địa chỉ IP địa phương.\n\nNếu bạn đang dùng PostgreSQL, hãy để trống mục này để kết nối với một ổ cắm Unix.", @@ -312,6 +313,8 @@ "config-help-tooltip": "nhấn chuột để mở rộng", "config-nofile": "Không tìm thấy tập tin “$1”. Nó có phải bị xóa không?", "config-extension-link": "Bạn có biết rằng wiki của bạn có hỗ trợ [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions mở rộng]?\n\nBạn có thể truy cập [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category phần mở rộng theo thể loại] hoặc [https://www.mediawiki.org/wiki/Extension_Matrix Ma trận Mở rộng] để xem danh sách đầy đủ các phần mở rộng.", + "config-skins-screenshots": "$1 (ảnh chụp màn hình: $2)", + "config-screenshot": "ảnh chụp màn hình", "mainpagetext": "'''MediaWiki đã được cài đặt.'''", "mainpagedocfooter": "Xin đọc [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Hướng dẫn sử dụng] để biết thêm thông tin về cách sử dụng phần mềm wiki.\n\n== Để bắt đầu ==\n\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Danh sách các thiết lập cấu hình]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Các câu hỏi thường gặp MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Danh sách gửi thư về việc phát hành MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Tìm hiểu cách chống spam tại wiki của bạn]" } diff --git a/includes/jobqueue/JobQueueDB.php b/includes/jobqueue/JobQueueDB.php index b5f331b35f..b68fdaefb3 100644 --- a/includes/jobqueue/JobQueueDB.php +++ b/includes/jobqueue/JobQueueDB.php @@ -734,7 +734,6 @@ class JobQueueDB extends JobQueue { 'job_title' => $job->getTitle()->getDBkey(), 'job_params' => self::makeBlob( $job->getParams() ), // Additional job metadata - 'job_id' => $dbw->nextSequenceValue( 'job_job_id_seq' ), 'job_timestamp' => $dbw->timestamp(), 'job_sha1' => Wikimedia\base_convert( sha1( serialize( $job->getDeduplicationInfo() ) ), diff --git a/includes/jobqueue/jobs/CategoryMembershipChangeJob.php b/includes/jobqueue/jobs/CategoryMembershipChangeJob.php index 3a0063c3ed..3907fc65ec 100644 --- a/includes/jobqueue/jobs/CategoryMembershipChangeJob.php +++ b/includes/jobqueue/jobs/CategoryMembershipChangeJob.php @@ -34,7 +34,7 @@ use Wikimedia\Rdbms\LBFactory; * @since 1.27 */ class CategoryMembershipChangeJob extends Job { - /** @var integer|null */ + /** @var int|null */ private $ticket; const ENQUEUE_FUDGE_SEC = 60; diff --git a/includes/jobqueue/jobs/HTMLCacheUpdateJob.php b/includes/jobqueue/jobs/HTMLCacheUpdateJob.php index 2d816f9f06..4c16d7f25b 100644 --- a/includes/jobqueue/jobs/HTMLCacheUpdateJob.php +++ b/includes/jobqueue/jobs/HTMLCacheUpdateJob.php @@ -113,6 +113,10 @@ class HTMLCacheUpdateJob extends Job { // before the link jobs, so using the current timestamp instead of the root timestamp is // not expected to invalidate these cache entries too often. $touchTimestamp = wfTimestampNow(); + // If page_touched is higher than this, then something else already bumped it after enqueue + $condTimestamp = isset( $this->params['rootJobTimestamp'] ) + ? $this->params['rootJobTimestamp'] + : $touchTimestamp; $dbw = wfGetDB( DB_MASTER ); $factory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory(); @@ -126,7 +130,7 @@ class HTMLCacheUpdateJob extends Job { [ 'page_touched' => $dbw->timestamp( $touchTimestamp ) ], [ 'page_id' => $batch, // don't invalidated pages that were already invalidated - "page_touched < " . $dbw->addQuotes( $dbw->timestamp( $touchTimestamp ) ) + "page_touched < " . $dbw->addQuotes( $dbw->timestamp( $condTimestamp ) ) ], __METHOD__ ); @@ -139,9 +143,13 @@ class HTMLCacheUpdateJob extends Job { __METHOD__ ) ); - // Update CDN - $u = CdnCacheUpdate::newFromTitles( $titleArray ); - $u->doUpdate(); + // Update CDN; call purge() directly so as to not bother with secondary purges + $urls = []; + foreach ( $titleArray as $title ) { + /** @var Title $title */ + $urls = array_merge( $urls, $title->getCdnUrls() ); + } + CdnCacheUpdate::purge( $urls ); // Update file cache if ( $wgUseFileCache ) { @@ -152,6 +160,12 @@ class HTMLCacheUpdateJob extends Job { } public function workItemCount() { - return isset( $this->params['pages'] ) ? count( $this->params['pages'] ) : 1; + if ( !empty( $this->params['recursive'] ) ) { + return 0; // nothing actually purged + } elseif ( isset( $this->params['pages'] ) ) { + return count( $this->params['pages'] ); + } + + return 1; // one title } } diff --git a/includes/jobqueue/jobs/RefreshLinksJob.php b/includes/jobqueue/jobs/RefreshLinksJob.php index 0c84a139f4..9f3550f269 100644 --- a/includes/jobqueue/jobs/RefreshLinksJob.php +++ b/includes/jobqueue/jobs/RefreshLinksJob.php @@ -39,9 +39,9 @@ use Wikimedia\Rdbms\DBReplicationWaitError; class RefreshLinksJob extends Job { /** @var float Cache parser output when it takes this long to render */ const PARSE_THRESHOLD_SEC = 1.0; - /** @var integer Lag safety margin when comparing root job times to last-refresh times */ + /** @var int Lag safety margin when comparing root job times to last-refresh times */ const CLOCK_FUDGE = 10; - /** @var integer How many seconds to wait for replica DBs to catch up */ + /** @var int How many seconds to wait for replica DBs to catch up */ const LAG_WAIT_TIMEOUT = 15; function __construct( Title $title, array $params ) { @@ -301,6 +301,12 @@ class RefreshLinksJob extends Job { } public function workItemCount() { - return isset( $this->params['pages'] ) ? count( $this->params['pages'] ) : 1; + if ( !empty( $this->params['recursive'] ) ) { + return 0; // nothing actually refreshed + } elseif ( isset( $this->params['pages'] ) ) { + return count( $this->params['pages'] ); + } + + return 1; // one title } } diff --git a/includes/libs/GenericArrayObject.php b/includes/libs/GenericArrayObject.php index f76d9a2e8d..79d13741e2 100644 --- a/includes/libs/GenericArrayObject.php +++ b/includes/libs/GenericArrayObject.php @@ -45,7 +45,7 @@ abstract class GenericArrayObject extends ArrayObject { /** * @see SiteList::getNewOffset() * @since 1.20 - * @var integer + * @var int */ protected $indexOffset = 0; @@ -56,7 +56,7 @@ abstract class GenericArrayObject extends ArrayObject { * * @since 1.20 * - * @return integer + * @return int */ protected function getNewOffset() { while ( $this->offsetExists( $this->indexOffset ) ) { @@ -167,7 +167,7 @@ abstract class GenericArrayObject extends ArrayObject { * * @since 1.20 * - * @param integer|string $index + * @param int|string $index * @param mixed $value * * @return bool diff --git a/includes/libs/HashRing.php b/includes/libs/HashRing.php index a4aabcd3fe..be40965e84 100644 --- a/includes/libs/HashRing.php +++ b/includes/libs/HashRing.php @@ -35,7 +35,7 @@ class HashRing { protected $liveRing; /** @var Array (location => UNIX timestamp) */ protected $ejectionExpiries = []; - /** @var integer UNIX timestamp */ + /** @var int UNIX timestamp */ protected $ejectionNextExpiry = INF; const RING_SIZE = 268435456; // 2^28 @@ -93,7 +93,7 @@ class HashRing { * Get the location of an item on the ring, as well as the next locations * * @param string $item - * @param integer $limit Maximum number of locations to return + * @param int $limit Maximum number of locations to return * @return array List of locations */ public function getLocations( $item, $limit ) { @@ -152,7 +152,7 @@ class HashRing { * Remove a location from the "live" hash ring * * @param string $location - * @param integer $ttl Seconds + * @param int $ttl Seconds * @return bool Whether some non-ejected locations are left */ public function ejectFromLiveRing( $location, $ttl ) { @@ -218,7 +218,7 @@ class HashRing { * Get the location of an item on the "live" ring, as well as the next locations * * @param string $item - * @param integer $limit Maximum number of locations to return + * @param int $limit Maximum number of locations to return * @return array List of locations * @throws UnexpectedValueException */ diff --git a/includes/libs/IP.php b/includes/libs/IP.php index b22f06d387..3bfb531f5e 100644 --- a/includes/libs/IP.php +++ b/includes/libs/IP.php @@ -23,14 +23,14 @@ use IPSet\IPSet; -// Some regex definition to "play" with IP address and IP address blocks +// Some regex definition to "play" with IP address and IP address ranges // An IPv4 address is made of 4 bytes from x00 to xFF which is d0 to d255 define( 'RE_IP_BYTE', '(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|0?[0-9]?[0-9])' ); define( 'RE_IP_ADD', RE_IP_BYTE . '\.' . RE_IP_BYTE . '\.' . RE_IP_BYTE . '\.' . RE_IP_BYTE ); -// An IPv4 block is an IP address and a prefix (d1 to d32) +// An IPv4 range is an IP address and a prefix (d1 to d32) define( 'RE_IP_PREFIX', '(3[0-2]|[12]?\d)' ); -define( 'RE_IP_BLOCK', RE_IP_ADD . '\/' . RE_IP_PREFIX ); +define( 'RE_IP_RANGE', RE_IP_ADD . '\/' . RE_IP_PREFIX ); // An IPv6 address is made up of 8 words (each x0000 to xFFFF). // However, the "::" abbreviation can be used on consecutive x0000 words. @@ -47,8 +47,8 @@ define( 'RE_IPV6_ADD', RE_IPV6_WORD . '(?::' . RE_IPV6_WORD . '){7}' . ')' ); -// An IPv6 block is an IP address and a prefix (d1 to d128) -define( 'RE_IPV6_BLOCK', RE_IPV6_ADD . '\/' . RE_IPV6_PREFIX ); +// An IPv6 range is an IP address and a prefix (d1 to d128) +define( 'RE_IPV6_RANGE', RE_IPV6_ADD . '\/' . RE_IPV6_PREFIX ); // For IPv6 canonicalization (NOT for strict validation; these are quite lax!) define( 'RE_IPV6_GAP', ':(?:0+:)*(?::(?:0+:)*)?' ); define( 'RE_IPV6_V4_PREFIX', '0*' . RE_IPV6_GAP . '(?:ffff:)?' ); @@ -64,11 +64,9 @@ define( 'IP_ADDRESS_STRING', /** * A collection of public static functions to play with IP address - * and IP blocks. + * and IP ranges. */ class IP { - /** @var IPSet */ - private static $proxyIpSet = null; /** * Determine if a string is as valid IP address or network (CIDR prefix). @@ -118,16 +116,30 @@ class IP { } /** - * Validate an IP Block (valid address WITH a valid prefix). + * Validate an IP range (valid address with a valid CIDR prefix). * SIIT IPv4-translated addresses are rejected. * @note canonicalize() tries to convert translated addresses to IPv4. * - * @param string $ipblock + * @deprecated since 1.30. Use the equivalent IP::isValidRange(). + * @param string $ipRange * @return bool True if it is valid */ - public static function isValidBlock( $ipblock ) { - return ( preg_match( '/^' . RE_IPV6_BLOCK . '$/', $ipblock ) - || preg_match( '/^' . RE_IP_BLOCK . '$/', $ipblock ) ); + public static function isValidBlock( $ipRange ) { + return self::isValidRange( $ipRange ); + } + + /** + * Validate an IP range (valid address with a valid CIDR prefix). + * SIIT IPv4-translated addresses are rejected. + * @note canonicalize() tries to convert translated addresses to IPv4. + * + * @param string $ipRange + * @return bool True if it is valid + * @since 1.30 + */ + public static function isValidRange( $ipRange ) { + return ( preg_match( '/^' . RE_IPV6_RANGE . '$/', $ipRange ) + || preg_match( '/^' . RE_IP_RANGE . '$/', $ipRange ) ); } /** diff --git a/includes/libs/MultiHttpClient.php b/includes/libs/MultiHttpClient.php index 6c48cee1ae..16168e6b59 100644 --- a/includes/libs/MultiHttpClient.php +++ b/includes/libs/MultiHttpClient.php @@ -50,13 +50,13 @@ class MultiHttpClient implements LoggerAwareInterface { protected $multiHandle = null; // curl_multi handle /** @var string|null SSL certificates path */ protected $caBundlePath; - /** @var integer */ + /** @var int */ protected $connTimeout = 10; - /** @var integer */ + /** @var int */ protected $reqTimeout = 300; /** @var bool */ protected $usePipelining = false; - /** @var integer */ + /** @var int */ protected $maxConnsPerHost = 50; /** @var string|null proxy */ protected $proxy; diff --git a/includes/libs/filebackend/HTTPFileStreamer.php b/includes/libs/filebackend/HTTPFileStreamer.php index a7d064b6e3..9730acb8cd 100644 --- a/includes/libs/filebackend/HTTPFileStreamer.php +++ b/includes/libs/filebackend/HTTPFileStreamer.php @@ -63,7 +63,7 @@ class HTTPFileStreamer { * @param array $headers Any additional headers to send if the file exists * @param bool $sendErrors Send error messages if errors occur (like 404) * @param array $optHeaders HTTP request header map (e.g. "range") (use lowercase keys) - * @param integer $flags Bitfield of STREAM_* constants + * @param int $flags Bitfield of STREAM_* constants * @throws MWException * @return bool Success */ @@ -179,7 +179,7 @@ class HTTPFileStreamer { * Send out a standard 404 message for a file * * @param string $fname Full name and path of the file to stream - * @param integer $flags Bitfield of STREAM_* constants + * @param int $flags Bitfield of STREAM_* constants * @since 1.24 */ public static function send404Message( $fname, $flags = 0 ) { @@ -202,7 +202,7 @@ class HTTPFileStreamer { * Convert a Range header value to an absolute (start, end) range tuple * * @param string $range Range header value - * @param integer $size File size + * @param int $size File size * @return array|string Returns error string on failure (start, end, length) * @since 1.24 */ diff --git a/includes/libs/filebackend/SwiftFileBackend.php b/includes/libs/filebackend/SwiftFileBackend.php index eb72edc2ed..de5a103831 100644 --- a/includes/libs/filebackend/SwiftFileBackend.php +++ b/includes/libs/filebackend/SwiftFileBackend.php @@ -1250,7 +1250,7 @@ class SwiftFileBackend extends FileBackendStore { * @return StatusValue[] */ protected function doExecuteOpHandlesInternal( array $fileOpHandles ) { - /** @var $statuses StatusValue[] */ + /** @var StatusValue[] $statuses */ $statuses = []; $auth = $this->getAuthentication(); diff --git a/includes/libs/objectcache/BagOStuff.php b/includes/libs/objectcache/BagOStuff.php index a262e0e18e..f834ccf937 100644 --- a/includes/libs/objectcache/BagOStuff.php +++ b/includes/libs/objectcache/BagOStuff.php @@ -47,7 +47,7 @@ use Wikimedia\WaitConditionLoop; abstract class BagOStuff implements IExpiringStore, LoggerAwareInterface { /** @var array[] Lock tracking */ protected $locks = []; - /** @var integer ERR_* class constant */ + /** @var int ERR_* class constant */ protected $lastError = self::ERR_NONE; /** @var string */ protected $keyspace = 'local'; @@ -55,7 +55,7 @@ abstract class BagOStuff implements IExpiringStore, LoggerAwareInterface { protected $logger; /** @var callback|null */ protected $asyncHandler; - /** @var integer Seconds */ + /** @var int Seconds */ protected $syncTimeout; /** @var bool */ @@ -70,7 +70,7 @@ abstract class BagOStuff implements IExpiringStore, LoggerAwareInterface { /** @var callable[] */ protected $busyCallbacks = []; - /** @var integer[] Map of (ATTR_* class constant => QOS_* class constant) */ + /** @var int[] Map of (ATTR_* class constant => QOS_* class constant) */ protected $attrMap = []; /** Possible values for getLastError() */ @@ -142,7 +142,7 @@ abstract class BagOStuff implements IExpiringStore, LoggerAwareInterface { * @param string $key * @param int $ttl Time-to-live (seconds) * @param callable $callback Callback that derives the new value - * @param integer $flags Bitfield of BagOStuff::READ_* constants [optional] + * @param int $flags Bitfield of BagOStuff::READ_* constants [optional] * @return mixed The cached value if found or the result of $callback otherwise * @since 1.27 */ @@ -172,8 +172,8 @@ abstract class BagOStuff implements IExpiringStore, LoggerAwareInterface { * higher tiers using standard TTLs. * * @param string $key - * @param integer $flags Bitfield of BagOStuff::READ_* constants [optional] - * @param integer $oldFlags [unused] + * @param int $flags Bitfield of BagOStuff::READ_* constants [optional] + * @param int $oldFlags [unused] * @return mixed Returns false on failure and if the item does not exist */ public function get( $key, $flags = 0, $oldFlags = null ) { @@ -220,7 +220,7 @@ abstract class BagOStuff implements IExpiringStore, LoggerAwareInterface { /** * @param string $key - * @param integer $flags Bitfield of BagOStuff::READ_* constants [optional] + * @param int $flags Bitfield of BagOStuff::READ_* constants [optional] * @return mixed Returns false on failure and if the item does not exist */ abstract protected function doGet( $key, $flags = 0 ); @@ -230,7 +230,7 @@ abstract class BagOStuff implements IExpiringStore, LoggerAwareInterface { * * @param string $key * @param mixed &$casToken - * @param integer $flags Bitfield of BagOStuff::READ_* constants [optional] + * @param int $flags Bitfield of BagOStuff::READ_* constants [optional] * @return mixed Returns false on failure and if the item does not exist * @throws Exception */ @@ -503,7 +503,7 @@ abstract class BagOStuff implements IExpiringStore, LoggerAwareInterface { /** * Get an associative array containing the item for each of the keys that have items. * @param array $keys List of strings - * @param integer $flags Bitfield; supports READ_LATEST [optional] + * @param int $flags Bitfield; supports READ_LATEST [optional] * @return array */ public function getMulti( array $keys, $flags = 0 ) { @@ -766,8 +766,8 @@ abstract class BagOStuff implements IExpiringStore, LoggerAwareInterface { } /** - * @param integer $flag ATTR_* class constant - * @return integer QOS_* class constant + * @param int $flag ATTR_* class constant + * @return int QOS_* class constant * @since 1.28 */ public function getQoS( $flag ) { @@ -778,7 +778,7 @@ abstract class BagOStuff implements IExpiringStore, LoggerAwareInterface { * Merge the flag maps of one or more BagOStuff objects into a "lowest common denominator" map * * @param BagOStuff[] $bags - * @return integer[] Resulting flag map (class ATTR_* constant => class QOS_* constant) + * @return int[] Resulting flag map (class ATTR_* constant => class QOS_* constant) */ protected function mergeFlagMaps( array $bags ) { $map = []; diff --git a/includes/libs/objectcache/HashBagOStuff.php b/includes/libs/objectcache/HashBagOStuff.php index baa3c32c6a..6d583da07c 100644 --- a/includes/libs/objectcache/HashBagOStuff.php +++ b/includes/libs/objectcache/HashBagOStuff.php @@ -31,7 +31,7 @@ class HashBagOStuff extends BagOStuff { /** @var mixed[] */ protected $bag = []; - /** @var integer Max entries allowed */ + /** @var int Max entries allowed */ protected $maxCacheKeys; const KEY_VAL = 0; diff --git a/includes/libs/objectcache/MultiWriteBagOStuff.php b/includes/libs/objectcache/MultiWriteBagOStuff.php index 65f3a8afe5..200ab7969c 100644 --- a/includes/libs/objectcache/MultiWriteBagOStuff.php +++ b/includes/libs/objectcache/MultiWriteBagOStuff.php @@ -171,7 +171,7 @@ class MultiWriteBagOStuff extends BagOStuff { /** * Apply a write method to the first $count backing caches * - * @param integer $count + * @param int $count * @param bool $asyncWrites * @param string $method * @param mixed $args,... diff --git a/includes/libs/objectcache/RESTBagOStuff.php b/includes/libs/objectcache/RESTBagOStuff.php index 5d2577b16e..d3aa9f5cb1 100644 --- a/includes/libs/objectcache/RESTBagOStuff.php +++ b/includes/libs/objectcache/RESTBagOStuff.php @@ -57,7 +57,7 @@ class RESTBagOStuff extends BagOStuff { /** * @param string $key - * @param integer $flags Bitfield of BagOStuff::READ_* constants [optional] + * @param int $flags Bitfield of BagOStuff::READ_* constants [optional] * @return mixed Returns false on failure and if the item does not exist */ protected function doGet( $key, $flags = 0 ) { diff --git a/includes/libs/objectcache/WANObjectCache.php b/includes/libs/objectcache/WANObjectCache.php index a80ed8d663..c1c9cc1a8a 100644 --- a/includes/libs/objectcache/WANObjectCache.php +++ b/includes/libs/objectcache/WANObjectCache.php @@ -92,11 +92,11 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface { /** @var int ERR_* constant for the "last error" registry */ protected $lastRelayError = self::ERR_NONE; - /** @var integer Callback stack depth for getWithSetCallback() */ + /** @var int Callback stack depth for getWithSetCallback() */ private $callbackDepth = 0; /** @var mixed[] Temporary warm-up cache */ private $warmupCache = []; - /** @var integer Key fetched */ + /** @var int Key fetched */ private $warmupKeyMisses = 0; /** Max time expected to pass between delete() and DB commit finishing */ @@ -148,7 +148,7 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface { const FLD_FLAGS = 4; // key to the flags bitfield const FLD_HOLDOFF = 5; // key to any hold-off TTL - /** @var integer Treat this value as expired-on-arrival */ + /** @var int Treat this value as expired-on-arrival */ const FLG_STALE = 1; const ERR_NONE = 0; // no error @@ -404,7 +404,7 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface { * * @param string $key Cache key * @param mixed $value - * @param integer $ttl Seconds to live. Special values are: + * @param int $ttl Seconds to live. Special values are: * - WANObjectCache::TTL_INDEFINITE: Cache forever * @param array $opts Options map: * - lag : Seconds of replica DB lag. Typically, this is either the replica DB lag @@ -537,7 +537,7 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface { * idempotence, the $ttl should not vary for different delete() calls on the same key. * * @param string $key Cache key - * @param integer $ttl Tombstone TTL; Default: WANObjectCache::HOLDOFF_TTL + * @param int $ttl Tombstone TTL; Default: WANObjectCache::HOLDOFF_TTL * @return bool True if the item was purged or not found, false on failure */ final public function delete( $key, $ttl = self::HOLDOFF_TTL ) { @@ -797,7 +797,7 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface { * @see WANObjectCache::set() * * @param string $key Cache key - * @param integer $ttl Seconds to live for key updates. Special values are: + * @param int $ttl Seconds to live for key updates. Special values are: * - WANObjectCache::TTL_INDEFINITE: Cache forever * - WANObjectCache::TTL_UNCACHEABLE: Do not cache at all * @param callable $callback Value generation function @@ -929,7 +929,7 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface { * @see WANObjectCache::getWithSetCallback() * * @param string $key - * @param integer $ttl + * @param int $ttl * @param callback $callback * @param array $opts Options map for getWithSetCallback() * @param float &$asOf Cache generation timestamp of returned value [returned] @@ -1098,7 +1098,7 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface { * @endcode * * @param ArrayIterator $keyedIds Result of WANObjectCache::makeMultiKeys() - * @param integer $ttl Seconds to live for key updates + * @param int $ttl Seconds to live for key updates * @param callable $callback Callback the yields entity regeneration callbacks * @param array $opts Options map * @return array Map of (cache key => value) in the same order as $keyedIds @@ -1184,7 +1184,7 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface { * @endcode * * @param ArrayIterator $keyedIds Result of WANObjectCache::makeMultiKeys() - * @param integer $ttl Seconds to live for key updates + * @param int $ttl Seconds to live for key updates * @param callable $callback Callback the yields entity regeneration callbacks * @param array $opts Options map * @return array Map of (cache key => value) in the same order as $keyedIds @@ -1393,8 +1393,8 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface { } /** - * @param integer $flag ATTR_* class constant - * @return integer QOS_* class constant + * @param int $flag ATTR_* class constant + * @return int QOS_* class constant * @since 1.28 */ public function getQoS( $flag ) { @@ -1417,11 +1417,11 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface { * $ttl = $cache->adaptiveTTL( $mtime, $cache::TTL_DAY ); * @endcode * - * @param integer|float $mtime UNIX timestamp - * @param integer $maxTTL Maximum TTL (seconds) - * @param integer $minTTL Minimum TTL (seconds); Default: 30 + * @param int|float $mtime UNIX timestamp + * @param int $maxTTL Maximum TTL (seconds) + * @param int $minTTL Minimum TTL (seconds); Default: 30 * @param float $factor Value in the range (0,1); Default: .2 - * @return integer Adaptive TTL + * @return int Adaptive TTL * @since 1.28 */ public function adaptiveTTL( $mtime, $maxTTL, $minTTL = 30, $factor = .2 ) { @@ -1439,7 +1439,7 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface { } /** - * @return integer Number of warmup key cache misses last round + * @return int Number of warmup key cache misses last round * @since 1.30 */ public function getWarmupKeyMisses() { @@ -1452,8 +1452,8 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface { * This must set the key to "PURGED::" * * @param string $key Cache key - * @param integer $ttl How long to keep the tombstone [seconds] - * @param integer $holdoff HOLDOFF_* constant controlling how long to ignore sets for this key + * @param int $ttl How long to keep the tombstone [seconds] + * @param int $holdoff HOLDOFF_* constant controlling how long to ignore sets for this key * @return bool Success */ protected function relayPurge( $key, $ttl, $holdoff ) { @@ -1540,8 +1540,8 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface { * and get hits too. Similar to worthRefreshExpiring(), randomization is used. * * @param float $asOf UNIX timestamp of the value - * @param integer $ageNew Age of key when this might recommend refreshing (seconds) - * @param integer $timeTillRefresh Age of key when it should be refreshed if popular (seconds) + * @param int $ageNew Age of key when this might recommend refreshing (seconds) + * @param int $timeTillRefresh Age of key when it should be refreshed if popular (seconds) * @param float $now The current UNIX timestamp * @return bool */ @@ -1590,7 +1590,7 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface { * Do not use this method outside WANObjectCache * * @param mixed $value - * @param integer $ttl [0=forever] + * @param int $ttl [0=forever] * @param float $now Unix Current timestamp just before calling set() * @return array */ diff --git a/includes/libs/objectcache/WANObjectCacheReaper.php b/includes/libs/objectcache/WANObjectCacheReaper.php index 1696c59414..14737b145a 100644 --- a/includes/libs/objectcache/WANObjectCacheReaper.php +++ b/includes/libs/objectcache/WANObjectCacheReaper.php @@ -48,7 +48,7 @@ class WANObjectCacheReaper implements LoggerAwareInterface { /** @var string */ protected $channel; - /** @var integer */ + /** @var int */ protected $initialStartWindow; /** diff --git a/includes/libs/rdbms/ChronologyProtector.php b/includes/libs/rdbms/ChronologyProtector.php index 8b1aabe3cd..8121654e33 100644 --- a/includes/libs/rdbms/ChronologyProtector.php +++ b/includes/libs/rdbms/ChronologyProtector.php @@ -61,9 +61,9 @@ class ChronologyProtector implements LoggerAwareInterface { /** @var float[] Map of (DB master name => 1) */ protected $shutdownTouchDBs = []; - /** @var integer Seconds to store positions */ + /** @var int Seconds to store positions */ const POSITION_TTL = 60; - /** @var integer Max time to wait for positions to appear */ + /** @var int Max time to wait for positions to appear */ const POS_WAIT_TIMEOUT = 5; /** @@ -315,7 +315,7 @@ class ChronologyProtector implements LoggerAwareInterface { * @return array */ private static function mergePositions( $curValue, array $shutdownPositions ) { - /** @var $curPositions DBMasterPos[] */ + /** @var DBMasterPos[] $curPositions */ if ( $curValue === false ) { $curPositions = $shutdownPositions; } else { diff --git a/includes/libs/rdbms/TransactionProfiler.php b/includes/libs/rdbms/TransactionProfiler.php index 8ac41611a3..af431a6787 100644 --- a/includes/libs/rdbms/TransactionProfiler.php +++ b/includes/libs/rdbms/TransactionProfiler.php @@ -99,7 +99,7 @@ class TransactionProfiler implements LoggerAwareInterface { * With conflicting expectations, the most narrow ones will be used * * @param string $event (writes,queries,conns,mConns) - * @param integer $value Maximum count of the event + * @param int $value Maximum count of the event * @param string $fname Caller * @since 1.25 */ @@ -199,7 +199,7 @@ class TransactionProfiler implements LoggerAwareInterface { * @param string $query Function name or generalized SQL * @param float $sTime Starting UNIX wall time * @param bool $isWrite Whether this is a write query - * @param integer $n Number of affected rows + * @param int $n Number of affected rows */ public function recordQueryCompletion( $query, $sTime, $isWrite = false, $n = 0 ) { $eTime = microtime( true ); @@ -266,7 +266,7 @@ class TransactionProfiler implements LoggerAwareInterface { * @param string $db DB name * @param string $id ID string of transaction * @param float $writeTime Time spent in write queries - * @param integer $affected Number of rows affected by writes + * @param int $affected Number of rows affected by writes */ public function transactionWritingOut( $server, $db, $id, $writeTime = 0.0, $affected = 0 ) { $name = "{$server} ({$db}) (TRX#$id)"; diff --git a/includes/libs/rdbms/database/Database.php b/includes/libs/rdbms/database/Database.php index cec13b50ee..64fbea37f6 100644 --- a/includes/libs/rdbms/database/Database.php +++ b/includes/libs/rdbms/database/Database.php @@ -108,7 +108,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware protected $mTablePrefix = ''; /** @var string */ protected $mSchema = ''; - /** @var integer */ + /** @var int */ protected $mFlags; /** @var array */ protected $mLBInfo = []; @@ -197,11 +197,11 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware */ private $mTrxWriteDuration = 0.0; /** - * @var integer Number of write queries for the current transaction + * @var int Number of write queries for the current transaction */ private $mTrxWriteQueryCount = 0; /** - * @var integer Number of rows affected by write queries for the current transaction + * @var int Number of rows affected by write queries for the current transaction */ private $mTrxWriteAffectedRows = 0; /** @@ -209,7 +209,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware */ private $mTrxWriteAdjDuration = 0.0; /** - * @var integer Number of write queries counted in mTrxWriteAdjDuration + * @var int Number of write queries counted in mTrxWriteAdjDuration */ private $mTrxWriteAdjQueryCount = 0; /** @@ -1054,7 +1054,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware * * @param string $sql A SQL write query * @param float $runtime Total runtime, including RTT - * @param integer $affected Affected row count + * @param int $affected Affected row count */ private function updateTrxWriteQueryTime( $sql, $runtime, $affected ) { // Whether this is indicative of replica DB runtime (except for RBR or ws_repl) @@ -2082,7 +2082,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware * Quotes an identifier using `backticks` or "double quotes" depending on the database type. * MySQL uses `backticks` while basically everything else uses double quotes. * Since MySQL is the odd one out here the double quotes are our generic - * and we implement backticks in DatabaseMysql. + * and we implement backticks in DatabaseMysqlBase. * * @param string $s * @return string @@ -2591,7 +2591,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware /** * Do not use this method outside of Database/DBError classes * - * @param integer|string $errno + * @param int|string $errno * @return bool Whether the given query error was a connection drop */ public function wasConnectionError( $errno ) { @@ -2711,7 +2711,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware * * This method should not be used outside of Database/LoadBalancer * - * @param integer $trigger IDatabase::TRIGGER_* constant + * @param int $trigger IDatabase::TRIGGER_* constant * @since 1.20 * @throws Exception */ @@ -2791,7 +2791,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware * * This method should not be used outside of Database/LoadBalancer * - * @param integer $trigger IDatabase::TRIGGER_* constant + * @param int $trigger IDatabase::TRIGGER_* constant * @throws Exception * @since 1.20 */ diff --git a/includes/libs/rdbms/database/DatabaseMysql.php b/includes/libs/rdbms/database/DatabaseMysql.php index 77e797d49c..d81d9096fd 100644 --- a/includes/libs/rdbms/database/DatabaseMysql.php +++ b/includes/libs/rdbms/database/DatabaseMysql.php @@ -25,6 +25,9 @@ namespace Wikimedia\Rdbms; /** * Database abstraction object for PHP extension mysql. * + * @deprecated 1.30 PHP extension 'mysql' was deprecated in PHP 5.5 and removed in PHP 7.0. + * @see PHP extension 'mysqli' and DatabaseMysqli + * * @ingroup Database * @see Database */ diff --git a/includes/libs/rdbms/database/DatabaseMysqlBase.php b/includes/libs/rdbms/database/DatabaseMysqlBase.php index 692ddb70b8..3c4cda5552 100644 --- a/includes/libs/rdbms/database/DatabaseMysqlBase.php +++ b/includes/libs/rdbms/database/DatabaseMysqlBase.php @@ -51,6 +51,8 @@ abstract class DatabaseMysqlBase extends Database { /** @var string|null */ protected $sslCertPath; /** @var string|null */ + protected $sslCAFile; + /** @var string|null */ protected $sslCAPath; /** @var string[]|null */ protected $sslCiphers; @@ -75,7 +77,8 @@ abstract class DatabaseMysqlBase extends Database { * - useGTIDs : use GTID methods like MASTER_GTID_WAIT() when possible. * - sslKeyPath : path to key file [default: null] * - sslCertPath : path to certificate file [default: null] - * - sslCAPath : parth to certificate authority PEM files [default: null] + * - sslCAFile: path to a single certificate authority PEM file [default: null] + * - sslCAPath : parth to certificate authority PEM directory [default: null] * - sslCiphers : array list of allowable ciphers [default: null] * @param array $params */ @@ -87,7 +90,7 @@ abstract class DatabaseMysqlBase extends Database { ? $params['lagDetectionOptions'] : []; $this->useGTIDs = !empty( $params['useGTIDs' ] ); - foreach ( [ 'KeyPath', 'CertPath', 'CAPath', 'Ciphers' ] as $name ) { + foreach ( [ 'KeyPath', 'CertPath', 'CAFile', 'CAPath', 'Ciphers' ] as $name ) { $var = "ssl{$name}"; if ( isset( $params[$var] ) ) { $this->$var = $params[$var]; diff --git a/includes/libs/rdbms/database/DatabaseMysqli.php b/includes/libs/rdbms/database/DatabaseMysqli.php index 4d1b87b1f9..4c3cbddf76 100644 --- a/includes/libs/rdbms/database/DatabaseMysqli.php +++ b/includes/libs/rdbms/database/DatabaseMysqli.php @@ -34,7 +34,7 @@ use IP; * @see Database */ class DatabaseMysqli extends DatabaseMysqlBase { - /** @var $mConn mysqli */ + /** @var mysqli $mConn */ /** * @param string $sql @@ -91,7 +91,7 @@ class DatabaseMysqli extends DatabaseMysqlBase { $mysqli->ssl_set( $this->sslKeyPath, $this->sslCertPath, - null, + $this->sslCAFile, $this->sslCAPath, $this->sslCiphers ); diff --git a/includes/libs/rdbms/database/DatabasePostgres.php b/includes/libs/rdbms/database/DatabasePostgres.php index bdac06c121..ac59bd6171 100644 --- a/includes/libs/rdbms/database/DatabasePostgres.php +++ b/includes/libs/rdbms/database/DatabasePostgres.php @@ -39,8 +39,6 @@ class DatabasePostgres extends Database { /** @var int The number of rows affected as an integer */ protected $mAffectedRows = null; - /** @var int */ - private $mInsertId = null; /** @var float|string */ private $numericVersion = null; /** @var string Connect string to open a PostgreSQL connection */ @@ -352,14 +350,10 @@ class DatabasePostgres extends Database { return pg_field_name( $res, $n ); } - /** - * Return the result of the last call to nextSequenceValue(); - * This must be called after nextSequenceValue(). - * - * @return int|null - */ public function insertId() { - return $this->mInsertId; + $res = $this->query( "SELECT lastval()" ); + $row = $this->fetchRow( $res ); + return is_null( $row[0] ) ? null : (int)$row[0]; } public function dataSeek( $res, $row ) { @@ -521,6 +515,10 @@ __INDEXATTR__; public function selectSQLText( $table, $vars, $conds = '', $fname = __METHOD__, $options = [], $join_conds = [] ) { + if ( is_string( $options ) ) { + $options = [ $options ]; + } + // Change the FOR UPDATE option as necessary based on the join conditions. Then pass // to the parent function to get the actual SQL text. // In Postgres when using FOR UPDATE, only the main table and tables that are inner joined @@ -532,12 +530,28 @@ __INDEXATTR__; $forUpdateKey = array_search( 'FOR UPDATE', $options, true ); if ( $forUpdateKey !== false && $join_conds ) { unset( $options[$forUpdateKey] ); + $options['FOR UPDATE'] = []; + + // All tables not in $join_conds are good + foreach ( $table as $alias => $name ) { + if ( is_numeric( $alias ) ) { + $alias = $name; + } + if ( !isset( $join_conds[$alias] ) ) { + $options['FOR UPDATE'][] = $alias; + } + } foreach ( $join_conds as $table_cond => $join_cond ) { if ( 0 === preg_match( '/^(?:LEFT|RIGHT|FULL)(?: OUTER)? JOIN$/i', $join_cond[0] ) ) { $options['FOR UPDATE'][] = $table_cond; } } + + // Quote alias names so $this->tableName() won't mangle them + $options['FOR UPDATE'] = array_map( function ( $name ) use ( $table ) { + return isset( $table[$name] ) ? $this->addIdentifierQuotes( $name ) : $name; + }, $options['FOR UPDATE'] ); } if ( isset( $options['ORDER BY'] ) && $options['ORDER BY'] == 'NULL' ) { @@ -756,12 +770,7 @@ __INDEXATTR__; } public function nextSequenceValue( $seqName ) { - $safeseq = str_replace( "'", "''", $seqName ); - $res = $this->query( "SELECT nextval('$safeseq')" ); - $row = $this->fetchRow( $res ); - $this->mInsertId = is_null( $row[0] ) ? null : (int)$row[0]; - - return $this->mInsertId; + return new NextSequenceValue; } /** @@ -1204,6 +1213,8 @@ SQL; $s = pg_escape_bytea( $conn, $s->fetch() ); } return "'$s'"; + } elseif ( $s instanceof NextSequenceValue ) { + return 'DEFAULT'; } return "'" . pg_escape_string( $conn, $s ) . "'"; diff --git a/includes/libs/rdbms/database/IDatabase.php b/includes/libs/rdbms/database/IDatabase.php index b82603e737..0283c4b48a 100644 --- a/includes/libs/rdbms/database/IDatabase.php +++ b/includes/libs/rdbms/database/IDatabase.php @@ -277,7 +277,7 @@ interface IDatabase { /** * Get the number of affected rows from pending write queries * - * @return integer + * @return int * @since 1.30 */ public function pendingWriteRowsAffected(); @@ -420,12 +420,9 @@ interface IDatabase { /** * Get the inserted value of an auto-increment row * - * The value inserted should be fetched from nextSequenceValue() - * - * Example: - * $id = $dbw->nextSequenceValue( 'page_page_id_seq' ); - * $dbw->insert( 'page', [ 'page_id' => $id ] ); - * $id = $dbw->insertId(); + * This should only be called after an insert that used an auto-incremented + * value. If no such insert was previously done in the current database + * session, the return value is undefined. * * @return int */ @@ -1114,15 +1111,20 @@ interface IDatabase { public function anyString(); /** - * Returns an appropriately quoted sequence value for inserting a new row. - * MySQL has autoincrement fields, so this is just NULL. But the PostgreSQL - * subclass will return an integer, and save the value for insertId() + * Deprecated method, calls should be removed. + * + * This was formerly used for PostgreSQL and Oracle to handle + * self::insertId() auto-incrementing fields. It is no longer necessary + * since DatabasePostgres::insertId() has been reimplemented using + * `lastval()` and Oracle has been reimplemented using triggers. + * + * Implementations should return null if inserting `NULL` into an + * auto-incrementing field works, otherwise it should return an instance of + * NextSequenceValue and filter it on calls to relevant methods. * - * Any implementation of this function should *not* involve reusing - * sequence numbers created for rolled-back transactions. - * See https://bugs.mysql.com/bug.php?id=30767 for details. + * @deprecated since 1.30, no longer needed * @param string $seqName - * @return null|int + * @return null|NextSequenceValue */ public function nextSequenceValue( $seqName ); diff --git a/includes/libs/rdbms/database/position/MySQLMasterPos.php b/includes/libs/rdbms/database/position/MySQLMasterPos.php index 06776fe8fd..0657cf3dc0 100644 --- a/includes/libs/rdbms/database/position/MySQLMasterPos.php +++ b/includes/libs/rdbms/database/position/MySQLMasterPos.php @@ -24,7 +24,7 @@ class MySQLMasterPos implements DBMasterPos { /** * @param string $file Binlog file name - * @param integer $pos Binlog position + * @param int $pos Binlog position * @param string $gtid Comma separated GTID set [optional] */ function __construct( $file, $pos, $gtid = '' ) { diff --git a/includes/libs/rdbms/database/resultwrapper/FakeResultWrapper.php b/includes/libs/rdbms/database/resultwrapper/FakeResultWrapper.php index 493cde8d9c..12e59b598f 100644 --- a/includes/libs/rdbms/database/resultwrapper/FakeResultWrapper.php +++ b/includes/libs/rdbms/database/resultwrapper/FakeResultWrapper.php @@ -9,7 +9,7 @@ use stdClass; * doesn't go anywhere near an actual database. */ class FakeResultWrapper extends ResultWrapper { - /** @var $result stdClass[] */ + /** @var stdClass[] $result */ /** * @param stdClass[] $rows diff --git a/includes/libs/rdbms/database/resultwrapper/MssqlResultWrapper.php b/includes/libs/rdbms/database/resultwrapper/MssqlResultWrapper.php index 4e28397455..298ec61934 100644 --- a/includes/libs/rdbms/database/resultwrapper/MssqlResultWrapper.php +++ b/includes/libs/rdbms/database/resultwrapper/MssqlResultWrapper.php @@ -5,7 +5,7 @@ namespace Wikimedia\Rdbms; use stdClass; class MssqlResultWrapper extends ResultWrapper { - /** @var integer|null */ + /** @var int|null */ private $mSeekTo = null; /** diff --git a/includes/libs/rdbms/database/utils/NextSequenceValue.php b/includes/libs/rdbms/database/utils/NextSequenceValue.php new file mode 100644 index 0000000000..44bf0ddcdd --- /dev/null +++ b/includes/libs/rdbms/database/utils/NextSequenceValue.php @@ -0,0 +1,12 @@ +db = $db; parent::__construct( $error ); } diff --git a/includes/libs/rdbms/exception/DBExpectedError.php b/includes/libs/rdbms/exception/DBExpectedError.php index 4f65efae02..31d8c27d9f 100644 --- a/includes/libs/rdbms/exception/DBExpectedError.php +++ b/includes/libs/rdbms/exception/DBExpectedError.php @@ -36,7 +36,7 @@ class DBExpectedError extends DBError implements MessageSpecifier, ILocalizedExc /** @var string[] Message parameters */ protected $params; - function __construct( IDatabase $db = null, $error, array $params = [] ) { + public function __construct( IDatabase $db = null, $error, array $params = [] ) { parent::__construct( $db, $error ); $this->params = $params; } diff --git a/includes/libs/rdbms/exception/DBQueryError.php b/includes/libs/rdbms/exception/DBQueryError.php index bc2a865bb1..a8ea3ade42 100644 --- a/includes/libs/rdbms/exception/DBQueryError.php +++ b/includes/libs/rdbms/exception/DBQueryError.php @@ -27,7 +27,7 @@ namespace Wikimedia\Rdbms; class DBQueryError extends DBExpectedError { /** @var string */ public $error; - /** @var integer */ + /** @var int */ public $errno; /** @var string */ public $sql; @@ -41,7 +41,7 @@ class DBQueryError extends DBExpectedError { * @param string $sql * @param string $fname */ - function __construct( IDatabase $db, $error, $errno, $sql, $fname ) { + public function __construct( IDatabase $db, $error, $errno, $sql, $fname ) { if ( $db instanceof Database && $db->wasConnectionError( $errno ) ) { $message = "A connection error occured. \n" . "Query: $sql\n" . diff --git a/includes/libs/rdbms/exception/DBTransactionSizeError.php b/includes/libs/rdbms/exception/DBTransactionSizeError.php index e45b9f3191..d2622e11a7 100644 --- a/includes/libs/rdbms/exception/DBTransactionSizeError.php +++ b/includes/libs/rdbms/exception/DBTransactionSizeError.php @@ -25,7 +25,7 @@ namespace Wikimedia\Rdbms; * @ingroup Database */ class DBTransactionSizeError extends DBTransactionError { - function getKey() { + public function getKey() { return 'transaction-duration-limit-exceeded'; } } diff --git a/includes/libs/rdbms/lbfactory/ILBFactory.php b/includes/libs/rdbms/lbfactory/ILBFactory.php index ff6635d5bf..f6d080e4f0 100644 --- a/includes/libs/rdbms/lbfactory/ILBFactory.php +++ b/includes/libs/rdbms/lbfactory/ILBFactory.php @@ -138,7 +138,7 @@ interface ILBFactory { /** * Prepare all tracked load balancers for shutdown - * @param integer $mode One of the class SHUTDOWN_* constants + * @param int $mode One of the class SHUTDOWN_* constants * @param callable|null $workCallback Work to mask ChronologyProtector writes */ public function shutdown( @@ -239,7 +239,7 @@ interface ILBFactory { * - cluster : wait on the given external load balancer DBs * - timeout : Max wait time. Default: ~60 seconds * - ifWritesSince: Only wait if writes were done since this UNIX timestamp - * @throws DBReplicationWaitError If a timeout or error occured waiting on a DB cluster + * @throws DBReplicationWaitError If a timeout or error occurred waiting on a DB cluster */ public function waitForReplication( array $opts = [] ); diff --git a/includes/libs/rdbms/loadbalancer/LoadBalancer.php b/includes/libs/rdbms/loadbalancer/LoadBalancer.php index 1665a5ef7d..8393e2bcfe 100644 --- a/includes/libs/rdbms/loadbalancer/LoadBalancer.php +++ b/includes/libs/rdbms/loadbalancer/LoadBalancer.php @@ -49,7 +49,7 @@ class LoadBalancer implements ILoadBalancer { private $mGroupLoads; /** @var bool Whether to disregard replica DB lag as a factor in replica DB selection */ private $mAllowLagged; - /** @var integer Seconds to spend waiting on replica DB lag to resolve */ + /** @var int Seconds to spend waiting on replica DB lag to resolve */ private $mWaitTimeout; /** @var array The LoadMonitor configuration */ private $loadMonitorConfig; @@ -79,7 +79,7 @@ class LoadBalancer implements ILoadBalancer { /** @var Database DB connection object that caused a problem */ private $errorConnection; - /** @var integer The generic (not query grouped) replica DB index (of $mServers) */ + /** @var int The generic (not query grouped) replica DB index (of $mServers) */ private $mReadIndex; /** @var bool|DBMasterPos False if not set */ private $mWaitForPos; @@ -91,7 +91,7 @@ class LoadBalancer implements ILoadBalancer { private $mLastError = 'Unknown error'; /** @var string|bool Reason the LB is read-only or false if not */ private $readOnlyReason = false; - /** @var integer Total connections opened */ + /** @var int Total connections opened */ private $connsOpened = 0; /** @var string|bool String if a requested DBO_TRX transaction round is active */ private $trxRoundId = false; @@ -111,17 +111,17 @@ class LoadBalancer implements ILoadBalancer { /** @var callable Exception logger */ private $errorLogger; - /** @var boolean */ + /** @var bool */ private $disabled = false; - /** @var boolean */ + /** @var bool */ private $chronProtInitialized = false; - /** @var integer Warn when this many connection are held */ + /** @var int Warn when this many connection are held */ const CONN_HELD_WARN_THRESHOLD = 10; - /** @var integer Default 'max lag' when unspecified */ + /** @var int Default 'max lag' when unspecified */ const MAX_LAG_DEFAULT = 10; - /** @var integer Seconds to cache master server read-only status */ + /** @var int Seconds to cache master server read-only status */ const TTL_CACHE_READONLY = 5; const KEY_LOCAL = 'local'; @@ -384,9 +384,9 @@ class LoadBalancer implements ILoadBalancer { throw new InvalidArgumentException( "Empty server array given to LoadBalancer" ); } - /** @var $i int|bool Index of selected server */ + /** @var int|bool $i Index of selected server */ $i = false; - /** @var $laggedReplicaMode bool Whether server is considered lagged */ + /** @var bool $laggedReplicaMode Whether server is considered lagged */ $laggedReplicaMode = false; // Quickly look through the available servers for a server that meets criteria... @@ -538,7 +538,7 @@ class LoadBalancer implements ILoadBalancer { public function getAnyOpenConnection( $i ) { foreach ( $this->mConns as $connsByServer ) { if ( !empty( $connsByServer[$i] ) ) { - /** @var $serverConns IDatabase[] */ + /** @var IDatabase[] $serverConns */ $serverConns = $connsByServer[$i]; return reset( $serverConns ); @@ -845,7 +845,7 @@ class LoadBalancer implements ILoadBalancer { * * @param int $i Server index * @param string $domain Domain ID to open - * @param integer $flags Class CONN_* constant bitfield + * @param int $flags Class CONN_* constant bitfield * @return Database */ private function openForeignConnection( $i, $domain, $flags = 0 ) { diff --git a/includes/libs/rdbms/loadmonitor/ILoadMonitor.php b/includes/libs/rdbms/loadmonitor/ILoadMonitor.php index fba5e135da..a0877a4677 100644 --- a/includes/libs/rdbms/loadmonitor/ILoadMonitor.php +++ b/includes/libs/rdbms/loadmonitor/ILoadMonitor.php @@ -58,7 +58,7 @@ interface ILoadMonitor extends LoggerAwareInterface { * * Values may be "false" if replication is too broken to estimate * - * @param integer[] $serverIndexes + * @param int[] $serverIndexes * @param string $domain * @return array Map of (server index => float|int|bool) */ diff --git a/includes/libs/rdbms/loadmonitor/LoadMonitor.php b/includes/libs/rdbms/loadmonitor/LoadMonitor.php index d4e73c9547..fdc5ac8146 100644 --- a/includes/libs/rdbms/loadmonitor/LoadMonitor.php +++ b/includes/libs/rdbms/loadmonitor/LoadMonitor.php @@ -146,7 +146,7 @@ class LoadMonitor implements ILoadMonitor { if ( $conn ) { $close = false; // already open } else { - $conn = $this->parent->openConnection( $i, $domain ); + $conn = $this->parent->openConnection( $i, '' ); $close = true; // new connection } @@ -205,7 +205,7 @@ class LoadMonitor implements ILoadMonitor { } /** - * @param integer $index Server index + * @param int $index Server index * @param IDatabase|null $conn Connection handle or null on connection failure * @return float */ diff --git a/includes/libs/stats/BufferingStatsdDataFactory.php b/includes/libs/stats/BufferingStatsdDataFactory.php index 73c6a8f55c..d75d9c0b1e 100644 --- a/includes/libs/stats/BufferingStatsdDataFactory.php +++ b/includes/libs/stats/BufferingStatsdDataFactory.php @@ -101,7 +101,7 @@ class BufferingStatsdDataFactory extends StatsdDataFactory implements IBuffering /** * Check whether this data factory has any data. - * @return boolean + * @return bool */ public function hasData() { return !empty( $this->buffer ); diff --git a/includes/libs/stats/IBufferingStatsdDataFactory.php b/includes/libs/stats/IBufferingStatsdDataFactory.php index 64ee2676f6..f77b26cefb 100644 --- a/includes/libs/stats/IBufferingStatsdDataFactory.php +++ b/includes/libs/stats/IBufferingStatsdDataFactory.php @@ -10,7 +10,7 @@ use Liuggio\StatsdClient\Factory\StatsdDataFactoryInterface; interface IBufferingStatsdDataFactory extends StatsdDataFactoryInterface { /** * Check whether this data factory has any data. - * @return boolean + * @return bool */ public function hasData(); diff --git a/includes/libs/stats/NullStatsdDataFactory.php b/includes/libs/stats/NullStatsdDataFactory.php index 75d6b9e7eb..73697514e5 100644 --- a/includes/libs/stats/NullStatsdDataFactory.php +++ b/includes/libs/stats/NullStatsdDataFactory.php @@ -76,7 +76,7 @@ class NullStatsdDataFactory implements IBufferingStatsdDataFactory { * This function creates a 'updateCount' StatsdData object. * * @param string|array $key The metric(s) to decrement. - * @param integer $delta The delta to add to the each metric + * @param int $delta The delta to add to the each metric * * @return mixed */ @@ -108,7 +108,7 @@ class NullStatsdDataFactory implements IBufferingStatsdDataFactory { /** * Check whether this data factory has any data. - * @return boolean + * @return bool */ public function hasData() { return false; diff --git a/includes/libs/stats/SamplingStatsdClient.php b/includes/libs/stats/SamplingStatsdClient.php index 4db2b6072c..6494c26302 100644 --- a/includes/libs/stats/SamplingStatsdClient.php +++ b/includes/libs/stats/SamplingStatsdClient.php @@ -56,7 +56,7 @@ class SamplingStatsdClient extends StatsdClient { } if ( $samplingRates ) { array_walk( $data, function ( $item ) use ( $samplingRates ) { - /** @var $item StatsdData */ + /** @var StatsdData $item */ foreach ( $samplingRates as $pattern => $rate ) { if ( fnmatch( $pattern, $item->getKey(), FNM_NOESCAPE ) ) { $item->setSampleRate( $item->getSampleRate() * $rate ); @@ -77,7 +77,7 @@ class SamplingStatsdClient extends StatsdClient { * strings are not allowed here as sampleData requires a StatsdDataInterface * @param int $sampleRate * - * @return integer the data sent in bytes + * @return int the data sent in bytes */ public function send( $data, $sampleRate = 1 ) { if ( !is_array( $data ) ) { diff --git a/includes/libs/virtualrest/RestbaseVirtualRESTService.php b/includes/libs/virtualrest/RestbaseVirtualRESTService.php index 35c45deb50..90865ffcf1 100644 --- a/includes/libs/virtualrest/RestbaseVirtualRESTService.php +++ b/includes/libs/virtualrest/RestbaseVirtualRESTService.php @@ -61,11 +61,9 @@ class RestbaseVirtualRESTService extends VirtualRESTService { 'fixedUrl' => false, ], $params ); // Ensure that the url parameter has a trailing slash. - $mparams['url'] = preg_replace( - '#/?$#', - '/', - $mparams['url'] - ); + if ( substr( $mparams['url'], -1 ) !== '/' ) { + $mparams['url'] .= '/'; + } // Ensure the correct domain format: strip protocol, port, // and trailing slash if present. This lets us use // $wgCanonicalServer as a default value, which is very convenient. diff --git a/includes/logging/LogEntry.php b/includes/logging/LogEntry.php index fa94fe5b23..8b51932be7 100644 --- a/includes/logging/LogEntry.php +++ b/includes/logging/LogEntry.php @@ -170,19 +170,21 @@ class DatabaseLogEntry extends LogEntryBase { * @return array */ public static function getSelectQueryData() { - $tables = [ 'logging', 'user' ]; + $commentQuery = CommentStore::newKey( 'log_comment' )->getJoin(); + + $tables = [ 'logging', 'user' ] + $commentQuery['tables']; $fields = [ 'log_id', 'log_type', 'log_action', 'log_timestamp', 'log_user', 'log_user_text', 'log_namespace', 'log_title', // unused log_page - 'log_comment', 'log_params', 'log_deleted', + 'log_params', 'log_deleted', 'user_id', 'user_name', 'user_editcount', - ]; + ] + $commentQuery['fields']; $joins = [ // IPs don't have an entry in user table 'user' => [ 'LEFT JOIN', 'log_user=user_id' ], - ]; + ] + $commentQuery['joins']; return [ 'tables' => $tables, @@ -322,7 +324,7 @@ class DatabaseLogEntry extends LogEntryBase { } public function getComment() { - return $this->row->log_comment; + return CommentStore::newKey( 'log_comment' )->getComment( $this->row )->text; } public function getDeleted() { @@ -380,7 +382,9 @@ class RCDatabaseLogEntry extends DatabaseLogEntry { } public function getComment() { - return $this->row->rc_comment; + return CommentStore::newKey( 'rc_comment' ) + // Legacy because the row probably used RecentChange::selectFields() + ->getCommentLegacy( wfGetDB( DB_REPLICA ), $this->row )->text; } public function getDeleted() { @@ -589,10 +593,7 @@ class ManualLogEntry extends LogEntryBase { * @throws MWException */ public function insert( IDatabase $dbw = null ) { - global $wgContLang; - $dbw = $dbw ?: wfGetDB( DB_MASTER ); - $id = $dbw->nextSequenceValue( 'logging_log_id_seq' ); if ( $this->timestamp === null ) { $this->timestamp = wfTimestampNow(); @@ -601,9 +602,6 @@ class ManualLogEntry extends LogEntryBase { // Trim spaces on user supplied text $comment = trim( $this->getComment() ); - // Truncate for whole multibyte characters. - $comment = $wgContLang->truncate( $comment, 255 ); - $params = $this->getParameters(); $relations = $this->relations; @@ -615,7 +613,6 @@ class ManualLogEntry extends LogEntryBase { } $data = [ - 'log_id' => $id, 'log_type' => $this->getType(), 'log_action' => $this->getSubtype(), 'log_timestamp' => $dbw->timestamp( $this->getTimestamp() ), @@ -624,12 +621,12 @@ class ManualLogEntry extends LogEntryBase { 'log_namespace' => $this->getTarget()->getNamespace(), 'log_title' => $this->getTarget()->getDBkey(), 'log_page' => $this->getTarget()->getArticleID(), - 'log_comment' => $comment, 'log_params' => LogEntryBase::makeParamBlob( $params ), ]; if ( isset( $this->deleted ) ) { $data['log_deleted'] = $this->deleted; } + $data += CommentStore::newKey( 'log_comment' )->insert( $dbw, $comment ); $dbw->insert( 'logging', $data, __METHOD__ ); $this->id = $dbw->insertId(); diff --git a/includes/logging/LogPage.php b/includes/logging/LogPage.php index a085e3e114..e421209278 100644 --- a/includes/logging/LogPage.php +++ b/includes/logging/LogPage.php @@ -90,12 +90,10 @@ class LogPage { global $wgLogRestrictions; $dbw = wfGetDB( DB_MASTER ); - $log_id = $dbw->nextSequenceValue( 'logging_log_id_seq' ); // @todo FIXME private/protected/public property? $this->timestamp = $now = wfTimestampNow(); $data = [ - 'log_id' => $log_id, 'log_type' => $this->type, 'log_action' => $this->action, 'log_timestamp' => $dbw->timestamp( $now ), @@ -104,9 +102,9 @@ class LogPage { 'log_namespace' => $this->target->getNamespace(), 'log_title' => $this->target->getDBkey(), 'log_page' => $this->target->getArticleID(), - 'log_comment' => $this->comment, 'log_params' => $this->params ]; + $data += CommentStore::newKey( 'log_comment' )->insert( $dbw, $this->comment ); $dbw->insert( 'logging', $data, __METHOD__ ); $newId = $dbw->insertId(); @@ -329,8 +327,6 @@ class LogPage { * @return int The log_id of the inserted log entry */ public function addEntry( $action, $target, $comment, $params = [], $doer = null ) { - global $wgContLang; - if ( !is_array( $params ) ) { $params = [ $params ]; } @@ -342,9 +338,6 @@ class LogPage { # Trim spaces on user supplied text $comment = trim( $comment ); - # Truncate for whole multibyte characters. - $comment = $wgContLang->truncate( $comment, 255 ); - $this->action = $action; $this->target = $target; $this->comment = $comment; diff --git a/includes/media/TransformationalImageHandler.php b/includes/media/TransformationalImageHandler.php index 32208cca70..de438da2cf 100644 --- a/includes/media/TransformationalImageHandler.php +++ b/includes/media/TransformationalImageHandler.php @@ -221,7 +221,7 @@ abstract class TransformationalImageHandler extends ImageHandler { } # Try a hook. Called "Bitmap" for historical reasons. - /** @var $mto MediaTransformOutput */ + /** @var MediaTransformOutput $mto */ $mto = null; Hooks::run( 'BitmapHandlerTransform', [ $this, $image, &$scalerParams, &$mto ] ); if ( !is_null( $mto ) ) { diff --git a/includes/page/Article.php b/includes/page/Article.php index 7311f71dec..f52cd8d6e9 100644 --- a/includes/page/Article.php +++ b/includes/page/Article.php @@ -1920,7 +1920,7 @@ class Article implements Page { /** * Check if the page can be cached - * @param integer $mode One of the HTMLFileCache::MODE_* constants (since 1.28) + * @param int $mode One of the HTMLFileCache::MODE_* constants (since 1.28) * @return bool */ public function isFileCacheable( $mode = HTMLFileCache::MODE_NORMAL ) { diff --git a/includes/page/PageArchive.php b/includes/page/PageArchive.php index 11e1a30db8..c98d4f739d 100644 --- a/includes/page/PageArchive.php +++ b/includes/page/PageArchive.php @@ -171,20 +171,21 @@ class PageArchive { /** * List the revisions of the given page. Returns result wrapper with - * (ar_minor_edit, ar_timestamp, ar_user, ar_user_text, ar_comment) fields. + * various archive table fields. * * @return ResultWrapper */ public function listRevisions() { $dbr = wfGetDB( DB_REPLICA ); + $commentQuery = CommentStore::newKey( 'ar_comment' )->getJoin(); - $tables = [ 'archive' ]; + $tables = [ 'archive' ] + $commentQuery['tables']; $fields = [ 'ar_minor_edit', 'ar_timestamp', 'ar_user', 'ar_user_text', - 'ar_comment', 'ar_len', 'ar_deleted', 'ar_rev_id', 'ar_sha1', + 'ar_len', 'ar_deleted', 'ar_rev_id', 'ar_sha1', 'ar_page_id' - ]; + ] + $commentQuery['fields']; if ( $this->config->get( 'ContentHandlerUseDB' ) ) { $fields[] = 'ar_content_format'; @@ -196,7 +197,7 @@ class PageArchive { $options = [ 'ORDER BY' => 'ar_timestamp DESC' ]; - $join_conds = []; + $join_conds = [] + $commentQuery['joins']; ChangeTags::modifyDisplayQuery( $tables, @@ -248,11 +249,13 @@ class PageArchive { */ public function getRevision( $timestamp ) { $dbr = wfGetDB( DB_REPLICA ); + $commentQuery = CommentStore::newKey( 'ar_comment' )->getJoin(); + + $tables = [ 'archive' ] + $commentQuery['tables']; $fields = [ 'ar_rev_id', 'ar_text', - 'ar_comment', 'ar_user', 'ar_user_text', 'ar_timestamp', @@ -262,19 +265,27 @@ class PageArchive { 'ar_deleted', 'ar_len', 'ar_sha1', - ]; + ] + $commentQuery['fields']; if ( $this->config->get( 'ContentHandlerUseDB' ) ) { $fields[] = 'ar_content_format'; $fields[] = 'ar_content_model'; } - $row = $dbr->selectRow( 'archive', + $join_conds = [] + $commentQuery['joins']; + + $row = $dbr->selectRow( + $tables, $fields, - [ 'ar_namespace' => $this->title->getNamespace(), + [ + 'ar_namespace' => $this->title->getNamespace(), 'ar_title' => $this->title->getDBkey(), - 'ar_timestamp' => $dbr->timestamp( $timestamp ) ], - __METHOD__ ); + 'ar_timestamp' => $dbr->timestamp( $timestamp ) + ], + __METHOD__, + [], + $join_conds + ); if ( $row ) { return Revision::newFromArchiveRow( $row, [ 'title' => $this->title ] ); @@ -552,12 +563,15 @@ class PageArchive { $oldWhere['ar_timestamp'] = array_map( [ &$dbw, 'timestamp' ], $timestamps ); } + $commentQuery = CommentStore::newKey( 'ar_comment' )->getJoin(); + + $tables = [ 'archive', 'revision' ] + $commentQuery['tables']; + $fields = [ 'ar_id', 'ar_rev_id', 'rev_id', 'ar_text', - 'ar_comment', 'ar_user', 'ar_user_text', 'ar_timestamp', @@ -568,24 +582,28 @@ class PageArchive { 'ar_page_id', 'ar_len', 'ar_sha1' - ]; + ] + $commentQuery['fields']; if ( $this->config->get( 'ContentHandlerUseDB' ) ) { $fields[] = 'ar_content_format'; $fields[] = 'ar_content_model'; } + $join_conds = [ + 'revision' => [ 'LEFT JOIN', 'ar_rev_id=rev_id' ], + ] + $commentQuery['joins']; + /** * Select each archived revision... */ $result = $dbw->select( - [ 'archive', 'revision' ], + $tables, $fields, $oldWhere, __METHOD__, /* options */ [ 'ORDER BY' => 'ar_timestamp' ], - [ 'revision' => [ 'LEFT JOIN', 'ar_rev_id=rev_id' ] ] + $join_conds ); $rev_count = $result->numRows(); @@ -717,6 +735,17 @@ class PageArchive { ] ); $revision->insertOn( $dbw ); + + // Also restore reference to the revision in ip_changes if it was an IP edit. + if ( (int)$row->ar_rev_id === 0 && IP::isValid( $row->ar_user_text ) ) { + $ipcRow = [ + 'ipc_rev_id' => $row->ar_rev_id, + 'ipc_rev_timestamp' => $row->ar_timestamp, + 'ipc_hex' => IP::toHex( $row->ar_user_text ), + ]; + $dbw->insert( 'ip_changes', $ipcRow, __METHOD__ ); + } + $restored++; Hooks::run( 'ArticleRevisionUndeleted', diff --git a/includes/page/WikiPage.php b/includes/page/WikiPage.php index e60f103f60..bf8a59710d 100644 --- a/includes/page/WikiPage.php +++ b/includes/page/WikiPage.php @@ -878,11 +878,10 @@ class WikiPage implements Page, IDBAccessObject { } // Update the DB post-send if the page has not cached since now - $that = $this; $latest = $this->getLatest(); DeferredUpdates::addCallableUpdate( - function () use ( $that, $retval, $latest ) { - $that->insertRedirectEntry( $retval, $latest ); + function () use ( $retval, $latest ) { + $this->insertRedirectEntry( $retval, $latest ); }, DeferredUpdates::POSTSEND, wfGetDB( DB_MASTER ) @@ -1166,11 +1165,10 @@ class WikiPage implements Page, IDBAccessObject { * page ID is already in use. */ public function insertOn( $dbw, $pageId = null ) { - $pageIdForInsert = $pageId ?: $dbw->nextSequenceValue( 'page_page_id_seq' ); + $pageIdForInsert = $pageId ? [ 'page_id' => $pageId ] : []; $dbw->insert( 'page', [ - 'page_id' => $pageIdForInsert, 'page_namespace' => $this->mTitle->getNamespace(), 'page_title' => $this->mTitle->getDBkey(), 'page_restrictions' => '', @@ -1180,7 +1178,7 @@ class WikiPage implements Page, IDBAccessObject { 'page_touched' => $dbw->timestamp(), 'page_latest' => 0, // Fill this in shortly... 'page_len' => 0, // Fill this in shortly... - ], + ] + $pageIdForInsert, __METHOD__, 'IGNORE' ); @@ -1638,7 +1636,7 @@ class WikiPage implements Page, IDBAccessObject { /** * @param Content $content Pre-save transform content - * @param integer $flags + * @param int $flags * @param User $user * @param string $summary * @param array $meta @@ -1659,7 +1657,7 @@ class WikiPage implements Page, IDBAccessObject { // Convenience variables $now = wfTimestampNow(); $oldid = $meta['oldId']; - /** @var $oldContent Content|null */ + /** @var Content|null $oldContent */ $oldContent = $meta['oldContent']; $newsize = $content->getSize(); @@ -1812,7 +1810,7 @@ class WikiPage implements Page, IDBAccessObject { /** * @param Content $content Pre-save transform content - * @param integer $flags + * @param int $flags * @param User $user * @param string $summary * @param array $meta @@ -2111,13 +2109,13 @@ class WikiPage implements Page, IDBAccessObject { * @param Revision $revision * @param User $user User object that did the revision * @param array $options Array of options, following indexes are used: - * - changed: boolean, whether the revision changed the content (default true) - * - created: boolean, whether the revision created the page (default false) - * - moved: boolean, whether the page was moved (default false) - * - restored: boolean, whether the page was undeleted (default false) + * - changed: bool, whether the revision changed the content (default true) + * - created: bool, whether the revision created the page (default false) + * - moved: bool, whether the page was moved (default false) + * - restored: bool, whether the page was undeleted (default false) * - oldrevision: Revision object for the pre-update revision (default null) - * - oldcountable: boolean, null, or string 'no-change' (default null): - * - boolean: whether the page was counted as an article before that + * - oldcountable: bool, null, or string 'no-change' (default null): + * - bool: whether the page was counted as an article before that * revision, only used in changed is true and created is false * - null: if created is false, don't update the article count; if created * is true, do update the article count @@ -2299,10 +2297,10 @@ class WikiPage implements Page, IDBAccessObject { public function doUpdateRestrictions( array $limit, array $expiry, &$cascade, $reason, User $user, $tags = null ) { - global $wgCascadingRestrictionLevels, $wgContLang; + global $wgCascadingRestrictionLevels; if ( wfReadOnly() ) { - return Status::newFatal( 'readonlytext', wfReadOnlyReason() ); + return Status::newFatal( wfMessage( 'readonlytext', wfReadOnlyReason() ) ); } $this->loadPageData( 'fromdbmaster' ); @@ -2372,9 +2370,6 @@ class WikiPage implements Page, IDBAccessObject { $logAction = 'protect'; } - // Truncate for whole multibyte characters - $reason = $wgContLang->truncate( $reason, 255 ); - $logRelationsValues = []; $logRelationsField = null; $logParamsDetails = []; @@ -2446,7 +2441,6 @@ class WikiPage implements Page, IDBAccessObject { $dbw->insert( 'page_restrictions', [ - 'pr_id' => $dbw->nextSequenceValue( 'page_restrictions_pr_id_seq' ), 'pr_page' => $id, 'pr_type' => $action, 'pr_level' => $restrictions, @@ -2484,6 +2478,7 @@ class WikiPage implements Page, IDBAccessObject { $cascade = false; if ( $limit['create'] != '' ) { + $commentFields = CommentStore::newKey( 'pt_reason' )->insert( $dbw, $reason ); $dbw->replace( 'protected_titles', [ [ 'pt_namespace', 'pt_title' ] ], [ @@ -2493,8 +2488,7 @@ class WikiPage implements Page, IDBAccessObject { 'pt_timestamp' => $dbw->timestamp(), 'pt_expiry' => $dbw->encodeExpiry( $expiry['create'] ), 'pt_user' => $user->getId(), - 'pt_reason' => $reason, - ], __METHOD__ + ] + $commentFields, __METHOD__ ); $logParamsDetails[] = [ 'type' => 'create', @@ -2746,7 +2740,7 @@ class WikiPage implements Page, IDBAccessObject { $reason, $suppress = false, $u1 = null, $u2 = null, &$error = '', User $user = null, $tags = [], $logsubtype = 'delete' ) { - global $wgUser, $wgContentHandlerUseDB; + global $wgUser, $wgContentHandlerUseDB, $wgCommentTableSchemaMigrationStage; wfDebug( __METHOD__ . "\n" ); @@ -2810,6 +2804,9 @@ class WikiPage implements Page, IDBAccessObject { $content = null; } + $revCommentStore = new CommentStore( 'rev_comment' ); + $arCommentStore = new CommentStore( 'ar_comment' ); + $fields = Revision::selectFields(); $bitfield = false; @@ -2827,20 +2824,28 @@ class WikiPage implements Page, IDBAccessObject { // the rev_deleted field, which is reserved for this purpose. // Get all of the page revisions + $commentQuery = $revCommentStore->getJoin(); $res = $dbw->select( - 'revision', - $fields, + [ 'revision' ] + $commentQuery['tables'], + $fields + $commentQuery['fields'], [ 'rev_page' => $id ], __METHOD__, - 'FOR UPDATE' + 'FOR UPDATE', + $commentQuery['joins'] ); + // Build their equivalent archive rows $rowsInsert = []; + $revids = []; + + /** @var int[] Revision IDs of edits that were made by IPs */ + $ipRevIds = []; + foreach ( $res as $row ) { + $comment = $revCommentStore->getComment( $row ); $rowInsert = [ 'ar_namespace' => $namespace, 'ar_title' => $dbKey, - 'ar_comment' => $row->rev_comment, 'ar_user' => $row->rev_user, 'ar_user_text' => $row->rev_user_text, 'ar_timestamp' => $row->rev_timestamp, @@ -2854,12 +2859,19 @@ class WikiPage implements Page, IDBAccessObject { 'ar_page_id' => $id, 'ar_deleted' => $suppress ? $bitfield : $row->rev_deleted, 'ar_sha1' => $row->rev_sha1, - ]; + ] + $arCommentStore->insert( $dbw, $comment ); if ( $wgContentHandlerUseDB ) { $rowInsert['ar_content_model'] = $row->rev_content_model; $rowInsert['ar_content_format'] = $row->rev_content_format; } $rowsInsert[] = $rowInsert; + $revids[] = $row->rev_id; + + // Keep track of IP edits, so that the corresponding rows can + // be deleted in the ip_changes table. + if ( (int)$row->rev_user === 0 && IP::isValid( $row->rev_user_text ) ) { + $ipRevIds[] = $row->rev_id; + } } // Copy them into the archive table $dbw->insert( 'archive', $rowsInsert, __METHOD__ ); @@ -2874,6 +2886,14 @@ class WikiPage implements Page, IDBAccessObject { // Now that it's safely backed up, delete it $dbw->delete( 'page', [ 'page_id' => $id ], __METHOD__ ); $dbw->delete( 'revision', [ 'rev_page' => $id ], __METHOD__ ); + if ( $wgCommentTableSchemaMigrationStage > MIGRATION_OLD ) { + $dbw->delete( 'revision_comment_temp', [ 'revcomment_rev' => $revids ], __METHOD__ ); + } + + // Also delete records from ip_changes as applicable. + if ( count( $ipRevIds ) > 0 ) { + $dbw->delete( 'ip_changes', [ 'ipc_rev_id' => $ipRevIds ], __METHOD__ ); + } // Log the deletion, if the page was suppressed, put it in the suppression log instead $logtype = $suppress ? 'suppress' : 'delete'; @@ -2919,7 +2939,7 @@ class WikiPage implements Page, IDBAccessObject { /** * Lock the page row for this title+id and return page_latest (or 0) * - * @return integer Returns 0 if no row was found with this title+id + * @return int Returns 0 if no row was found with this title+id * @since 1.27 */ public function lockAndGetLatest() { @@ -3138,9 +3158,6 @@ class WikiPage implements Page, IDBAccessObject { // Trim spaces on user supplied text $summary = trim( $summary ); - // Truncate for whole multibyte characters. - $summary = $wgContLang->truncate( $summary, 255 ); - // Save $flags = EDIT_UPDATE | EDIT_INTERNAL; @@ -3414,7 +3431,7 @@ class WikiPage implements Page, IDBAccessObject { * * @param array $added The names of categories that were added * @param array $deleted The names of categories that were deleted - * @param integer $id Page ID (this should be the original deleted page ID) + * @param int $id Page ID (this should be the original deleted page ID) */ public function updateCategoryCounts( array $added, array $deleted, $id = 0 ) { $id = $id ?: $this->getId(); diff --git a/includes/parser/CoreParserFunctions.php b/includes/parser/CoreParserFunctions.php index f0f1f5fa97..3d262628be 100644 --- a/includes/parser/CoreParserFunctions.php +++ b/includes/parser/CoreParserFunctions.php @@ -582,14 +582,14 @@ class CoreParserFunctions { } public static function talkspace( $parser, $title = null ) { $t = Title::newFromText( $title ); - if ( is_null( $t ) || !$t->canTalk() ) { + if ( is_null( $t ) || !$t->canHaveTalkPage() ) { return ''; } return str_replace( '_', ' ', $t->getTalkNsText() ); } public static function talkspacee( $parser, $title = null ) { $t = Title::newFromText( $title ); - if ( is_null( $t ) || !$t->canTalk() ) { + if ( is_null( $t ) || !$t->canHaveTalkPage() ) { return ''; } return wfUrlencode( $t->getTalkNsText() ); @@ -632,14 +632,14 @@ class CoreParserFunctions { } public static function fullpagename( $parser, $title = null ) { $t = Title::newFromText( $title ); - if ( is_null( $t ) || !$t->canTalk() ) { + if ( is_null( $t ) || !$t->canHaveTalkPage() ) { return ''; } return wfEscapeWikiText( $t->getPrefixedText() ); } public static function fullpagenamee( $parser, $title = null ) { $t = Title::newFromText( $title ); - if ( is_null( $t ) || !$t->canTalk() ) { + if ( is_null( $t ) || !$t->canHaveTalkPage() ) { return ''; } return wfEscapeWikiText( $t->getPrefixedURL() ); @@ -688,14 +688,14 @@ class CoreParserFunctions { } public static function talkpagename( $parser, $title = null ) { $t = Title::newFromText( $title ); - if ( is_null( $t ) || !$t->canTalk() ) { + if ( is_null( $t ) || !$t->canHaveTalkPage() ) { return ''; } return wfEscapeWikiText( $t->getTalkPage()->getPrefixedText() ); } public static function talkpagenamee( $parser, $title = null ) { $t = Title::newFromText( $title ); - if ( is_null( $t ) || !$t->canTalk() ) { + if ( is_null( $t ) || !$t->canHaveTalkPage() ) { return ''; } return wfEscapeWikiText( $t->getTalkPage()->getPrefixedURL() ); diff --git a/includes/parser/Parser.php b/includes/parser/Parser.php index 326100280d..988e2488d8 100644 --- a/includes/parser/Parser.php +++ b/includes/parser/Parser.php @@ -736,17 +736,6 @@ class Parser { return $text; } - /** - * Get a random string - * - * @return string - * @deprecated since 1.26; use wfRandomString() instead. - */ - public static function getRandomString() { - wfDeprecated( __METHOD__, '1.26' ); - return wfRandomString( 16 ); - } - /** * Set the current user. * Should only be used when doing pre-save transform. @@ -757,17 +746,6 @@ class Parser { $this->mUser = $user; } - /** - * Accessor for mUniqPrefix. - * - * @return string - * @deprecated since 1.26; use Parser::MARKER_PREFIX instead. - */ - public function uniqPrefix() { - wfDeprecated( __METHOD__, '1.26' ); - return self::MARKER_PREFIX; - } - /** * Set the context title * @@ -973,14 +951,9 @@ class Parser { * @param array $elements List of element names. Comments are always extracted. * @param string $text Source text string. * @param array &$matches Out parameter, Array: extracted tags - * @param string|null $uniq_prefix * @return string Stripped text - * @since 1.26 The uniq_prefix argument is deprecated. */ - public static function extractTagsAndParams( $elements, $text, &$matches, $uniq_prefix = null ) { - if ( $uniq_prefix !== null ) { - wfDeprecated( __METHOD__ . ' called with $prefix argument', '1.26' ); - } + public static function extractTagsAndParams( $elements, $text, &$matches ) { static $n = 1; $stripped = ''; $matches = []; @@ -2611,7 +2584,7 @@ class Parser { ) ) ); break; case 'talkpagename': - if ( $this->mTitle->canTalk() ) { + if ( $this->mTitle->canHaveTalkPage() ) { $talkPage = $this->mTitle->getTalkPage(); $value = wfEscapeWikiText( $talkPage->getPrefixedText() ); } else { @@ -2619,7 +2592,7 @@ class Parser { } break; case 'talkpagenamee': - if ( $this->mTitle->canTalk() ) { + if ( $this->mTitle->canHaveTalkPage() ) { $talkPage = $this->mTitle->getTalkPage(); $value = wfEscapeWikiText( $talkPage->getPrefixedURL() ); } else { @@ -2719,12 +2692,12 @@ class Parser { $value = $this->mTitle->getNamespace(); break; case 'talkspace': - $value = $this->mTitle->canTalk() + $value = $this->mTitle->canHaveTalkPage() ? str_replace( '_', ' ', $this->mTitle->getTalkNsText() ) : ''; break; case 'talkspacee': - $value = $this->mTitle->canTalk() ? wfUrlencode( $this->mTitle->getTalkNsText() ) : ''; + $value = $this->mTitle->canHaveTalkPage() ? wfUrlencode( $this->mTitle->getTalkNsText() ) : ''; break; case 'subjectspace': $value = str_replace( '_', ' ', $this->mTitle->getSubjectNsText() ); diff --git a/includes/parser/ParserOutput.php b/includes/parser/ParserOutput.php index cfb0c3ec59..2dd4085e94 100644 --- a/includes/parser/ParserOutput.php +++ b/includes/parser/ParserOutput.php @@ -211,10 +211,10 @@ class ParserOutput extends CacheTime { */ private $mFlags = []; - /** @var integer|null Assumed rev ID for {{REVISIONID}} if no revision is set */ + /** @var int|null Assumed rev ID for {{REVISIONID}} if no revision is set */ private $mSpeculativeRevId; - /** @var integer Upper bound of expiry based on parse duration */ + /** @var int Upper bound of expiry based on parse duration */ private $mMaxAdaptiveExpiry = INF; const EDITSECTION_REGEX = @@ -291,7 +291,7 @@ class ParserOutput extends CacheTime { } /** - * @param integer $id + * @param int $id * @since 1.28 */ public function setSpeculativeRevIdUsed( $id ) { @@ -1075,7 +1075,7 @@ class ParserOutput extends CacheTime { /** * Lower the runtime adaptive TTL to at most this value * - * @param integer $ttl + * @param int $ttl * @since 1.28 */ public function updateRuntimeAdaptiveExpiry( $ttl ) { diff --git a/includes/parser/Preprocessor_Hash.php b/includes/parser/Preprocessor_Hash.php index 9ea8fa3a50..8e84cb2c82 100644 --- a/includes/parser/Preprocessor_Hash.php +++ b/includes/parser/Preprocessor_Hash.php @@ -1715,7 +1715,7 @@ class PPNode_Hash_Tree implements PPNode { * store array can be accessed via getNextSibling(). * * @param array $store - * @param integer $index + * @param int $index */ public function __construct( array $store, $index ) { $this->store = $store; @@ -1728,7 +1728,7 @@ class PPNode_Hash_Tree implements PPNode { * on what is at the relevant store index. * * @param array $store - * @param integer $index + * @param int $index * @return PPNode_Hash_Tree|PPNode_Hash_Attr|PPNode_Hash_Text */ public static function factory( array $store, $index ) { @@ -1787,7 +1787,7 @@ class PPNode_Hash_Tree implements PPNode { * return a temporary proxy object: different instances will be returned * if this is called more than once on the same node. * - * @return PPNode_Hash_Tree|PPNode_Hash_Attr|PPNode_Hash_Text|boolean + * @return PPNode_Hash_Tree|PPNode_Hash_Attr|PPNode_Hash_Text|bool */ public function getFirstChild() { if ( !isset( $this->rawChildren[0] ) ) { @@ -1802,7 +1802,7 @@ class PPNode_Hash_Tree implements PPNode { * return a temporary proxy object: different instances will be returned * if this is called more than once on the same node. * - * @return PPNode_Hash_Tree|PPNode_Hash_Attr|PPNode_Hash_Text|boolean + * @return PPNode_Hash_Tree|PPNode_Hash_Attr|PPNode_Hash_Text|bool */ public function getNextSibling() { return self::factory( $this->store, $this->index + 1 ); @@ -2027,7 +2027,7 @@ class PPNode_Hash_Text implements PPNode { * store array can be accessed via getNextSibling(). * * @param array $store - * @param integer $index + * @param int $index */ public function __construct( array $store, $index ) { $this->value = $store[$index]; @@ -2156,7 +2156,7 @@ class PPNode_Hash_Attr implements PPNode { * store array can be accessed via getNextSibling(). * * @param array $store - * @param integer $index + * @param int $index */ public function __construct( array $store, $index ) { $descriptor = $store[$index]; diff --git a/includes/rcfeed/FormattedRCFeed.php b/includes/rcfeed/FormattedRCFeed.php index 48a9f946a5..afe900d09c 100644 --- a/includes/rcfeed/FormattedRCFeed.php +++ b/includes/rcfeed/FormattedRCFeed.php @@ -52,7 +52,7 @@ abstract class FormattedRCFeed extends RCFeed { */ public function notify( RecentChange $rc, $actionComment = null ) { $params = $this->params; - /** @var $formatter RCFeedFormatter */ + /** @var RCFeedFormatter $formatter */ $formatter = is_object( $params['formatter'] ) ? $params['formatter'] : new $params['formatter']; $line = $formatter->getLine( $params, $rc, $actionComment ); diff --git a/includes/rcfeed/IRCColourfulRCFeedFormatter.php b/includes/rcfeed/IRCColourfulRCFeedFormatter.php index ddea69511a..10ba83fc19 100644 --- a/includes/rcfeed/IRCColourfulRCFeedFormatter.php +++ b/includes/rcfeed/IRCColourfulRCFeedFormatter.php @@ -89,7 +89,9 @@ class IRCColourfulRCFeedFormatter implements RCFeedFormatter { ) ); $flag = $attribs['rc_log_action']; } else { - $comment = self::cleanupForIRC( $attribs['rc_comment'] ); + $comment = self::cleanupForIRC( + CommentStore::newKey( 'rc_comment' )->getComment( $attribs )->text + ); $flag = ''; if ( !$attribs['rc_patrolled'] && ( $wgUseRCPatrol || $attribs['rc_type'] == RC_NEW && $wgUseNPPatrol ) diff --git a/includes/resourceloader/ResourceLoaderStartUpModule.php b/includes/resourceloader/ResourceLoaderStartUpModule.php index 8973fe31c3..d535ffcd3a 100644 --- a/includes/resourceloader/ResourceLoaderStartUpModule.php +++ b/includes/resourceloader/ResourceLoaderStartUpModule.php @@ -296,6 +296,16 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { return true; } + /** + * @return array + */ + public function getPreloadLinks( ResourceLoaderContext $context ) { + $url = self::getStartupModulesUrl( $context ); + return [ + $url => [ 'as' => 'script' ] + ]; + } + /** * Base modules required for the base environment of ResourceLoader * @@ -359,6 +369,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { }, [ '$VARS.wgLegacyJavaScriptGlobals' => $this->getConfig()->get( 'LegacyJavaScriptGlobals' ), '$VARS.configuration' => $this->getConfigSettings( $context ), + // This url may be preloaded. See getPreloadLinks(). '$VARS.baseModulesUri' => self::getStartupModulesUrl( $context ), ] ); $pairs['$CODE.registrations()'] = str_replace( diff --git a/includes/revisiondelete/RevDelArchivedFileItem.php b/includes/revisiondelete/RevDelArchivedFileItem.php index 32d48918d2..b098422425 100644 --- a/includes/revisiondelete/RevDelArchivedFileItem.php +++ b/includes/revisiondelete/RevDelArchivedFileItem.php @@ -23,8 +23,8 @@ * Item class for a filearchive table row */ class RevDelArchivedFileItem extends RevDelFileItem { - /** @var $list RevDelArchivedFileList */ - /** @var $file ArchivedFile */ + /** @var RevDelArchivedFileList $list */ + /** @var ArchivedFile $file */ /** @var LocalFile */ protected $lockFile; diff --git a/includes/revisiondelete/RevDelItem.php b/includes/revisiondelete/RevDelItem.php index b114c7520c..bf97bd4100 100644 --- a/includes/revisiondelete/RevDelItem.php +++ b/includes/revisiondelete/RevDelItem.php @@ -37,7 +37,7 @@ abstract class RevDelItem extends RevisionItemBase { /** * Get the current deletion bitfield value * - * @return integer + * @return int */ abstract public function getBits(); diff --git a/includes/revisiondelete/RevDelList.php b/includes/revisiondelete/RevDelList.php index a2c58e6741..011c7b09db 100644 --- a/includes/revisiondelete/RevDelList.php +++ b/includes/revisiondelete/RevDelList.php @@ -83,7 +83,7 @@ abstract class RevDelList extends RevisionListBase { public function areAnySuppressed() { $bit = $this->getSuppressBit(); - /** @var $item RevDelItem */ + /** @var RevDelItem $item */ foreach ( $this as $item ) { if ( $item->getBits() & $bit ) { return true; @@ -151,7 +151,7 @@ abstract class RevDelList extends RevisionListBase { // passed to doPostCommitUpdates(). $visibilityChangeMap = []; - /** @var $item RevDelItem */ + /** @var RevDelItem $item */ foreach ( $this as $item ) { unset( $missing[$item->getId()] ); @@ -294,7 +294,7 @@ abstract class RevDelList extends RevisionListBase { final protected function acquireItemLocks() { $status = Status::newGood(); - /** @var $item RevDelItem */ + /** @var RevDelItem $item */ foreach ( $this as $item ) { $status->merge( $item->lock() ); } @@ -304,7 +304,7 @@ abstract class RevDelList extends RevisionListBase { final protected function releaseItemLocks() { $status = Status::newGood(); - /** @var $item RevDelItem */ + /** @var RevDelItem $item */ foreach ( $this as $item ) { $status->merge( $item->unlock() ); } diff --git a/includes/revisiondelete/RevDelLogItem.php b/includes/revisiondelete/RevDelLogItem.php index 047d6cf10e..998c695f17 100644 --- a/includes/revisiondelete/RevDelLogItem.php +++ b/includes/revisiondelete/RevDelLogItem.php @@ -102,8 +102,9 @@ class RevDelLogItem extends RevDelItem { // User links and action text $action = $formatter->getActionText(); // Comment + $comment = CommentStore::newKey( 'log_comment' )->getComment( $this->row )->text; $comment = $this->list->getLanguage()->getDirMark() - . Linker::commentBlock( $this->row->log_comment ); + . Linker::commentBlock( $comment ); if ( LogEventsList::isDeleted( $this->row, LogPage::DELETED_COMMENT ) ) { $comment = '' . $comment . ''; @@ -135,7 +136,7 @@ class RevDelLogItem extends RevDelItem { } if ( LogEventsList::userCan( $this->row, LogPage::DELETED_COMMENT, $user ) ) { $ret += [ - 'comment' => $this->row->log_comment, + 'comment' => CommentStore::newKey( 'log_comment' )->getComment( $this->row )->text, ]; } diff --git a/includes/revisiondelete/RevDelLogList.php b/includes/revisiondelete/RevDelLogList.php index 1932778115..ceb97e4d65 100644 --- a/includes/revisiondelete/RevDelLogList.php +++ b/includes/revisiondelete/RevDelLogList.php @@ -63,7 +63,11 @@ class RevDelLogList extends RevDelList { public function doQuery( $db ) { $ids = array_map( 'intval', $this->ids ); - return $db->select( 'logging', [ + $commentQuery = CommentStore::getKey( 'log_comment' )->getJoin(); + + return $db->select( + [ 'logging' ] + $commentQuery['tables'], + [ 'log_id', 'log_type', 'log_action', @@ -73,13 +77,13 @@ class RevDelLogList extends RevDelList { 'log_namespace', 'log_title', 'log_page', - 'log_comment', 'log_params', 'log_deleted' - ], + ] + $commentQuery['fields'], [ 'log_id' => $ids ], __METHOD__, - [ 'ORDER BY' => 'log_id DESC' ] + [ 'ORDER BY' => 'log_id DESC' ], + $commentQuery['joins'] ); } diff --git a/includes/revisiondelete/RevisionDeleter.php b/includes/revisiondelete/RevisionDeleter.php index 4a807fbc7e..76fa590d03 100644 --- a/includes/revisiondelete/RevisionDeleter.php +++ b/includes/revisiondelete/RevisionDeleter.php @@ -234,7 +234,7 @@ class RevisionDeleter { * @since 1.22 * @param array $bitPars ExtractBitParams() params * @param int $oldfield Current bitfield - * @return integer + * @return int */ public static function extractBitfield( array $bitPars, $oldfield ) { // Build the actual new rev_deleted bitfield diff --git a/includes/services/ServiceContainer.php b/includes/services/ServiceContainer.php index 633cfc92db..9f09e22fc4 100644 --- a/includes/services/ServiceContainer.php +++ b/includes/services/ServiceContainer.php @@ -56,7 +56,7 @@ class ServiceContainer implements DestructibleService { private $serviceInstantiators = []; /** - * @var boolean[] disabled status, per service name + * @var bool[] disabled status, per service name */ private $disabled = []; @@ -66,7 +66,7 @@ class ServiceContainer implements DestructibleService { private $extraInstantiationParams; /** - * @var boolean + * @var bool */ private $destroyed = false; diff --git a/includes/session/CookieSessionProvider.php b/includes/session/CookieSessionProvider.php index 79fc720d1e..74925bd7b6 100644 --- a/includes/session/CookieSessionProvider.php +++ b/includes/session/CookieSessionProvider.php @@ -420,7 +420,7 @@ class CookieSessionProvider extends SessionProvider { * Cookies that are session-length do not call this function. * * @param string $cookieName - * @param boolean $shouldRememberUser Whether the user should be remembered + * @param bool $shouldRememberUser Whether the user should be remembered * long-term * @return int Cookie expiration time in seconds; 0 for session cookies */ diff --git a/includes/site/DBSiteStore.php b/includes/site/DBSiteStore.php index e106f37ecc..7fcfbe59e9 100644 --- a/includes/site/DBSiteStore.php +++ b/includes/site/DBSiteStore.php @@ -214,8 +214,6 @@ class DBSiteStore implements SiteStore { 'sites', $fields, [ 'site_id' => $rowId ], __METHOD__ ) && $success; } else { - $rowId = $dbw->nextSequenceValue( 'sites_site_id_seq' ); - $fields['site_id'] = $rowId; $success = $dbw->insert( 'sites', $fields, __METHOD__ ) && $success; $rowId = $dbw->insertId(); } diff --git a/includes/skins/Skin.php b/includes/skins/Skin.php index e1d0034675..df7a9edede 100644 --- a/includes/skins/Skin.php +++ b/includes/skins/Skin.php @@ -1251,11 +1251,10 @@ abstract class Skin extends ContextSource { function buildSidebar() { global $wgEnableSidebarCache, $wgSidebarCacheExpiry; - $that = $this; - $callback = function () use ( $that ) { + $callback = function () { $bar = []; - $that->addToSidebar( $bar, 'sidebar' ); - Hooks::run( 'SkinBuildSidebar', [ $that, &$bar ] ); + $this->addToSidebar( $bar, 'sidebar' ); + Hooks::run( 'SkinBuildSidebar', [ $this, &$bar ] ); return $bar; }; diff --git a/includes/skins/SkinTemplate.php b/includes/skins/SkinTemplate.php index cbffe1e571..180a6df9c4 100644 --- a/includes/skins/SkinTemplate.php +++ b/includes/skins/SkinTemplate.php @@ -462,11 +462,11 @@ class SkinTemplate extends Skin { $tpl->set( 'printfooter', $this->printSource() ); // Wrap the bodyText with #mw-content-text element $out->mBodytext = $this->wrapHTML( $title, $out->mBodytext ); - $tpl->setRef( 'bodytext', $out->mBodytext ); + $tpl->set( 'bodytext', $out->mBodytext ); $language_urls = $this->getLanguages(); if ( count( $language_urls ) ) { - $tpl->setRef( 'language_urls', $language_urls ); + $tpl->set( 'language_urls', $language_urls ); } else { $tpl->set( 'language_urls', false ); } @@ -475,8 +475,8 @@ class SkinTemplate extends Skin { $tpl->set( 'personal_urls', $this->buildPersonalUrls() ); $content_navigation = $this->buildContentNavigationUrls(); $content_actions = $this->buildContentActionUrls( $content_navigation ); - $tpl->setRef( 'content_navigation', $content_navigation ); - $tpl->setRef( 'content_actions', $content_actions ); + $tpl->set( 'content_navigation', $content_navigation ); + $tpl->set( 'content_actions', $content_actions ); $tpl->set( 'sidebar', $this->buildSidebar() ); $tpl->set( 'nav_urls', $this->buildNavUrls() ); diff --git a/includes/specialpage/AuthManagerSpecialPage.php b/includes/specialpage/AuthManagerSpecialPage.php index 500c2e93f5..0cdc55f060 100644 --- a/includes/specialpage/AuthManagerSpecialPage.php +++ b/includes/specialpage/AuthManagerSpecialPage.php @@ -688,7 +688,7 @@ abstract class AuthManagerSpecialPage extends SpecialPage { if ( isset( $singleFieldInfo['options'] ) ) { $descriptor['options'] = array_flip( array_map( function ( $message ) { - /** @var $message Message */ + /** @var Message $message */ return $message->parse(); }, $singleFieldInfo['options'] ) ); } diff --git a/includes/specialpage/ChangesListSpecialPage.php b/includes/specialpage/ChangesListSpecialPage.php index 645fbb288f..5f544042f9 100644 --- a/includes/specialpage/ChangesListSpecialPage.php +++ b/includes/specialpage/ChangesListSpecialPage.php @@ -553,6 +553,107 @@ abstract class ChangesListSpecialPage extends SpecialPage { LoggerFactory::getInstance( 'objectcache' ) ) ); } + + $this->includeRcFiltersApp(); + } + + /** + * Include the modules and configuration for the RCFilters app. + * Conditional on the user having the feature enabled. + */ + protected function includeRcFiltersApp() { + if ( $this->isStructuredFilterUiEnabled() ) { + $out = $this->getOutput(); + $jsData = $this->getStructuredFilterJsData(); + + $messages = []; + foreach ( $jsData['messageKeys'] as $key ) { + $messages[$key] = $this->msg( $key )->plain(); + } + + $out->addHTML( + ResourceLoader::makeInlineScript( + ResourceLoader::makeMessageSetScript( $messages ) + ) + ); + + $experimentalStructuredChangeFilters = + $this->getConfig()->get( 'StructuredChangeFiltersEnableExperimentalViews' ); + + $out->addJsConfigVars( 'wgStructuredChangeFilters', $jsData['groups'] ); + $out->addJsConfigVars( + 'wgStructuredChangeFiltersEnableExperimentalViews', + $experimentalStructuredChangeFilters + ); + $out->addJsConfigVars( + 'wgStructuredChangeFiltersEnableLiveUpdate', + $this->getConfig()->get( 'StructuredChangeFiltersEnableLiveUpdate' ) + ); + $out->addJsConfigVars( + 'wgRCFiltersChangeTags', + $this->buildChangeTagList() + ); + $out->addJsConfigVars( + 'StructuredChangeFiltersDisplayConfig', + [ + 'maxDays' => (int)$this->getConfig()->get( 'RCMaxAge' ) / ( 24 * 3600 ), // Translate to days + 'limitArray' => $this->getConfig()->get( 'RCLinkLimits' ), + 'limitDefault' => $this->getDefaultLimit(), + 'daysArray' => $this->getConfig()->get( 'RCLinkDays' ), + 'daysDefault' => $this->getDefaultDays(), + ] + ); + } + } + + /** + * Fetch the change tags list for the front end + * + * @return Array Tag data + */ + protected function buildChangeTagList() { + $explicitlyDefinedTags = array_fill_keys( ChangeTags::listExplicitlyDefinedTags(), 0 ); + $softwareActivatedTags = array_fill_keys( ChangeTags::listSoftwareActivatedTags(), 0 ); + + // Hit counts disabled for perf reasons, see T169997 + /* + $tagStats = ChangeTags::tagUsageStatistics(); + $tagHitCounts = array_merge( $explicitlyDefinedTags, $softwareActivatedTags, $tagStats ); + + // Sort by hits + arsort( $tagHitCounts ); + */ + $tagHitCounts = array_merge( $explicitlyDefinedTags, $softwareActivatedTags ); + + // Build the list and data + $result = []; + foreach ( $tagHitCounts as $tagName => $hits ) { + if ( + // Only get active tags + isset( $explicitlyDefinedTags[ $tagName ] ) || + isset( $softwareActivatedTags[ $tagName ] ) + ) { + // Parse description + $desc = ChangeTags::tagLongDescriptionMessage( $tagName, $this->getContext() ); + + $result[] = [ + 'name' => $tagName, + 'label' => Sanitizer::stripAllTags( + ChangeTags::tagDescription( $tagName, $this->getContext() ) + ), + 'description' => $desc ? Sanitizer::stripAllTags( $desc->parse() ) : '', + 'cssClass' => Sanitizer::escapeClass( 'mw-tag-' . $tagName ), + 'hits' => $hits, + ]; + } + } + + // Instead of sorting by hit count (disabled, see above), sort by display name + usort( $result, function ( $a, $b ) { + return strcasecmp( $a['label'], $b['label'] ); + } ); + + return $result; } /** @@ -779,19 +880,20 @@ abstract class ChangesListSpecialPage extends SpecialPage { * @return FormOptions */ public function getDefaultOptions() { - $config = $this->getConfig(); $opts = new FormOptions(); - $structuredUI = $this->getUser()->getOption( 'rcenhancedfilters' ); + $structuredUI = $this->isStructuredFilterUiEnabled(); // If urlversion=2 is set, ignore the filter defaults and set them all to false/empty $useDefaults = $this->getRequest()->getInt( 'urlversion' ) !== 2; // Add all filters + /** @var ChangesListFilterGroup $filterGroup */ foreach ( $this->filterGroups as $filterGroup ) { // URL parameters can be per-group, like 'userExpLevel', // or per-filter, like 'hideminor'. if ( $filterGroup->isPerGroupRequestParameter() ) { $opts->add( $filterGroup->getName(), $useDefaults ? $filterGroup->getDefault() : '' ); } else { + /** @var ChangesListBooleanFilter $filter */ foreach ( $filterGroup->getFilters() as $filter ) { $opts->add( $filter->getName(), $useDefaults ? $filter->getDefault( $structuredUI ) : false ); } @@ -802,6 +904,7 @@ abstract class ChangesListSpecialPage extends SpecialPage { $opts->add( 'invert', false ); $opts->add( 'associated', false ); $opts->add( 'urlversion', 1 ); + $opts->add( 'tagfilter', '' ); return $opts; } @@ -857,8 +960,6 @@ abstract class ChangesListSpecialPage extends SpecialPage { 'messageKeys' => [], ]; - $context = $this->getContext(); - usort( $this->filterGroups, function ( $a, $b ) { return $b->getPriority() - $a->getPriority(); } ); @@ -1055,9 +1156,8 @@ abstract class ChangesListSpecialPage extends SpecialPage { &$join_conds, FormOptions $opts ) { $dbr = $this->getDB(); - $user = $this->getUser(); + $isStructuredUI = $this->isStructuredFilterUiEnabled(); - $context = $this->getContext(); foreach ( $this->filterGroups as $filterGroup ) { // URL parameters can be per-group, like 'userExpLevel', // or per-filter, like 'hideminor'. @@ -1066,7 +1166,7 @@ abstract class ChangesListSpecialPage extends SpecialPage { $query_options, $join_conds, $opts[$filterGroup->getName()] ); } else { foreach ( $filterGroup->getFilters() as $filter ) { - if ( $opts[$filter->getName()] ) { + if ( $filter->isActive( $opts, $isStructuredUI ) ) { $filter->modifyQuery( $dbr, $this, $tables, $fields, $conds, $query_options, $join_conds ); } @@ -1279,12 +1379,11 @@ abstract class ChangesListSpecialPage extends SpecialPage { ) . "\n"; $legend .= Html::closeElement( 'dl' ) . "\n"; - # Collapsibility - $legendHeading = $this->getUser()->getOption( - 'rcenhancedfilters' - ) ? + $legendHeading = $this->isStructuredFilterUiEnabled() ? $context->msg( 'rcfilters-legend-heading' )->parse() : $context->msg( 'recentchanges-legend-heading' )->parse(); + + # Collapsible $legend = '
' . $legendHeading . @@ -1305,6 +1404,11 @@ abstract class ChangesListSpecialPage extends SpecialPage { 'mediawiki.special.changeslist', ] ); $out->addModules( 'mediawiki.special.changeslist.legend.js' ); + + if ( $this->isStructuredFilterUiEnabled() ) { + $out->addModules( 'mediawiki.rcfilters.filters.ui' ); + $out->addModuleStyles( 'mediawiki.rcfilters.filters.base.styles' ); + } } protected function getGroupName() { @@ -1426,4 +1530,17 @@ abstract class ChangesListSpecialPage extends SpecialPage { $conds[] = reset( $conditions ); } } + + /** + * Check whether the structured filter UI is enabled + * + * @return bool + */ + public function isStructuredFilterUiEnabled() { + return $this->getUser()->getOption( 'rcenhancedfilters' ); + } + + abstract function getDefaultLimit(); + + abstract function getDefaultDays(); } diff --git a/includes/specials/SpecialBlock.php b/includes/specials/SpecialBlock.php index 66e4fbeda2..252dc68c3b 100644 --- a/includes/specials/SpecialBlock.php +++ b/includes/specials/SpecialBlock.php @@ -618,7 +618,7 @@ class SpecialBlock extends FormSpecialPage { * @return bool|string */ public static function processForm( array $data, IContextSource $context ) { - global $wgBlockAllowsUTEdit, $wgHideUserContribLimit, $wgContLang; + global $wgBlockAllowsUTEdit, $wgHideUserContribLimit; $performer = $context->getUser(); @@ -720,8 +720,7 @@ class SpecialBlock extends FormSpecialPage { $block = new Block(); $block->setTarget( $target ); $block->setBlocker( $performer ); - # Truncate reason for whole multibyte characters - $block->mReason = $wgContLang->truncate( $data['Reason'][0], 255 ); + $block->mReason = $data['Reason'][0]; $block->mExpiry = $expiryTime; $block->prevents( 'createaccount', $data['CreateAccount'] ); $block->prevents( 'editownusertalk', ( !$wgBlockAllowsUTEdit || $data['DisableUTEdit'] ) ); diff --git a/includes/specials/SpecialChangeContentModel.php b/includes/specials/SpecialChangeContentModel.php index bee6a39832..87c899f4e0 100644 --- a/includes/specials/SpecialChangeContentModel.php +++ b/includes/specials/SpecialChangeContentModel.php @@ -154,8 +154,6 @@ class SpecialChangeContentModel extends FormSpecialPage { } public function onSubmit( array $data ) { - global $wgContLang; - if ( $data['pagetitle'] === '' ) { // Initial form view of special page, pass return false; @@ -240,8 +238,6 @@ class SpecialChangeContentModel extends FormSpecialPage { if ( $data['reason'] !== '' ) { $reason .= $this->msg( 'colon-separator' )->inContentLanguage()->text() . $data['reason']; } - # Truncate for whole multibyte characters. - $reason = $wgContLang->truncate( $reason, 255 ); // Run edit filters $derivativeContext = new DerivativeContext( $this->getContext() ); diff --git a/includes/specials/SpecialContributions.php b/includes/specials/SpecialContributions.php index 1b14fcbe10..5a5f005baf 100644 --- a/includes/specials/SpecialContributions.php +++ b/includes/specials/SpecialContributions.php @@ -103,7 +103,12 @@ class SpecialContributions extends IncludableSpecialPage { 'pagetitle', $this->msg( 'contributions-title', $target )->plain() )->inContentLanguage() ); - $this->getSkin()->setRelevantUser( $userObj ); + + # For IP ranges, we want the contributionsSub, but not the skin-dependent + # links under 'Tools', which may include irrelevant links like 'Logs'. + if ( !IP::isValidRange( $target ) ) { + $this->getSkin()->setRelevantUser( $userObj ); + } } else { $out->addSubtitle( $this->msg( 'sp-contributions-newbies-sub' ) ); $out->setHTMLTitle( $this->msg( @@ -206,7 +211,12 @@ class SpecialContributions extends IncludableSpecialPage { 'associated' => $this->opts['associated'], ] ); - if ( !$pager->getNumRows() ) { + if ( IP::isValidRange( $target ) && !$pager->isQueryableRange( $target ) ) { + // Valid range, but outside CIDR limit. + $limits = $this->getConfig()->get( 'RangeContributionsCIDRLimit' ); + $limit = $limits[ IP::isIPv4( $target ) ? 'IPv4' : 'IPv6' ]; + $out->addWikiMsg( 'sp-contributions-outofrange', $limit ); + } elseif ( !$pager->getNumRows() ) { $out->addWikiMsg( 'nocontribs', $target ); } else { # Show a message about replica DB lag, if applicable @@ -223,11 +233,14 @@ class SpecialContributions extends IncludableSpecialPage { } $out->addHTML( $output ); } + $out->preventClickjacking( $pager->getPreventClickjacking() ); # Show the appropriate "footer" message - WHOIS tools, etc. if ( $this->opts['contribs'] == 'newbie' ) { $message = 'sp-contributions-footer-newbies'; + } elseif ( IP::isValidRange( $target ) ) { + $message = 'sp-contributions-footer-anon-range'; } elseif ( IP::isIPAddress( $target ) ) { $message = 'sp-contributions-footer-anon'; } elseif ( $userObj->isAnon() ) { @@ -258,8 +271,11 @@ class SpecialContributions extends IncludableSpecialPage { */ protected function contributionsSub( $userObj ) { if ( $userObj->isAnon() ) { - // Show a warning message that the user being searched for doesn't exists - if ( !User::isIP( $userObj->getName() ) ) { + // Show a warning message that the user being searched for doesn't exists. + // User::isIP returns true for IP address and usemod IPs like '123.123.123.xxx', + // but returns false for IP ranges. We don't want to suggest either of these are + // valid usernames which we would with the 'contributions-userdoesnotexist' message. + if ( !User::isIP( $userObj->getName() ) && !$userObj->isIPRange() ) { $this->getOutput()->wrapWikiMsg( "
\n\$1\n
", [ @@ -286,7 +302,13 @@ class SpecialContributions extends IncludableSpecialPage { // Do not expose the autoblocks, since that may lead to a leak of accounts' IPs, // and also this will display a totally irrelevant log entry as a current block. if ( !$this->including() ) { - $block = Block::newFromTarget( $userObj, $userObj ); + // For IP ranges you must give Block::newFromTarget the CIDR string and not a user object. + if ( $userObj->isIPRange() ) { + $block = Block::newFromTarget( $userObj->getName(), $userObj->getName() ); + } else { + $block = Block::newFromTarget( $userObj, $userObj ); + } + if ( !is_null( $block ) && $block->getType() != Block::TYPE_AUTO ) { if ( $block->getType() == Block::TYPE_RANGE ) { $nt = MWNamespace::getCanonicalName( NS_USER ) . ':' . $block->getTarget(); @@ -332,10 +354,14 @@ class SpecialContributions extends IncludableSpecialPage { $talkpage = $target->getTalkPage(); $linkRenderer = $sp->getLinkRenderer(); - $tools['user-talk'] = $linkRenderer->makeLink( - $talkpage, - $sp->msg( 'sp-contributions-talk' )->text() - ); + + # No talk pages for IP ranges. + if ( !IP::isValidRange( $username ) ) { + $tools['user-talk'] = $linkRenderer->makeLink( + $talkpage, + $sp->msg( 'sp-contributions-talk' )->text() + ); + } if ( ( $id !== null ) || ( $id === null && IP::isIPAddress( $username ) ) ) { if ( $sp->getUser()->isAllowed( 'block' ) ) { # Block / Change block / Unblock links @@ -374,24 +400,28 @@ class SpecialContributions extends IncludableSpecialPage { ); } } - # Uploads - $tools['uploads'] = $linkRenderer->makeKnownLink( - SpecialPage::getTitleFor( 'Listfiles', $username ), - $sp->msg( 'sp-contributions-uploads' )->text() - ); - # Other logs link - $tools['logs'] = $linkRenderer->makeKnownLink( - SpecialPage::getTitleFor( 'Log', $username ), - $sp->msg( 'sp-contributions-logs' )->text() - ); + # Don't show some links for IP ranges + if ( !IP::isValidRange( $username ) ) { + # Uploads + $tools['uploads'] = $linkRenderer->makeKnownLink( + SpecialPage::getTitleFor( 'Listfiles', $username ), + $sp->msg( 'sp-contributions-uploads' )->text() + ); - # Add link to deleted user contributions for priviledged users - if ( $sp->getUser()->isAllowed( 'deletedhistory' ) ) { - $tools['deletedcontribs'] = $linkRenderer->makeKnownLink( - SpecialPage::getTitleFor( 'DeletedContributions', $username ), - $sp->msg( 'sp-contributions-deleted', $username )->text() + # Other logs link + $tools['logs'] = $linkRenderer->makeKnownLink( + SpecialPage::getTitleFor( 'Log', $username ), + $sp->msg( 'sp-contributions-logs' )->text() ); + + # Add link to deleted user contributions for priviledged users + if ( $sp->getUser()->isAllowed( 'deletedhistory' ) ) { + $tools['deletedcontribs'] = $linkRenderer->makeKnownLink( + SpecialPage::getTitleFor( 'DeletedContributions', $username ), + $sp->msg( 'sp-contributions-deleted', $username )->text() + ); + } } # Add a link to change user rights for privileged users diff --git a/includes/specials/SpecialMediaStatistics.php b/includes/specials/SpecialMediaStatistics.php index 8d77091dd4..a6d4a3e91c 100644 --- a/includes/specials/SpecialMediaStatistics.php +++ b/includes/specials/SpecialMediaStatistics.php @@ -32,12 +32,12 @@ class MediaStatisticsPage extends QueryPage { protected $totalCount = 0, $totalBytes = 0; /** - * @var integer $totalPerType Combined file size of all files in a section + * @var int $totalPerType Combined file size of all files in a section */ protected $totalPerType = 0; /** - * @var integer $totalSize Combined file size of all files + * @var int $totalSize Combined file size of all files */ protected $totalSize = 0; diff --git a/includes/specials/SpecialNewimages.php b/includes/specials/SpecialNewimages.php index 0a653e7370..693b8aa90e 100644 --- a/includes/specials/SpecialNewimages.php +++ b/includes/specials/SpecialNewimages.php @@ -155,7 +155,6 @@ class SpecialNewFiles extends IncludableSpecialPage { 'mediatype' => [ 'type' => 'multiselect', - 'dropdown' => true, 'flatlist' => true, 'name' => 'mediatype', 'label-message' => 'newimages-mediatype', diff --git a/includes/specials/SpecialNewpages.php b/includes/specials/SpecialNewpages.php index e3b73a98b0..61590d7567 100644 --- a/includes/specials/SpecialNewpages.php +++ b/includes/specials/SpecialNewpages.php @@ -299,7 +299,7 @@ class SpecialNewpages extends IncludableSpecialPage { */ protected function revisionFromRcResult( stdClass $result ) { return new Revision( [ - 'comment' => $result->rc_comment, + 'comment' => CommentStore::newKey( 'rc_comment' )->getComment( $result )->text, 'deleted' => $result->rc_deleted, 'user_text' => $result->rc_user_text, 'user' => $result->rc_user, @@ -391,10 +391,6 @@ class SpecialNewpages extends IncludableSpecialPage { $oldTitleText = ''; $oldTitle = Title::makeTitle( $result->rc_namespace, $result->rc_title ); - if ( count( $classes ) ) { - $attribs['class'] = implode( ' ', $classes ); - } - if ( !$title->equals( $oldTitle ) ) { $oldTitleText = $oldTitle->getPrefixedText(); $oldTitleText = Html::rawElement( @@ -411,6 +407,10 @@ class SpecialNewpages extends IncludableSpecialPage { Hooks::run( 'NewPagesLineEnding', [ $this, &$ret, $result, &$classes, &$attribs ] ); $attribs = wfArrayFilterByKey( $attribs, [ Sanitizer::class, 'isReservedDataAttribute' ] ); + if ( count( $classes ) ) { + $attribs['class'] = implode( ' ', $classes ); + } + return Html::rawElement( 'li', $attribs, $ret ) . "\n"; } diff --git a/includes/specials/SpecialPageLanguage.php b/includes/specials/SpecialPageLanguage.php index 78a453e7b1..a68f08fd9a 100644 --- a/includes/specials/SpecialPageLanguage.php +++ b/includes/specials/SpecialPageLanguage.php @@ -49,12 +49,20 @@ class SpecialPageLanguage extends FormSpecialPage { protected function getFormFields() { // Get default from the subpage of Special page $defaultName = $this->par; + $title = $defaultName ? Title::newFromText( $defaultName ) : null; + if ( $title ) { + $defaultPageLanguage = + ContentHandler::getForTitle( $title )->getPageLanguage( $title ); + $hasCustomLanguageSet = !$defaultPageLanguage->equals( $title->getPageLanguage() ); + } else { + $hasCustomLanguageSet = false; + } $page = []; $page['pagename'] = [ 'type' => 'title', 'label-message' => 'pagelang-name', - 'default' => $defaultName, + 'default' => $title ? $title->getPrefixedText() : $defaultName, 'autofocus' => $defaultName === null, 'exists' => true, ]; @@ -68,7 +76,7 @@ class SpecialPageLanguage extends FormSpecialPage { 'id' => 'mw-pl-options', 'type' => 'radio', 'options' => $selectoptions, - 'default' => 1 + 'default' => $hasCustomLanguageSet ? 2 : 1 ]; // Building a language selector @@ -86,7 +94,9 @@ class SpecialPageLanguage extends FormSpecialPage { 'type' => 'select', 'options' => $options, 'label-message' => 'pagelang-language', - 'default' => $this->getConfig()->get( 'LanguageCode' ), + 'default' => $title ? + $title->getPageLanguage()->getCode() : + $this->getConfig()->get( 'LanguageCode' ), ]; // Allow user to enter a comment explaining the change diff --git a/includes/specials/SpecialRecentchanges.php b/includes/specials/SpecialRecentchanges.php index 0b48d4081c..547a1b06c2 100644 --- a/includes/specials/SpecialRecentchanges.php +++ b/includes/specials/SpecialRecentchanges.php @@ -164,96 +164,14 @@ class SpecialRecentChanges extends ChangesListSpecialPage { parent::execute( $subpage ); if ( $this->isStructuredFilterUiEnabled() ) { - $jsData = $this->getStructuredFilterJsData(); - - $messages = []; - foreach ( $jsData['messageKeys'] as $key ) { - $messages[$key] = $this->msg( $key )->plain(); - } - - $out->addHTML( - ResourceLoader::makeInlineScript( - ResourceLoader::makeMessageSetScript( $messages ) - ) - ); - - $experimentalStructuredChangeFilters = - $this->getConfig()->get( 'StructuredChangeFiltersEnableExperimentalViews' ); - - $out->addJsConfigVars( 'wgStructuredChangeFilters', $jsData['groups'] ); - $out->addJsConfigVars( - 'wgStructuredChangeFiltersEnableExperimentalViews', - $experimentalStructuredChangeFilters - ); - $out->addJsConfigVars( - 'wgStructuredChangeFiltersEnableLiveUpdate', - $this->getConfig()->get( 'StructuredChangeFiltersEnableLiveUpdate' ) - ); + $out->addJsConfigVars( 'wgStructuredChangeFiltersLiveUpdateSupported', true ); $out->addJsConfigVars( - 'wgRCFiltersChangeTags', - $this->buildChangeTagList() - ); - $out->addJsConfigVars( - 'StructuredChangeFiltersDisplayConfig', - [ - 'maxDays' => (int)$this->getConfig()->get( 'RCMaxAge' ) / ( 24 * 3600 ), // Translate to days - 'limitArray' => $this->getConfig()->get( 'RCLinkLimits' ), - 'daysArray' => $this->getConfig()->get( 'RCLinkDays' ), - ] + 'wgStructuredChangeFiltersSavedQueriesPreferenceName', + 'rcfilters-saved-queries' ); } } - /** - * Fetch the change tags list for the front end - * - * @return Array Tag data - */ - protected function buildChangeTagList() { - $explicitlyDefinedTags = array_fill_keys( ChangeTags::listExplicitlyDefinedTags(), 0 ); - $softwareActivatedTags = array_fill_keys( ChangeTags::listSoftwareActivatedTags(), 0 ); - - // Hit counts disabled for perf reasons, see T169997 - /* - $tagStats = ChangeTags::tagUsageStatistics(); - $tagHitCounts = array_merge( $explicitlyDefinedTags, $softwareActivatedTags, $tagStats ); - - // Sort by hits - arsort( $tagHitCounts ); - */ - $tagHitCounts = array_merge( $explicitlyDefinedTags, $softwareActivatedTags ); - - // Build the list and data - $result = []; - foreach ( $tagHitCounts as $tagName => $hits ) { - if ( - // Only get active tags - isset( $explicitlyDefinedTags[ $tagName ] ) || - isset( $softwareActivatedTags[ $tagName ] ) - ) { - // Parse description - $desc = ChangeTags::tagLongDescriptionMessage( $tagName, $this->getContext() ); - - $result[] = [ - 'name' => $tagName, - 'label' => Sanitizer::stripAllTags( - ChangeTags::tagDescription( $tagName, $this->getContext() ) - ), - 'description' => $desc ? Sanitizer::stripAllTags( $desc->parse() ) : '', - 'cssClass' => Sanitizer::escapeClass( 'mw-tag-' . $tagName ), - 'hits' => $hits, - ]; - } - } - - // Instead of sorting by hit count (disabled, see above), sort by display name - usort( $result, function ( $a, $b ) { - return strcasecmp( $a['label'], $b['label'] ); - } ); - - return $result; - } - /** * @inheritDoc */ @@ -323,7 +241,6 @@ class SpecialRecentChanges extends ChangesListSpecialPage { $opts->add( 'categories', '' ); $opts->add( 'categories_any', false ); - $opts->add( 'tagfilter', '' ); return $opts; } @@ -540,8 +457,6 @@ class SpecialRecentChanges extends ChangesListSpecialPage { && $this->getUser()->getOption( 'shownumberswatching' ); $watcherCache = []; - $dbr = $this->getDB(); - $counter = 1; $list = ChangesList::newFromContext( $this->getContext(), $this->filterGroups ); $list->initChangesListRows( $rows ); @@ -636,7 +551,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage { ++$count; $addSubmit = ( $count === $extraOptsCount ) ? $submit : ''; - $out .= Xml::openElement( 'tr' ); + $out .= Xml::openElement( 'tr', [ 'class' => $name . 'Form' ] ); if ( is_array( $optionRow ) ) { $out .= Xml::tags( 'td', @@ -673,11 +588,11 @@ class SpecialRecentChanges extends ChangesListSpecialPage { $rcoptions = Xml::fieldset( $this->msg( 'recentchanges-legend' )->text(), $panelString, - [ 'class' => 'rcoptions' ] + [ 'class' => 'rcoptions cloptions' ] ); // Insert a placeholder for RCFilters - if ( $this->getUser()->getOption( 'rcenhancedfilters' ) ) { + if ( $this->isStructuredFilterUiEnabled() ) { $rcfilterContainer = Html::element( 'div', [ 'class' => 'rcfilters-container' ] @@ -720,7 +635,21 @@ class SpecialRecentChanges extends ChangesListSpecialPage { $message = $this->msg( 'recentchangestext' )->inContentLanguage(); if ( !$message->isDisabled() ) { - $content = $message->parse(); + // Parse the message in this weird ugly way to preserve the ability to include interlanguage + // links in it (T172461). In the future when T66969 is resolved, perhaps we can just use + // $message->parse() instead. This code is copied from Message::parseText(). + $parserOutput = MessageCache::singleton()->parse( + $message->plain(), + $this->getPageTitle(), + /*linestart*/true, + // Message class sets the interface flag to false when parsing in a language different than + // user language, and this is wiki content language + /*interface*/false, + $wgContLang + ); + $content = $parserOutput->getText(); + // Add only metadata here (including the language links), text is added below + $this->getOutput()->addParserOutputMetadata( $parserOutput ); $langAttributes = [ 'lang' => $wgContLang->getHtmlCode(), @@ -729,7 +658,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage { $topLinksAttributes = [ 'class' => 'mw-recentchanges-toplinks' ]; - if ( $this->getUser()->getOption( 'rcenhancedfilters' ) ) { + if ( $this->isStructuredFilterUiEnabled() ) { $contentTitle = Html::rawElement( 'div', [ 'class' => 'mw-recentchanges-toplinks-title' ], $this->msg( 'rcfilters-other-review-tools' )->parse() @@ -785,17 +714,6 @@ class SpecialRecentChanges extends ChangesListSpecialPage { return $extraOpts; } - /** - * Check whether the structured filter UI is enabled - * - * @return bool - */ - protected function isStructuredFilterUiEnabled() { - return $this->getUser()->getOption( - 'rcenhancedfilters' - ); - } - /** * Add page-specific modules. */ @@ -803,10 +721,6 @@ class SpecialRecentChanges extends ChangesListSpecialPage { parent::addModules(); $out = $this->getOutput(); $out->addModules( 'mediawiki.special.recentchanges' ); - if ( $this->isStructuredFilterUiEnabled() ) { - $out->addModules( 'mediawiki.rcfilters.filters.ui' ); - $out->addModuleStyles( 'mediawiki.rcfilters.filters.base.styles' ); - } } /** @@ -1030,7 +944,6 @@ class SpecialRecentChanges extends ChangesListSpecialPage { $filterGroups = $this->getFilterGroups(); - $context = $this->getContext(); foreach ( $filterGroups as $groupName => $group ) { if ( !$group->isPerGroupRequestParameter() ) { foreach ( $group->getFilters() as $key => $filter ) { @@ -1047,7 +960,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage { [ $key => 1 - $options[$key] ], $nondefaults ); $attribs = [ - 'class' => "$msg rcshowhideoption", + 'class' => "$msg rcshowhideoption clshowhideoption", 'data-filter-name' => $filter->getName(), ]; @@ -1091,4 +1004,12 @@ class SpecialRecentChanges extends ChangesListSpecialPage { protected function getCacheTTL() { return 60 * 5; } + + function getDefaultLimit() { + return $this->getUser()->getIntOption( 'rclimit' ); + } + + function getDefaultDays() { + return $this->getUser()->getIntOption( 'rcdays' ); + } } diff --git a/includes/specials/SpecialUpload.php b/includes/specials/SpecialUpload.php index 4cdc78f341..d0eb8e3742 100644 --- a/includes/specials/SpecialUpload.php +++ b/includes/specials/SpecialUpload.php @@ -1256,7 +1256,6 @@ class UploadForm extends HTMLForm { $out->addJsConfigVars( $scriptVars ); $out->addModules( [ - 'mediawiki.action.edit', // For support 'mediawiki.special.upload', // Extras for thumbnail and license preview. ] ); } diff --git a/includes/specials/SpecialWatchlist.php b/includes/specials/SpecialWatchlist.php index 1d76e36106..7049744224 100644 --- a/includes/specials/SpecialWatchlist.php +++ b/includes/specials/SpecialWatchlist.php @@ -32,6 +32,8 @@ use Wikimedia\Rdbms\IDatabase; * @ingroup SpecialPage */ class SpecialWatchlist extends ChangesListSpecialPage { + private $maxDays; + public function __construct( $page = 'Watchlist', $restriction = 'viewmywatchlist' ) { parent::__construct( $page, $restriction ); @@ -93,6 +95,26 @@ class SpecialWatchlist extends ChangesListSpecialPage { } parent::execute( $subpage ); + + if ( $this->isStructuredFilterUiEnabled() ) { + $output->addModuleStyles( [ 'mediawiki.rcfilters.highlightCircles.seenunseen.styles' ] ); + + $output->addJsConfigVars( 'wgStructuredChangeFiltersLiveUpdateSupported', false ); + $output->addJsConfigVars( + 'wgStructuredChangeFiltersSavedQueriesPreferenceName', + 'rcfilters-wl-saved-queries' + ); + $output->addJsConfigVars( + 'wgStructuredChangeFiltersEditWatchlistUrl', + SpecialPage::getTitleFor( 'EditWatchlist' )->getLocalURL() + ); + } + } + + public function isStructuredFilterUiEnabled() { + return parent::isStructuredFilterUiEnabled() + && ( $this->getConfig()->get( 'StructuredChangeFiltersOnWatchlist' ) + || $this->getRequest()->getBool( 'rcfilters' ) ); } /** @@ -126,6 +148,87 @@ class SpecialWatchlist extends ChangesListSpecialPage { protected function registerFilters() { parent::registerFilters(); + // legacy 'extended' filter + $this->registerFilterGroup( new ChangesListBooleanFilterGroup( [ + 'name' => 'extended-group', + 'filters' => [ + [ + 'name' => 'extended', + 'isReplacedInStructuredUi' => true, + 'activeValue' => false, + 'default' => $this->getUser()->getBoolOption( 'extendwatchlist' ), + 'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, + &$fields, &$conds, &$query_options, &$join_conds ) { + $nonRevisionTypes = [ RC_LOG ]; + Hooks::run( 'SpecialWatchlistGetNonRevisionTypes', [ &$nonRevisionTypes ] ); + if ( $nonRevisionTypes ) { + $conds[] = $dbr->makeList( + [ + 'rc_this_oldid=page_latest', + 'rc_type' => $nonRevisionTypes, + ], + LIST_OR + ); + } + }, + ] + ], + + ] ) ); + + if ( $this->isStructuredFilterUiEnabled() ) { + $this->getFilterGroup( 'lastRevision' ) + ->getFilter( 'hidepreviousrevisions' ) + ->setDefault( !$this->getUser()->getBoolOption( 'extendwatchlist' ) ); + } + + $this->registerFilterGroup( new ChangesListStringOptionsFilterGroup( [ + 'name' => 'watchlistactivity', + 'title' => 'rcfilters-filtergroup-watchlistactivity', + 'class' => ChangesListStringOptionsFilterGroup::class, + 'priority' => 3, + 'isFullCoverage' => true, + 'filters' => [ + [ + 'name' => 'unseen', + 'label' => 'rcfilters-filter-watchlistactivity-unseen-label', + 'description' => 'rcfilters-filter-watchlistactivity-unseen-description', + 'cssClassSuffix' => 'watchedunseen', + 'isRowApplicableCallable' => function ( $ctx, $rc ) { + $changeTs = $rc->getAttribute( 'rc_timestamp' ); + $lastVisitTs = $rc->getAttribute( 'wl_notificationtimestamp' ); + return $lastVisitTs !== null && $changeTs >= $lastVisitTs; + }, + ], + [ + 'name' => 'seen', + 'label' => 'rcfilters-filter-watchlistactivity-seen-label', + 'description' => 'rcfilters-filter-watchlistactivity-seen-description', + 'cssClassSuffix' => 'watchedseen', + 'isRowApplicableCallable' => function ( $ctx, $rc ) { + $changeTs = $rc->getAttribute( 'rc_timestamp' ); + $lastVisitTs = $rc->getAttribute( 'wl_notificationtimestamp' ); + return $lastVisitTs === null || $changeTs < $lastVisitTs; + } + ], + ], + 'default' => ChangesListStringOptionsFilterGroup::NONE, + 'queryCallable' => function ( $specialPageClassName, $context, $dbr, + &$tables, &$fields, &$conds, &$query_options, &$join_conds, $selectedValues ) { + if ( $selectedValues === [ 'seen' ] ) { + $conds[] = $dbr->makeList( [ + 'wl_notificationtimestamp IS NULL', + 'rc_timestamp < wl_notificationtimestamp' + ], LIST_OR ); + } elseif ( $selectedValues === [ 'unseen' ] ) { + $conds[] = $dbr->makeList( [ + 'wl_notificationtimestamp IS NOT NULL', + 'rc_timestamp >= wl_notificationtimestamp' + ], LIST_AND ); + } + } + ] ) ); + $user = $this->getUser(); $significance = $this->getFilterGroup( 'significance' ); @@ -171,13 +274,14 @@ class SpecialWatchlist extends ChangesListSpecialPage { $user = $this->getUser(); $opts->add( 'days', $user->getOption( 'watchlistdays' ), FormOptions::FLOAT ); - $opts->add( 'extended', $user->getBoolOption( 'extendwatchlist' ) ); + $opts->add( 'limit', $user->getIntOption( 'wllimit' ), FormOptions::INT ); return $opts; } public function validateOptions( FormOptions $opts ) { $opts->validateBounds( 'days', 0, $this->maxDays ); + $opts->validateIntBounds( 'limit', 0, 5000 ); parent::validateOptions( $opts ); } @@ -233,8 +337,11 @@ class SpecialWatchlist extends ChangesListSpecialPage { // unchecked boxes. foreach ( $this->filterGroups as $filterGroup ) { if ( $filterGroup instanceof ChangesListBooleanFilterGroup ) { + /** @var ChangesListBooleanFilter $filter */ foreach ( $filterGroup->getFilters() as $filter ) { - $allBooleansFalse[$filter->getName()] = false; + if ( $filter->displaysOnUnstructuredUi() ) { + $allBooleansFalse[$filter->getName()] = false; + } } } } @@ -276,32 +383,9 @@ class SpecialWatchlist extends ChangesListSpecialPage { $dbr = $this->getDB(); $user = $this->getUser(); - # Toggle watchlist content (all recent edits or just the latest) - if ( $opts['extended'] ) { - $usePage = false; - } else { - # Top log Ids for a page are not stored - $nonRevisionTypes = [ RC_LOG ]; - Hooks::run( 'SpecialWatchlistGetNonRevisionTypes', [ &$nonRevisionTypes ] ); - if ( $nonRevisionTypes ) { - $conds[] = $dbr->makeList( - [ - 'rc_this_oldid=page_latest', - 'rc_type' => $nonRevisionTypes, - ], - LIST_OR - ); - } - $usePage = true; - } - $tables = array_merge( [ 'recentchanges', 'watchlist' ], $tables ); $fields = array_merge( RecentChange::selectFields(), $fields ); - $query_options = array_merge( [ - 'ORDER BY' => 'rc_timestamp DESC', - 'LIMIT' => $user->getIntOption( 'wllimit' ) - ], $query_options ); $join_conds = array_merge( [ 'watchlist' => [ @@ -316,18 +400,11 @@ class SpecialWatchlist extends ChangesListSpecialPage { $join_conds ); - if ( $this->getConfig()->get( 'ShowUpdatedMarker' ) ) { - $fields[] = 'wl_notificationtimestamp'; - } + $tables[] = 'page'; + $fields[] = 'page_latest'; + $join_conds['page'] = [ 'LEFT JOIN', 'rc_cur_id=page_id' ]; - $rollbacker = $user->isAllowed( 'rollback' ); - if ( $usePage || $rollbacker ) { - $tables[] = 'page'; - $join_conds['page'] = [ 'LEFT JOIN', 'rc_cur_id=page_id' ]; - if ( $rollbacker ) { - $fields[] = 'page_latest'; - } - } + $fields[] = 'wl_notificationtimestamp'; // Log entries with DELETED_ACTION must not show up unless the user has // the necessary rights. @@ -345,17 +422,39 @@ class SpecialWatchlist extends ChangesListSpecialPage { ], LIST_OR ); } + $tagFilter = $opts['tagfilter'] ? explode( '|', $opts['tagfilter'] ) : []; ChangeTags::modifyDisplayQuery( $tables, $fields, $conds, $join_conds, $query_options, - '' + $tagFilter ); $this->runMainQueryHook( $tables, $fields, $conds, $query_options, $join_conds, $opts ); + if ( $this->areFiltersInConflict() ) { + return false; + } + + $orderByAndLimit = [ + 'ORDER BY' => 'rc_timestamp DESC', + 'LIMIT' => $opts['limit'] + ]; + if ( in_array( 'DISTINCT', $query_options ) ) { + // ChangeTags::modifyDisplayQuery() adds DISTINCT when filtering on multiple tags. + // In order to prevent DISTINCT from causing query performance problems, + // we have to GROUP BY the primary key. This in turn requires us to add + // the primary key to the end of the ORDER BY, and the old ORDER BY to the + // start of the GROUP BY + $orderByAndLimit['ORDER BY'] = 'rc_timestamp DESC, rc_id DESC'; + $orderByAndLimit['GROUP BY'] = 'rc_timestamp, rc_id'; + } + // array_merge() is used intentionally here so that hooks can, should + // they so desire, override the ORDER BY / LIMIT condition(s) + $query_options = array_merge( $orderByAndLimit, $query_options ); + return $dbr->select( $tables, $fields, @@ -458,6 +557,11 @@ class SpecialWatchlist extends ChangesListSpecialPage { } $s = $list->beginRecentChangesList(); + + if ( $this->isStructuredFilterUiEnabled() ) { + $s .= $this->makeLegend(); + } + $userShowHiddenCats = $this->getUser()->getBoolOption( 'showhiddencats' ); $counter = 1; foreach ( $rows as $obj ) { @@ -518,6 +622,24 @@ class SpecialWatchlist extends ChangesListSpecialPage { $this->setTopText( $opts ); + $form = ''; + + $form .= Xml::openElement( 'form', [ + 'method' => 'get', + 'action' => wfScript(), + 'id' => 'mw-watchlist-form' + ] ); + $form .= Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() ); + $form .= Xml::fieldset( + $this->msg( 'watchlist-options' )->text(), + false, + [ 'id' => 'mw-watchlist-options', 'class' => 'cloptions' ] + ); + + if ( !$this->isStructuredFilterUiEnabled() ) { + $form .= $this->makeLegend(); + } + $lang = $this->getLanguage(); if ( $opts['days'] > 0 ) { $days = $opts['days']; @@ -525,16 +647,23 @@ class SpecialWatchlist extends ChangesListSpecialPage { $days = $this->maxDays; } $timestamp = wfTimestampNow(); - $wlInfo = $this->msg( 'wlnote' )->numParams( $numRows, round( $days * 24 ) )->params( - $lang->userDate( $timestamp, $user ), $lang->userTime( $timestamp, $user ) - )->parse() . "
\n"; + $wlInfo = Html::rawElement( + 'span', + [ 'class' => 'wlinfo' ], + $this->msg( 'wlnote' )->numParams( $numRows, round( $days * 24 ) )->params( + $lang->userDate( $timestamp, $user ), $lang->userTime( $timestamp, $user ) + )->parse() + ) . "
\n"; $nondefaults = $opts->getChangedValues(); - $cutofflinks = $this->msg( 'wlshowtime' ) . ' ' . $this->cutoffselector( $opts ); + $cutofflinks = Html::rawElement( + 'span', + [ 'class' => 'cldays cloption' ], + $this->msg( 'wlshowtime' ) . ' ' . $this->cutoffselector( $opts ) + ); # Spit out some control panel links $links = []; - $context = $this->getContext(); $namesOfDisplayedFilters = []; foreach ( $this->getFilterGroups() as $groupName => $group ) { if ( !$group->isPerGroupRequestParameter() ) { @@ -545,7 +674,8 @@ class SpecialWatchlist extends ChangesListSpecialPage { $nondefaults, $filter->getShowHide(), $filterName, - $opts[$filterName] + $opts[$filterName], + $filter->isFeatureAvailableOnStructuredUi( $this ) ); } } @@ -562,17 +692,19 @@ class SpecialWatchlist extends ChangesListSpecialPage { unset( $hiddenFields[$filterName] ); } - # Create output - $form = ''; - # Namespace filter and put the whole form together. $form .= $wlInfo; $form .= $cutofflinks; - $form .= $this->msg( 'watchlist-hide' ) . + $form .= Html::rawElement( + 'span', + [ 'class' => 'clshowhide' ], + $this->msg( 'watchlist-hide' ) . $this->msg( 'colon-separator' )->escaped() . - implode( ' ', $links ); + implode( ' ', $links ) + ); $form .= "\n
\n"; - $form .= Html::namespaceSelector( + + $namespaceForm = Html::namespaceSelector( [ 'selected' => $opts['namespace'], 'all' => '', @@ -583,27 +715,66 @@ class SpecialWatchlist extends ChangesListSpecialPage { 'class' => 'namespaceselector', ] ) . "\n"; - $form .= '' . Xml::checkLabel( + $namespaceForm .= '' . Xml::checkLabel( $this->msg( 'invert' )->text(), 'invert', 'nsinvert', $opts['invert'], [ 'title' => $this->msg( 'tooltip-invert' )->text() ] ) . "\n"; - $form .= '' . Xml::checkLabel( + $namespaceForm .= '' . Xml::checkLabel( $this->msg( 'namespace_association' )->text(), 'associated', 'nsassociated', $opts['associated'], [ 'title' => $this->msg( 'tooltip-namespace_association' )->text() ] ) . "\n"; - $form .= Xml::submitButton( $this->msg( 'watchlist-submit' )->text() ) . "\n"; + $form .= Html::rawElement( + 'span', + [ 'class' => 'namespaceForm cloption' ], + $namespaceForm + ); + + $form .= Xml::submitButton( + $this->msg( 'watchlist-submit' )->text(), + [ 'class' => 'cloption-submit' ] + ) . "\n"; foreach ( $hiddenFields as $key => $value ) { $form .= Html::hidden( $key, $value ) . "\n"; } $form .= Xml::closeElement( 'fieldset' ) . "\n"; $form .= Xml::closeElement( 'form' ) . "\n"; - $this->getOutput()->addHTML( $form ); + + // Insert a placeholder for RCFilters + if ( $this->isStructuredFilterUiEnabled() ) { + $rcfilterContainer = Html::element( + 'div', + [ 'class' => 'rcfilters-container' ] + ); + + $loadingContainer = Html::rawElement( + 'div', + [ 'class' => 'rcfilters-spinner' ], + Html::element( + 'div', + [ 'class' => 'rcfilters-spinner-bounce' ] + ) + ); + + // Wrap both with rcfilters-head + $this->getOutput()->addHTML( + Html::rawElement( + 'div', + [ 'class' => 'rcfilters-head' ], + $rcfilterContainer . $form + ) + ); + + // Add spinner + $this->getOutput()->addHTML( $loadingContainer ); + } else { + $this->getOutput()->addHTML( $form ); + } $this->setBottomText( $opts ); } @@ -655,28 +826,36 @@ class SpecialWatchlist extends ChangesListSpecialPage { function setTopText( FormOptions $opts ) { $nondefaults = $opts->getChangedValues(); - $form = ""; + $form = ''; $user = $this->getUser(); $numItems = $this->countItems(); $showUpdatedMarker = $this->getConfig()->get( 'ShowUpdatedMarker' ); // Show watchlist header - $form .= "

"; + $watchlistHeader = ''; if ( $numItems == 0 ) { - $form .= $this->msg( 'nowatchlist' )->parse() . "\n"; + $watchlistHeader = $this->msg( 'nowatchlist' )->parse(); } else { - $form .= $this->msg( 'watchlist-details' )->numParams( $numItems )->parse() . "\n"; + $watchlistHeader .= $this->msg( 'watchlist-details' )->numParams( $numItems )->parse() . "\n"; if ( $this->getConfig()->get( 'EnotifWatchlist' ) && $user->getOption( 'enotifwatchlistpages' ) ) { - $form .= $this->msg( 'wlheader-enotif' )->parse() . "\n"; + $watchlistHeader .= $this->msg( 'wlheader-enotif' )->parse() . "\n"; } if ( $showUpdatedMarker ) { - $form .= $this->msg( 'wlheader-showupdated' )->parse() . "\n"; + $watchlistHeader .= $this->msg( + $this->isStructuredFilterUiEnabled() ? + 'rcfilters-watchlist-showupdated' : + 'wlheader-showupdated' + )->parse() . "\n"; } } - $form .= "

"; + $form .= Html::rawElement( + 'div', + [ 'class' => 'watchlistDetails' ], + $watchlistHeader + ); if ( $numItems > 0 && $showUpdatedMarker ) { $form .= Xml::openElement( 'form', [ 'method' => 'post', @@ -692,32 +871,27 @@ class SpecialWatchlist extends ChangesListSpecialPage { $form .= Xml::closeElement( 'form' ) . "\n"; } - $form .= Xml::openElement( 'form', [ - 'method' => 'get', - 'action' => wfScript(), - 'id' => 'mw-watchlist-form' - ] ); - $form .= Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() ); - $form .= Xml::fieldset( - $this->msg( 'watchlist-options' )->text(), - false, - [ 'id' => 'mw-watchlist-options' ] - ); - - $form .= $this->makeLegend(); - $this->getOutput()->addHTML( $form ); } - protected function showHideCheck( $options, $message, $name, $value ) { + protected function showHideCheck( $options, $message, $name, $value, $inStructuredUi ) { $options[$name] = 1 - (int)$value; - return '' . Xml::checkLabel( - $this->msg( $message, '' )->text(), - $name, - $name, - (int)$value - ) . ''; + $attribs = [ 'class' => 'mw-input-with-label clshowhideoption cloption' ]; + if ( $inStructuredUi ) { + $attribs[ 'data-feature-in-structured-ui' ] = true; + } + + return Html::rawElement( + 'span', + $attribs, + Xml::checkLabel( + $this->msg( $message, '' )->text(), + $name, + $name, + (int)$value + ) + ); } /** @@ -732,4 +906,12 @@ class SpecialWatchlist extends ChangesListSpecialPage { $count = $store->countWatchedItems( $this->getUser() ); return floor( $count / 2 ); } + + function getDefaultLimit() { + return $this->getUser()->getIntOption( 'wllimit' ); + } + + function getDefaultDays() { + return $this->getUser()->getIntOption( 'watchlistdays' ); + } } diff --git a/includes/specials/pagers/BlockListPager.php b/includes/specials/pagers/BlockListPager.php index 51e446d593..924fd06cf0 100644 --- a/includes/specials/pagers/BlockListPager.php +++ b/includes/specials/pagers/BlockListPager.php @@ -79,7 +79,7 @@ class BlockListPager extends TablePager { } } - /** @var $row object */ + /** @var object $row */ $row = $this->mCurrentRow; $language = $this->getLanguage(); @@ -173,6 +173,7 @@ class BlockListPager extends TablePager { break; case 'ipb_reason': + $value = CommentStore::newKey( 'ipb_reason' )->getComment( $row )->text; $formatted = Linker::formatComment( $value ); break; @@ -208,8 +209,10 @@ class BlockListPager extends TablePager { } function getQueryInfo() { + $commentQuery = CommentStore::newKey( 'ipb_reason' )->getJoin(); + $info = [ - 'tables' => [ 'ipblocks', 'user' ], + 'tables' => [ 'ipblocks', 'user' ] + $commentQuery['tables'], 'fields' => [ 'ipb_id', 'ipb_address', @@ -217,7 +220,6 @@ class BlockListPager extends TablePager { 'ipb_by', 'ipb_by_text', 'by_user_name' => 'user_name', - 'ipb_reason', 'ipb_timestamp', 'ipb_auto', 'ipb_anon_only', @@ -229,9 +231,9 @@ class BlockListPager extends TablePager { 'ipb_deleted', 'ipb_block_email', 'ipb_allow_usertalk', - ], + ] + $commentQuery['fields'], 'conds' => $this->conds, - 'join_conds' => [ 'user' => [ 'LEFT JOIN', 'user_id = ipb_by' ] ] + 'join_conds' => [ 'user' => [ 'LEFT JOIN', 'user_id = ipb_by' ] ] + $commentQuery['joins'] ]; # Filter out any expired blocks diff --git a/includes/specials/pagers/ContribsPager.php b/includes/specials/pagers/ContribsPager.php index d7819c42b3..7d0a9df187 100644 --- a/includes/specials/pagers/ContribsPager.php +++ b/includes/specials/pagers/ContribsPager.php @@ -87,6 +87,10 @@ class ContribsPager extends RangeChronologicalPager { } $this->getDateRangeCond( $startTimestamp, $endTimestamp ); + // This property on IndexPager is set by $this->getIndexField() in parent::__construct(). + // We need to reassign it here so that it is used when the actual query is ran. + $this->mIndexField = $this->getIndexField(); + // Most of this code will use the 'contributions' group DB, which can map to replica DBs // with extra user based indexes or partioning by user. The additional metadata // queries should use a regular replica DB since the lookup pattern is not all by user. @@ -207,6 +211,12 @@ class ContribsPager extends RangeChronologicalPager { 'join_conds' => $join_cond ]; + // For IPv6, we use ipc_rev_timestamp on ip_changes as the index field, + // which will be referenced when parsing the results of a query. + if ( self::isQueryableRange( $this->target ) ) { + $queryInfo['fields'][] = 'ipc_rev_timestamp'; + } + ChangeTags::modifyDisplayQuery( $queryInfo['tables'], $queryInfo['fields'], @@ -257,8 +267,18 @@ class ContribsPager extends RangeChronologicalPager { $condition['rev_user'] = $uid; $index = 'user_timestamp'; } else { - $condition['rev_user_text'] = $this->target; - $index = 'usertext_timestamp'; + $ipRangeConds = $this->getIpRangeConds( $this->mDb, $this->target ); + + if ( $ipRangeConds ) { + $tables[] = 'ip_changes'; + $join_conds['ip_changes'] = [ + 'LEFT JOIN', [ 'ipc_rev_id = rev_id' ] + ]; + $condition[] = $ipRangeConds; + } else { + $condition['rev_user_text'] = $this->target; + $index = 'usertext_timestamp'; + } } } @@ -305,8 +325,57 @@ class ContribsPager extends RangeChronologicalPager { return []; } - function getIndexField() { - return 'rev_timestamp'; + /** + * Get SQL conditions for an IP range, if applicable + * @param IDatabase $db + * @param string $ip The IP address or CIDR + * @return string|false SQL for valid IP ranges, false if invalid + */ + private function getIpRangeConds( $db, $ip ) { + // First make sure it is a valid range and they are not outside the CIDR limit + if ( !$this->isQueryableRange( $ip ) ) { + return false; + } + + list( $start, $end ) = IP::parseRange( $ip ); + + return 'ipc_hex BETWEEN ' . $db->addQuotes( $start ) . ' AND ' . $db->addQuotes( $end ); + } + + /** + * Is the given IP a range and within the CIDR limit? + * + * @param string $ipRange + * @return bool True if it is valid + * @since 1.30 + */ + public function isQueryableRange( $ipRange ) { + $limits = $this->getConfig()->get( 'RangeContributionsCIDRLimit' ); + + $bits = IP::parseCIDR( $ipRange )[1]; + if ( + ( $bits === false ) || + ( IP::isIPv4( $ipRange ) && $bits < $limits['IPv4'] ) || + ( IP::isIPv6( $ipRange ) && $bits < $limits['IPv6'] ) + ) { + return false; + } + + return true; + } + + /** + * Override of getIndexField() in IndexPager. + * For IP ranges, it's faster to use the replicated ipc_rev_timestamp + * on the `ip_changes` table than the rev_timestamp on the `revision` table. + * @return string Name of field + */ + public function getIndexField() { + if ( self::isQueryableRange( $this->target ) ) { + return 'ipc_rev_timestamp'; + } else { + return 'rev_timestamp'; + } } function doBatchLookups() { @@ -400,6 +469,7 @@ class ContribsPager extends RangeChronologicalPager { # Mark current revisions $topmarktext = ''; $user = $this->getUser(); + if ( $row->rev_id === $row->page_latest ) { $topmarktext .= '' . $this->messages['uctop'] . ''; $classes[] = 'mw-contributions-current'; @@ -473,8 +543,10 @@ class ContribsPager extends RangeChronologicalPager { # Show user names for /newbies as there may be different users. # Note that only unprivileged users have rows with hidden user names excluded. + # When querying for an IP range, we want to always show user and user talk links. $userlink = ''; - if ( $this->contribs == 'newbie' && !$rev->isDeleted( Revision::DELETED_USER ) ) { + if ( ( $this->contribs == 'newbie' && !$rev->isDeleted( Revision::DELETED_USER ) ) + || self::isQueryableRange( $this->target ) ) { $userlink = ' . . ' . $lang->getDirMark() . Linker::userLink( $rev->getUser(), $rev->getUserText() ); $userlink .= ' ' . $this->msg( 'parentheses' )->rawParams( diff --git a/includes/specials/pagers/DeletedContribsPager.php b/includes/specials/pagers/DeletedContribsPager.php index 43d7ad40c7..38a332e6a1 100644 --- a/includes/specials/pagers/DeletedContribsPager.php +++ b/includes/specials/pagers/DeletedContribsPager.php @@ -69,14 +69,17 @@ class DeletedContribsPager extends IndexPager { ' != ' . Revision::SUPPRESSED_USER; } + $commentQuery = CommentStore::newKey( 'ar_comment' )->getJoin(); + return [ - 'tables' => [ 'archive' ], + 'tables' => [ 'archive' ] + $commentQuery['tables'], 'fields' => [ - 'ar_rev_id', 'ar_namespace', 'ar_title', 'ar_timestamp', 'ar_comment', + 'ar_rev_id', 'ar_namespace', 'ar_title', 'ar_timestamp', 'ar_minor_edit', 'ar_user', 'ar_user_text', 'ar_deleted' - ], + ] + $commentQuery['fields'], 'conds' => $conds, - 'options' => [ 'USE INDEX' => $index ] + 'options' => [ 'USE INDEX' => [ 'archive' => $index ] ], + 'join_conds' => $commentQuery['joins'], ]; } @@ -253,7 +256,7 @@ class DeletedContribsPager extends IndexPager { $rev = new Revision( [ 'title' => $page, 'id' => $row->ar_rev_id, - 'comment' => $row->ar_comment, + 'comment' => CommentStore::newKey( 'ar_comment' )->getComment( $row )->text, 'user' => $row->ar_user, 'user_text' => $row->ar_user_text, 'timestamp' => $row->ar_timestamp, diff --git a/includes/specials/pagers/ImageListPager.php b/includes/specials/pagers/ImageListPager.php index 47b059b765..813d1d44c0 100644 --- a/includes/specials/pagers/ImageListPager.php +++ b/includes/specials/pagers/ImageListPager.php @@ -244,7 +244,9 @@ class ImageListPager extends TablePager { $prefix = $table === 'oldimage' ? 'oi' : 'img'; $tables = [ $table ]; - $fields = array_keys( $this->getFieldNames() ); + $fields = $this->getFieldNames(); + unset( $fields['img_description'] ); + $fields = array_keys( $fields ); if ( $table === 'oldimage' ) { foreach ( $fields as $id => &$field ) { @@ -264,6 +266,13 @@ class ImageListPager extends TablePager { $options = $join_conds = []; + # Description field + $commentQuery = CommentStore::newKey( $prefix . '_description' )->getJoin(); + $tables += $commentQuery['tables']; + $fields += $commentQuery['fields']; + $join_conds += $commentQuery['joins']; + $fields['description_field'] = "'{$prefix}_description'"; + # Depends on $wgMiserMode # Will also not happen if mShowAll is true. if ( isset( $this->mFieldNames['count'] ) ) { @@ -497,6 +506,8 @@ class ImageListPager extends TablePager { case 'img_size': return htmlspecialchars( $this->getLanguage()->formatSize( $value ) ); case 'img_description': + $field = $this->mCurrentRow->description_field; + $value = CommentStore::newKey( $field )->getComment( $this->mCurrentRow )->text; return Linker::formatComment( $value ); case 'count': return $this->getLanguage()->formatNum( intval( $value ) + 1 ); diff --git a/includes/specials/pagers/NewPagesPager.php b/includes/specials/pagers/NewPagesPager.php index dafd244ee5..53362d9cbc 100644 --- a/includes/specials/pagers/NewPagesPager.php +++ b/includes/specials/pagers/NewPagesPager.php @@ -90,15 +90,17 @@ class NewPagesPager extends ReverseChronologicalPager { $conds['page_is_redirect'] = 0; } + $commentQuery = CommentStore::newKey( 'rc_comment' )->getJoin(); + // Allow changes to the New Pages query - $tables = [ 'recentchanges', 'page' ]; + $tables = [ 'recentchanges', 'page' ] + $commentQuery['tables']; $fields = [ 'rc_namespace', 'rc_title', 'rc_cur_id', 'rc_user', 'rc_user_text', - 'rc_comment', 'rc_timestamp', 'rc_patrolled', 'rc_id', 'rc_deleted', + 'rc_timestamp', 'rc_patrolled', 'rc_id', 'rc_deleted', 'length' => 'page_len', 'rev_id' => 'page_latest', 'rc_this_oldid', 'page_namespace', 'page_title' - ]; - $join_conds = [ 'page' => [ 'INNER JOIN', 'page_id=rc_cur_id' ] ]; + ] + $commentQuery['fields']; + $join_conds = [ 'page' => [ 'INNER JOIN', 'page_id=rc_cur_id' ] ] + $commentQuery['joins']; // Avoid PHP 7.1 warning from passing $this by reference $pager = $this; diff --git a/includes/specials/pagers/ProtectedPagesPager.php b/includes/specials/pagers/ProtectedPagesPager.php index 823b5da403..1587abc0c7 100644 --- a/includes/specials/pagers/ProtectedPagesPager.php +++ b/includes/specials/pagers/ProtectedPagesPager.php @@ -120,7 +120,7 @@ class ProtectedPagesPager extends TablePager { * @throws MWException */ function formatValue( $field, $value ) { - /** @var $row object */ + /** @var object $row */ $row = $this->mCurrentRow; switch ( $field ) { @@ -236,6 +236,7 @@ class ProtectedPagesPager extends TablePager { LogPage::DELETED_COMMENT, $this->getUser() ) ) { + $value = CommentStore::newKey( 'log_comment' )->getComment( $row )->text; $formatted = Linker::formatComment( $value !== null ? $value : '' ); } else { $formatted = $this->msg( 'rev-deleted-comment' )->escaped(); @@ -284,8 +285,10 @@ class ProtectedPagesPager extends TablePager { $conds[] = 'page_namespace=' . $this->mDb->addQuotes( $this->namespace ); } + $commentQuery = CommentStore::newKey( 'log_comment' )->getJoin(); + return [ - 'tables' => [ 'page', 'page_restrictions', 'log_search', 'logging' ], + 'tables' => [ 'page', 'page_restrictions', 'log_search', 'logging' ] + $commentQuery['tables'], 'fields' => [ 'pr_id', 'page_namespace', @@ -297,9 +300,8 @@ class ProtectedPagesPager extends TablePager { 'pr_cascade', 'log_timestamp', 'log_user', - 'log_comment', 'log_deleted', - ], + ] + $commentQuery['fields'], 'conds' => $conds, 'join_conds' => [ 'log_search' => [ @@ -312,7 +314,7 @@ class ProtectedPagesPager extends TablePager { 'ls_log_id = log_id' ] ] - ] + ] + $commentQuery['joins'] ]; } diff --git a/includes/tidy/Balancer.php b/includes/tidy/Balancer.php index b29a3afbd4..947a572480 100644 --- a/includes/tidy/Balancer.php +++ b/includes/tidy/Balancer.php @@ -1528,7 +1528,7 @@ class BalanceActiveFormattingElements { /** * Determine whether an element is in the list of formatting elements. * @param BalanceElement $elt - * @return boolean + * @return bool */ public function isInList( BalanceElement $elt ) { return $this->head === $elt || $elt->prevAFE; diff --git a/includes/tidy/RemexCompatMunger.php b/includes/tidy/RemexCompatMunger.php index a797398d2e..73bc5f8493 100644 --- a/includes/tidy/RemexCompatMunger.php +++ b/includes/tidy/RemexCompatMunger.php @@ -129,7 +129,7 @@ class RemexCompatMunger implements TreeHandler { * Insert a p-wrapper * * @param SerializerNode $parent - * @param integer $sourceStart + * @param int $sourceStart * @return SerializerNode */ private function insertPWrapper( SerializerNode $parent, $sourceStart ) { @@ -220,12 +220,12 @@ class RemexCompatMunger implements TreeHandler { * FIXME: fostering ($preposition == BEFORE) is mostly done by inserting as * normal, the full algorithm is not followed. * - * @param integer $preposition + * @param int $preposition * @param Element|SerializerNode|null $refElement * @param Element $element * @param bool $void - * @param integer $sourceStart - * @param integer $sourceLength + * @param int $sourceStart + * @param int $sourceLength */ public function insertElement( $preposition, $refElement, Element $element, $void, $sourceStart, $sourceLength @@ -313,7 +313,7 @@ class RemexCompatMunger implements TreeHandler { * * @param SerializerNode $parentNode * @param bool $inline - * @param integer $pos The source position + * @param int $pos The source position * @return SerializerNode */ private function splitTagStack( SerializerNode $parentNode, $inline, $pos ) { diff --git a/includes/upload/UploadBase.php b/includes/upload/UploadBase.php index 2ee40a886c..da3f9f82ac 100644 --- a/includes/upload/UploadBase.php +++ b/includes/upload/UploadBase.php @@ -247,7 +247,7 @@ abstract class UploadBase { /** * @param string $tempPath File system path to temporary file containing the upload - * @param integer $fileSize + * @param int $fileSize */ protected function setTempFile( $tempPath, $fileSize = null ) { $this->mTempPath = $tempPath; diff --git a/includes/upload/UploadFromUrl.php b/includes/upload/UploadFromUrl.php index 7d697a1902..f5367bb64f 100644 --- a/includes/upload/UploadFromUrl.php +++ b/includes/upload/UploadFromUrl.php @@ -287,7 +287,7 @@ class UploadFromUrl extends UploadBase { wfDebugLog( 'fileupload', $status ); if ( $status->isOK() ) { - wfDebugLog( 'fileupload', 'Download by URL completed successfuly.' ); + wfDebugLog( 'fileupload', 'Download by URL completed successfully.' ); } else { wfDebugLog( 'fileupload', diff --git a/includes/upload/UploadStash.php b/includes/upload/UploadStash.php index 48477f8faa..755f9fdf7b 100644 --- a/includes/upload/UploadStash.php +++ b/includes/upload/UploadStash.php @@ -290,7 +290,6 @@ class UploadStash { } $this->fileMetadata[$key] = [ - 'us_id' => $dbw->nextSequenceValue( 'uploadstash_us_id_seq' ), 'us_user' => $this->userId, 'us_key' => $key, 'us_orig_path' => $path, diff --git a/includes/user/User.php b/includes/user/User.php index 71a427298e..0c39610b24 100644 --- a/includes/user/User.php +++ b/includes/user/User.php @@ -302,7 +302,7 @@ class User implements IDBAccessObject { /** @var Block */ private $mBlockedFromCreateAccount = false; - /** @var integer User::READ_* constant bitfield used to load data */ + /** @var int User::READ_* constant bitfield used to load data */ protected $queryFlagsUsed = self::READ_NORMAL; public static $idCacheByName = []; @@ -357,7 +357,7 @@ class User implements IDBAccessObject { /** * Load the user table data for this object from the source given by mFrom. * - * @param integer $flags User::READ_* constant bitfield + * @param int $flags User::READ_* constant bitfield */ public function load( $flags = self::READ_NORMAL ) { global $wgFullyInitialised; @@ -419,7 +419,7 @@ class User implements IDBAccessObject { /** * Load user table data, given mId has already been set. - * @param integer $flags User::READ_* constant bitfield + * @param int $flags User::READ_* constant bitfield * @return bool False if the ID does not exist, true otherwise */ public function loadFromId( $flags = self::READ_NORMAL ) { @@ -450,7 +450,7 @@ class User implements IDBAccessObject { /** * @since 1.27 * @param string $wikiId - * @param integer $userId + * @param int $userId */ public static function purge( $wikiId, $userId ) { $cache = ObjectCache::getMainWANInstance(); @@ -759,7 +759,7 @@ class User implements IDBAccessObject { /** * Get database id given a user name * @param string $name Username - * @param integer $flags User::READ_* constant bitfield + * @param int $flags User::READ_* constant bitfield * @return int|null The corresponding user's ID, or null if user is nonexistent */ public static function idFromName( $name, $flags = self::READ_NORMAL ) { @@ -827,6 +827,16 @@ class User implements IDBAccessObject { || IP::isIPv6( $name ); } + /** + * Is the user an IP range? + * + * @since 1.30 + * @return bool + */ + public function isIPRange() { + return IP::isValidRange( $this->mName ); + } + /** * Is the input a valid username? * @@ -1252,7 +1262,7 @@ class User implements IDBAccessObject { * Load user and user_group data from the database. * $this->mId must be set, this is how the user is identified. * - * @param integer $flags User::READ_* constant bitfield + * @param int $flags User::READ_* constant bitfield * @return bool True if the user exists, false if the user is anonymous */ public function loadFromDatabase( $flags = self::READ_LATEST ) { @@ -4109,12 +4119,10 @@ class User implements IDBAccessObject { unset( $params['options'] ); } $dbw = wfGetDB( DB_MASTER ); - $seqVal = $dbw->nextSequenceValue( 'user_user_id_seq' ); $noPass = PasswordFactory::newInvalidPassword()->toString(); $fields = [ - 'user_id' => $seqVal, 'user_name' => $name, 'user_password' => $noPass, 'user_newpassword' => $noPass, @@ -4179,10 +4187,8 @@ class User implements IDBAccessObject { $noPass = PasswordFactory::newInvalidPassword()->toString(); $dbw = wfGetDB( DB_MASTER ); - $seqVal = $dbw->nextSequenceValue( 'user_user_id_seq' ); $dbw->insert( 'user', [ - 'user_id' => $seqVal, 'user_name' => $this->mName, 'user_password' => $noPass, 'user_newpassword' => $noPass, diff --git a/includes/utils/BatchRowIterator.php b/includes/utils/BatchRowIterator.php index cab6a3d6f8..60720c87e3 100644 --- a/includes/utils/BatchRowIterator.php +++ b/includes/utils/BatchRowIterator.php @@ -44,7 +44,7 @@ class BatchRowIterator implements RecursiveIterator { protected $primaryKey; /** - * @var integer $batchSize The number of rows to fetch per iteration + * @var int $batchSize The number of rows to fetch per iteration */ protected $batchSize; @@ -76,7 +76,7 @@ class BatchRowIterator implements RecursiveIterator { private $current = []; /** - * @var integer key 0-indexed number of pages fetched since self::reset() + * @var int key 0-indexed number of pages fetched since self::reset() */ private $key; @@ -89,7 +89,7 @@ class BatchRowIterator implements RecursiveIterator { * @param IDatabase $db The database to read from * @param string|array $table The name or names of the table to read from * @param string|array $primaryKey The name or names of the primary key columns - * @param integer $batchSize The number of rows to fetch per iteration + * @param int $batchSize The number of rows to fetch per iteration * @throws InvalidArgumentException */ public function __construct( IDatabase $db, $table, $primaryKey, $batchSize ) { @@ -167,7 +167,7 @@ class BatchRowIterator implements RecursiveIterator { } /** - * @return integer 0-indexed count of the page number fetched + * @return int 0-indexed count of the page number fetched */ public function key() { return $this->key; diff --git a/includes/utils/UIDGenerator.php b/includes/utils/UIDGenerator.php index dd9f2d9f61..736109b49a 100644 --- a/includes/utils/UIDGenerator.php +++ b/includes/utils/UIDGenerator.php @@ -542,7 +542,7 @@ class UIDGenerator { /** * @param array $time Result of UIDGenerator::millitime() - * @param integer $delta Number of intervals to add on to the timestamp + * @param int $delta Number of intervals to add on to the timestamp * @return string 60 bits of "100ns intervals since 15 October 1582" (rolls over in 3400) * @throws RuntimeException */ diff --git a/includes/widget/SearchInputWidget.php b/includes/widget/SearchInputWidget.php index 90792fc195..773c291dfc 100644 --- a/includes/widget/SearchInputWidget.php +++ b/includes/widget/SearchInputWidget.php @@ -22,7 +22,7 @@ class SearchInputWidget extends TitleInputWidget { * @param array $config Configuration options * @param int|null $config['pushPending'] Whether the input should be visually marked as * "pending", while requesting suggestions (default: false) - * @param boolean|null $config['performSearchOnClick'] If true, the script will start a search + * @param bool|null $config['performSearchOnClick'] If true, the script will start a search * whenever a user hits a suggestion. If false, the text of the suggestion is inserted into the * text field only (default: true) * @param string $config['dataLocation'] Where the search input field will be diff --git a/includes/widget/SelectWithInputWidget.php b/includes/widget/SelectWithInputWidget.php index 8faae82251..d2dda75e54 100644 --- a/includes/widget/SelectWithInputWidget.php +++ b/includes/widget/SelectWithInputWidget.php @@ -24,7 +24,7 @@ class SelectWithInputWidget extends \OOUI\Widget { * @param array $config Configuration options * @param array $config['textinput'] Configuration for the TextInputWidget * @param array $config['dropdowninput'] Configuration for the DropdownInputWidget - * @param boolean $config['or'] Configuration for whether the widget is dropdown AND input + * @param bool $config['or'] Configuration for whether the widget is dropdown AND input * or dropdown OR input */ public function __construct( array $config = [] ) { diff --git a/languages/Language.php b/languages/Language.php index 9db7dec4cd..c514cdc595 100644 --- a/languages/Language.php +++ b/languages/Language.php @@ -4279,7 +4279,7 @@ class Language { * * @since 1.28 * @param Language $lang - * @return boolean + * @return bool */ public function equals( Language $lang ) { return $lang->getCode() === $this->mCode; @@ -4343,7 +4343,7 @@ class Language { /** * @param string $code - * @param boolean $fallback Whether we're going through language fallback chain + * @param bool $fallback Whether we're going through language fallback chain * @return string Name of the language class */ public static function classFromCode( $code, $fallback = true ) { diff --git a/languages/data/Names.php b/languages/data/Names.php index 8970b40f4e..e2ed910686 100644 --- a/languages/data/Names.php +++ b/languages/data/Names.php @@ -404,6 +404,7 @@ class Names { 'sw' => 'Kiswahili', # Swahili 'szl' => 'ślůnski', # Silesian 'ta' => 'தமிழ்', # Tamil + 'tay' => 'Tayal', # Atayal 'tcy' => 'ತುಳು', # Tulu 'te' => 'తెలుగు', # Telugu 'tet' => 'tetun', # Tetun diff --git a/languages/i18n/af.json b/languages/i18n/af.json index ab9746ff76..90b3ca90a0 100644 --- a/languages/i18n/af.json +++ b/languages/i18n/af.json @@ -1099,12 +1099,15 @@ "recentchanges-legend-heading": "Sleutel:", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (sien ook die [[Special:NewPages|lys van nuwe bladsye]])", "recentchanges-submit": "Wys", + "rcfilters-tag-remove": "Verwyder '$1'", + "rcfilters-highlighted-filters-list": "Bekleurklem: $1", "rcfilters-filter-user-experience-level-registered-label": "Geregistreer", "rcfilters-filter-user-experience-level-registered-description": "Aangemelde redigeerders.", "rcfilters-filter-user-experience-level-unregistered-label": "Ongeregistreer", "rcfilters-filter-user-experience-level-unregistered-description": "Redigeerders wat nie aangemeld is nie.", "rcfilters-filter-user-experience-level-newcomer-label": "Nuwelinge", "rcfilters-filter-user-experience-level-newcomer-description": "Minder as 10 wysigings en 4 dae van aktiwiteit.", + "rcfilters-filtergroup-watchlistactivity": "Dophoulys-bedrywighede", "rcnotefrom": "{{PLURAL:$5|Wysiging|Wysigings}} sedert $3 om $4 (maksimum van $1 word gewys).", "rclistfrom": "Vertoon wysigings vanaf $3 $2", "rcshowhideminor": "$1 klein wysigings", @@ -2906,6 +2909,9 @@ "compare-title-not-exists": "Die titel wat u verskaf het bestaan ​​nie.", "compare-revision-not-exists": "Die hersiening wat u verskaf het bestaan ​​nie.", "diff-form": "'n '''vorm'''", + "diff-form-submit": "Vertoon verskille", + "permanentlink": "Permanente skakel", + "permanentlink-submit": "Beweeg na hersiening", "dberr-problems": "Jammer! Die webwerf ondervind op die oomblik tegniese probleme.", "dberr-again": "Wag 'n paar minute en probeer dan weer.", "dberr-info": "(Kan nie die databasisbediener kontak nie: $1)", diff --git a/languages/i18n/ais.json b/languages/i18n/ais.json new file mode 100644 index 0000000000..4268c7bb7c --- /dev/null +++ b/languages/i18n/ais.json @@ -0,0 +1,857 @@ +{ + "@metadata": { + "authors": [ + "Akamycoco", + "Benel", + "Bunukwiki", + "Tokoabibi" + ] + }, + "underline-never": "caaytu", + "sunday": "pilipayan", + "monday": "sakacacay a demied nu lipay", + "tuesday": "sakatusa a demied nu lipay", + "wednesday": "sakatulu a demied nu lipay", + "thursday": "sakasepat a demied nu lipay", + "friday": "sakalima a demied nu lipay", + "saturday": "sakaenem a demied nu lipay", + "sun": "pilipayan", + "mon": "sakacacay a demied nu lipay", + "tue": "sakatusa a demied nu lipay", + "wed": "sakatulu a demied nu lipay", + "thu": "sakasepat a demied nu lipay", + "fri": "sakalima a demied nu lipay", + "sat": "sakaenem a demied nu lipay", + "january": "cacay bulad", + "february": "tusa bulad", + "march": "tulu bulad", + "april": "sepat bulad", + "may_long": "lima bulad", + "june": "enem bulad", + "july": "pitu bulad", + "august": "walu bulad", + "september": "siwa bulad", + "october": "cacay bataan bulad", + "november": "sabaw cacay bulad", + "december": "sabaw tusa bulad", + "january-gen": "cacay bulad", + "february-gen": "tusa bulad", + "march-gen": "tulu bulad", + "april-gen": "sepat bulad", + "may-gen": "lima bulad", + "june-gen": "enem bulad", + "july-gen": "pitu bulad", + "august-gen": "walu bulad", + "september-gen": "siwa bulad", + "october-gen": "cacay bataan bulad", + "november-gen": "sabaw cacay bulad", + "december-gen": "sabaw tusa bulad", + "jan": "cacay bulad", + "feb": "tusa bulad", + "mar": "tulu bulad", + "apr": "sepat bulad", + "may": "lima bulad", + "jun": "enem bulad", + "jul": "pitu bulad", + "aug": "walu bulad", + "sep": "siwa bulad", + "oct": "cacay bataan bulad", + "nov": "sabaw cacay bulad", + "dec": "sabaw tusa bulad", + "january-date": "cacay bulad $1", + "february-date": "tusa bulad $1", + "march-date": "tulu bulad $1", + "april-date": "sepat bulad $1", + "may-date": "lima bulad $1", + "june-date": "enem bulad $1", + "july-date": "pitu bulad $1", + "august-date": "walu bulad $1", + "september-date": "siwa bulad $1", + "october-date": "cacay bataan bulad $1", + "november-date": "sabaw cacay bulad $1", + "december-date": "sabaw tusa bulad $1", + "period-am": "AM", + "period-pm": "PM", + "pagecategories": "{{PLURAL:$1|kakuniza}}", + "category_header": "abuay nu kasasizuma \"$1\" a kasabelih", + "subcategories": "sailuc-kasasizuma", + "category-media-header": "kakuniza labuay \"$1\" a myiti", + "hidden-categories": "{{PLURAL:$1|midimut kakuniza}}", + "category-subcat-count": "{{PLURAL:$2|uyni kakuniza hatiza ku cacay yamalyilu sailuc-kakuniza. kina kakuniza yamalyilu isasa $2 a sailuc-kasasizuma, ilabu {{PLURAL:$1}}mahiza ku isasaay}}", + "category-article-count": "{{PLURAL:$2|uyni kakuniza hatiza ku cacay yamalyilu sailuc-kakuniza. kina kakuniza yamalyilu isasa $2 a sailuc-kasasizuma, ilabu {{PLURAL:$1}}mahiza ku isasaay}}", + "category-file-count": "{{PLURAL:$2|kakuniza yamalyilu isasaay a cacay ku tangan. kakuniza yamalyilu isasaay izaway $1 ku tangan, pulung $2 makalaan.}}", + "listingcontinuesabbrev": "palalid", + "about": "mahizaay", + "newwindow": "(paynin baluhay a azih-sasingalan miwawah)", + "cancel": "palawpes", + "moredotdotdot": "yadah...", + "mypage": "kasabelih", + "mytalk": "sasukamu", + "anontalk": "sasukamu", + "navigation": "pasubana’ tu miidangay", + "and": " ", + "actions": "saungay", + "namespaces": "pangangananay a salaedan", + "variants": "masazumaay", + "navigation-heading": "pasubana’ tu miidangay pipili’an", + "errorpagetitle": "mungangaw", + "returnto": "tatiku tazuma至 $1.", + "tagline": "makayzaay i {{SITENAME}}", + "help": "buhci tu kamu", + "search": "kilim", + "searchbutton": "kilim", + "go": "mileku", + "searcharticle": "mileku", + "history": "kasabelih nazipa’an", + "history_short": "nazipa’an", + "history_small": "nazipa’an", + "printableversion": "kapah tu insace baziyong / sapad", + "permalink": "saluimengay misiket", + "print": "insace", + "view": "ciwsace", + "view-foreign": "i $1 miciwsace", + "edit": "mikawaway-kalumyiti", + "create": "patizeng", + "create-local": "cunusen itiniay a buhci tu kamu", + "delete": "misipu", + "protect_change": "misumad", + "newpage": "baluhayay a kasabelih", + "talkpagelinktext": "sasukamu", + "personaltools": "teked sakaluk", + "talk": "matatengil", + "views": "ciwsace", + "toolbox": "sakaluk", + "otherlanguages": "zumaay a kamu", + "redirectedfrom": "(miliyawtu tazuma nay $1)", + "redirectpagesub": "miliyaw tazuma kasabelih", + "redirectto": "miliyaw tazuma tu:", + "lastmodifiedat": "uyni kasabelih sazikuz mikawaway tu kalumyiti i $1 $2.", + "jumpto": "taayaw:", + "jumptonavigation": "pasubana’ tu miidangay", + "jumptosearch": "kilim", + "aboutsite": "mahizaay {{SITENAME}}", + "aboutpage": "Project:mahizaay", + "copyright": "anu izaw ku zuma buhci tu kamu, kasabelih aazihen a lacul i labu, pisaungay hamin $1 sapabeli tu kinli a ceding.", + "copyrightpage": "{{ns:project}}:nisanga’an niza tu tungus a kawaw", + "currentevents": "ayzaay a sinbun", + "currentevents-url": "Project:Current events", + "disclaimers": "caay pimuku tu sikining", + "disclaimerpage": "Project:habutud a pimuku tu sikining", + "edithelp": "mikawaway tu kalumyiti buhci tu kamu", + "helppage-top-gethelp": "buhci tu kamu", + "mainpage": "saayaway a belih", + "mainpage-description": "saayaway a belih", + "policy-url": "Project:Policy", + "portal": "komiyonityi sacumudan", + "portal-url": "Project:komiyonityi sacumudan", + "privacy": "salimek a mikuwanay a kawaw", + "privacypage": "Project:salimek a mikuwanay a kawaw", + "ok": "malucekay", + "retrievedfrom": "miala i \"$1\"", + "editsection": "mikawaway-kalumyiti", + "editold": "mikawaway tu kalumyiti", + "viewsourceold": "ciwsace sakatizeng bangu", + "editlink": "mikawaway-kalumyiti", + "viewsourcelink": "ciwsace sakatizeng bangu", + "editsectionhint": "mikawaway tu kalumyiti tusil: $1", + "toc": "dilyikotoling", + "showtoc": "paazih", + "hidetoc": "midimut", + "collapsible-expand": "micuwat", + "confirmable-yes": "hang", + "confirmable-no": "caay", + "site-atom-feed": "$1 a Atom saangangan", + "page-atom-feed": "$1 a Atom saangangan", + "red-link-title": "$1 (kasabelih nayai’ tu)", + "nstab-main": "kasabelih", + "nstab-user": "misaungayay a kasabelih", + "nstab-special": "sazumaay a kasabelih", + "nstab-project": "cwanan kasabelih", + "nstab-image": "tangan", + "nstab-mediawiki": "palatuh", + "nstab-template": "taazihan mitudung", + "nstab-category": "kakuniza", + "mainpage-nstab": "saayaway a belih", + "error": "mungangaw", + "databaseerror-query": "palalitemuh tu kawaw: $1", + "databaseerror-function": "sakapaluwaluway: $1", + "databaseerror-error": "mungangaw: $1", + "badtitle": "a’cusay a pyawti", + "badtitletext": "matuzu’ay a kasabelih pyawti u la’cusay、nayi’ ku cacan, caaysa tatenga’ay tu misiket kamu Wikiay a pyawti.\ntebanay pyawti akay amalyilu la’cusay pisaungay i pyawtayi a tatebanan nu nisulitan.", + "viewsource": "ciwsace sakatizeng bangu", + "welcomeuser": "manamuh tu tayniay, $1!", + "yourname": "misaungayay a kalungangan:", + "userlogin-yourname": "misaungayay a kalungangan", + "userlogin-yourname-ph": "pisulitan tu nu misay a misaungayay a kalungangan", + "yourpassword": "mima:", + "userlogin-yourpassword": "mima", + "userlogin-yourpassword-ph": "suliten nu misuay a mima", + "createacct-yourpassword-ph": "pisulitan ku mima", + "createacct-yourpasswordagain": "malucekay tu mima", + "createacct-yourpasswordagain-ph": "pisulitan ku mima kinacacay aca", + "userlogin-remembermypassword": "i balucu’en aku patalabu setyitase", + "login": "patalabu", + "nav-login-createaccount": "patalabu / panganganen ku canghaw", + "logout": "katahkal", + "userlogin-noaccount": "inayi’ ku canghaw kisu haw?", + "userlogin-joinproject": "micunus {{SITENAME}}", + "createaccount": "panganganen ku canghaw", + "userlogin-resetpassword-link": "maliyuh ku mima kisu haw?", + "userlogin-helplink2": "patalabu miedap", + "createacct-emailoptional": "imyiyo(email) tigami (u pili’ay sasulitan)", + "createacct-email-ph": "pisulitan ku imyiyo(email) nu misu", + "createacct-reason": "mahicaay", + "createacct-submit": "panganganen ku misuay a canghaw", + "createacct-another-submit": "panganganen ku canghaw", + "createacct-benefit-heading": "{{SITENAME}} paanin tu nisulitan tu nu tapangay mahiza kisuan.", + "createacct-benefit-body1": "saka{{PLURAL:$1|ku mikawaway tu kalumyiti}}", + "createacct-benefit-body2": "{{PLURAL:$1| kasabelih}}", + "createacct-benefit-body3": "cay katenesay{{PLURAL:$1|paaninay tu kalusasing}}", + "loginsuccesstitle": "patalabutu", + "loginlanguagelabel": "kamu: $1", + "pt-login": "patalabu", + "pt-login-button": "patalabu", + "pt-createaccount": "panganganen ku canghaw", + "pt-userlogout": "katahkal", + "botpasswords-label-create": "patizeng", + "botpasswords-label-update": "misabaluhay", + "botpasswords-label-cancel": "palawpes", + "botpasswords-label-delete": "masipu", + "botpasswords-label-grants-column": "pabeli tu kinli", + "resetpass-submit-cancel": "palawpes", + "passwordreset": "miliyaw miteka setin mima", + "passwordreset-username": "misaungayay a kalungangan:", + "changeemail-none": "(nayi’)", + "resettokens-tokens": "sabuhat:", + "bold_sample": "kibetulay a sulit", + "bold_tip": "kibetulay a sulit", + "italic_sample": "tukenihay nisulit", + "italic_tip": "tukenihay nisulit", + "link_sample": "misiket satangahan a sulit", + "link_tip": "labu-labu misiket", + "extlink_sample": "http://www.example.com misiket satangahan a sulit", + "extlink_tip": "hekal-hekal misiket (amana katawal saka http:// paangangan)", + "headline_sample": "sakacacay a selal nu satangahan a sulit", + "headline_tip": "sakatusa a selal nu satangahan a sulit", + "nowiki_sample": "pacucuk caayay kesehwaay a cudad", + "nowiki_tip": "sekipo Wiki kesehwa sulit nu kamu", + "image_tip": "nicunusay a tangan", + "media_tip": "tangan-tangan misiket", + "sig_tip": "misuay a sulit nu ngangan atu demiad, tuki", + "hr_tip": "Sapisasuala (cayka yadah kawiza)", + "summary": "pecu’ nu lacul:", + "subject": "taazihan tu kawaw:", + "minoredit": "payni mikilulay a mikawaway tu kalumyiti", + "watchthis": "miazih tuyni kasabelih", + "savearticle": "misuped kasabelih", + "preview": "pataayaway miazih", + "showpreview": "paazih pataayaway miazih", + "showdiff": "paazih ku masumaday", + "anoneditwarning": "patalaw:caay henay kisu patalabu. anu miteka mikawaway tu kalumyiti, IP adolyise nu misu ama mitilak. anu kisu [$1 patalabu ] acasa [$2 panganganen ku canghaw ], misuay mikawaway tu kalumyiti payni tu nu misuay misaungayay kalungangan sacuzu’ ,izaway zuma kapahayay.", + "loginreqlink": "patalabu", + "newarticle": "(baluhay)", + "newarticletext": "masasiket kisu tu nayi’ay tu kasabelih.\namipatizeng tina kasabelih, kaisasa mikawaway tu kalumyiti atilad misulit ku lacul (kahica nu kawaw piazih tu tatenga’ay [$1 misaungay a buhci tu kamu kasabelih ]).\namahica caay padeteng tayza tina kasabelih kisu haw, pihaymaw sapecec saazihay a tatiku pipenecan.", + "noarticletext": "kina kasabelih inayi’ lacul ayza,kapah tu kisu i zumaay a kasabelih [[Special:Search/{{PAGENAME}}| mikilim kina kasabelih pyawti ]]、[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} mikilim sasuala nasulitan nakawawan ] caay sa[{{fullurl:{{FULLPAGENAME}}|action=edit}} patizeng kina kasabelih ].", + "noarticletext-nopermission": "tina kasabelih ayza inayi’ lacul,\nkapah tu kisu i zuma kasabelih [[Special:Search/{{PAGENAME}}| kilim kina kasabelih pyawti ]],acasa [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} kilim sasuala nasulitan nakawawan ],uyzasa inayi’ ku tungus patizeng tina kasabelih.", + "updated": "(misabaluhay)", + "editing": "mikawaway tu kalumyiti $1 ayza", + "creating": "patizeng ayza $1", + "editingsection": "mikawaway tu kalumyiti ayza $1 (tusil)", + "yourdiff": "sasizuma", + "templatesused": "uyni kasabelih pisaungay tu isasaay {{PLURAL:$1|taazihan mitudung}}:", + "template-protected": "(madiputay)", + "template-semiprotected": "(madiputay a kasabelih - satizep mikawaway tu kalumyiti)", + "hiddencategories": "kina kasabelih tungusay nu {{PLURAL:$1|1 midimut kakuniza }}mamikawaw:", + "permissionserrorstext-withaction": "namakay isasaay {{PLURAL:$1|mahicaay}}, inayi’ kisu situngus miteka $2 miteka tuway misaungay:", + "moveddeleted-notice": "kina kasabelih masipu tu.\nisasa nipabeli kina kasabelihay a masipu atu milimad nasulitan nakawawan, taneng miazih tu tatenga’ay.", + "content-json-empty-object": "inayi’ay a tuutuud", + "content-json-empty-array": "inayi’ay a papazengan tu nisulitan", + "viewpagelogs": "ciwsace kina kasabelih a nasulitan nakawawan", + "currentrev-asof": "i $1 a sabaluhay masumad", + "revisionasof": "$1 a sumad", + "revision-info": "i $1 tuyni a {{GENDER:$6|$2}} u nasumad nu nikawawan", + "previousrevision": "← masumad nu ayaway", + "nextrevision": "kilulay masumad →", + "currentrevisionlink": "sabaluhay masumad", + "cur": "ayza", + "next": "nuzikuzan", + "last": "ayaway", + "page_last": "sazikuzay a kasabelih", + "histfirst": "sakasumamadan", + "histlast": "sabaluhay", + "historyempty": "(inayi’)", + "rev-showdeleted": "paazih", + "revdelete-show-file-submit": "hang", + "revdelete-radio-set": "midimut", + "revdelete-log": "mahicaay:", + "mergehistory-reason": "mahicaay:", + "history-title": "\"$1\" masumaday a nazipa’an", + "difference-title": "\"$1\" misumad laeday sasizuma", + "lineno": "silsil $1:", + "editundo": "patiku", + "diff-multi-sameuser": "(malecaday misaungayay {{PLURAL:$1| ilaed izaw ku $1 a sumad}}inayi’ paazih)", + "searchresults": "heci nu makatepa", + "searchresults-title": "$1 heci nu makatepa", + "prevn": "ayaw saka {{PLURAL:$1|$1}}", + "nextn": "zikuzan saka {{PLURAL:$1|$1}}", + "nextn-title": "nuzikuzan saka {{PLURAL:$1|a heci}}", + "shown-title": "paybelih {{PLURAL:$1|$1 ku heci}} paazih", + "viewprevnext": "ciwsace ($1 {{int:pipe-separator}} $2) ($3)", + "searchmenu-new": " uyni Wiki patizeng ku kasabelih \"[[:$1]]\"!{{PLURAL:$2|0=| acasa miazih tu tatenga’ay patalabuay a matepa’ay a heci. |acasa miazih tu tatenga’ay zuma matepa’ay a heci.}}", + "searchprofile-articles": "lacul kasabelih", + "searchprofile-images": "malocimyidiya", + "searchprofile-everything": "hamin", + "searchprofile-advanced": "tapabaw", + "searchprofile-articles-tooltip": "i labu nu $1 mikilim", + "searchprofile-images-tooltip": "mikilim tu tangan", + "searchprofile-everything-tooltip": "kilim saca hamin lacul (yamalyilu sasukamu kasabelih)", + "searchprofile-advanced-tooltip": "mikilim pakuniza misanga’ pangangananay a salaedan", + "search-result-size": "$1 ({{PLURAL:$2|$2 ku sulit}})", + "search-redirect": "(miliyaw tazuma namakay $1)", + "search-section": "(tusil $1)", + "search-suggest": "u tuzu’ nu misu ku:$1 haw?", + "search-interwiki-more": "(yadah)", + "search-relatedarticle": "mahizaay", + "searchall": "hamin", + "search-showingresults": "{{PLURAL:$4|saka $1 a heci, pulung $3|saka $1-$2 a heci, pulung $3}}", + "search-nonefound": "nayi’ matatungusay palalitemuh tu kawaw maheciay.", + "powersearch-toggleall": "hamin", + "powersearch-togglenone": "nayi’", + "mypreferences": "setin tu kanamuhan", + "prefs-skin": "nuhekalan", + "skin-preview": "pataayaway miazih", + "prefs-rc": "capi a demaiday a sumad", + "prefs-misc": "zuma", + "prefs-rendering": "nuhekalan", + "saveprefs": "suped", + "prefs-editing": "mikawaway-kalumyiti", + "searchresultshead": "kilim", + "stub-threshold-sample-link": "maaziahan", + "stub-threshold-disabled": "mapasatezep", + "timezoneregion-africa": "Afulika", + "timezoneregion-america": "Amilikaco", + "timezoneregion-antarctica": "Nancico", + "timezoneregion-arctic": "Sasaamisan", + "timezoneregion-asia": "Yaco", + "timezoneregion-australia": "Awco", + "timezoneregion-europe": "Oco", + "timezoneregion-indian": "Intuyang-bayu’", + "prefs-searchoptions": "kilim", + "default": "pataayaw tu kawaw", + "prefs-custom-css": "pakuniza misanga’ CSS", + "yourlanguage": "kamu:", + "prefs-i18n": "masakitakiay", + "prefs-signature": "sulitan a ngangan", + "prefs-timeoffset": "ilaed nu tuki", + "prefs-editor": "mikawaway-kalumyitiay", + "prefs-preview": "pataayaway miazih", + "prefs-tokenwatchlist": "sabuhat", + "prefs-diffs": "sasizuma", + "userrights-reason": "mahicaay:", + "userrights-expiry-current": "kakatekuhan $1", + "userrights-expiry": "kakatekuhan:", + "group": "luyaluy:", + "group-user": "misaungayay", + "group-bot": "kikay a tademaw", + "group-sysop": "mikuwanay", + "group-bureaucrat": "situngusay a mikawaway", + "group-all": "(hamin)", + "group-bot-member": "{{GENDER:$1|kikay a tademaw}}", + "grouppage-bot": "{{ns:project}}:kikay a tademaw", + "grouppage-sysop": "{{ns:project}}:mikuwanay", + "grouppage-bureaucrat": "{{ns:project}}:situngusay a mikawaway", + "right-writeapi": "pisaungay suliten API", + "grant-createaccount": "panganganen ku canghaw", + "newuserlogpage": "patizeng misaungayay nasulitan nakawawan", + "action-edit": "mikawaway tu kalumyiti uyni kasabelih", + "enhancedrc-history": "nazipa’an", + "recentchanges": "capi a demaiday a sumad", + "recentchanges-legend": "capi a demiad masumaday a mapiliay", + "recentchanges-summary": "mikilul nazikuzan ilabu nu Wikiay a kasabelihay a capi demiad a nasumaday.", + "recentchanges-label-newpage": "uyni mikawaway tu kalumyiti patizengtu baluhay kasabelih", + "recentchanges-label-minor": "payni mikilulay a mikawaway tu kalumyiti", + "recentchanges-label-bot": "uyni mikawaway tu kalumyiti u kikay a tademaw mileku", + "recentchanges-label-unpatrolled": "mikawaway tu kalumyiti caay henay ka tayza mikibi", + "recentchanges-label-plusminus": "na kasabelih misumad hacica ku tabaki (wyiyincu )", + "recentchanges-legend-heading": "u tinaku nu kulit:", + "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (piazih tu tatenga’ay [[Special:NewPages| baluhayay a kasabelih]])", + "recentchanges-submit": "paazih", + "rcfilters-savedqueries-new-name-label": "kalungangan", + "rcfilters-savedqueries-cancel-label": "palawpes", + "rcfilters-filterlist-title": "kilim", + "rcfilters-filter-user-experience-level-newcomer-label": "baluhayay a misaungayay", + "rcfilters-filter-user-experience-level-learner-label": "mahananamay", + "rcfilters-filter-bots-label": "kikay a tademaw", + "rcfilters-filter-minor-label": "cayka yadah ku misumad", + "rclistfrom": "paazih nay $3 $2 baluhayay a sumad katukuh ayza", + "rcshowhideminor": "$1 mikilulay mikawaway tu kalumyiti", + "rcshowhideminor-show": "paazih", + "rcshowhideminor-hide": "Hide", + "rcshowhidebots": "$1 kikay a tademaw", + "rcshowhidebots-show": "paazih", + "rcshowhidebots-hide": "midimut", + "rcshowhideliu": "$1 mapangangan tuway a misaungayay", + "rcshowhideliu-show": "paazih", + "rcshowhideliu-hide": "midimut", + "rcshowhideanons": "$1 paceba panganganay a misaungayay", + "rcshowhideanons-show": "paazih", + "rcshowhideanons-hide": "midimut", + "rcshowhidepatr-show": "paazih", + "rcshowhidepatr-hide": "midimut", + "rcshowhidemine": "$1 mikawaway tu kalumyiti nu maku", + "rcshowhidemine-show": "paazih", + "rcshowhidemine-hide": "midimut", + "rcshowhidecategorization-show": "paazih", + "rcshowhidecategorization-hide": "midimut", + "rclinks": "paazih capi a demiad $2 a demiaday a saka $1 a sumad.", + "diff": "sasizuma", + "hist": "nazipa’an", + "hide": "midimut", + "show": "paazih", + "minoreditletter": "adidi’", + "newpageletter": "baluhay", + "boteditletter": "kikay a tademaw", + "rc-change-size-new": "masumadtu sa u $1 {{PLURAL:$1|wyiyincu}}", + "newsectionsummary": "/* $1 */ baluhay a tusil", + "recentchangeslinked": "sasuala a sumad", + "recentchangeslinked-feed": "sasuala a sumad", + "recentchangeslinked-toolbox": "sasuala a sumad", + "recentchangeslinked-title": "pulung \"$1\" sasuala a sumaday", + "recentchangeslinked-summary": "uyni kasabelih pasilsil micuzu’ kasabelih masasiketay saca hamin kasabelihan (hakya u matuzu’ay kakuniza\nilabu saca hamin mamikawaw)izaw ku misumaday kasabelih piazihan tu sulit.\nizawtu ku [[Special:Watchlist|sapacukat a sulit nu misu]] ilabuay a kasabelih apatahkal ku kibetulay a sulit sacuzu’.", + "recentchangeslinked-page": "kasabelih kalungangan:", + "recentchangeslinked-to": "Show changes to pages linked to the given page instead\nmisumad ku paazih masasiket tayza matuzu’ay kasabelih a nisumad", + "upload": "patapabaw ku tangan", + "filedesc": "pecu’ nu lacul", + "fileuploadsummary": "pecu’ nu lacul:", + "filesource": "saangangan:", + "upload-dialog-button-cancel": "palawpes", + "upload-dialog-button-back": "tatiku", + "upload-dialog-button-done": "pahezek", + "upload-dialog-button-save": "suped", + "upload-dialog-button-upload": "patapabaw", + "upload-form-label-infoform-name": "kalungangan", + "upload-form-label-infoform-description": "patahkal", + "upload-form-label-infoform-categories": "kakuniza", + "upload-form-label-infoform-date": "demiad", + "license": "sapabeli tu kinli a cedang", + "license-header": "sapabeli tu kinli a cedang", + "listfiles-delete": "misipu", + "imgfile": "tangan", + "listfiles": "tangan-tangan misiket", + "listfiles_thumb": "sukep tu zunga", + "listfiles_date": "demiad", + "listfiles_name": "kalungangan", + "listfiles_user": "misaungayay", + "listfiles_size": "hacica-tabaki", + "listfiles_description": "patahkal", + "listfiles_count": "baziyong", + "listfiles-latestversion-yes": "hang", + "listfiles-latestversion-no": "caay", + "file-anchor-link": "tangan", + "filehist": "tangan nu nazipa’an", + "filehist-help": "sapecec ku demiad/tuki sapiciwsace ku tuki nina demiad a tangan baziyong", + "filehist-current": "ayza", + "filehist-datetime": "demiad/tuki", + "filehist-thumb": "sukep tu zunga", + "filehist-thumbtext": "nu $1 baziyongay a sukep tu zunga", + "filehist-user": "misaungayay", + "filehist-dimensions": "ditek", + "filehist-comment": "pacunus sakacaay kapawan", + "imagelinks": "tangan sadama tu kawaw", + "linkstoimage": "isasaay {{PLURAL:$1| kasabelih misiket |saka $1 a kasabelih misiket}}katukuh tina tangan:", + "nolinkstoimage": "nayi’ ku kasabelih masasiket katukuh tini a tangan.", + "sharedupload-desc-here": "kina tangan nay $1 hakay satu pisaungay tu zuma a cwanan.\nisasaay paazih kuyniay a tangan i [$2 tangan patahkal kasabelih] a patahkalay a lacul.", + "shared-repo-from": "nay $1", + "upload-disallowed-here": "la’cus kisu mitahpu tuyni a tangan.", + "filerevert-comment": "mahicaay:", + "filedelete-comment": "mahicaay:", + "filedelete-submit": "masipu", + "download": "patasasa'", + "randompage": "kakibalucu’ ay a kasabelih", + "randomincategory-submit": "mileku", + "statistics": "sausi", + "pageswithprop-submit": "mileku", + "brokenredirects-delete": "misipu", + "withoutinterwiki-legend": "saayaway a sulit", + "withoutinterwiki-submit": "paazih", + "nbytes": "$1 {{PLURAL:$1|wyiyincu}}", + "ncategories": "{{PLURAL:$1|kakuniza}}", + "nmembers": "$1 {{PLURAL:$1|ku mamikawaw}}", + "prefixindex-submit": "paazih", + "protectedpages-page": "kasabelih", + "protectedpages-expiry": "kakatekuhan", + "protectedpages-reason": "mahicaay", + "newpages": "baluhay kasabelih", + "newpages-submit": "paazih", + "move": "milimad", + "pager-older-n": "{{PLURAL:$1| kusa malumanay}}", + "suppress": "malangat", + "apisandbox-reset": "palawpis", + "apisandbox-retry": "miliyaw mitaneng", + "apisandbox-examples": "tinaku", + "apisandbox-results": "heci", + "apisandbox-continue": "palalid", + "apisandbox-continue-clear": "palawpis", + "booksources": "nu cudad atu laculaculan", + "booksources-search-legend": "mikilim ku cudad atu laculaculan", + "booksources-search": "kilim", + "log": "nasulitan nakawawan", + "logeventslist-submit": "paazih", + "checkbox-select": "mipili’: $1", + "checkbox-all": "hamin", + "checkbox-none": "nayi’", + "allpages": "hamin nu kasabelih", + "allarticles": "hamin nu kasabelih", + "allpagessubmit": "mileku", + "categories": "kakuniza", + "categories-submit": "paazih", + "linksearch-ns": "pangangananay a salaedan:", + "linksearch-ok": "kilim", + "listusers-submit": "paazih", + "listgrouprights-group": "luyaluy", + "listgrants": "pabeli tu kinli", + "listgrants-rights": "kinli", + "emailusernamesubmit": "patayzaan", + "emailfrom": "nay:", + "emailto": "katukuh:", + "emailsubject": "taazihan tu kawaw:", + "emailmessage": "palatuh:", + "emailsend": "patigamitu", + "watchlist": "miazihay a piazihan tu sulit", + "mywatchlist": "miazihay a piazihan tu sulit", + "watch": "miazih", + "watchlist-hide": "midimut", + "wlshowhideminor": "cayka yadah ku misumad", + "wlshowhidebots": "kikay a tademaw", + "confirm": "malucekaytu", + "delete-confirm": "misipu \"$1\"", + "historyaction-submit": "paazih", + "dellogpage": "masipu ku nasulitan nakawawan", + "deletecomment": "mahicaay:", + "rollbacklink": "panukasan", + "rollbacklinkcount": "patiku {{PLURAL:$1|mikawaway tu kalumyiti}}", + "changecontentmodel-reason-label": "mahicaay:", + "protectlogpage": "midiput nasulitan nakawawan", + "protectcomment": "mahicaay:", + "protectexpiry": "kakatekuhan:", + "protect-summary-cascade": "patatusul", + "protect-expiring": "kakatekuhan $1 (UTC)", + "protect-expiry-indefinite": "inayi’ u sungliw", + "restriction-edit": "mikawaway-kalumyiti", + "restriction-move": "milimad", + "restriction-create": "patizeng", + "restriction-upload": "patapabaw", + "undeletebtn": "patiku", + "undeletecomment": "mahicaay:", + "undelete-search-submit": "kilim", + "undelete-show-file-submit": "hang", + "namespace": "pangangananay a salaedan:", + "invert": "kabelihan mipili’", + "tooltip-invert": "pili’en hatizaay kuyni mapili’ay atilad i midimut mipili’panganganan a salaedan blabuay kasabelih sumad (anu hatizaay sasuala panganganan a salaedan, mama palecad midimut sasuala panganganan a salaedan)", + "namespace_association": "sasuala panganganan a salaedan", + "tooltip-namespace_association": "pili’en hatizaay kuyni mapili’ay atilad i yamalyilu atu mipili’ sasuala panganganan a salaedan sasukamu atu satangahan panganganan a salaedan", + "blanknamespace": "(sausi)", + "contributions": "{{GENDER:$1| misaungayay}}paanin tu nisulitan", + "mycontris": "paanin", + "anoncontribs": "paanin", + "uctop": "(ayza)", + "month": "sazikuzay demiad nabuladan:", + "year": "sazikuzay demiad mihcaan:", + "sp-contributions-blocklog": "milangat tu nasulitan nakawawan", + "sp-contributions-uploads": "patapabaw", + "sp-contributions-logs": "nasulitan nakawawan", + "sp-contributions-talk": "sasukamu", + "sp-contributions-submit": "kilim", + "whatlinkshere": "masasiket katukuh uyniyay a kasabelih", + "whatlinkshere-title": "masasiket tazumaay a \"$1\" kasabelih", + "whatlinkshere-page": "Kasabelih:", + "linkshere": "isasaay a kasabelih masasiket tazuma tu [[:$1]]:", + "isredirect": "miliyaw tazuma kasabelih", + "istemplate": "nicaliwan", + "isimage": "tangan-tangan misiket", + "whatlinkshere-prev": "saka {{PLURAL:$1|nuayaway}}", + "whatlinkshere-next": "saka {{PLURAL:$1|nuzikuzan}}", + "whatlinkshere-links": "← masasiket", + "whatlinkshere-hideredirs": "$1 miliyaw tazuma", + "whatlinkshere-hidetrans": "$1 nicaliwan", + "whatlinkshere-hidelinks": "$1 masasiket", + "whatlinkshere-hideimages": "$1 tangan-tangan misiket", + "whatlinkshere-filters": "kilim", + "whatlinkshere-submit": "mileku", + "ipbexpiry": "kakatekuhan:", + "ipbreason": "mahicaay:", + "ipb-blocklist-duration-left": "$1 pakawili", + "autoblocklist-submit": "kilim", + "blocklist-target": "pabalucu’an", + "blocklist-expiry": "kakatekuhan", + "blocklist-reason": "mahicaay", + "ipblocklist-submit": "kilim", + "infiniteblock": "inayi’ u sungliw", + "blocklink": "malangat", + "contribslink": "paanin", + "blocklogpage": "milangat tu nasulitan nakawawan", + "movelogpage": "milimad ku nasulitan nakawawan", + "movereason": "mahicaay:", + "export": "patahkal ku kasabelih", + "export-submit": "patahkal", + "allmessagesname": "kalungangan", + "allmessages-filter-legend": "kilim", + "allmessages-filter-all": "hamin", + "allmessages-filter-modified": "masumad tuway", + "allmessages-language": "kamu:", + "allmessages-filter-submit": "mileku", + "allmessages-filter-translate": "mibelih", + "thumbnail-more": "patabaki(micuwat)", + "import-interwiki-submit": "pacumud", + "import-comment": "pacunus sakacaay kapawan:", + "tooltip-pt-userpage": "{{GENDER:|misaungayay nu misu}} kasabelih", + "tooltip-pt-mytalk": "{{GENDER:|misuay }}sasukamu a kasabelih", + "tooltip-pt-preferences": "{{GENDER:|misuay}} setin tu kanamuhan", + "tooltip-pt-watchlist": "miazih kisu misumad kasabelih piazihan tu sulit ayza", + "tooltip-pt-mycontris": "{{GENDER:|misuay}}paaninay a piazihan tu sulit", + "tooltip-pt-login": "patahkal nizateng kisu ayaw patalabu, uyza sa kapah tu amana.", + "tooltip-pt-logout": "katahkal", + "tooltip-pt-createaccount": "taneng kami pauuh kisuan panganganen tu cacay canghaw atu patalabu, anu caay ku tabakiay a pisaungay.", + "tooltip-ca-talk": "matatengil tu mahizaay lacul nu kasabelih", + "tooltip-ca-edit": "mikawaway tu kalumyiti uyni kasabelih", + "tooltip-ca-viewsource": "uyni kasabelih madiputay tuway.\nkapah kisu miciwsace tuyni kasabelih sakatizeng bangu", + "tooltip-ca-history": "uyini kasabelih nasawniay a sumad", + "tooltip-ca-move": "milimad tina kasabelih", + "tooltip-ca-watch": "paynien kasabelih micunus misuay cyinse piazihan tu sulit", + "tooltip-search": "kilim {{SITENAME}}", + "tooltip-search-go": "amahica milihiza tuyni kalungangan malalanepay kasabelih izaay tu, taayawen ku tiza kasabelih", + "tooltip-search-fulltext": "mikilim pisaungay tina paycudadcudad a kasabelih", + "tooltip-p-logo": "taayaw saayaway a belih", + "tooltip-n-mainpage": "taayaw saayaway a belih", + "tooltip-n-mainpage-description": "taayaw saayaway a belih", + "tooltip-n-portal": "mahizaay uyni a cwanan, amihica kisu kapah tu、icuwa amatepa maydihay a kawaw atu duut nu misu", + "tooltip-n-currentevents": "i labu nu sinbun a kawaw, matepa sasuala tada kalunasulitan", + "tooltip-n-recentchanges": "pasilsil tuyni Wiki labuay a sapisumaday a piazihan tu sulit", + "tooltip-n-randompage": "kakibalucu’ ay micumud cacay a kasabelih", + "tooltip-n-help": "mamiedapay a kakitizaan", + "tooltip-t-whatlinkshere": "pasilsil saca hamin masasiket uyni kasabelihay a kasabelih", + "tooltip-t-recentchangeslinked": "uyni kasabelih masasiket tayza i zuma kasabelih capi demiaday a sumad", + "tooltip-feed-atom": "uyni a kasabelih nu Atom saanganga", + "tooltip-t-contributions": "{{GENDER:$1| tina misaungayay}} a paanin tu nisulitan piazihan tu sulit", + "tooltip-t-upload": "patapabaw ku tangan", + "tooltip-t-specialpages": "hamin sazumaay kasabelih piazihan tu sulit", + "tooltip-t-print": "uyni kasabelihay a taneng insace a baziyong", + "tooltip-t-permalink": "uyni kasabelih masumaday saluimengay misiket", + "tooltip-ca-nstab-main": "ciwsace kasabelihay a lacul", + "tooltip-ca-nstab-user": "ciwsace misaungayay a kasabelih", + "tooltip-ca-nstab-special": "uyni kasabelih u sazumaay belih, cayka tineng mikawaway tu kalumyiti", + "tooltip-ca-nstab-project": "ciwsace cwanan kasabelih", + "tooltip-ca-nstab-image": "ciwsace tangan kasabelih", + "tooltip-ca-nstab-template": "ciwsace taazihan mitudung", + "tooltip-ca-nstab-category": "ciwsace kakuniza a kasabelih", + "tooltip-save": "misuped misuay a pisumad", + "tooltip-preview": "kay iayaw nu pisuped miazih tu nu misuay nisumad.", + "tooltip-diff": "paazih hica sa kisu labuay a nisumadan", + "tooltip-watch": "paynien kasabelih micunus misuay cyinse piazihan tu sulit", + "tooltip-rollback": "sapecec \"patiku\" misiket, kapah patiku tayza nuayawanay a paanin tu nisulitan tina kasabelih mikawaway tu kalumyiti", + "tooltip-undo": "\"patiku\" kapah tu patiku tuyni mikawaway tu kalumyiti payni pataayaway miazih muse miwawah mikawaway tu kalumyiti aazihan cudad, saka caay cayaw nu labu micunus mahicaay.", + "tooltip-summary": "kapisulitan apuyu’ay a pecu’ nu lacul", + "others": "zuma", + "simpleantispam-label": "sapi tena’ babakahen a sulit kinsa.\nyu amana misulit kuyni pisinga’an!", + "pageinfo-language-change": "misumad", + "pageinfo-content-model-change": "misumad", + "pageinfo-robot-noindex": "amana", + "pageinfo-toolboxlink": "kasabelih cesyun", + "pageinfo-redirectsto-info": "katinengan", + "pageinfo-contentpage-yes": "hang", + "pageinfo-protect-cascading-yes": "hang", + "confirm-markpatrolled-button": "malucekay", + "previousdiff": "← malumanay a mikawaway tu kalumyiti", + "nextdiff": "baluhayay mikawaway tu kalumyit →", + "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|ku kasabelih}}", + "file-info-size": "$1 × $2 syangsu, hacica ku tabaki nu tangan: $3, MIME kakuniza: $4", + "file-info-size-pages": "$1 × $2 syangsu, hacica ku tabaki nu tangan:$3,MIME kakuniza: $4, $5 {{PLURAL:$5|ku kasabelih}}", + "file-nohires": "inay ku sangaleb takalaway a katingalaw, kapah tu nipabeli.", + "svg-long-desc": "SVG tangan, maazihay hacica ku tabaki $1 × $2 syangsu, tangan hacica ku tabaki: $3", + "show-big-image": "saayaway a tangan", + "show-big-image-preview": "pataayaway miazih hacica ku tabaki: $1.", + "show-big-image-size": "$1 × $2 syangsu", + "file-info-gif-looped": "palalacalen", + "file-info-gif-frames": "$1 {{PLURAL:$1|misabacu}}", + "file-info-png-frames": "$1 {{PLURAL:$1|misabacu}}", + "newimages-legend": "kilim", + "ilsubmit": "kilim", + "bydate": "ahizan tu demiad", + "just-now": "nasawni", + "metadata": "pulita tu kalunasulitan", + "metadata-help": "uyni tangan labuay amin yamalyilu zuma cesyun, uyni a cesyun akay nay suewyi sasasing asaca sapisekyin i tapang asaca suwyihwa saayaw katukuh pahzekan a nakawawan mapacunusay. anu nay tangan saayaway setyitase masumadtu, hatizaay pulita kalunasulitan akay la’cus mileku mabetil a misumad tu tangan.", + "metadata-fields": "i tini palatuh patahkal i labuay a EXIF pulita tu kalunasulitanay a kakitizaan, yamalyilu i zunga paazih kasabelih, sapipulita tu cudad nu nasulitan malepi’ paazih palatuh.\nzumaay a pulita tu cudad pataayaw tu kawaw midimut.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude", + "exif-imagewidth": "ahebal", + "exif-imagelength": "u takalaw", + "exif-orientation": "papayzaan", + "exif-xresolution": "sasuala katingalaw", + "exif-yresolution": "mitelekay katingalaw", + "exif-datetime": "tangan misumaday a demiad atu tuki", + "exif-make": "sasasing misanga’ay tu kalutuud", + "exif-model": "sasasing silosi nu nisanga’an", + "exif-software": "pisaungay zwanti", + "exif-artist": "masacudaday", + "exif-exifversion": "Exif baziyong / sapad", + "exif-colorspace": "kalukulit salaedan", + "exif-datetimeoriginal": "kalunasulitan masangaay’ a demiad atu tuki", + "exif-datetimedigitized": "suwyihwaay a demiad atu tuki", + "exif-lightsource": "katahkalan nu likat", + "exif-flash": "sabelabelatay a tinghuy", + "exif-focallength": "saed nu sapisasing", + "exif-contrast": "e-contrast", + "exif-keywords": "aazihen dulit", + "exif-objectname": "sapuyuay a ngangan", + "exif-headline": "satangahan", + "exif-source": "saangangan", + "exif-writer": "misacudaday", + "exif-languagecode": "kamu", + "exif-iimcategory": "kakuniza", + "exif-identifier": "mapulitaay a kodo", + "exif-label": "aazihen paya", + "exif-orientation-1": "tatungus", + "exif-componentsconfiguration-0": "inayi’", + "exif-exposureprogram-1": "palima", + "exif-meteringmode-255": "zuma", + "exif-lightsource-1": "edil", + "exif-lightsource-2": "inkwang a tinghuy", + "exif-lightsource-4": "sabelabelatay a tinghuy", + "exif-lightsource-9": "cilalah a demiad", + "exif-lightsource-10": "kenutan", + "exif-focalplaneresolutionunit-2": "incun", + "exif-scenecapturetype-0": "tatungus", + "exif-scenecapturetype-1": "makaazihay", + "exif-scenecapturetype-2": "sassing nu tademaw", + "exif-scenecapturetype-3": "makaazihay nu labiyi", + "exif-gaincontrol-0": "nayi’", + "exif-gaincontrol-1": "adidi’ tu cunusan", + "exif-gaincontrol-2": "takalaw ku cunusan", + "exif-gaincontrol-3": "adidi’ tu selepan", + "exif-gaincontrol-4": "takalaw ku selepan", + "exif-contrast-0": "tatungus", + "exif-contrast-1": "pu’nel", + "exif-contrast-2": "takalaw", + "exif-saturation-0": "tatungus", + "exif-sharpness-0": "tatungus", + "exif-sharpness-1": "pu’nel", + "exif-sharpness-2": "takalaw", + "exif-subjectdistancerange-2": "pakatepalay a azih", + "exif-subjectdistancerange-3": "pakabatatay a azih", + "exif-gpslatitude-n": "pyiwyi", + "exif-gpslatitude-s": "nanwyi", + "exif-gpslongitude-e": "tongcing", + "exif-gpslongitude-w": "sicing", + "exif-gpsdestdistance-k": "kungli", + "exif-gpsdestdistance-m": "inli", + "exif-gpsdestdistance-n": "hayli", + "exif-objectcycle-a": "namalamam a cacay", + "exif-objectcycle-p": "nakalahukan a cacay", + "exif-dc-contributor": "paaninay tu kalusasing", + "exif-dc-date": "demiad", + "exif-dc-rights": "kinli", + "exif-iimcategory-edu": "pasubana’ay a kawaw", + "exif-iimcategory-evn": "liwliw", + "exif-iimcategory-hth": "kapah ku uzip", + "exif-iimcategory-lab": "makawaw", + "exif-iimcategory-spo": "wundukay", + "exif-iimcategory-wea": "demidad", + "exif-urgency-normal": "tatungus ($1)", + "namespacesall": "hamin", + "monthsall": "hamin", + "confirm_purge_button": "malucekay", + "confirm-watch-button": "malucekay", + "confirm-unwatch-button": "malucekay", + "confirm-rollback-button": "malucekay", + "imgmultigo": "mileku!", + "img-lang-go": "mileku", + "ascending_abbrev": "masalaylay adidi’ay katukuh tabakiay", + "descending_abbrev": "masalaylay tabakiay katukuh adidi’ay", + "table_pager_last": "sazikuzay a kasabelih", + "table_pager_limit_submit": "mileku", + "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1| sasukamu ]])", + "timezone-local": "itizaay", + "version": "baziyong", + "version-specialpages": "sazumaay a kasabelih", + "version-other": "zuma", + "version-hooks": "kulawid", + "version-hook-subscribedby": "pangangan", + "version-skin-colheader-name": "nuhekalan", + "version-ext-colheader-version": "baziyong", + "version-ext-colheader-description": "patahkal", + "version-ext-colheader-credits": "masacudaday", + "version-poweredby-others": "zuma", + "version-software-product": "nasang’ay a tuutuud", + "version-software-version": "baziyong", + "version-entrypoints-header-url": "URL", + "version-libraries-library": "sulu nu cengse", + "version-libraries-version": "baziyong", + "version-libraries-description": "patahkal", + "version-libraries-authors": "masacudaday", + "redirect-submit": "mileku", + "fileduplicatesearch-submit": "kilim", + "specialpages": "sazumaay a kasabelih", + "specialpages-group-login": "patalabu / panganganen ku canghaw", + "tag-filter": "[[Special:Tags|aazihen paya]] kilim:", + "tag-filter-submit": "kilim", + "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|aazihen paya’}}]]: $2)", + "tags-source-header": "saangangan", + "tags-actions-header": "saungay", + "tags-active-yes": "hang", + "tags-active-no": "caay", + "tags-delete": "masipu", + "tags-activate": "miteka’", + "tags-deactivate": "mapasatezep", + "tags-create-reason": "mahicaay:", + "tags-create-submit": "patizeng", + "tags-delete-reason": "mahicaay:", + "tags-activate-reason": "mahicaay:", + "tags-activate-submit": "miteka’", + "tags-deactivate-reason": "mahicaay:", + "tags-edit-reason": "mahicaay:", + "compare-submit": "sasutili’ay", + "diff-form": "sasizuma", + "permanentlink": "saluimengay misiket", + "htmlform-submit": "patayzaan", + "htmlform-selectorother-other": "zuma", + "htmlform-no": "caay", + "htmlform-yes": "hang", + "htmlform-cloner-delete": "milimad", + "htmlform-title-not-exists": "$1 inayi’", + "htmlform-user-not-exists": "$1 inayi’", + "logentry-delete-delete": "$1 {{GENDER:$2|masiputu}} kasabelih $3", + "restore-count-files": "{{PLURAL:$1|1 tangan}}", + "logentry-move-move": "$1 {{GENDER:$2|milimad tuway}} kasabelih $3 katukuh $4", + "logentry-newusers-create": "{{GENDER:$2|patizeng}} misaungayay canghaw tuway $1", + "logentry-upload-upload": "$1 {{GENDER:$2|masayacay tuway}} $3", + "rightsnone": "(nayi’)", + "feedback-back": "tatiku", + "feedback-cancel": "palawpes", + "feedback-close": "pahezek", + "feedback-message": "palatuh:", + "feedback-subject": "taazihan tu kawaw:", + "feedback-submit": "patayzaan", + "searchsuggest-search": "kilim {{SITENAME}}", + "expand_templates_output": "heci", + "expand_templates_ok": "malucekay", + "expand_templates_preview": "pataayaway miazih", + "pagelang-language": "kamu", + "pagelang-reason": "mahicaay:", + "pagelang-submit": "patayzaan", + "mediastatistics-header-bitmap": "pacepacekan a zunga", + "mediastatistics-header-audio": "ludihang", + "mediastatistics-header-video": "yiga", + "mediastatistics-header-office": "zimusiw", + "mediastatistics-header-executable": "kapah tu mileku", + "special-characters-group-latin": "u sulit nu Latin", + "special-characters-group-symbols": "sawantan", + "special-characters-group-greek": "u sulit nu Sila", + "special-characters-group-devanagari": "Devanagari a kamu", + "special-characters-group-thai": "u sulit nu Tayko", + "special-characters-group-lao": "u sulit nu Liau", + "special-characters-group-khmer": "u sulit nu Kaomien", + "special-characters-title-minus": "selep a bacu", + "log-action-filter-all": "hamin", + "log-action-filter-block-block": "malangat", + "log-action-filter-protect-protect": "midiput", + "log-action-filter-upload-upload": "baluhay a patapabaw", + "authprovider-resetpass-skip-label": "sekipo" +} diff --git a/languages/i18n/ar.json b/languages/i18n/ar.json index a00d2a7208..626cf61bae 100644 --- a/languages/i18n/ar.json +++ b/languages/i18n/ar.json @@ -1342,6 +1342,7 @@ "recentchanges-legend-heading": "شرح:", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (راجع أيضا [[Special:NewPages|قائمة الصفحات الجديدة]])", "recentchanges-submit": "أظهر", + "rcfilters-tag-remove": "أزل '$1'", "rcfilters-legend-heading": "قائمة الاختصارات:", "rcfilters-other-review-tools": "أدوات مراجعة أخرى", "rcfilters-group-results-by-page": "جمع النتائج حسب الصفحة", @@ -1354,6 +1355,7 @@ "rcfilters-hours-title": "عدد الساعات الأخيرة", "rcfilters-days-show-days": "{{PLURAL:$1|يوما واحدا|يومان|$1 أيام|$1 يوما}}", "rcfilters-days-show-hours": "{{PLURAL:$1|ساعة واحدة|ساعتان|$1 ساعات|$1 ساعة}}", + "rcfilters-highlighted-filters-list": "معلمة: $1", "rcfilters-quickfilters": "المرشحات المحفوظة", "rcfilters-quickfilters-placeholder-title": "لا وصلات تم حفظها بعد", "rcfilters-quickfilters-placeholder-description": "لحفظ إعدادات الفلتر وإعادة استخدامها في وقت لاحق; انقر فوق رمز الإشارة المرجعية في منطقة الفلتر النشط أدناه.", @@ -1383,7 +1385,7 @@ "rcfilters-filterlist-noresults": "لم يتم العثور على مرشحات", "rcfilters-noresults-conflict": "لا نتائج تم العثور عليها لأن محددات البحث تعارض بعضها البعض", "rcfilters-state-message-subset": "هذا المرشح ليس له تأثير لأن نتائجه متضمنة في {{PLURAL:$2|المرشح التالي|المرشحات التالية}} الأكثر عمومية (جرب التعليم لتمييزه): $1", - "rcfilters-state-message-fullcoverage": "اختيار كل المرشحات في مجموعة له نفس التأثير كاختيار لا شيء، لذا فهذا المرشح ليس له تأثير. المجموعة تتضمن: $1", + "rcfilters-state-message-fullcoverage": "اختيار كل المرشحات في هذه المجموعة له نفس التأثير كاختيار لا شيء، لذا فهذا المرشح ليس له تأثير. المجموعة تتضمن: $1", "rcfilters-filtergroup-authorship": "ملكية التعديلات", "rcfilters-filter-editsbyself-label": "تعديلاتك الشخصية", "rcfilters-filter-editsbyself-description": "مساهماتك الشخصية.", @@ -1422,6 +1424,11 @@ "rcfilters-filter-watchlist-watchednew-description": "التغييرات التي حدثت على الصفحات التي تراقبها ولم تزرها منذ ذلك الحين.", "rcfilters-filter-watchlist-notwatched-label": "ليس في قائمة المراقبة", "rcfilters-filter-watchlist-notwatched-description": "كل شيء باستثناء التغييرات في صفحات قائمة مراقبتك.", + "rcfilters-filtergroup-watchlistactivity": "نشاط قائمة المراقبة", + "rcfilters-filter-watchlistactivity-unseen-label": "تغييرات غير مرئية", + "rcfilters-filter-watchlistactivity-unseen-description": "التغييرات للصفحات التي لم تزرها منذ حدوث هذه التغييرات.", + "rcfilters-filter-watchlistactivity-seen-label": "التغييرات المرئية", + "rcfilters-filter-watchlistactivity-seen-description": "التغييرات للصفحات التي زرتها منذ حدوث هذه التغييرات.", "rcfilters-filtergroup-changetype": "نوع التغيير", "rcfilters-filter-pageedits-label": "تعديلات الصفحة", "rcfilters-filter-pageedits-description": "التعديلات لمحتوى الويكي، النقاشات، وصوفات التصنيفات…", @@ -1451,6 +1458,8 @@ "rcfilters-liveupdates-button": "تحديثات حية", "rcfilters-liveupdates-button-title-on": "إيقاف التحديثات الحية", "rcfilters-liveupdates-button-title-off": "عرض التغييرات الجديدة فور حدوثها", + "rcfilters-watchlist-markseen-button": "التعليم على كل التغييرات كمرئية", + "rcfilters-watchlist-edit-watchlist-button": "تعديل قائمة الصفحات المراقبة", "rcnotefrom": "بالأسفل {{PLURAL:$5|التغيير|التغييرات}} منذ $2 (إلى $1 معروضة).", "rclistfromreset": "إعادة ضبط خيار التاريخ", "rclistfrom": "أظهر التغييرات بدء من $3 $2", @@ -1966,6 +1975,7 @@ "apisandbox-sending-request": "إرسال طلب API ...", "apisandbox-loading-results": "استقبال طلبات API ...", "apisandbox-results-error": "حدث خطأ أثناء تحميل رد استعدلام الAPI: $1.", + "apisandbox-results-login-suppressed": "هذا الطلب تمت معالجته كمستخدم مسجل الخروج حيث أنه يمكن استخدامه لتجاوز سرية نفس-الأصل للمتصفح. لاحظ أن معالجة توكين ملعب الAPI لا يعمل بشكل جيد مع مثل هذه الطلبات، من فضلك املأها يدويا.", "apisandbox-request-selectformat-label": "عرض بيانات الطلب ك:", "apisandbox-request-format-url-label": "سلسلة حروف استعلام المسار", "apisandbox-request-url-label": "مسار الطلب:", @@ -3496,7 +3506,7 @@ "version-credits-not-found": "لم يتم العثور على أي معلومات للعاملين على هذا الامتداد.", "version-poweredby-credits": "تدار هذه الويكي بواسطة '''[https://www.mediawiki.org/ ميدياويكي]'''، حقوق النشر © 2001-$1 $2.", "version-poweredby-others": "آخرون", - "version-poweredby-translators": "مترجمو translatewiki.net", + "version-poweredby-translators": "مترجمو ترانسليت ويكي دوت نت", "version-credits-summary": "نود أن نعرف بالأشخاص التالية أسماؤهم لمساهمتهم في [[Special:Version|ميدياويكي]].", "version-license-info": "ميدياويكي برنامج حر، يحق لك توزيعه و/أو تعديله وفقاً لبنود رخصة غنو العمومية كما نشرتها مؤسسة البرمجيات الحرة، الإصدار الثاني أو (وفقا لاختيارك أنت) أي إصدار لاحق.\n\nهذا البرنامج يوزع على أمل أن يكون مفيداً، ولكن '''دون أية ضمانات'''، بما في ذلك ضمانات '''التسويق''' أو '''الملاءمة لغرض معين'''. انظر رخصة غنو العمومية لمزيد من التفاصيل.\n\nينبغي أن تكون قد تلقيت نسخة من رخصة غنو العمومية إذا لم يتم ذلك، اكتب إلى: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA أو [//www.gnu.org/licenses/old-licenses/gpl-2.0.html اقرأ على الإنترنت].", "version-software": "البرنامج المثبت", @@ -4066,6 +4076,7 @@ "undelete-cantedit": "أنت لا يمكنك استرجاع هذه الصفحة حيث أنه لا يمكنك تعديل هذه الصفحة.", "undelete-cantcreate": "أنت لا يمكنك استرجاع هذه الصفحة حيث أنه لا توجد صفحة بهذا الاسم وأنت غير مسموح لك بإنشاء هذه الصفحة.", "pagedata-title": "بيانات الصفحة", + "pagedata-text": "هذه الصفحة توفر واجهة بيانات للصفحات. من فضلك وفر عنوان الصفحة في المسار، باستخدام صيغة الصفحات الفرعية.\n* تفاوض المحتوى يطبق بناء على الAccept header الخاص بعميلك. هذا يعني أن بيانات الصفحة سيتم توفيرها بالصيغة المفضلة لعميلك.", "pagedata-not-acceptable": "لم يتم العثور على هيئة مطابقة. أنماط MIME المدعومة: $1", "pagedata-bad-title": "عنوان خاطئ: $1." } diff --git a/languages/i18n/as.json b/languages/i18n/as.json index bb82b6e57a..60607f4c3e 100644 --- a/languages/i18n/as.json +++ b/languages/i18n/as.json @@ -661,7 +661,7 @@ "permissionserrorstext": "আপোনাৰ এই কামটো কৰিবলৈ অনুমতি নাই, যাৰ {{PLURAL:$1|কাৰণ|কাৰণসমূহ}} হ'ল:", "permissionserrorstext-withaction": "আপোনাৰ $2 কৰিবলৈ অনুমতি নাই, যাৰ {{PLURAL:$1|কাৰণ|কাৰণসমূহ}} হ'ল:", "recreate-moveddeleted-warn": "'''সাৱধান: আগতে বিলোপ কৰা পৃষ্ঠা এটা আপুনি পুনঃনিৰ্মাণ কৰি আছে। '''\n\nএই পৃষ্ঠাটো সম্পাদনা কৰা উচিত হব নে নহয় আপুনি বিবেচনা কৰি চাওক।\nএই পৃষ্ঠাটো বিলোপ আৰু স্থানান্তৰ কৰাৰ অভিলেখ আপোনাৰ সুবিধাৰ্থে ইয়াত দিয়া হৈছে।", - "moveddeleted-notice": "এই পৃষ্ঠা বিলোপ কৰা হৈছে।\nপৃষ্ঠাৰ বিলোপ আৰু স্থানান্তৰণ অভিলেখ তলত দিয়া হ'ল।", + "moveddeleted-notice": "এই পৃষ্ঠা বিলোপ কৰা হৈছে।\nপৃষ্ঠাৰ বিলোপন, সুৰক্ষা আৰু স্থানান্তৰণ অভিলেখ তলত দিয়া হ'ল।", "log-fulllog": "সম্পূৰ্ণ অভিলেখ চাওক", "edit-hook-aborted": "হুকৰ দ্বাৰা সম্পাদনা প্ৰত্যাখ্যান কৰা হৈছে।\nইয়াৰ কোনো ব্যাখ্যা নাই।", "edit-gone-missing": "পৃষ্ঠাটো নবীকৰণ কৰিব পৰা নগ’ল।\nসম্ভৱতঃ পৃষ্ঠাটো বিলোপ কৰা হৈছে।", @@ -723,7 +723,7 @@ "page_first": "প্ৰথম", "page_last": "অন্তিম", "histlegend": "পাৰ্থক্য বাছনি: পাৰ্থক্য চাবলৈ সংকলনবোৰৰ সম্মুখত থকা ৰেডিঅ' বুটামবোৰ বাচনী কৰি এণ্টাৰ টিপক অথবা একেবাৰে তলত দিয়া বুটামতো ক্লিক কৰক
\nলিজেণ্ড: '''({{int:cur}})''' = বৰ্তমানৰ সংকলনৰ লগত পাৰ্থক্য,\n'''({{int:last}})''' = আগৰ সংকলনৰ লগত পাৰ্থক্য, '''{{int:minoreditletter}}'' = অগুৰুত্বপূৰ্ণ সম্পাদনা।", - "history-fieldset-title": "ইতিহাসত অনুসন্ধান কৰক", + "history-fieldset-title": "সংশোধিত সংস্কৰণ সন্ধান কৰক", "history-show-deleted": "মাথোঁ বিলোপ কৰা", "histfirst": "আটাইতকৈ পুৰণি", "histlast": "শেহতীয়া", diff --git a/languages/i18n/ast.json b/languages/i18n/ast.json index 4e7ca5a60f..05c414b6f4 100644 --- a/languages/i18n/ast.json +++ b/languages/i18n/ast.json @@ -52,6 +52,7 @@ "tog-watchlisthideminor": "Anubrir les ediciones menores na llista de siguimientu", "tog-watchlisthideliu": "Anubrir les ediciones d'usuarios identificaos na llista de siguimientu", "tog-watchlistreloadautomatically": "Recargar la llista de siguimientu automáticamente cuando se cambie un filtru (rique JavaScript).", + "tog-watchlistunwatchlinks": "Añadir enllaces direutos pa siguir o dexar de siguir les entraes de la llista de siguimientu (rique JavaScript p'activar la función)", "tog-watchlisthideanons": "Anubrir les ediciones d'usuarios anónimos na llista de siguimientu", "tog-watchlisthidepatrolled": "Anubrir les ediciones patrullaes na llista de siguimientu", "tog-watchlisthidecategorization": "Tapecer la categorización de páxines", @@ -1286,6 +1287,7 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (ver tamién la [[Special:NewPages|llista de páxines nueves]])", "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Amosar", + "rcfilters-tag-remove": "Desanicia '$1'", "rcfilters-legend-heading": "Llista d'abreviatures:", "rcfilters-other-review-tools": "Otres ferramientes de revisión", "rcfilters-group-results-by-page": "Agrupar resultancies per páxina", @@ -1298,6 +1300,7 @@ "rcfilters-hours-title": "Últimes hores", "rcfilters-days-show-days": "$1 {{PLURAL:$1|día|díes}}", "rcfilters-days-show-hours": "$1 {{PLURAL:$1|hora|hores}}", + "rcfilters-highlighted-filters-list": "Resaltao: $1", "rcfilters-quickfilters": "Filtros guardaos", "rcfilters-quickfilters-placeholder-title": "Entá nun se guardaron enllaces", "rcfilters-quickfilters-placeholder-description": "Pa guardar les preferencies del filtru y volver a usales sero, pulsia nel iconu del marcador del área de Filtru Activu más abaxo.", @@ -1327,7 +1330,7 @@ "rcfilters-filterlist-noresults": "Nun s'alcontraron filtros", "rcfilters-noresults-conflict": "Nun s'alcontraron resultaos porque los criterios de gueta tán en conflictu", "rcfilters-state-message-subset": "Esti filtru nun fai efeutu porque los resultaos inclúyense ente los {{PLURAL:$2|del siguiente filtru más ampliu|de los siguientes filtros más amplios}} (tenta resaltalu pa estremalu): $1", - "rcfilters-state-message-fullcoverage": "Seleicionar tolos filtros d'un grupu ye igual que nun seleicionar nengunu, de manera qu'esti filtru nun tien efeutu. El grupu incluye: $1", + "rcfilters-state-message-fullcoverage": "Seleicionar tolos filtros d'esti grupu ye igual que nun seleicionar nengunu, de manera qu'esti filtru nun tien efeutu. El grupu incluye: $1", "rcfilters-filtergroup-authorship": "Autoría de la contribución", "rcfilters-filter-editsbyself-label": "Cambios de to", "rcfilters-filter-editsbyself-description": "Contribuciones de to.", @@ -1366,6 +1369,11 @@ "rcfilters-filter-watchlist-watchednew-description": "Cambios nes páxines de la llista de siguimientu que nun visitasti desque asocedieron los cambios.", "rcfilters-filter-watchlist-notwatched-label": "Nun ta na llista de siguimientu", "rcfilters-filter-watchlist-notwatched-description": "Too menos los cambios nes páxines de la llista de siguimientu.", + "rcfilters-filtergroup-watchlistactivity": "Actividá de la llista de siguimientu", + "rcfilters-filter-watchlistactivity-unseen-label": "Cambios non vistos", + "rcfilters-filter-watchlistactivity-unseen-description": "Cambios nes páxines que nun visitasti desque asocedieron los cambios.", + "rcfilters-filter-watchlistactivity-seen-label": "Cambios vistos", + "rcfilters-filter-watchlistactivity-seen-description": "Cambios nes páxines que visitasti desque asocedieron los cambios.", "rcfilters-filtergroup-changetype": "Tipu de cambéu", "rcfilters-filter-pageedits-label": "Ediciones de páxines", "rcfilters-filter-pageedits-description": "Ediciones del conteníu wiki, alderiques, descripciones de categoríes...", @@ -1395,6 +1403,7 @@ "rcfilters-liveupdates-button": "Anovamientos nel intre", "rcfilters-liveupdates-button-title-on": "Apagar anovamientos en direuto", "rcfilters-liveupdates-button-title-off": "Amosar los cambeos de la qu'asoceden", + "rcfilters-watchlist-markSeen-button": "Marcar tolos cambios como vistos", "rcnotefrom": "Abaxo {{PLURAL:$5|tá'l cambiu|tan los cambios}} dende'l $3, a les $4 (s'amuesen un máximu de $1).", "rclistfromreset": "Reaniciar la seleición de data", "rclistfrom": "Amosar los nuevos cambios dende'l $3 a les $2", diff --git a/languages/i18n/az.json b/languages/i18n/az.json index c5b80aede0..d2173a2017 100644 --- a/languages/i18n/az.json +++ b/languages/i18n/az.json @@ -475,6 +475,11 @@ "retypenew": "Yeni parolu təkrar yazın:", "resetpass_submit": "Parol yaradın və sistemə daxil olun", "changepassword-success": "Sizin parol uğurla dəyişdirildi!", + "botpasswords-label-appid": "Bot adı:", + "botpasswords-label-create": "Yarat", + "botpasswords-label-update": "Yenilə", + "botpasswords-label-cancel": "Ləğv et", + "botpasswords-label-delete": "Sil", "resetpass_forbidden": "Parolu dəyişmək mümkün deyil", "resetpass-no-info": "Bu səhifəni birbaşa açmaq üçün sistemə daxil olmalısınız.", "resetpass-submit-loggedin": "Parolu dəyiş", @@ -868,6 +873,7 @@ "userrights-changeable-col": "Dəyişdirə bildiyiniz qruplar", "userrights-unchangeable-col": "Dəyişdirə bilmədiyiniz qruplar", "userrights-irreversible-marker": "$1*", + "userrights-expiry-othertime": "Başqa vaxt:", "group": "Qrup:", "group-user": "İstifadəçilər", "group-autoconfirmed": "Avtotəsdiqlənmiş istifadəçilər", @@ -939,6 +945,7 @@ "right-userrights-interwiki": "Digər vikilərdəki istifadəçilərin istifadəçi hüquqlarını dəyişdir", "right-siteadmin": "Məlumatlar bazasının bloklanması və blokun götürülməsi", "right-sendemail": "Digər istifadəçilərə elektron poçt göndər", + "grant-group-email": "E-məktub göndər", "grant-editmywatchlist": "İzləmə siyahınızda redaktə", "newuserlogpage": "Yeni istifadəçilərin qeydiyyatı", "newuserlogpagetext": "Yeni qeydiyyatdan keçmiş istifadəçilərin siyahısı.", @@ -990,6 +997,12 @@ "recentchanges-label-plusminus": "Səhifənin ölçüsündəki dəyişiklik (baytlarla)", "recentchanges-legend-heading": "Legenda:", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (həmçinin bax: [[Special:NewPages|yeni səhifələrin siyahısı]])", + "recentchanges-submit": "Göstər", + "rcfilters-savedqueries-new-name-label": "Ad", + "rcfilters-savedqueries-cancel-label": "Ləğv et", + "rcfilters-filterlist-title": "Filtrlər", + "rcfilters-filter-bots-label": "Bot", + "rcfilters-filter-minor-label": "Kiçik redaktələr", "rcnotefrom": "Aşağıda $2-dən bu yana olan dəyişikliklər göstərilib ($1-dən çox olmayaraq).", "rclistfrom": "$3 $2 vaxtından başlayaraq yeni dəyişiklikləri göstər", "rcshowhideminor": "Kiçik redaktələri $1", @@ -1104,6 +1117,7 @@ "upload-http-error": " HTTP xətası var : $1", "upload-dialog-title": "Fayl yüklə", "upload-dialog-button-cancel": "İmtina", + "upload-dialog-button-back": "Əvvəlki", "upload-dialog-button-done": "Oldu", "upload-dialog-button-save": "Qeyd et", "upload-dialog-button-upload": "Yüklə", @@ -1241,8 +1255,10 @@ "fewestrevisions": "Az dəyişiklik edilmiş məqalələr", "nbytes": "$1 {{PLURAL:$1|bayt|bayt}}", "ncategories": "$1 {{PLURAL:$1|kateqoriya|kateqoriya}}", + "ninterwikis": "$1 {{PLURAL:$1|interviki|intervikilər}}", "nlinks": "$1 {{PLURAL:$1|keçid|keçid}}", "nmembers": "$1 {{PLURAL:$1|üzv|üzv}}", + "nmemberschanged": "$1 → $2 {{PLURAL:$2|üzv|üzvlər}}", "nrevisions": "$1 dəyişiklik", "nimagelinks": "$1 səhifədə istifadə olunmur", "ntransclusions": "$1 səhifədə istifadə olunur", @@ -1266,6 +1282,7 @@ "mostimages": "Ən çox istifadə edilmiş şəkillər", "mostrevisions": "Ən çox nəzərdən keçirilmiş (versiyalı) məqalələr", "prefixindex": "Prefiks indeksli bütün səhifələr", + "prefixindex-submit": "Göstər", "shortpages": "Qısa səhifələr", "longpages": "Uzun səhifələr", "deadendpages": "Keçid verməyən səhifələr", @@ -1275,6 +1292,7 @@ "protectedpages-cascade": "Yalnız kaskad mühafizələr", "protectedpagesempty": "Hal-hazırda bu parametrə uyğun heç bir mühafizəli səhifə yoxdur", "protectedpages-page": "Səhifə", + "protectedpages-reason": "Səbəb", "protectedpages-unknown-timestamp": "Naməlum", "protectedtitles": "Mühafizəli başlıqlar", "listusers": "İstifadəçi siyahısı", @@ -1283,6 +1301,7 @@ "usereditcount": "$1 {{PLURAL:$1|redaktə}}", "usercreated": "Saat $2, $1 tarixində {{GENDER:$3|qeydiyyatdan keçib}}", "newpages": "Yeni səhifələr", + "newpages-submit": "Göstər", "newpages-username": "İstifadəçi adı:", "ancientpages": "Ən köhnə səhifələr", "move": "Adını dəyiş", @@ -1302,6 +1321,7 @@ "specialloguserlabel": "İcraçı:", "speciallogtitlelabel": "Məqsəd (başlıq və ya istifadəçi):", "log": "Qeydlər", + "logeventslist-submit": "Göstər", "all-logs-page": "Bütün ictimai qeydlər", "alllogstext": "{{SITENAME}} üçün bütün mövcud qeydlərin birgə göstərişi.\nQeyd növü, istifadəçi adı və ya təsir edilmiş səhifəni seçməklə daha spesifik ola bilərsiniz.", "logempty": "Jurnalda uyğun qeyd tapılmadı.", @@ -1321,6 +1341,7 @@ "allpagesprefix": "Bu prefiksli səhifələri göstər:", "allpages-hide-redirects": "Yönləndirmələri gizlət", "categories": "Kateqoriyalar", + "categories-submit": "Göstər", "categoriespagetext": "Aşağıdakı {{PLURAL:$1|kateqoriyada|kateqoriyalarda}} səhifələr, yaxud media-fayllar var.\n[[Special:UnusedCategories|İstifadə olunmayan kateqoriyalar]] burada göstərilməyib.\nHəmçinin, [[Special:WantedCategories|tələb olunan kateqoriyalara]] baxın.", "deletedcontributions": "Silinmiş istifadəçi fəaliyyətləri", "deletedcontributions-title": "Silinmiş istifadəçi fəaliyyətləri", @@ -1398,6 +1419,10 @@ "wlheader-showupdated": "Son ziyarətinizdən sonra edilən dəyişikliklər '''qalın şriftlərlə''' göstərilmişdir.", "wlnote": "Aşağıdakı {{PLURAL:$1|'''$1''' dəyişiklik|'''$1''' dəyişiklik}} son {{PLURAL:$2|saatda|'''$2''' saatda}} edilmişdir.", "wlshowlast": "Son $1 saatı $2 günü göstər", + "watchlist-hide": "Gizlət", + "watchlist-submit": "Göstər", + "wlshowhideminor": "kiçik redaktələr", + "wlshowhidebots": "botlar", "wlshowhidemine": "mənimn redaktələrim", "watchlist-options": "İzləmə siyahısının nizamlamaları", "watching": "İzlənilir...", @@ -1411,6 +1436,7 @@ "enotif_lastdiff": "Bu dəyişikliyi görmək üçün $1 səhifəsinə baxın.", "enotif_anon_editor": "qeydiyyatsız istifadəçi $1", "enotif_body": "Hörmətli $WATCHINGUSERNAME,\n\n{{SITENAME}} veb-saytındakı $PAGETITLE adlı səhifə $PAGEEDITDATE tarixində $PAGEEDITOR tərəfindən $CHANGEDORCREATED. Səhifənin sonuncu versiyasına baxmaq üçün $PAGETITLE_URL keçidindən istifadə edin.\n\n$NEWPAGE\n\nDəyişikliyi edən istifadəçinin izahı: $PAGESUMMARY $PAGEMINOREDIT\n\nSəhifəni dəyişdirən istifadəçinin əlaqə məlumatları:\ne-poçt: $PAGEEDITOR_EMAIL\nviki: $PAGEEDITOR_WIKI\n\nSiz haqqında söhbət gedən səhifəyə baxanadək səhifədəki digər dəyişikliklərlə bağlı başqa bildiriş məktubu almayacaqsınız. Siz həmçinin, izləmə siyahınızdakı bütün səhifələrlə bağlı bildiriş məlumatlarını silə bilərsiniz.\n\n {{SITENAME}} saytının xəbərdarlıq sistemi.\n\n--\nİzləmə siyahısının tənzimləmələrini dəyişmək üçün:\n{{canonicalurl:Special:Watchlist/edit}}\n\nYardım və təklifləriniz üçün:\n$HELPPAGE", + "enotif_minoredit": "Bu kiçik redaktədir", "created": "yaradıldı", "changed": "dəyişdi", "deletepage": "Səhifəni sil", @@ -1605,6 +1631,11 @@ "unblocked-range": "$1-nin bloku götürüldü", "unblocked-id": "$1-nin bloku götürüldü", "blocklist": "Bloklanmış istifadəçilər", + "autoblocklist": "Avtobloklar", + "autoblocklist-submit": "Axtar", + "autoblocklist-legend": "Avtoblokların siyahısı", + "autoblocklist-localblocks": "Lokal {{PLURAL:$1|avtoblok|avtobloklar}}", + "autoblocklist-otherblocks": "Digər {{PLURAL:$1|avtoblok|avtobloklar}}", "ipblocklist": "Bloklanmış istifadəçilər", "ipblocklist-legend": "Bloklanmış istifadəçini axtar", "blocklist-userblocks": "Hesab bloklarını gizlət", @@ -1859,7 +1890,9 @@ "pageinfo-length": "Səhifənin ölçüsü (baytla)", "pageinfo-article-id": "Səhifə ID-si", "pageinfo-language": "Səhifənin dili", + "pageinfo-language-change": "dəyiş", "pageinfo-content-model": "Səhifə məzmunu modeli", + "pageinfo-content-model-change": "dəyiş", "pageinfo-robot-policy": "Robotlar tərəfindən indeksləşmə", "pageinfo-robot-index": "İcazə verilir", "pageinfo-robot-noindex": "İcazə verilmədi", diff --git a/languages/i18n/ba.json b/languages/i18n/ba.json index 68f80d1516..ac3cdc631d 100644 --- a/languages/i18n/ba.json +++ b/languages/i18n/ba.json @@ -1296,6 +1296,7 @@ "recentchanges-legend-heading": "Легенда:", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|Яңы биттәр исемлеген]] ҡарағыҙ)", "recentchanges-submit": "Күрһәтергә", + "rcfilters-tag-remove": "'$1'юй", "rcfilters-legend-heading": "Ҡыҫҡартыуҙар теҙмәһе:", "rcfilters-other-review-tools": "Тикшереүҙең башҡа ҡоралдары", "rcfilters-group-results-by-page": "Төркөмдөң төрлө биттәге һөҙөмтәләре", @@ -1308,6 +1309,7 @@ "rcfilters-hours-title": "Аҙаҡҡы сәғәттәр", "rcfilters-days-show-days": "$1 {{PLURAL:$1|көн|көндәр}}", "rcfilters-days-show-hours": "$1 {{PLURAL:$1|сәғәт|сәғәттән}}", + "rcfilters-highlighted-filters-list": "Тамғаланған:$1", "rcfilters-quickfilters": "Һаҡланған фильтрҙар", "rcfilters-quickfilters-placeholder-title": "Һаҡланған ссылкалар әлегә юҡ", "rcfilters-quickfilters-placeholder-description": "Фильтрҙың көйләүҙәрен һаҡлар һәм аҙаҡтан уларҙы яңынан ҡулланыу өсөн аҫтағы \"Әүҙем фильтр\" төймәһенә сиртегеҙ.", @@ -1337,7 +1339,7 @@ "rcfilters-filterlist-noresults": "Фильтрҙар табылманы", "rcfilters-noresults-conflict": "Эҙләү критерийҙары ҡаршылыҡлы булған өсөн яуабы табылманы", "rcfilters-state-message-subset": "Фильтр һөҙөмтәһеҙ буласаҡ, сөнки уның һөҙөмтәһе {{PLURAL:$2|киләһе киңерәк фильтр}} индерелгән (айырыу өсөн төҫ биреп ҡарағыҙ):$1", - "rcfilters-state-message-fullcoverage": "Төркөмдәге барлыҡ фильтрҙы ла һайлау бер нимәне лә һайламау менән бер, шуға ла был фильтрҙың әһәмиәте булмаясаҡ. Бәйләнгән төркөмдәр:$1", + "rcfilters-state-message-fullcoverage": "Төркөмдәге барлыҡ фильтрҙы ла һайлау бер нимәне лә һайламау менән бер, шуға ла был фильтрҙың әһәмиәте булмаясаҡ. Бәйле төркөмдәр:$1", "rcfilters-filtergroup-authorship": "Авторлыҡты мөхәррирләү", "rcfilters-filter-editsbyself-label": "Һин индергән үҙгәртеүҙәр", "rcfilters-filter-editsbyself-description": "Һинең өлөшөң", @@ -1376,6 +1378,11 @@ "rcfilters-filter-watchlist-watchednew-description": "Һеҙ үҙгәреш индергән мәлдән алып ҡарамаған биттәрҙәге үҙгәрештәр.", "rcfilters-filter-watchlist-notwatched-label": "Күҙәтеү теҙмәһендә юҡ", "rcfilters-filter-watchlist-notwatched-description": "Һеҙ һылтанған биттән башҡа барлыҡ үҙгәрештәр.", + "rcfilters-filtergroup-watchlistactivity": "Күҙәтеү исемлегендәге әүҙемлек", + "rcfilters-filter-watchlistactivity-unseen-label": "Әлегә ҡаралмаған үҙгәртеүҙәр", + "rcfilters-filter-watchlistactivity-unseen-description": "Был биттәрҙә үҙгәртеүҙәр булғандан һуң әлегә һеҙ күрмәгән үҙгәртеүҙәр", + "rcfilters-filter-watchlistactivity-seen-label": "Ҡарап сыҡҡан үҙгәрештәр", + "rcfilters-filter-watchlistactivity-seen-description": "Был биттәрҙә үҙгәртеү булғандан һуң һеҙ күргән үҙгәртеүҙәр", "rcfilters-filtergroup-changetype": "Үҙгәреш төрө", "rcfilters-filter-pageedits-label": "Биттәрҙе мөхәррирләү", "rcfilters-filter-pageedits-description": "Вики йөкмәткеһен, фекерләшеү, категориялар яҙмаһын мөхәррирләү...", @@ -1405,6 +1412,7 @@ "rcfilters-liveupdates-button": "Автоматик яңыртыу", "rcfilters-liveupdates-button-title-on": "Автоматик яңыртыуҙы һүндереү", "rcfilters-liveupdates-button-title-off": "Яңы үҙгәрештәрҙе килеп сығыу менән күрһәтергә", + "rcfilters-watchlist-markSeen-button": "Бар үҙгәртеүҙе лә күрҙем тип билдәлә", "rcnotefrom": "Аҫта $3, $4 ҡарата {{PLURAL:$5|үҙгәртеүҙәр күрһәтелгән}} ($1 күберәк түгел).", "rclistfromreset": "Дата һайлауҙы һүндереү", "rclistfrom": "$3 $2 алып яңы үҙгәртеүҙәрҙе күрһәт.", @@ -1957,7 +1965,7 @@ "checkbox-select": "Һайланған: $1", "checkbox-all": "Барыһы", "checkbox-none": "Юҡ", - "checkbox-invert": "Әйләндерү", + "checkbox-invert": "Әйләндереү", "allpages": "Бөтә биттәр", "nextpage": "Киләһе бит ($1)", "prevpage": "Алдағы бит ($1)", @@ -3288,6 +3296,7 @@ "timezone-local": "Локаль", "duplicate-defaultsort": "'''Иҫкәртеү:''' \"$2\" ғәҙәттәге тәпртипкә килтереү асҡысы элекке \"$1\" ғәҙәттәге тәртипкә килтереү асҡысын үҙгәртә.", "duplicate-displaytitle": "Иғтибар: Күрһәтелгән «$2» алдағы «$1» исемде ҡабатлай.", + "restricted-displaytitle": " Иғтибар: «$1» баш яҙмаһы кире ҡағылды, сөнки ул биттең ысын исеменә тап килмәй.", "invalid-indicator-name": "Хата: Биттең торошон күрһәтеүсе атрибут индикаторы name буш була алмай.", "version": "MediaWiki өлгөһө", "version-extensions": "Ҡуйылған киңәйтеүҙәр", @@ -3355,6 +3364,7 @@ "fileduplicatesearch-noresults": "\"$1\" исемле файл табылманы", "specialpages": "Махсус биттәр", "specialpages-note-top": "Легенда", + "specialpages-note-restricted": "* Ябай махсус биттәр.\n* Сикләнгән махсус биттәр.", "specialpages-group-maintenance": "Техник хеҙмәтләндереү хисапламалары", "specialpages-group-other": "Башҡа махсус биттәр", "specialpages-group-login": "Танылыу йәки теркәлеү", @@ -3375,6 +3385,8 @@ "tag-filter": "[[Special:Tags|Билдәләрҙе]] һайлау:", "tag-filter-submit": "Һайлау", "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Тамғалар}}]]: $2)", + "tag-mw-contentmodelchange": "Йөкмәтке моделен үҙгәртеү", + "tag-mw-contentmodelchange-description": "Биттең [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:ChangeContentModel йөкмәткеһе моделен үҙгәрткән] төҙәтеүҙәр", "tags-title": "Билдәләр", "tags-intro": "Был биттә программа үҙгәртеүҙәрҙе билдәләү өсөн ҡулланған билдәләр һәм уларҙың мәғәнәләре исемлеге килтерелгән.", "tags-tag": "Билдә исеме", @@ -3418,6 +3430,7 @@ "tags-delete-not-found": "$1 тамғаһы юҡ.", "tags-delete-too-many-uses": " «$1» тамғаһы $2 {{PLURAL:$2|өлгөлә}} артығыраҡ ҡулланыла, был юйылмаясаҡ тигәнде аңлата.", "tags-delete-warnings-after-delete": " «$1» тамғаһы юйылды, әммә {{PLURAL:$2|түбәндәге киҫәтеүҙәр алында}}:", + "tags-delete-no-permission": "Үҙгәртеү тамғаларын юйырға рөхсәтегеҙ юҡ.", "tags-activate-title": "Тамғаны активлаштырырға", "tags-activate-question": "«$1» тамғаһын активлыштырырға теләйһегеҙме?", "tags-activate-reason": "Сәбәп:", @@ -3471,6 +3484,12 @@ "compare-title-not-exists": "Һеҙ күрһәткән исем юҡ.", "compare-revision-not-exists": "Һеҙ күрһәткән версия юҡ.", "diff-form": "Айырмалар", + "diff-form-oldid": "Элекке версияны раҫлау (мотлаҡ түгел)", + "diff-form-revid": "Айырманы яңынан ҡарауҙы раҫлау", + "diff-form-submit": "Айырмаларҙы күрһәтеү", + "permanentlink": "Даими һылтанма", + "permanentlink-revid": "Икенсе өлгөнө раҫлау", + "permanentlink-submit": "Яңынан ҡарап сығыуға күсеү", "dberr-problems": "Ғәфү итегеҙ! Был сайтта техник ҡыйынлыҡтар тыуҙы.", "dberr-again": "Битте бер нисә минуттан яңыртып ҡарағыҙ.", "dberr-info": "(Мәғлүмәттәр базаһы серверы менән тоташтырылып булмай: $1)", @@ -3494,6 +3513,18 @@ "htmlform-cloner-create": "Тағы өҫтәргә", "htmlform-cloner-delete": "Юйырға", "htmlform-cloner-required": "Кәм тигәндә бер дәүмәл кәрәк", + "htmlform-date-placeholder": "ЙЙЙЙ-АА-КК (йыл, ай, көн)", + "htmlform-time-placeholder": "СС:ММ:СС", + "htmlform-datetime-placeholder": "ЙЙЙЙ-АА-КК СС:ММ:СС", + "htmlform-date-invalid": "Датаға оҡшамаған. ЙЙЙЙ-АА-КК форматында яҙып ҡарағыҙ.", + "htmlform-time-invalid": "Ваҡытҡа оҡшамаған. СС-ММ-СС форматында яҙып ҡарағыҙ.", + "htmlform-datetime-invalid": "Датаға ла, ваҡытҡа ла оҡшамаған. ЙЙЙЙ-АА-КК СС-ММ-СС форматында яҙып ҡарағыҙ.", + "htmlform-date-toolow": "Һәҙ тәүҙә рөхсәт ителгән иң иртә $1 датаһынан да иртәрәген күрһәткәнһегеҙ.", + "htmlform-date-toohigh": "Һеҙ күрһәткән дата рөхсәт ителгән $1 иң һуңғы датанан да һуңыраҡ.", + "htmlform-time-toolow": "Һеҙ күрһәткән ваҡыт рөхсәт ителгән иң иртә ваҡыттан $1 да алдараҡ.", + "htmlform-time-toohigh": "Һеҙ күрһәткән ваҡыт рөхсәт ителгән иң һуң ваҡыттан $1 да һуңыраҡ.", + "htmlform-datetime-toolow": "Һеҙ яҙған дата һәм ваҡыт рөхсәт ителгәндәренән $1 күпкә иртәрәк.", + "htmlform-datetime-toohigh": "Һеҙ яҙған дата һәм ваҡыт рөхсәт ителгәндәренән $1 күпкә һуңыраҡ.", "htmlform-title-badnamespace": "[[:$1]] исемдәр арауығында түгел «{{ns:$2}}».", "htmlform-title-not-creatable": "«$1» — бит исеме, быны булдырып булмай", "htmlform-title-not-exists": "$1 юҡ", diff --git a/languages/i18n/be-tarask.json b/languages/i18n/be-tarask.json index d2e4192900..93011065cc 100644 --- a/languages/i18n/be-tarask.json +++ b/languages/i18n/be-tarask.json @@ -1286,6 +1286,7 @@ "recentchanges-legend-heading": "Легенда:", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (глядзіце таксама [[Special:NewPages|сьпіс новых старонак]])", "recentchanges-submit": "Паказаць", + "rcfilters-tag-remove": "Выдаліць «$1»", "rcfilters-legend-heading": "Сьпіс абрэвіятураў:", "rcfilters-other-review-tools": "Іншыя інструмэнты праверкі", "rcfilters-group-results-by-page": "Групаваць вынікі паводле старонак", @@ -1298,6 +1299,7 @@ "rcfilters-hours-title": "Апошнія гадзіны", "rcfilters-days-show-days": "$1 {{PLURAL:$1|дзень|дні|дзён}}", "rcfilters-days-show-hours": "$1 {{PLURAL:$1|гадзіна|гадзіны|гадзінаў}}", + "rcfilters-highlighted-filters-list": "Вылучана: $1", "rcfilters-quickfilters": "Захаваныя фільтры", "rcfilters-quickfilters-placeholder-title": "Спасылкі яшчэ не захаваныя", "rcfilters-quickfilters-placeholder-description": "Каб захаваць налады вашага фільтру і выкарыстаць іх пазьней, націсьніце на выяву закладкі ў зоне актыўнага фільтру ніжэй.", @@ -1320,14 +1322,14 @@ "rcfilters-empty-filter": "Няма актыўных фільтраў. Паказаны ўвесь унёсак.", "rcfilters-filterlist-title": "Фільтры", "rcfilters-filterlist-whatsthis": "Як гэта працуе?", - "rcfilters-filterlist-feedbacklink": "Пакінуць водгук пра новыя (бэта) фільтры", + "rcfilters-filterlist-feedbacklink": "Раскажыце нам, што вы думаеце пра гэтыя (новыя) фільтры", "rcfilters-highlightbutton-title": "Вылучыць вынікі", "rcfilters-highlightmenu-title": "Абярыце колер", "rcfilters-highlightmenu-help": "Абярыце колер для вылучэньня гэтай уласьцівасьці", "rcfilters-filterlist-noresults": "Фільтры ня знойдзеныя", "rcfilters-noresults-conflict": "Няма вынікаў, бо крытэры пошуку супярэчаць адзін аднаму", "rcfilters-state-message-subset": "Гэты фільтар ня мае эфэкту, бо яго вынікі ўключаныя ў вынікі больш {{PLURAL:$2|шырокага фільтру|шырокіх фільтраў}} (паспрабуйце вылучэньне, каб вызначыць яго): $1", - "rcfilters-state-message-fullcoverage": "Выбар усіх фільтраў у групе — тое ж самае, што і выбар ніводнага, адпаведна, гэты фільтар ня мае эфэкту. Група ўключае: $1", + "rcfilters-state-message-fullcoverage": "Выбар усіх фільтраў у гэтай групе — тое ж самае, што і выбар ніводнага, адпаведна, гэты фільтар ня мае эфэкту. Група ўключае: $1", "rcfilters-filtergroup-authorship": "Аўтарства ўнёску", "rcfilters-filter-editsbyself-label": "Зьмены, зробленыя вамі", "rcfilters-filter-editsbyself-description": "Ваш уласны ўнёсак.", @@ -1366,6 +1368,11 @@ "rcfilters-filter-watchlist-watchednew-description": "Зьмены старонак у вашым сьпісе назіраньня, якія вы не наведвалі з моманту гэтых зьменаў.", "rcfilters-filter-watchlist-notwatched-label": "Ня ў сьпісе назіраньня", "rcfilters-filter-watchlist-notwatched-description": "Усё, за выключэньнем зьменаў старонак з вашага сьпісу назіраньня.", + "rcfilters-filtergroup-watchlistactivity": "Актыўнасьць у сьпісе назіраньня", + "rcfilters-filter-watchlistactivity-unseen-label": "Непрагледжаныя зьмены", + "rcfilters-filter-watchlistactivity-unseen-description": "Зьмены старонак, якія вы не наведвалі пасьля гэтых зьменаў.", + "rcfilters-filter-watchlistactivity-seen-label": "Прагледжаныя зьмены", + "rcfilters-filter-watchlistactivity-seen-description": "Зьмены старонак, якія вы наведвалі пасьля гэтых зьменаў.", "rcfilters-filtergroup-changetype": "Тып зьмены", "rcfilters-filter-pageedits-label": "Рэдагаваньні старонкі", "rcfilters-filter-pageedits-description": "Рэдагаваньні вікізьместу, абмеркаваньняў, апісаньняў катэгорыяў…", @@ -1395,6 +1402,9 @@ "rcfilters-liveupdates-button": "Імгненныя абнаўленьні", "rcfilters-liveupdates-button-title-on": "Адключыць аўтаматычнае абнаўленьне", "rcfilters-liveupdates-button-title-off": "Паказваць новыя зьмены як толькі яны адбываюцца", + "rcfilters-watchlist-markseen-button": "Пазначыць усе зьмены як прагледжаныя", + "rcfilters-watchlist-edit-watchlist-button": "Рэдагаваць ваш сьпіс назіраньня за старонкамі", + "rcfilters-watchlist-showupdated": "Зьмены старонак, якія вы не наведвалі пасьля гэтых зьменаў, пазначаныя тоўстым з адпаведнымі пазнакамі.", "rcnotefrom": "Ніжэй {{PLURAL:$5|знаходзіцца зьмена|знаходзяцца зьмены}} з $4 $3 (да $1 на старонку).", "rclistfromreset": "Скінуць выбар даты", "rclistfrom": "Паказаць зьмены з $2 $3", @@ -2078,7 +2088,7 @@ "unwatchthispage": "Перастаць назіраць", "notanarticle": "Не старонка зьместу", "notvisiblerev": "Вэрсія была выдаленая", - "watchlist-details": "У Вашым сьпісе назіраньня $1 {{PLURAL:$1|старонка|старонкі|старонак}} за выключэньнем старонак абмеркаваньня.", + "watchlist-details": "У вашым сьпісе назіраньня $1 {{PLURAL:$1|старонка|старонкі|старонак}} (плюс старонкі размоваў).", "wlheader-enotif": "Апавяшчэньне па e-mail уключанае.", "wlheader-showupdated": "Старонкі, зьмененыя з часу вашага апошняга візыту, вылучаныя '''тоўстым''' шрыфтам.", "wlnote": "Ніжэй {{PLURAL:$1|паказаная $1 апошняя зьмена|паказаныя $1 апошнія зьмены|паказаныя $1 апошніх зьменаў}} за $2 {{PLURAL:$2|гадзіну|гадзіны|гадзінаў}}, па стане на $4 $3.", @@ -2113,6 +2123,7 @@ "enotif_lastdiff": "Глядзіце $1, каб пабачыць гэтую зьмену.", "enotif_anon_editor": "ананімны ўдзельнік $1", "enotif_body": "Вітаем, $WATCHINGUSERNAME.\n\n$PAGEINTRO $NEWPAGE\n\nАпісаньне зьменаў: $PAGESUMMARY $PAGEMINOREDIT\n\nЗьвязацца з рэдактарам:\nпраз электронную пошту: $PAGEEDITOR_EMAIL\nпразь вікі-старонку: $PAGEEDITOR_WIKI\n\nПаведамленьні ня будуць дасылацца ў выпадку новых дзеяньняў, пакуль Вы не наведаеце гэтую старонку па ўваходзе ў сыстэму. Вы таксама можаце адключыць паведамленьні пра зьмены для ўсіх старонак з Вашага сьпісу назіраньня.\n\n Сыстэма паведамленьняў {{GRAMMAR:родны|{{SITENAME}}}}\n\n--\nКаб зьмяніць налады абвяшчэньня праз электронную пошту, наведайце:\n{{canonicalurl:{{#special:Preferences}}}}\n\nКаб зьмяніць налады сьпісу назіраньня, наведайце:\n{{canonicalurl:{{#special:Preferences}}}}\n\nКаб выдаліць старонку з Вашага сьпісу назіраньня, наведайце:\n$UNWATCHURL\n\nЗваротная сувязь і дапамога:\n$HELPPAGE", + "enotif_minoredit": "Гэта дробная праўка", "created": "створаная", "changed": "зьмененая", "deletepage": "Выдаліць старонку", @@ -2141,6 +2152,7 @@ "delete-warning-toobig": "Гэтая старонка мае доўгую гісторыю рэдагаваньняў, больш за $1 {{PLURAL:$1|вэрсію|вэрсіі|вэрсіяў}}.\nЯе выдаленьне можа выклікаць праблемы ў працы базы зьвестак {{GRAMMAR:родны|{{SITENAME}}}}; будзьце асьцярожны.", "deleteprotected": "Вы ня можаце выдаліць гэтую старонку, таму што яна абароненая.", "deleting-backlinks-warning": "Увага: [[Special:WhatLinksHere/{{FULLPAGENAME}}|іншыя старонкі]] ўключаюць або спасылаюцца на старонку, якую вы зьбіраецеся выдаліць.", + "deleting-subpages-warning": "Папярэджаньне: старонка, якую вы зьбіраецеся выдаліць, мае [[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|$1 падстаронку|$1 падстаронкі|$1 падстаронак|51=болей за 50 падстаронак}}]].", "rollback": "Адкаціць рэдагаваньні", "rollbacklink": "адкат", "rollbacklinkcount": "адкаціць $1 {{PLURAL:$1|рэдагаваньне|рэдагаваньні|рэдагаваньняў}}", @@ -2742,7 +2754,7 @@ "pageinfo-toolboxlink": "Зьвесткі пра старонку", "pageinfo-redirectsto": "Перанакіроўвае на", "pageinfo-redirectsto-info": "інфармацыя", - "pageinfo-contentpage": "Лічыцца артыкулам", + "pageinfo-contentpage": "Лічыцца як старонка зь зьместам", "pageinfo-contentpage-yes": "Так", "pageinfo-protect-cascading": "Адсюль пачынаецца каскадная абарона", "pageinfo-protect-cascading-yes": "Так", @@ -3352,10 +3364,10 @@ "redirect-submit": "Перайсьці", "redirect-lookup": "Шукаць паводле:", "redirect-value": "Значэньне:", - "redirect-user": "Ідэнтыфікатара ўдзельніка", - "redirect-page": "Ідэнтыфікатар старонкі", + "redirect-user": "Ідэнтыфікатару ўдзельніка", + "redirect-page": "Ідэнтыфікатару старонкі", "redirect-revision": "Вэрсіі старонкі", - "redirect-file": "Імя файла", + "redirect-file": "Назва файлу", "redirect-logid": "ID журнала", "redirect-not-exists": "Значэньне ня знойдзена", "fileduplicatesearch": "Пошук дублікатаў файлаў", @@ -3368,6 +3380,7 @@ "fileduplicatesearch-noresults": "Файл з назвай «$1» ня знойдзены.", "specialpages": "Спэцыяльныя старонкі", "specialpages-note-top": "Легенда", + "specialpages-note-restricted": "* Звычайныя спэцыяльныя старонкі.\n* Спэцыяльныя старонкі з абмежаваным доступам.", "specialpages-group-maintenance": "Тэхнічныя справаздачы", "specialpages-group-other": "Іншыя спэцыяльныя старонкі", "specialpages-group-login": "Уваход / стварэньне рахунку", @@ -3487,6 +3500,10 @@ "compare-title-not-exists": "Пазначаная старонка не існуе.", "compare-revision-not-exists": "Пазначаная вэрсія не існуе.", "diff-form": "Адрозьненьні", + "diff-form-oldid": "Ідэнтыфікатар старой вэрсіі (неабавязкова)", + "diff-form-revid": "Ідэнтыфікатар вэрсіі з адрозьненьнямі", + "diff-form-submit": "Паказаць адрозьненьні", + "permanentlink": "Сталая спасылка", "dberr-problems": "Прабачце! На гэтым сайце ўзьніклі тэхнічныя цяжкасьці.", "dberr-again": "Паспрабуйце пачакаць некалькі хвілінаў і абнавіць.", "dberr-info": "(Немагчыма злучыцца з базай зьвестак: $1)", diff --git a/languages/i18n/bg.json b/languages/i18n/bg.json index c51f1ac767..f443e19095 100644 --- a/languages/i18n/bg.json +++ b/languages/i18n/bg.json @@ -40,7 +40,8 @@ "Spas.Z.Spasov", "АдмиралАнимЕ", "Irus", - "Kareyac" + "Kareyac", + "ShockD" ] }, "tog-underline": "Подчертаване на препратките:", @@ -400,6 +401,7 @@ "virus-unknownscanner": "непознат антивирус:", "logouttext": "Излязохте от системата.\n\nОбърнете внимание, че някои страници все още ще се показват така, сякаш сте влезли, докато не изтриете кеша на браузъра.", "cannotlogoutnow-title": "Не може да излезете сега", + "cannotlogoutnow-text": "Излизането не е възможно, когато се използва $1.", "welcomeuser": "Здравейте, $1!", "welcomecreation-msg": "Вашата сметка беше създадена.\nМожете да промените [[Special:Preferences|настройките на {{SITENAME}}]] според предпочитанията си.", "yourname": "Потребителско име:", @@ -418,7 +420,9 @@ "cannotlogin-title": "Не може да влезете в", "cannotlogin-text": "Влизането в системата не е възможно.", "cannotloginnow-title": "Не може да влезете сега", + "cannotloginnow-text": "Влизането не е възможно, когато се използва $1.", "cannotcreateaccount-title": "Невъзможно е да бъде създадена потребителска сметка", + "cannotcreateaccount-text": "Директното създаване на сметки не е позволено в това уики.", "yourdomainname": "Вашият домейн:", "password-change-forbidden": "Не можете да променяте пароли в това уики.", "externaldberror": "Възникна грешка в базата от данни при външното удостоверяване, или не ви е позволено да обновявате външната си сметка.", @@ -691,7 +695,7 @@ "permissionserrorstext": "Нямате правата да извършите това действие по {{PLURAL:$1|следната причина|следните причини}}:", "permissionserrorstext-withaction": "Нямате разрешение за $2 поради {{PLURAL:$1|следната причина|следните причини}}:", "recreate-moveddeleted-warn": "Внимание: Създавате страница, която по-рано вече е била изтрита.\n\nОбмислете добре дали е уместно повторното създаване на страницата.\nЗа ваша информация по-долу е посочена причината за предишното изтриване на страницата:", - "moveddeleted-notice": "Тази страница е била изтрита.\nЗа справка, по-долу са включени извадки от дневниците на изтриванията и преместванията.", + "moveddeleted-notice": "Тази страница е изтрита.\nДневниците на изтриванията, защитите и преместванията е показан по-долу.", "log-fulllog": "Преглеждане на пълния дневник", "edit-hook-aborted": "Редакцията беше прекъсната от кука.\nНе беше посочена причина за това.", "edit-gone-missing": "Страницата не можа да се обнови.\nВероятно междувременно е била изтрита.", @@ -970,6 +974,7 @@ "recentchangescount": "Брой показвани редакции по подразбиране:", "prefs-help-recentchangescount": "Това включва последните промени, историите на страниците и дневниците.", "savedprefs": "Настройките ви бяха съхранени.", + "savedrights": "Потребителските групи на {{GENDER:$1|$1}} са запазени.", "timezonelegend": "Часова зона:", "localtime": "Местно време:", "timezoneuseserverdefault": "По подразбиране от уикито ($1)", @@ -1397,7 +1402,7 @@ "filetype-unwanted-type": "„.$1“ е нежелан файлов формат.\n{{PLURAL:$3|Препоръчителният файлов формат е|Препоръчителните файлови формати са}} $2.", "filetype-banned-type": "'''„.$1“''' не {{PLURAL:$4|е позволен файлов формат|са позволени файлови формати}}. {{PLURAL:$3|Позволеният файлов формат е|Позволените файлови формати са}} $2.", "filetype-missing": "Файлът няма разширение (напр. „.jpg“).", - "empty-file": "Подаденият от вас файл беше празен.", + "empty-file": "Подаденият от вас файл е празен.", "file-too-large": "Подаденият от вас файл беше твърде голям.", "filename-tooshort": "Името на файла е твърде кратко.", "filetype-banned": "Този тип файл е забранен.", @@ -1408,7 +1413,7 @@ "unknown-error": "Възникна неизвестна грешка.", "tmp-create-error": "Грешка при създаването на временен файл.", "tmp-write-error": "Грешка при записа на временен файл.", - "large-file": "Не се препоръчва файловете да се по-големи от $1; този файл е $2.", + "large-file": "Не се препоръчва файловете да са по-големи от $1; този файл е $2.", "largefileserver": "Файлът е по-голям от допустимия от сървъра размер.", "emptyfile": "Каченият от вас файл е празен. Това може да е предизвикано от грешка в името на файла. Уверете се дали наистина желаете да го качите.", "windows-nonascii-filename": "Уикито не поддържа имена на файлове със специални знаци.", @@ -3217,6 +3222,7 @@ "logentry-delete-delete": "$1 {{GENDER:$2|изтри}} страницата $3", "logentry-delete-delete_redir": "$1 {{GENDER:$2|изтри}} пренасочване $3 чрез препокриване", "logentry-delete-restore": "$1 {{GENDER:$2|възстанови}} страницата $3 ($4)", + "logentry-delete-event": "$1 {{GENDER:$2|промени}} видимостта на {{PLURAL:$5|едно събитие|$5 събития}} от дневника в $3: $4", "logentry-delete-revision": "$1 {{GENDER:$2|промени}} видимостта на {{PLURAL:$5|една редакция|$5 редакции}} в страница $3: $4", "logentry-delete-event-legacy": "$1 {{GENDER:$2|промени}} видимостта на събитията от дневниците за страница $3", "logentry-delete-revision-legacy": "$1 {{GENDER:$2|промени}} видимостта на версиите на страница $3", @@ -3225,6 +3231,9 @@ "revdelete-content-hid": "скрито съдържание", "revdelete-summary-hid": "скрито резюме на редакцията", "revdelete-uname-hid": "скрито потребителско име", + "revdelete-content-unhid": "показано съдържание", + "revdelete-summary-unhid": "показано резюме на редакцията", + "revdelete-uname-unhid": "показано потребителско име", "revdelete-restricted": "добавени ограничения за администраторите", "revdelete-unrestricted": "премахнати ограничения за администраторите", "logentry-block-block": "$1 {{GENDER:$2|блокира }} {{GENDER:$4|$3}} със срок на изтичане $5 $6", @@ -3242,6 +3251,8 @@ "logentry-newusers-create2": "$1 {{GENDER:$2|създаде}} потребителска сметка $3", "logentry-newusers-byemail": "$1 {{GENDER:$2|създаде}} потребителската сметка $3, като паролата за нея беше изпратена по е-поща", "logentry-newusers-autocreate": "Сметката $1 беше {{GENDER:$2|създадена}} автоматично", + "logentry-protect-protect": "\n$1 {{GENDER:$2|защити}} $3 $4", + "logentry-protect-protect-cascade": "$1 {{GENDER:$2|защити}} $3 $4 [каскадно]", "logentry-rights-rights": "$1 {{GENDER:$2|промени}} потребителската група на {{GENDER:$6|$3}} от $4 на $5", "logentry-rights-rights-legacy": "$1 {{GENDER:$2|промени}} потребителската група на $3", "logentry-rights-autopromote": "$1 е автоматично {{GENDER:$2|повишен|повишена}} от $4 до $5", diff --git a/languages/i18n/bn.json b/languages/i18n/bn.json index 28755d8053..6812863793 100644 --- a/languages/i18n/bn.json +++ b/languages/i18n/bn.json @@ -1306,6 +1306,7 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (আরও দেখুন [[Special:NewPages|নতুন পাতার তালিকা]])", "recentchanges-legend-plusminus": "(''±১২৩'')", "recentchanges-submit": "দেখাও", + "rcfilters-tag-remove": "'$1' সরান", "rcfilters-legend-heading": "সংক্ষিপ্ত রূপের তালিকা:", "rcfilters-other-review-tools": "অন্যান্য পর্যালোচনা সরঞ্জাম", "rcfilters-group-results-by-page": "পাতা অনুযায়ী দলের ফলাফল", @@ -1317,6 +1318,7 @@ "rcfilters-hours-title": "সাম্প্রতিক ঘণ্টা", "rcfilters-days-show-days": "$1 {{PLURAL:$1|দিন}}", "rcfilters-days-show-hours": "$1 {{PLURAL:$1|ঘণ্টা}}", + "rcfilters-highlighted-filters-list": "আলোকপাতাকৃত: $1", "rcfilters-quickfilters": "সংরক্ষিত ছাঁকনি", "rcfilters-quickfilters-placeholder-title": "এখনো কোন সংযোগ সংরক্ষণ হয়নি", "rcfilters-quickfilters-placeholder-description": "আপনার ছাঁকনির সেটিং সংরক্ষণ করতে ও পরে পুনরায় ব্যবহার করতে, নীচে, সক্রিয় ছাঁকনি এলাকায় বুকমার্ক আইকনে ক্লিক করুন।", @@ -1384,6 +1386,7 @@ "rcfilters-filter-watchlist-watchednew-description": "আপনার নজরতালিকায় থাকা পাতাগুলিতে পরিবর্তন যেগুলিতে আপনি সম্পাদনা করার পর আর যাননি।", "rcfilters-filter-watchlist-notwatched-label": "নজরতালিকাভুক্ত নয়", "rcfilters-filter-watchlist-notwatched-description": "আপনার নজরতালিকায় থাকা পাতাগুলি ব্যতীয় সবকিছু।", + "rcfilters-filtergroup-watchlistactivity": "নজরতালিকার কার্যক্রম", "rcfilters-filtergroup-changetype": "পরিবর্তনের ধরন", "rcfilters-filter-pageedits-label": "পাতার সম্পাদনা", "rcfilters-filter-pageedits-description": "উইকি বিষয়বস্তু, আলোচনা, বিষয়শ্রেণীর বিবরণ... ইত্যাদিতে সম্পাদনা", @@ -1988,7 +1991,7 @@ "linksearch-pat": "অনুসন্ধান প্যাটার্ন:", "linksearch-ns": "নামস্থান:", "linksearch-ok": "অনুসন্ধান", - "linksearch-text": "\"*.wikipedia.org\" এর মত ওয়াইল্ড কার্ড ব্যবহার করা যেতে পারে।\nনূন্যতম একটি টপ লেভেল ডোমেইন প্রয়োজন, যেমন \"*.org\"।
\nযে সকল {{PLURAL:$2|প্রোটোকল|প্রোটোকলসমূহ}} সমর্থন করে: $1 (প্রোটোকল উল্লেখ করা না হলে http:// ডিফল্ট হিসাবে ব্যবহৃত হবে)।", + "linksearch-text": "\"*.wikipedia.org\" এর মত ওয়াইল্ড কার্ড ব্যবহার করা যেতে পারে।\nনূন্যতম একটি শীর্ষ স্তরের ডোমেইন প্রয়োজন, যেমন \"*.org\"।
\nযে সকল {{PLURAL:$2|প্রোটোকল|প্রোটোকলসমূহ}} সমর্থন করে: $1 (প্রোটোকল উল্লেখ করা না হলে ডিফল্ট হিসাবে http:// ব্যবহৃত হবে)।", "linksearch-line": "$2 থেকে $1 এ লিংক করা হয়েছে", "linksearch-error": "হোস্ট নামের শুরুতে কেবলমাত্র ওয়াইল্ডকার্ড ব্যবহার করা যায়।", "listusersfrom": "সেই সব ব্যবহারকারী দেখাও যাদের নাম এই অক্ষর দিয়ে শুরু:", diff --git a/languages/i18n/br.json b/languages/i18n/br.json index d58caf33c9..941f9afc72 100644 --- a/languages/i18n/br.json +++ b/languages/i18n/br.json @@ -1288,8 +1288,17 @@ "recentchanges-legend-heading": "Alc'hwez :", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (gwelet ivez [[Special:NewPages|roll ar pajennoù nevez]])", "recentchanges-submit": "Diskouez", + "rcfilters-tag-remove": "Dilemel '$1'", + "rcfilters-group-results-by-page": "Strollañ an disoc'hoù dre bajenn", + "rcfilters-grouping-title": "O strollañ", "rcfilters-activefilters": "Siloù oberiant", - "rcfilters-quickfilters": "Liammoù prim", + "rcfilters-days-title": "Deizioù paseet", + "rcfilters-hours-title": "Eurioù paseet", + "rcfilters-days-show-days": "($1 {{PLURAL:$1|deiz}})", + "rcfilters-days-show-hours": "$1 {{PLURAL:$1|eur}}", + "rcfilters-highlighted-filters-list": "Lakaet war wel : $1", + "rcfilters-quickfilters": "Siloù enrollet", + "rcfilters-quickfilters-placeholder-title": "Liamm ebet enrollet evit c'hoazh", "rcfilters-savedqueries-defaultlabel": "Siloù enrollet", "rcfilters-savedqueries-rename": "Adenvel", "rcfilters-savedqueries-setdefault": "Gweredekaat dre ziouer", @@ -1314,20 +1323,16 @@ "rcfilters-noresults-conflict": "N'eus bet kavet disoc'h ebet rak dezverkoù klask kontrol zo", "rcfilters-state-message-subset": "Ar sil-mañ ne ra netra rak kavet e vez e zisoc'hoù e-mesk ar {{PLURAL:$2|sil|siloù}} klask da heul (klaskit e lakaat war wel evit diforc'han anezhañ) : $1", "rcfilters-state-message-fullcoverage": "Diuzañ an holl siloù en ur strollad zo evel diuzañ netra, setu ne raio ket netra ar sil-mañ. Er strollad emañ : $1", - "rcfilters-filtergroup-registration": "Enskrivadur an implijer", - "rcfilters-filter-registered-label": "Marilhet", - "rcfilters-filter-registered-description": "Aozerien gevreet.", - "rcfilters-filter-unregistered-label": "Divarilh", - "rcfilters-filter-unregistered-description": "Aozerien n'int ket kevreet.", - "rcfilters-filter-unregistered-conflicts-user-experience-level": "Tabut zo etre ar sil-mañ hag ar {{PLURAL:$2|sil|siloù}} Arroutet, na {{PLURAL:$2|gav|gavont}} nemet an implijerien enrollet : $1", "rcfilters-filtergroup-authorship": "Aozer ar c'hemmoù", "rcfilters-filter-editsbyself-label": "Kemmet ganeoc'h", "rcfilters-filter-editsbyself-description": "Ar c'hemmoù graet ganeoc'h.", "rcfilters-filter-editsbyother-label": "Kemmet gant tud all", "rcfilters-filter-editsbyother-description": "An holl gemmoù nemet ar re graet ganeoc'h.", "rcfilters-filtergroup-userExpLevel": "Live skiant-prenañ (evit an implijer enrollet hepken)", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Ar siloù Arroutet ne gavont nemet implijerien enrollet, se zo kaoz zo tabut etre ar sil-mañ hag ar sil \"Dienroll\".", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Emañ ar sil \"Dienroll\" o tabutal gant gant ur sil Arroutet pe gant meur a hini. Ar siloù Arroutet a gav implijerien enrollet hepken. Ar siloù o tabutal zo merket en takad Siloù oberiant a-us.", + "rcfilters-filter-user-experience-level-registered-label": "Marilhet", + "rcfilters-filter-user-experience-level-registered-description": "Aozerien gevreet.", + "rcfilters-filter-user-experience-level-unregistered-label": "Divarilh", + "rcfilters-filter-user-experience-level-unregistered-description": "Aozerien n'int ket kevreet.", "rcfilters-filter-user-experience-level-newcomer-label": "Tud nevez-deuet", "rcfilters-filter-user-experience-level-newcomer-description": "Nebeutoc'h eget 10 kemm ha 4 devezh obererezh.", "rcfilters-filter-user-experience-level-learner-label": "Deskarded", @@ -3338,7 +3343,6 @@ "fileduplicatesearch-noresults": "N'eus bet kavet restr ebet anvet \"$1\".", "specialpages": "Pajennoù dibar", "specialpages-note-top": "Alc'hwez", - "specialpages-note": "* Pajennoù dibar ordinal.\n* Pajennoù dibar miret strizh.", "specialpages-group-maintenance": "Rentaoù-kont trezalc'h", "specialpages-group-other": "Pajennoù dibar all", "specialpages-group-login": "Kevreañ / krouiñ ur gont", @@ -3457,6 +3461,7 @@ "compare-invalid-title": "Kamm eo an titl hoc'h eus merket.", "compare-title-not-exists": "N'eus ket eus an titl spisaet ganeoc'h.", "compare-revision-not-exists": "N'eus ket eus an adweladenn spisaet ganeoc'h.", + "diff-form": "ur '''furmskrid'''", "dberr-problems": "Ho tigarez ! Kudennoù teknikel zo gant al lec'hienn-mañ.", "dberr-again": "Gortozit un nebeud munutennoù a-raok adkargañ.", "dberr-info": "(Dibosupl kevreañ ouzh an diaz roadennoù : $1)", diff --git a/languages/i18n/bs.json b/languages/i18n/bs.json index 1bce36fe01..ea875f9c65 100644 --- a/languages/i18n/bs.json +++ b/languages/i18n/bs.json @@ -345,7 +345,7 @@ "delete-hook-aborted": "Brisanje je prekinuo softverski priključak.\nNije ponuđeno nikakvo objaÅ¡njenje.", "no-null-revision": "Ne mogu napraviti novu niÅ¡tavnu reviziju za stranicu \"$1\"", "badtitle": "LoÅ¡ naslov", - "badtitletext": "Zahtjevani naslov stranice je bio neispravan, prazan ili neispravno povezan međujezički ili interviki naslov.", + "badtitletext": "Zahtijevani naslov je pogreÅ¡an, prazan ili je neispravno povezan međujezički/međuprojektni naslov.\nMožda sadrži nedopuÅ¡tene znakove.", "title-invalid-empty": "Zatraženo ime stranice je prazno ili samo sadrži naziv imenskog prostora.", "title-invalid-utf8": "VaÅ¡ zatraženi naziv stranice sadrži nevažeći UTF-8 znak.", "title-invalid-interwiki": "Traženi naslov stranice sadrži interwiki link koji ne može biti koriÅ¡ten u naslovima.", @@ -1709,11 +1709,11 @@ "filerevert-identical": "Trenutna verzija datoteke identična je izabranoj.", "filedelete": "ObriÅ¡i $1", "filedelete-legend": "ObriÅ¡i datoteku", - "filedelete-intro": "BriÅ¡ete datoteku '''[[Media:$1|$1]]''' zajedno sa svom njenom historijom.", + "filedelete-intro": "BriÅ¡ete datoteku [[Media:$1|$1]] zajedno sa svom njenom historijom.", "filedelete-intro-old": "BriÅ¡ete verziju datoteke '''[[Media:$1|$1]]''' od [$4 $3, $2].", "filedelete-comment": "Razlog:", "filedelete-submit": "ObriÅ¡i", - "filedelete-success": "'''$1''' je obrisano.", + "filedelete-success": "Datoteka $1 je obrisana.", "filedelete-success-old": "Verzija datoteke '''[[Media:$1|$1]]''' od $3, $2 je obrisana.", "filedelete-nofile": "'''$1''' ne postoji.", "filedelete-nofile-old": "Ne postoji arhivirana verzija '''$1''' sa navedenim atributima.", diff --git a/languages/i18n/ca.json b/languages/i18n/ca.json index d1acb7bfe0..d99bf55b7d 100644 --- a/languages/i18n/ca.json +++ b/languages/i18n/ca.json @@ -183,9 +183,9 @@ "hidden-category-category": "Categories ocultes", "category-subcat-count": "{{PLURAL:$2|Aquesta categoria només té la següent subcategoria.|Aquesta categoria conté {{PLURAL:$1|la següent subcategoria|les següents $1 subcategories}}, d'un total de $2.}}", "category-subcat-count-limited": "Aquesta categoria conté {{PLURAL:$1|la següent subcategoria|les següents $1 subcategories}}.", - "category-article-count": "{{PLURAL:$2|Aquesta categoria només té la següent pàgina.|{{PLURAL:$1|La següent pàgina és|Les següents $1 pàgines són}} dins d'aquesta categoria, d'un total de $2.}}", + "category-article-count": "{{PLURAL:$2|Aquesta categoria només té la pàgina següent.|{{PLURAL:$1|La pàgina següent és|Les $1 pàgines següents són}} dins d’aquesta categoria, d’un total de $2.}}", "category-article-count-limited": "{{PLURAL:$1|La següent pàgina és|Les següents $1 pàgines són}} dins la categoria actual.", - "category-file-count": "{{PLURAL:$2|Aquesta categoria només té el següent fitxer.|{{PLURAL:$1|El següent fitxer és|Els següents $1 fitxers són}} dins d'aquesta categoria, d'un total de $2.}}", + "category-file-count": "{{PLURAL:$2|Aquesta categoria només té el fitxer següent.|{{PLURAL:$1|El fitxer següent és|Els $1 fitxers següents són}} dins d’aquesta categoria, d’un total de $2.}}", "category-file-count-limited": "{{PLURAL:$1|El següent fitxer és|Els següents $1 fitxers són}} dins la categoria actual.", "listingcontinuesabbrev": " cont.", "index-category": "Pàgines indexades", @@ -3511,7 +3511,7 @@ "compare-invalid-title": "El títol que heu especificat no és vàlid.", "compare-title-not-exists": "El títol que heu especificat no existeix.", "compare-revision-not-exists": "La revisió que heu especificat no existeix.", - "diff-form": "un '''formulari'''", + "diff-form": "Diferències", "dberr-problems": "Ho sentim. Aquest lloc web està experimentant dificultats tècniques.", "dberr-again": "Intenteu esperar uns minuts i tornar a carregar.", "dberr-info": "(No es pot accedir a la base de dades: $1)", diff --git a/languages/i18n/cdo.json b/languages/i18n/cdo.json index d150323826..39267bfab5 100644 --- a/languages/i18n/cdo.json +++ b/languages/i18n/cdo.json @@ -499,7 +499,7 @@ "clearyourcache": "'''注意:'''保存以後,汝可能固著刷新汝其瀏覽器緩存來看遘變化。\n* '''火狐/Safari:'''擪下''Shift''篤蜀篤''重新載入'',或者擪蜀擪''Ctrl+F5''或者''Ctrl+R'' (''⌘-R''敆Mac懸頂)\n* '''Google Chrome:'''擪''Ctrl+Shift+R''(敆Mac𡅏使''⌘-Shift-R'')\n* '''Internet Explorer:'''擪''Ctrl''其時候篤蜀篤''刷新'',或者擪''Ctrl+F5''\n* '''Opera:'''敆''工具→首選項''𡅏清除緩存", "note": "注意:", "previewnote": "'''記定茲若是蜀萆預覽。'''\n汝其改變固𡅏未保存!", - "continue-editing": "行去編輯區", + "continue-editing": "繼續修改", "editing": "修改 $1", "creating": "創建$1", "editingsection": "修改$1(段)", diff --git a/languages/i18n/ce.json b/languages/i18n/ce.json index b46df0f66e..eae54a278e 100644 --- a/languages/i18n/ce.json +++ b/languages/i18n/ce.json @@ -39,7 +39,7 @@ "tog-enotifminoredits": "Хаам бо зӀе чухул, цхьа жимма а хийцамаш биняхь", "tog-enotifrevealaddr": "Гайта сан зlе оцу хаамаш барехь", "tog-shownumberswatching": "Гайта декъашхойн терахь, агӀо латийна болу шай тергаме могӀанан юкъа", - "tog-oldsig": "Карара куьгтаӀорна:", + "tog-oldsig": "Карара хьан куьг:", "tog-fancysig": "Шен вики-къастаман куьгтаӀдар (ша шех хьажорг йоцуш)", "tog-uselivepreview": "Лелае чехка хьалха хьажар", "tog-forceeditsummary": "Дага даийта, нагахь нисйарх лаьцна чохь язйина яцахь", @@ -297,7 +297,7 @@ "nosuchspecialpage": "Иштта белхан агӀо яц", "nospecialpagetext": "Иштта белхан агӀо яц.\n\nБелхан агӀонийн могӀам: [[Special:SpecialPages|{{int:specialpages}}]].", "error": "ГӀалат", - "databaseerror": "ГӀалат хаамийн бухера", + "databaseerror": "Хаамийн базан гӀалат", "databaseerror-text": "Хаамийн базан гӀалат даьлла.\nИза хила мега программин гӀалат.", "databaseerror-textcl": "Хаамийн базан гӀалат даьлла.", "databaseerror-query": "Дехар: $1", @@ -313,6 +313,7 @@ "readonly_lag": "Хаамашан базина цхьана хан блоктоьхна, хаамашан базан сервераш нисялца.", "internalerror": "Чоьхьара гӀалат", "internalerror_info": "Чоьхьара гӀалат: $1", + "internalerror-fatal-exception": "Нисдан цало юкъарадаккхар «$1» тайпана", "filecopyerror": "Йиш яц копий ян «$1» оцунах «$2».", "filerenameerror": "Файлан «$1» цӀе хийца «$2» йиш яц.", "filedeleteerror": "ДӀаяккха цатарло файл «$1».", @@ -1145,7 +1146,20 @@ "recentchanges-legend-heading": "Легенда: ", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (хьажа кхин [[Special:NewPages|керла агӀонийн могӀа]])", "recentchanges-submit": "Гайта", - "rcfilters-savedqueries-defaultlabel": "Ӏалашъе луьттург", + "rcfilters-other-review-tools": "Талларан кхин гӀирсаш", + "rcfilters-group-results-by-page": "Карийнарш, агӀонгахь тобанаш ян", + "rcfilters-grouping-title": "Тобанашца нисъяр", + "rcfilters-activefilters": "Жигара литтарш", + "rcfilters-advancedfilters": "Шуьйра литтарш", + "rcfilters-limit-title": "Гойту хийцамаш", + "rcfilters-limit-shownum": "Гайта тӀеххьара {{PLURAL:$1|хийцам}}", + "rcfilters-days-title": "ТӀеххьара денош", + "rcfilters-hours-title": "ТӀеххьара сахьташ", + "rcfilters-days-show-days": "$1 {{PLURAL:$1|де}}", + "rcfilters-days-show-hours": "$1 {{PLURAL:$1|сахьт}}", + "rcfilters-quickfilters": "Ӏалашдина литтарш", + "rcfilters-quickfilters-placeholder-description": "Литтаран буламаш (хьайна) Ӏалашбан лаахь а, йуха уьш лелабан лаахь а, тӀетаӀйе \"жигара литтаран\" уллера хьаьрка.", + "rcfilters-savedqueries-defaultlabel": "Ӏалашдина литтарш", "rcfilters-savedqueries-rename": "ЦӀе хийцар", "rcfilters-savedqueries-setdefault": "Ӏадйитаран кеп хӀоттае", "rcfilters-savedqueries-unsetdefault": "Ӏадйитаран кеп дӀаяккха", @@ -1156,25 +1170,68 @@ "rcfilters-savedqueries-add-new-title": "Ӏалашде литтар нисъяр", "rcfilters-restore-default-filters": "Литтарш Ӏадйитаран кепе меттахӀоттае", "rcfilters-clear-all-filters": "Ерриге литтарш цӀанъян", + "rcfilters-show-new-changes": "ТӀеххьара хийцамаш", + "rcfilters-search-placeholder": "Литтаран керла хийцамаш лахар", "rcfilters-filterlist-title": "Литтарш", + "rcfilters-filterlist-feedbacklink": "Керла (бета) литтарех лаьцна хьайна хеттарг язде", + "rcfilters-highlightbutton-title": "Билгалде карийнарш", + "rcfilters-highlightmenu-help": "Билгалонан бос харжа", "rcfilters-filterlist-noresults": "Литтарш цакарий", "rcfilters-filtergroup-authorship": "Нисде авторалла", "rcfilters-filter-editsbyself-label": "Хьан дисдарш", "rcfilters-filter-editsbyself-description": "Хьан нисдарш.", "rcfilters-filter-editsbyother-label": "Кхечу декъашхойн нисдарш", - "rcfilters-filter-user-experience-level-registered-label": "Регистрацийинарш", - "rcfilters-filter-user-experience-level-unregistered-label": "Регистрацицайинарш", + "rcfilters-filter-editsbyother-description": "Дерриге нисдарш, хьайнаш диссалц.", + "rcfilters-filtergroup-userExpLevel": "Декъашхочун регистраци а, цуна зеделларг а", + "rcfilters-filter-user-experience-level-registered-label": "ДӀабазбелларш", + "rcfilters-filter-user-experience-level-registered-description": "Чубаьлла декъашхой.", + "rcfilters-filter-user-experience-level-unregistered-label": "ДӀабазбаланзарш", + "rcfilters-filter-user-experience-level-unregistered-description": "Системин чубалаза декъашхой.", "rcfilters-filter-user-experience-level-newcomer-label": "Керланиш", + "rcfilters-filter-user-experience-level-newcomer-description": "10 нисдар дина а, 4 дийнахь болх бина а регистрацийина декъашхой", "rcfilters-filter-user-experience-level-learner-label": "Доьшуш берш", + "rcfilters-filter-user-experience-level-experienced-label": "Зеделла декъашхой", + "rcfilters-filter-user-experience-level-experienced-description": "500 сов нисдарш а дина 30 дийнахь жигара а хийла болу дӀабазбелла декъашхой.", + "rcfilters-filtergroup-automated": "Авто-къинхьегам", "rcfilters-filter-bots-label": "Бот", + "rcfilters-filter-bots-description": "Авто-гӀирсашца дина нисдарш.", + "rcfilters-filter-humans-label": "Адам ду (бот яц)", + "rcfilters-filter-humans-description": "Декъашхоша дина нисдарш.", "rcfilters-filter-patrolled-label": "Патрулйина", + "rcfilters-filtergroup-significance": "МаьӀна", + "rcfilters-filter-minor-label": "Жим нисдарш", + "rcfilters-filter-minor-description": "Авторс жима ду аьлла билгалдина нисдарш.", + "rcfilters-filter-major-label": "Гуттарлера нисдарш", + "rcfilters-filter-major-description": "Жима санна билгалдаза нисдарш.", + "rcfilters-filtergroup-watchlist": "Тергаме могӀаман юкъара агӀонаш", + "rcfilters-filter-watchlist-watched-label": "Тергаме могӀамехь", + "rcfilters-filter-watchlist-watched-description": "Хьан тергаме могӀамехь болу хийцамаш.", + "rcfilters-filter-watchlist-watchednew-label": "Тергаме могӀаман керла хийцамаш", + "rcfilters-filter-watchlist-watchednew-description": "Хьан тергаме могӀаман юкъара хьуна гина боцу хийцамаш.", + "rcfilters-filter-watchlist-notwatched-label": "Тергаме могӀаман юкъахь яц", + "rcfilters-filter-watchlist-notwatched-description": "Ерриге, хьан тергаме могӀаман юкъахь ерш ца гойту.", + "rcfilters-filtergroup-changetype": "Хийцамийн тайпа", + "rcfilters-filter-pageedits-label": "АгӀонан нисдарш", + "rcfilters-filter-pageedits-description": "Дийцарийн а, категорийн а чулацаман дина нисдарш...", + "rcfilters-filter-newpages-label": "АгӀонаш кхоллар", + "rcfilters-filter-newpages-description": "АгӀонаш кхуллуш дина нисдарш.", + "rcfilters-filter-categorization-label": "Категорийн хийцамаш", + "rcfilters-filter-categorization-description": "Категорийн, агӀонаш тӀетохар а, дӀаяхар а.", + "rcfilters-filter-logactions-label": "Урхаллица динарш", + "rcfilters-filter-logactions-description": "Куьйгалхоша динарг, дӀабазбалар, агӀонаш дӀаяхар, файлаш чуяхар...", "rcfilters-filtergroup-lastRevision": "Карара верси", "rcfilters-filter-lastrevision-label": "Карара верси", "rcfilters-filter-lastrevision-description": "АгӀона уггаре тӀеххьара хийцамаш.", "rcfilters-filter-previousrevision-label": "Хьалхара версеш", + "rcfilters-filter-previousrevision-description": "Дерриге нисдарш, «тӀеххьара верси» йоцу.", "rcfilters-filter-excluded": "ДӀаяьккхина", "rcfilters-tag-prefix-namespace-inverted": ":not $1", + "rcfilters-exclude-button-off": "Хаьржинарг юкъарадаккха", + "rcfilters-exclude-button-on": "Хаьржинарг юкъарадаккхар", + "rcfilters-view-advanced-filters-label": "Шуьйра литтарш", "rcfilters-view-tags": "Билгалонаш", + "rcfilters-view-namespaces-tooltip": "Меттигийн цӀерашца литтаран карийнарш", + "rcfilters-view-tags-tooltip": "Нисдарийн билгало йолу литтаран карийна хийцамаш", "rcnotefrom": "Лахахь гайтина тӀера $2 (хийцамаш $1 кӀезиг).", "rclistfromreset": "Терахь харжар дӀадаккха", "rclistfrom": "Гайта хийцам {{CURRENTYEAR}} шеран {{CURRENTDAY}} {{CURRENTMONTHNAMEGEN}} {{CURRENTTIME}} бина болу", @@ -1881,7 +1938,7 @@ "uctop": "(карара)", "month": "Баттачохь (я хьалхе):", "year": "Шерачохь (я хьалхе):", - "sp-contributions-newbies": "Гайта бекъ къинхьегам, керла дlабазбиначара бина болу", + "sp-contributions-newbies": "Керла декъашхойн къинхьегам бен ма гайта", "sp-contributions-newbies-sub": "Керла декъашхойн дӀаяздаршкара", "sp-contributions-newbies-title": "Дукху хан йоцуш кхоьллинчу декъашхойн дӀаяздарийн къинхьегам", "sp-contributions-blocklog": "блоктоьхнарш", @@ -2318,6 +2375,7 @@ "newimages-summary": "ХӀокху белхан агӀона чохь гойтуш ю дукха хан йоццуш чуяьхна файлаш.", "newimages-legend": "Луьттург", "newimages-user": "Декъашхочун цӀе я IP-адрес", + "newimages-newbies": "Керла декъашхойн къинхьегам бен ма гайта", "newimages-showbots": "Гайта боташ чуяьхна файлаш", "newimages-hidepatrolled": "Къайлаяха патруль йина файлаш", "newimages-mediatype": "Медиа тайпа:", @@ -2519,6 +2577,8 @@ "exif-whitebalance-0": "Къайн автоматически баланс", "exif-whitebalance-1": "Куьйга хӀоттийна къайн баланс", "exif-scenecapturetype-0": "Стандартан", + "exif-scenecapturetype-1": "Ландшафт", + "exif-scenecapturetype-2": "Сурт", "exif-scenecapturetype-3": "Буса даьккхина сурт", "exif-gaincontrol-0": "Яц", "exif-gaincontrol-1": "ГӀеххьа доккха дар", @@ -2829,6 +2889,7 @@ "htmlform-cloner-create": "ТӀетоха кхин", "htmlform-cloner-delete": "ДӀаяккха", "htmlform-date-placeholder": "ШШШШ-ББ-ДД", + "htmlform-time-placeholder": "СС:ММ:СС", "htmlform-datetime-placeholder": "ШШШШ-ББ-ДД СС:ММ:СС", "htmlform-title-not-exists": "«$1» яц.", "htmlform-user-not-exists": "$1 яц.", @@ -2943,7 +3004,9 @@ "pagelang-language": "Мотт", "pagelang-use-default": "Ӏадйитаран кепаца мотт", "pagelang-select-lang": "Харжа мотт", + "pagelang-reason": "Бахьана", "pagelang-submit": "ДӀадахьийта", + "pagelang-nonexistent-page": "$1 агӀо яц.", "right-pagelang": "АгӀона мотт хийца", "action-pagelang": "агӀона мотт хийца", "log-name-pagelang": "Мотт хийцаран тептар", @@ -3006,6 +3069,13 @@ "date-range-to": "Терхье:", "sessionprovider-generic": "$1 сесси", "randomrootpage": "Цахууш нисъелла ораман агӀо", + "log-action-filter-block-block": "Блоктохар", + "log-action-filter-block-reblock": "Блоктохар хийцар", + "log-action-filter-block-unblock": "БлокдӀаяхарш", + "log-action-filter-rights-autopromote": "Авто хийцар", + "log-action-filter-upload-upload": "Керла чудаккхар", + "log-action-filter-upload-overwrite": "Юху чуяккха", + "authmanager-email-label": "Электронан пошт", "authmanager-provider-temporarypassword": "Ханна пароль", "changecredentials": "Декъашхочун дӀаяздаран хийцам", "removecredentials": "ДӀадаха декъашхойн дӀаяздарш", diff --git a/languages/i18n/ckb.json b/languages/i18n/ckb.json index b22898c8e1..11d151f004 100644 --- a/languages/i18n/ckb.json +++ b/languages/i18n/ckb.json @@ -579,7 +579,7 @@ "selfredirect": "ئاگاداری: تۆ خەریکی گواستنەوەی ئەم پەڕەیەیت بۆ سەر خۆی. لەوانەیە خەریکی گواستنەوەی پەڕەیەکی ھەڵە بیت یان ھەوڵی گواستنەوە دەدەیت بۆ ئامانجێکی ھەڵە. \nئەگەر دووبارە کرتە لەسەر «$1» بکەیتەوە، ڕەوانەکەرەکە دروست دەکرێت بەھەرحاڵ.", "missingcommenttext": "تکایە لە خوارەوە شرۆڤەیەک بنووسە.", "missingcommentheader": "'''بیرهێنانەوە:''' بۆ ئەم بۆچوونەت سەردێڕ\\بابەت ڕاچاو نەکردووە.\nئەگەر دیسان «$1» لێبدەی، دەستکاریەکەت بێ سەردێڕ یان بابەت پاشەکەوت دەبێ.", - "summary-preview": "پێشبینینی کورتە:", + "summary-preview": "پێشبینینی کورتەی دەستکاری:", "subject-preview": "پێشبینینی بابەت:", "previewerrortext": "ھەڵەیەک دروست بوو لەکاتی ھەوڵدان بۆ بینینی دەستکارییەکانت.", "blockedtitle": "بەکارھێنەر بەربەست کراوە", @@ -618,7 +618,7 @@ "continue-editing": "چوونە سەر بەشی دەستکاریکردن", "previewconflict": "ئەم پێشبینینە بە تۆ نیشان ئەدات ئەو دەقەی لە شوێنی دەستکاری سەرەوە داتناوە چۆن بەرچاو ئەکەوێت ئەگەر پاشەکەوتی بکەیت.", "session_fail_preview": "ببوورە! ناتوانین دەستکارییەکەت پێواژۆ بکەین بە ھۆی لەدەستدانی زانیاری و داتاکانی ئەم کۆرسە.\nلەوانەیە ھەژمارەکەت کرابێتە دەرەوە. تکایە دڵنیا بکەرەوە کە ھێشتا لە ژوورەوەیت و دووبارە ھەوڵ بدەرەوە.\nئەگەر ھێشتا کار ناکات، [[Special:UserLogout|چوونەدەرەوە]] و گەڕانەوەژوورەوە تاقی بکەوە، دواتریش ئەگەر ھێشتا ڕێگەت نەداوە، ڕێگە بە براوسەرەکەت بدە کە ''کوکی'' لەم سایەتەوە وەربگرێت.", - "session_fail_preview_html": "'''ببوورە! ناتوانین دەستکارییەکەت پێواژۆ بکەین بە ھۆی لەدەستدانی session data.'''\n\n''لەبەر ئەوەی {{SITENAME}} ڕێگەی داوە بە raw HTML، بۆ بەرگری بەرامبەر بە هێرشەکانی جاڤاسکریپت، پێشبینین شاردراوەتەوە.''\n\n'''ئەگەر ئەمە ھەوڵێکی دەستکاریکردنی ڕەوایە، تکایە دیسان ھەوڵبدەوە.'''\nئەگەر ھێشتا کار ناکات، [[Special:UserLogout|چوونە دەرەوە]] گەڕانەوەژوورەوە تاقی بکەوە.", + "session_fail_preview_html": "ببوورە! ناتوانین دەستکارییەکەت پێواژۆ بکەین بە ھۆی لەدەستدانی session data.\n\nلەبەر ئەوەی {{SITENAME}} ڕێگەی داوە بە raw HTML، بۆ بەرگری بەرامبەر بە هێرشەکانی جاڤاسکریپت، پێشبینین شاردراوەتەوە.\n\nئەگەر ئەمە ھەوڵێکی دەستکاریکردنی ڕەوایە، تکایە دیسان ھەوڵبدەوە.\nئەگەر ھێشتا کار ناکات، [[Special:UserLogout|چوونە دەرەوە]] گەڕانەوەژوورەوە تاقی بکەوە و دڵنیابەرەوە کە وێبگەڕەکەت ڕێگە بە کووکییەکانی ئەم ماڵپەڕە دەدات.", "token_suffix_mismatch": "'''دەستکاریەکەت پەسەند نەکرا لەبەر ئەوەی ڕاژەخواز یان وێبگەڕەکەت نووسەکانی خاڵبەندی لەیەک پچڕاندوە.'''
\nدەستکاریەکەت بۆ بەرگری لە تێکەڵ‌بوونی دەقی لاپەڕەکە وەر نەگیرا.
\nئەمە بڕێ‌جار کاتێ ڕوو ئەدات کە لە خزمەتی پرۆکسی سەر وێب کەڵک وەر بگریت.", "edit_form_incomplete": "ھەندێک بەشی دەستکارییەکانت بە سێرڤەرەکەمان نەگەیشت. دووبارە سەیری دەستکارییەکانت بکە بۆ دڵنیا بوون لە تەواوییان و دووبارە ھەوڵ بدەرەوە.", "editing": "دەستکاریکردنی $1", @@ -638,7 +638,7 @@ "readonlywarning": "ئاگاداری: بنکەی زانیاری بۆ چاکسازی داخراوە، بۆیە ئێستا ناتوانی دەستکاریەکانت پاشەکەوت بکەیت.\nدەتوانیت دەقەکەت لەبەر بگریتەوە بۆ پەڕگەیەک و ھەڵی بگریت بۆ دوایی.\nئەو بەڕێوەبەرەی کە دای خستووە، ئەم هۆکارەی دەستنیشان کردووە: $1", "protectedpagewarning": "'''وشیار بە: ئەم پەڕە پارێزراوە بۆ ئەوی تەنیا ئەو بەکارھێنەرانە کە مافەکانی بەڕێوەبەرایەتییان ھەیە بتوانن دەستکاریی بکەن.'''\nدوایین لۆگ بۆ ژێدەر لە خوارەوەدا ھاتووە:", "semiprotectedpagewarning": "'''ئاگاداری:''' ئەم پەڕە داخراوە بۆ ئەوی تەنھا بەکارھێنەرە تۆمارکراوەکان بتوانن دەستکاریی بکەن.\nدوایین لۆگ بۆ ژێدەر لە خوارەوەدا ھاتووە:", - "cascadeprotectedwarning": "'''ئاگاداری:''' ئەم لاپەڕە داخراوە بۆ ئەوەی تەنھا ئەو کەسانەی کە مافی بەڕێوبەرایەتییان هەیە بتوانن دەستکاری بکەن، چوونکە ئەم {{PLURAL:$1|لاپه‌ڕه‌|لاپه‌ڕانه‌}} لە زنجیرەی پارێزراوەکانی لە خۆ گرتووە‌:", + "cascadeprotectedwarning": "'''ئاگاداری:''' ئەم پەڕەیە داخراوە بۆ ئەوەی تەنھا ئەو کەسانەی کە [[Special:ListGroupRights|مافیان ھەیە]] بتوانن دەستکاری بکەن، چوونکە ئەم {{PLURAL:$1|لاپه‌ڕه‌|لاپه‌ڕانه‌}} لە زنجیرەی پارێزراوەکانی لە خۆ گرتووە‌:", "titleprotectedwarning": "'''ئاگاداری: ئەم پەڕە داخراوە، بۆئەوەی بۆ درووست‌کردنی [[Special:ListGroupRights|مافە تایبەتەکانت]] پێویستن.'''\nبۆ چاوانە دوایین لۆگ لە خوارەوەدا ھاتووە:", "templatesused": "ئەو {{PLURAL:$1|داڕێژەیە کە لەم پەڕەیەدا بە کارھێنراوە|داڕێژانە کە لەم پەڕەیەدا بە کارھێنراون}}:", "templatesusedpreview": "ئەو {{PLURAL:$1|داڕێژەیە کە لەم پێشبینینەدا بە کارھێنراوە|داڕێژانە کە لەم پێشبینینەدا بە کارھێنراون}}:", @@ -655,8 +655,8 @@ "permissionserrorstext": "مافی ئەنجامی ئەوەت نیە لەبەر ئەم {{PLURAL:$1|هۆکار|هۆکارانە}} :", "permissionserrorstext-withaction": "دەسەڵاتت نییە بۆ $2، لەبەر ئەم {{PLURAL:$1|ھۆکارە|ھۆکارانە}}ی خوارەوە:", "recreate-moveddeleted-warn": "'''ھۆشیار بە: خەریکی پەڕەیەک دروست‌ دەکەیتەوە کە لە پێشدا سڕاوەتەوە.'''\n\nئەمە لەبەر چاو بگرە کە دەستکاریکردنی ئەم پەڕەیە بەقازانجە یان نا.\nلۆگی سڕینەوە و گواستنەوەی ئەم پەڕەیە بۆ سانایی لێرەدا ھاتووە:", - "moveddeleted-notice": "ئەم پەڕەیە سڕاوەتەوە.\nلۆگی سڕینەوە و گواستنەوە بۆ پەڕەکە لە ژێرەوە دابین کراوە.", - "moveddeleted-notice-recent": "ببورە، ئەم پەڕەیە بەم زووانە سڕدراوەتەوە (لە ماوەی ٢٤ کاتژمێری پێشوودا). \nلۆگی سڕینەوە و ڕەوانەکردنی پەڕەکە بەردەستن لە خوارەوە لە پەڕاوێزەکاندا.", + "moveddeleted-notice": "ئەم پەڕەیە سڕاوەتەوە.\nلۆگی سڕینەوە، پاراستن و گواستنەوە بۆ پەڕەکە لە ژێرەوە دابین کراوە.", + "moveddeleted-notice-recent": "ببورە، ئەم پەڕەیە بەم زووانە سڕدراوەتەوە (لە ماوەی ٢٤ کاتژمێری پێشوودا). \nلۆگی سڕینەوە، پاراستن و ڕەوانەکردنی پەڕەکە بەردەستن لە خوارەوە لە پەڕاوێزەکاندا.", "log-fulllog": "لۆگی تەواو ببینە", "edit-hook-aborted": "دەستکاری لە لایەن قولاپەوە ھەڵوەشێنرایەوە.\nھۆکارەکەی لەبەر دەست نییە.", "edit-gone-missing": "توانای نوێ‌کردنەوەی لاپەڕەکە نیە.
\nلەوە دەچی سڕدرابێتەوه.‌", @@ -708,7 +708,7 @@ "page_last": "دوایین", "histlegend": "ھەڵبژاردنی جیاوازی: پیاچوونەوەکان بۆ ھەڵسەنگاندن دیاری بکە و ئینتەر یان دوگمەکەی خوارەوە لێبدە.
\nڕێنوێنی: '''({{int:cur}})''' = جیاوازی لەگەڵ دوایین پیاچوونەوە، '''({{int:last}})''' = جیاوازی لەگەڵ پیاچوونەوەی پێشووی، '''{{int:minoreditletter}}''' = دەستکاریی بچووک.", "history-fieldset-title": "گەشتی مێژوو", - "history-show-deleted": "تەنیا سڕاوەکان", + "history-show-deleted": "تەنیا پێداچوونەوە سڕاوەکان", "histfirst": "کۆنترین", "histlast": "نوێترین", "historysize": "({{PLURAL:$1|1 بایت|$1 بایت}})", @@ -746,7 +746,7 @@ "logdelete-text": "ڕووداوە سڕاوەکانی لۆگ ھێشتا لە لۆگەکاندا دەردەکەوێت بەڵام بەشێک لە ناوەرۆکەکەیان بۆ ھەمووان لەبەر دەست دەبێت.", "revdelete-text-others": "بەڕێوەبەرانی تر ھێشتا دەتوانن ناوەرۆکی شاردراو ببینن و بیھێننەوە، مەگەر سنووردارکردنی تر ڕێک بخرێت.", "revdelete-confirm": "تکایە پشتڕاست بکەوە دەتەوێ ئەمە بکەیت و لە ئاکامەکەی ئاگاداریت و ئەمە بە پێی [[{{MediaWiki:Policy-url}}|سیاسەتنامە]] دەکەیت.", - "revdelete-suppress-text": "بەرگری دەبێ '''تەنها''' بۆ ئەم بابەتانە بەکاربهێندرێت:
\n* سووکایەتیکردن بە کەسایەتییەک
\n* بڵاوکردنەوەی زانیاریی تاکەکەسی نەگونجاو
\n*: '' ناونیشانی ماڵ یا ژمارە تەلەفۆن و وەک ئەمانە.''
", + "revdelete-suppress-text": "بەرگری دەبێ تەنها بۆ ئەم بابەتانە بەکاربهێندرێت:\n* سووکایەتیکردن بە کەسایەتییەک
\n* بڵاوکردنەوەی زانیاریی تاکەکەسی نەگونجاو
\n*: ناونیشانی ماڵ یا ژمارە تەلەفۆن و وەک ئەمانە.", "revdelete-legend": "ڕێکخستنی سنووردارکردنی دیاریکردن", "revdelete-hide-text": "دەقی پێداچوونەوە", "revdelete-hide-image": "ناوەڕۆکی پەڕگە بشارەوە", @@ -761,9 +761,9 @@ "revdelete-unsuppress": "لابردنی بەربەستەکان لە سەر پێداچوونەوە گەڕێندراوەکان", "revdelete-log": "هۆکار:", "revdelete-submit": "بەکاربەرە بۆ سەر {{PLURAL:$1|پێداچوونەوەی ھەڵبژێردراو|پێداچوونەوە ھەڵبژێردراوەکان}}", - "revdelete-success": "'''چۆنیەتی بیندرانی پێداچوونەوە بە سەرکەوتوویی نوێکراوە.'''", + "revdelete-success": "چۆنیەتی بیندرانی پێداچوونەوە نوێکرایەوە.", "revdelete-failure": "'''ناکرێ دەرکەوتنی پێداچوونەوە نوێبکرێتەوە:'''\n$1", - "logdelete-success": "'''بیندرانی لۆگ‌ بە سەرکەوتوویی داندرا.'''", + "logdelete-success": "بیندرانی لۆگ‌ بە سەرکەوتوویی داندرا.", "logdelete-failure": "'''بیندرانی لۆگ داناندرێت:'''\n$1", "revdel-restore": "چۆنیەتی دەرکەوتن بگۆڕە", "pagehist": "مێژووی پەڕە", @@ -814,7 +814,8 @@ "showhideselectedversions": "دیاریکردنی پێداچوونەوە ھەڵبژێردراوەکان بگۆڕە", "editundo": "پووچەڵکردنەوە", "diff-empty": "(بەبێ جیاوازی)", - "diff-multi-sameuser": "({{PLURAL:$1|یەک دەستکاری مامناوەند|$1 دەستکاری}} لەلایەن ھەمان بەکارھێنەرەوە بیشاننادرێت.", + "diff-multi-sameuser": "({{PLURAL:$1|یەک دەستکاری مامناوەند|$1 دەستکاری}} لەلایەن ھەمان بەکارھێنەرەوە بیشاننادرێت)", + "diff-multi-otherusers": "({{PLURAL:$1|یەک دەستکاری مامناوەند|$1 دەستکاری}} لەلایەن {{{{PLURAL:$2|بەکارھێنەرێکەوە|$2 بەکارھێنەرەوە}}}} بیشاننادرێت)", "searchresults": "ئاکامەکانی گەڕان", "searchresults-title": "ئاکامەکانی گەڕان بۆ «$1»", "titlematches": "ئەو سەرناوانەی دەگونجن", @@ -843,9 +844,10 @@ "search-redirect": "(ڕەوانەکراوە لە $1ەوە)", "search-section": "(بەشی $1)", "search-category": "(پۆلی $1)", + "search-file-match": "(لەگەڵ ناوەڕۆکی پەرگەدا دەگونجێت)", "search-suggest": "ئایا مەبەستت ئەمە بوو: $1", "search-rewritten": "نیشاندانی ئاکامەکان بۆ $1. لە جیات ئەو لە $2 بگەڕێ.", - "search-interwiki-caption": "پرۆژە خوشکەکان", + "search-interwiki-caption": "ئەنجامەکان لە پرۆژە خوشکەکان", "search-interwiki-default": "ئاکام لە $1:", "search-interwiki-more": "(زیاتر)", "search-interwiki-more-results": "ئەنجامی زیاتر", @@ -880,7 +882,7 @@ "prefs-editwatchlist-clear": "لیستی چاودێرییەکەت پاک بکەرەوە", "prefs-watchlist-days": "ژمارەی ڕۆژەکان بۆ نیشاندان لە لیستی چاودێری:", "prefs-watchlist-days-max": "ئەوپەڕی $1 {{PLURAL:$1|ڕۆژە|ڕۆژە}}", - "prefs-watchlist-edits": "ئەوپەڕی ژمارەی گۆڕانکارییەکان بۆ نیشاندان لە لیستی چاودێریی پەرەپێدراو:", + "prefs-watchlist-edits": "ئەوپەڕی ژمارەی گۆڕانکارییەکان بۆ نیشاندان لە لیستی چاودێری:", "prefs-watchlist-edits-max": "ئەوپەڕی ژمارە: ١٠٠٠", "prefs-watchlist-token": "ڕەمزی لیستی چاودێری:", "prefs-misc": "جۆراوجۆر", @@ -893,7 +895,7 @@ "restoreprefs": "ھەموو ڕێکخستنەکان ببەرەوە بۆ باری بنچینەیی (لە ھەموو بەشەکاندا)", "prefs-editing": "دەستکاریکردن", "searchresultshead": "گەڕان", - "stub-threshold": "سنوور بۆ شێوازی بەستەری کۆڵکە (بایت):", + "stub-threshold": "سنوور بۆ شێوازی بەستەری کۆڵکە ($1):", "stub-threshold-sample-link": "نموونە", "stub-threshold-disabled": "ناچالاک", "recentchangesdays": "ژمارە ڕۆژە نیشاندراوەکان لە دوایین گۆڕانکارییەکان:", @@ -973,9 +975,9 @@ "editusergroup": "گرووپەکانی بەکارھێنەر ببینە", "editinguser": "گۆڕینی مافە بەکارھێنەرییەکانی {{GENDER:$1|بەکارھێنەر}} [[User:$1|$1]] $2", "viewinguserrights": "تۆ مافەکانی بەکارھێنەر {{GENDER:$1|بەکارھێنەر}} [[User:$1|$1]] $2 دەبینیت", - "userrights-editusergroup": "گرووپەکانی {{{{GENDER:$1|بەکارھێنەر}} دەستکاری بکە", + "userrights-editusergroup": "گرووپەکانی {{GENDER:$1|بەکارھێنەر}} دەستکاری بکە", "userrights-viewusergroup": "بینینی گرووپەکانی {{GENDER:$1|بەکارھێنەر}}", - "saveusergroups": "گرووپەکانی بەکارھێنەر پاشەکەوت بکە", + "saveusergroups": "گرووپەکانی {{GENDER:$1|بەکارھێنەر}} پاشەکەوت بکە", "userrights-groupsmember": "ئەندامە لە:", "userrights-groupsmember-auto": "ئەندامی ناڕاشکاوە لە:", "userrights-groups-help": "دەتوانی ئەو گرووپانەی ئەم بەکار‌هێنەرە تێیدایە ئاڵوگۆڕ بکەی:\n* چوارچێوەی نیشانکراو واتە بەکارھێنەر لەو گرووپەدا هەیە.\n* چوارچێوەی نیشاننەکراو واتە بەکارھێنەر لەو گرووپەدا نییە.\n* ئەستێرەیەک (*) نیشان دەدات ناتوانی ئەو گرووپەی جارێکی تر زیادت کردووە لایبەریت، و بە پێچەوانە.", @@ -1077,7 +1079,7 @@ "right-siteadmin": "داخستن و کردنەوەی بنکەدراو", "right-override-export-depth": "هەناردنی لاپەڕەکان کە لاپەڕەکانی بەستەر پێ‌دراو تا قووڵایی 5 لەخۆ بگرێت", "right-sendemail": "ناردنی ئیمەیل بۆ بەکارھێنەرانی تر", - "right-managechangetags": "دروستکردن و سڕینەوەی [[Special:Tags|تاگەکان]] لە بنکەدراوە", + "right-managechangetags": "دروستکردن و (نا)چالاککردنی [[Special:Tags|تاگەکان]]", "right-deletechangetags": "سڕینەوەی [[Special:Tags|tags]] لە بنکەی زانیاری", "grant-group-file-interaction": "مامەڵەکردن لەگەڵ میدیا", "grant-group-email": "ناردنی ئیمەیل", @@ -1119,7 +1121,7 @@ "action-writeapi": "کەڵک وەر گرتن لە نووسینی API", "action-delete": "ئەم پەڕەیە بسڕەوە", "action-deleterevision": "سڕینەوەی ئەم پێداچوونەوەیە", - "action-deletedhistory": "دیتنی مێژووی سڕاوەی ئەم پەڕەیە", + "action-deletedhistory": "دیتنی مێژووی سڕاوەی پەڕەیەک", "action-browsearchive": "گەران لە نێو لاپەڕە سڕاوەکان", "action-undelete": "گەڕاندنەوەی ئەم پەڕەیە", "action-suppressrevision": "چاوپێداخشان و هاوردنەوەی ئەم لاپەڕە شاراوە", @@ -1163,11 +1165,11 @@ "rcfilters-clear-all-filters": "ھەموو فیلتەرەکان بسڕەوە", "rcfilters-search-placeholder": "پاڵاوتنی گۆڕانکارییە نوێیەکان (بگەڕێ یان دەست بە نووسین بکە)", "rcfilters-filterlist-title": "فیلتەرەکان", - "rcfilters-filterlist-whatsthis": "ئەمە چییە؟", + "rcfilters-filterlist-whatsthis": "ئەمە چۆن کاردەکات؟", "rcfilters-highlightmenu-title": "ڕەنگێکی نوێ ھەڵبژێرە", - "rcfilters-filter-editsbyself-label": "مافەکانی خۆت", - "rcfilters-filter-editsbyself-description": "دەستکارییەکانی خۆت.", - "rcfilters-filter-editsbyother-label": "دەستکارییەکانی کەسانی تر", + "rcfilters-filter-editsbyself-label": "گۆڕانکارییەکانت", + "rcfilters-filter-editsbyself-description": "بەشدارییەکانی خۆت.", + "rcfilters-filter-editsbyother-label": "گۆڕانکارییەکانی کەسانی تر", "rcfilters-filter-editsbyother-description": "ھەموو گۆڕانکارییەکان بێجگە لەوەی خۆت", "rcfilters-filter-user-experience-level-registered-label": "تۆمارکراو", "rcfilters-filter-user-experience-level-registered-description": "ئەو بەکارھێنەرانەی لە ژوورەوەن", @@ -1440,7 +1442,7 @@ "filedelete-edit-reasonlist": "دەستکاری هۆکارەکانی سڕینەوە", "filedelete-maintenance-title": "ناتوانیت پەڕگە بسڕیتەوە", "mimesearch": "گەڕانی MIME", - "mimesearch-summary": "ئەم لاپەڕە پاڵێوتنی هەیە بۆ جۆرەکانی MIME.\nناودراو: جۆرەی ناوەڕۆک\\ژێرجۆرە، وەک image/jpeg.", + "mimesearch-summary": "ئەم لاپەڕە پاڵێوتنی هەیە بۆ جۆرەکانی MIME.\nناودراو: جۆرەی ناوەڕۆک\\ژێرجۆرە یان جۆرەی ناوەڕۆک\\*، وەک image/jpeg.", "mimetype": "جۆرەی MIME:", "download": "داگرتن", "unwatchedpages": "پەڕە چاودێری نەکراوەکان", @@ -1583,7 +1585,7 @@ "booksources-text": "لە خوارەوە لیستێک لە بەستەر بۆ ماڵپەڕهایەک کە کتێبی نوێ و بەکارهێنراو دەفرۆشێت و لەوانەیە لەوێ زانیاریی زیاترت دەست‌کەوێت سەبارەت بەو کتێبانەی لە دووی دەگەڕیت:", "booksources-invalid-isbn": "ISBN دراو لەوە ناچی بەکار بێت، سەرنج بدە لە کاتی کۆپی کردن لە سەرچاوە تووشی هەڵە نوبوبێت.", "specialloguserlabel": "بەجێھێنەر:", - "speciallogtitlelabel": "مەبەست (سەرناو یان بەکارھێنەر):", + "speciallogtitlelabel": "مەبەست (سەرناو یان {{ns:user}}:ناوی بەکارھێنەر بۆ بەکارھێنەر):", "log": "لۆگەکان", "logeventslist-submit": "نیشاندان", "all-logs-page": "ھەموو لۆگە گشتییەکان", @@ -1688,7 +1690,7 @@ "mywatchlist": "پێڕستی چاودێری", "watchlistfor2": "بۆ $1 $2", "nowatchlist": "لە لیستی چاودێڕییەکانتدا ھیچ نیە.", - "watchlistanontext": "بۆ دیتن و دەستکاریی بابەتەکانی ناو پێرستی چاودێرییەکەتدا دەبێ $1.", + "watchlistanontext": "بۆ دیتن و دەستکاریی بابەتەکانی ناو پێرستی چاودێرییەکەتدا دەبێ بچیتە ژوورەوە.", "watchnologin": "لە ژوورەوە نیت.", "addwatch": "بیخە سەر لیستی چاودێری", "addedwatchtext": "پەڕەی «[[:$1]]» خرایە ژێر [[Special:Watchlist|پێرستی چاودێری]]یەکەت.\nگۆڕانکارییەکانی داھاتووی ئەم پەڕەیە و پەڕەی وتووێژەکەی، لەوێدا پێرست دەکرێت.", @@ -2251,7 +2253,7 @@ "anonymous": "{{PLURAL:$1|بەکارھێنەری نەناسراوی|بەکارھێنەرە نەناسراوەکانی}} {{SITENAME}}", "siteuser": "بەکارھێنەری {{SITENAME}}، $1", "anonuser": "$1، بەکارھێنەری نامۆی {{SITENAME}}", - "lastmodifiedatby": "ئەم پەڕە دواجار لە $2ی $1 بە دەستی $3 گۆڕدراوە.", + "lastmodifiedatby": "ئەم پەڕە دواجار لە $2ی $1 بە دەستی $3 دەستکاریکراوە.", "othercontribs": "لەسەر بنەمای کاری $1.", "others": "ئەوانی دیکە", "siteusers": "{{SITENAME}} {{PLURAL:$2|{{GENDER:$1|بەکارھێنەری}}|بەکارھێنەرانی}} $1", @@ -2805,7 +2807,7 @@ "compare-rev2": "پێداچوونەوەی Ù¢", "compare-submit": "ھەڵسەنگاندن", "compare-invalid-title": "ئەم سەردێڕە دەستنیشانت کردووە نادروستە.", - "diff-form": "یەک '''فۆرم'''", + "diff-form": "جیاوازیەکان", "dberr-problems": "ببورە! ئەم ماڵپەڕە ئێستا خەریک ئەزموونێکی کێشەی تەکنیکیە.", "dberr-again": "چەن خولک ڕاوەستە و نوێی بکەوە.", "dberr-info": "(ناتوانیت بگەیت بە بنکەدراو: $1)", @@ -2827,7 +2829,7 @@ "htmlform-title-not-exists": "$1 بوونی نیە.", "logentry-delete-delete": "$1 پەڕەی $3ی {{GENDER:$2|سڕییەوە}}", "logentry-delete-delete_redir": "$1 {{GENDER:$2|ڕەوانەکەری}} $3 سڕیەوە", - "logentry-delete-restore": "$1 پەڕەی $3ی {{GENDER:$2|ھێنایەوە}}", + "logentry-delete-restore": "$1 پەڕەی $3ی {{GENDER:$2|ھێنایەوە}} ($4)", "logentry-delete-revision": "$1 دەرکەوتنی {{PLURAL:$5|پێداچوونەوەیەکی|$5 پێداچوونەوەی}} پەڕەی $3ی {{GENDER:$2|گۆڕیی}}: $4", "logentry-suppress-delete": "$1 پەڕەی $3 {{GENDER:$2|بەرگری کرد}}.", "revdelete-content-hid": "ناوەرۆک شاردراوە", @@ -2839,8 +2841,9 @@ "revdelete-restricted": "ئەو سنووری بەرگریانەی خستراوەتە سەر بەڕێوبەران", "revdelete-unrestricted": "ئەو سنووری بەرگریانەی لابردراوە لە سەر بەڕێوبەران", "logentry-block-block": "$1 {{GENDER:$4|$3}}ی بۆ ماوەی $5 {{GENDER:$2|بەربەست کرد}} $6", + "logentry-import-upload": "$1 {{GENDER:$2|بارکرد}} $3 بە بەکارھێنانی [[special:Import|بارکەر]]", "logentry-move-move": "$1 پەڕەی $3ی {{GENDER:$2|گواستەوە}} بۆ $4", - "logentry-move-move-noredirect": "$1 پەڕەی $3ی بەبێ بەجێھشتنی ڕەوانەکەرێک {{GENDER:$2|گواستەوە}} بۆ $4", + "logentry-move-move-noredirect": "$1 پەڕەی $3ی بە بێ بەجێھشتنی ڕەوانەکەرێک {{GENDER:$2|گواستەوە}} بۆ $4", "logentry-move-move_redir": "$1 پەڕەی $3 {{GENDER:$2|گواستەوە}} بۆ $4 کە پێشتر ڕەوانەکەر بوو", "logentry-move-move_redir-noredirect": "$1 پەڕەی $3ی بەبێ بەجێھشتنی ڕەوانەکەرێک {{GENDER:$2|گواستەوە}} بۆ $4 کە پێشتر ڕەوانەکەر بوو", "logentry-patrol-patrol": "$1 پێداچوونەوەی $4ی پەڕەی $3 وەک پاس دراو {{GENDER:$2|نیشان کرد}}", diff --git a/languages/i18n/cs.json b/languages/i18n/cs.json index a4b923fee0..f9a4353884 100644 --- a/languages/i18n/cs.json +++ b/languages/i18n/cs.json @@ -1309,7 +1309,9 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (vizte též [[Special:NewPages|seznam nových stránek]])", "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Zobrazit", + "rcfilters-tag-remove": "Odebrat '$1'", "rcfilters-legend-heading": "Seznam zkratek:", + "rcfilters-other-review-tools": "Další kontrolní nástroje", "rcfilters-group-results-by-page": "Seskupit výsledky podle stránky", "rcfilters-grouping-title": "Seskupování", "rcfilters-activefilters": "Aktivní filtry", @@ -1320,6 +1322,7 @@ "rcfilters-hours-title": "Poslední hodiny", "rcfilters-days-show-days": "$1 {{PLURAL:$1|den|dny|dní}}", "rcfilters-days-show-hours": "$1 {{PLURAL:$1|hodina|hodiny|hodin}}", + "rcfilters-highlighted-filters-list": "Zvýrazněno: $1", "rcfilters-quickfilters": "Uložené filtry", "rcfilters-quickfilters-placeholder-title": "Zatím neuloženy žádné odkazy", "rcfilters-quickfilters-placeholder-description": "Pokud chcete uložit svá nastavení filtrů a použít je později, klikněte na ikonku záložky v ploÅ¡e aktivních filtrů níže.", @@ -1342,14 +1345,14 @@ "rcfilters-empty-filter": "Žádné aktivní filtry. Zobrazeny jsou vÅ¡echny příspěvky.", "rcfilters-filterlist-title": "Filtry", "rcfilters-filterlist-whatsthis": "Jak to funguje?", - "rcfilters-filterlist-feedbacklink": "Poskytnout novým (beta) filtrům zpětnou vazbu", + "rcfilters-filterlist-feedbacklink": "Řekněte nám, co si myslíte o těchto (nových) filtrech", "rcfilters-highlightbutton-title": "Zvýraznit výsledky", "rcfilters-highlightmenu-title": "Vybrat barvu", "rcfilters-highlightmenu-help": "Vyberte barvu pro zvýraznění této vlastnosti", "rcfilters-filterlist-noresults": "Nenalezeny žádné filtry", "rcfilters-noresults-conflict": "Nenalezeny žádné výsledky, protože vyhledávací kritéria jsou v konfliktu", "rcfilters-state-message-subset": "Tento filtr nemá žádný vliv, protože jeho výsledky jsou již zahrnuty {{PLURAL:$2|následujícím, Å¡irším filtrem|následujícími, Å¡iršími filtry}} (pro odliÅ¡ení zkuste zvýraznění): $1", - "rcfilters-state-message-fullcoverage": "Výběr vÅ¡ech filtrů ve skupině odpovídá výběru žádného, proto tento filtr nemá žádný vliv. Skupina zahrnuje: $1", + "rcfilters-state-message-fullcoverage": "Výběr vÅ¡ech filtrů v této skupině odpovídá výběru žádného, proto tento filtr nemá žádný vliv. Skupina zahrnuje: $1", "rcfilters-filtergroup-authorship": "Autorství příspěvku", "rcfilters-filter-editsbyself-label": "VaÅ¡e změny", "rcfilters-filter-editsbyself-description": "VaÅ¡e vlastní příspěvky.", @@ -1388,6 +1391,11 @@ "rcfilters-filter-watchlist-watchednew-description": "Změny stránek z vaÅ¡eho seznamu sledovaných, které jste od jejich změny nenavÅ¡tívili.", "rcfilters-filter-watchlist-notwatched-label": "Nesledované stránky", "rcfilters-filter-watchlist-notwatched-description": "VÅ¡e kromě změn vaÅ¡ich sledovaných stránek.", + "rcfilters-filtergroup-watchlistactivity": "Aktivita ve sledovaných stránkách", + "rcfilters-filter-watchlistactivity-unseen-label": "Nezobrazené změny", + "rcfilters-filter-watchlistactivity-unseen-description": "Změny stránek, které jste od jejich změny nenavÅ¡tívili.", + "rcfilters-filter-watchlistactivity-seen-label": "Zobrazené změny", + "rcfilters-filter-watchlistactivity-seen-description": "Změny stránek, které jste od jejich změny již navÅ¡tívili.", "rcfilters-filtergroup-changetype": "Typ změny", "rcfilters-filter-pageedits-label": "Editace stránek", "rcfilters-filter-pageedits-description": "Editace obsahu wiki, diskusí, popisů kategorií…", @@ -1417,6 +1425,9 @@ "rcfilters-liveupdates-button": "Živé aktualizace", "rcfilters-liveupdates-button-title-on": "Vypnout živé aktualizace", "rcfilters-liveupdates-button-title-off": "Zobrazovat nové změny, jakmile jsou zveřejněny", + "rcfilters-watchlist-markseen-button": "Označit vÅ¡echny změny jako zkontrolované", + "rcfilters-watchlist-edit-watchlist-button": "Editovat seznam sledovaných stránek", + "rcfilters-watchlist-showupdated": "Změny stránek, které jste od provedení změn nenavÅ¡tívili, jsou zobrazeny tučně s vyplněnou značkou.", "rcnotefrom": "Níže {{PLURAL:$5|je změna|jsou změny}} od $3, $4 ({{PLURAL:$1|zobrazena|zobrazeny|zobrazeno}} nejvýše $1).", "rclistfromreset": "Obnovit výběr data", "rclistfrom": "Ukázat nové změny, počínaje od $2, $3", @@ -2100,9 +2111,9 @@ "unwatchthispage": "Nesledovat tuto stránku", "notanarticle": "Toto není stránka", "notvisiblerev": "Verze byla smazána", - "watchlist-details": "Na vaÅ¡em seznamu sledovaných stránek {{PLURAL:$1|je $1 stránka|jsou $1 stránky|je $1 stránek}}, nepočítaje v to diskusní stránky.", + "watchlist-details": "Na vaÅ¡em seznamu sledovaných stránek {{PLURAL:$1|je $1 stránka|jsou $1 stránky|je $1 stránek}} (a k tomu diskusní stránky).", "wlheader-enotif": "Upozorňování e-mailem je zapnuto.", - "wlheader-showupdated": "Stránky, které se změnily od vaší poslední návÅ¡těvy, jsou zobrazeny '''tučně'''.", + "wlheader-showupdated": "Stránky, které se změnily od vaší poslední návÅ¡těvy, jsou zobrazeny tučně.", "wlnote": "Níže {{PLURAL:$1|je poslední změna|jsou poslední $1 změny|je posledních $1 změn}} za {{PLURAL:$2|poslední hodinu|poslední $2 hodiny|posledních $2 hodin}} do $4, $3.", "wlshowlast": "Ukázat posledních $1 hodin $2 dnů", "watchlist-hide": "Skrýt", @@ -3442,6 +3453,7 @@ "fileduplicatesearch-noresults": "Žádný soubor s názvem „$1“ nebyl nalezen.", "specialpages": "Speciální stránky", "specialpages-note-top": "Legenda", + "specialpages-note-restricted": "* Normální speciální stránky\n* Speciální stránky s vyhrazeným přístupem", "specialpages-group-maintenance": "Údržba", "specialpages-group-other": "Ostatní", "specialpages-group-login": "Přihlášení / vytvoření účtu", @@ -3562,6 +3574,7 @@ "compare-revision-not-exists": "Zadaná revize neexistuje.", "diff-form": "Rozdíly", "diff-form-oldid": "ID staré revize (nepovinné)", + "diff-form-revid": "ID revize se změnou", "diff-form-submit": "Zobrazit rozdíly", "permanentlink": "Trvalý odkaz", "permanentlink-revid": "ID revize", diff --git a/languages/i18n/csb.json b/languages/i18n/csb.json index 425e17fc97..c66fdf9f56 100644 --- a/languages/i18n/csb.json +++ b/languages/i18n/csb.json @@ -472,7 +472,7 @@ "permissionserrors": "Fela przistãpù", "permissionserrorstext-withaction": "Ni môsz przëstãpù do $2, z {{PLURAL:$1|nôslédny przëczënë|nôslédnych przëczënów}}:", "recreate-moveddeleted-warn": "Bôczënk! Chcesz usadzëc starnã, chtërna wczasni òsta rëmniãtô.\n\nÙgwësni sã, czë pònowné ùsôdzenié ti starnë je kònieczné. \nNiżi je widzec register rëmaniów i zmian pòzwë ti starnë:", - "moveddeleted-notice": "Na starna òsta rëmniãtô.\nSpisënk rëmaniô ë zjinaków miona ti starnë je niżi.", + "moveddeleted-notice": "Na starna òsta rëmniãtô.\nDali je spisënk rëmaniô, zazychrowaniô ë przenoszeniô ti starnë.", "content-model-wikitext": "wikitekst", "undo-failure": "Edicëjô nié mògłą bëc copniãtô przez zwadã z midzëedicëją.", "undo-summary": "Anulowanié wersje $1 aùtora [[Special:Contributions/$2|$2]] ([[User talk:$2|diskùsjô]])", diff --git a/languages/i18n/da.json b/languages/i18n/da.json index 2c080f663b..1f118bb4e4 100644 --- a/languages/i18n/da.json +++ b/languages/i18n/da.json @@ -63,7 +63,8 @@ "IBDJ", "SimmeD", "BoBrandt", - "R12ntech" + "R12ntech", + "Joedalton" ] }, "tog-underline": "Understreg henvisninger:", @@ -567,7 +568,12 @@ "botpasswords-label-delete": "Slet", "botpasswords-label-resetpassword": "Nulstil adgangskode", "botpasswords-label-grants": "Tilgængelige bevillinger:", + "botpasswords-label-grants-column": "Tildelt", + "botpasswords-bad-appid": "Robotnavnet »$1« er ikke gyldigt.", + "botpasswords-insert-failed": "Kunne ikke tilføje robotnavnet »$1«. Var det allerede tilføjet?", + "botpasswords-update-failed": "Kunne ikke tilføje robotnavnet »$1«. Er det slettet?", "botpasswords-created-title": "Botkodeord oprettet", + "botpasswords-created-body": "Robottens adgangskode for robotnavn »$1« for bruger »$2« blev oprettet.", "botpasswords-updated-title": "Bot kodeord opdateret", "botpasswords-deleted-title": "Bot kodeord slettet", "resetpass_forbidden": "Adgangskoder kan ikke ændres", @@ -968,6 +974,7 @@ "search-external": "Brug anden søgemaskine", "searchdisabled": "

Beklager! Fuldtekstsøgningen er midlertidigt afbrudt på grund af for stor belastning på serverne. I mellemtidem kan du anvende Google- eller Yahoo!-søgefelterne herunder. Bemærk at deres kopier af {{SITENAME}}s indhold kan være forældet.

", "search-error": "Der opstod en fejl under søgning: $1", + "search-warning": "Der opstod en advarsel under søgning: $1", "preferences": "Indstillinger", "mypreferences": "Indstillinger", "prefs-edits": "Antal redigeringer:", @@ -987,7 +994,7 @@ "prefs-editwatchlist-clear": "Ryd din overvågningsliste", "prefs-watchlist-days": "Antal dage der skal vises i overvågningslisten:", "prefs-watchlist-days-max": "Højst $1 {{PLURAL:$1|dag|dage}}", - "prefs-watchlist-edits": "Antal redigeringer der vises i udvidet overvågningsliste:", + "prefs-watchlist-edits": "Maksimalt antal redigeringer der vises i overvågningsliste:", "prefs-watchlist-edits-max": "Maks. 1000", "prefs-watchlist-token": "Overvågningslistenøgle:", "prefs-misc": "Forskelligt", @@ -1001,6 +1008,7 @@ "prefs-editing": "Redigering", "searchresultshead": "Søgeresultater", "stub-threshold": "Grænse før formatering af stublink ($1):", + "stub-threshold-sample-link": "eksempel", "stub-threshold-disabled": "Deaktiveret", "recentchangesdays": "Antal dage som skal vises i seneste ændringer:", "recentchangesdays-max": "(maks. $1 {{PLURAL:$1|dag|dage}})", @@ -1008,6 +1016,7 @@ "prefs-help-recentchangescount": "Det gælder for seneste ændringer, historikker og logger.", "prefs-help-watchlist-token2": "Dette er den hemmelige nøgle til web-feed af din overvågningsliste.\nHvis andre kender den, vil man være i stand til at læse din overvågningsliste, så del den ikke.\n[[Special:ResetTokens|Klik her hvis du har brug at nulstille den]].", "savedprefs": "Dine indstillinger er blevet gemt.", + "savedrights": "Brugergrupperne for {{GENDER:$1|$1}} er blevet gemt.", "timezonelegend": "Tidszone:", "localtime": "Lokaltid:", "timezoneuseserverdefault": "Brug wiki'ens standardindstilling ($1)", @@ -1298,8 +1307,21 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (se også [[Special:NewPages|listen over nye sider]])", "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Vis", + "rcfilters-tag-remove": "Fjern »$1«", + "rcfilters-legend-heading": "Liste over forkortelser:", + "rcfilters-other-review-tools": "Andre gennemgangsværktøjer", + "rcfilters-group-results-by-page": "Grupper resultater efter side", + "rcfilters-grouping-title": "Gruppering", "rcfilters-activefilters": "Aktive filtre", - "rcfilters-quickfilters": "Gemte filterindstillinger", + "rcfilters-advancedfilters": "Avancerede filtre", + "rcfilters-limit-title": "Ændringer som skal vises", + "rcfilters-limit-shownum": "Vis seneste {{PLURAL:$1|ændring|$1 ændringer}}", + "rcfilters-days-title": "De sidste dage", + "rcfilters-hours-title": "De sidste timer", + "rcfilters-days-show-days": "$1 {{PLURAL:$1|dag|dage}}", + "rcfilters-days-show-hours": "$1 {{PLURAL:$1|time|timer}}", + "rcfilters-highlighted-filters-list": "Fremhævede: $1", + "rcfilters-quickfilters": "Gemte filtre", "rcfilters-quickfilters-placeholder-title": "Ingen links gemt endnu", "rcfilters-savedqueries-defaultlabel": "Gemte filtre", "rcfilters-savedqueries-rename": "Omdøb", @@ -1307,11 +1329,13 @@ "rcfilters-savedqueries-unsetdefault": "Fravælg som grundindstilling", "rcfilters-savedqueries-remove": "Fjern", "rcfilters-savedqueries-new-name-label": "Navn", - "rcfilters-savedqueries-apply-label": "Gem indstillinger", + "rcfilters-savedqueries-apply-label": "Opret filter", + "rcfilters-savedqueries-apply-and-setdefault-label": "Opret standardfilter", "rcfilters-savedqueries-cancel-label": "Annullér", "rcfilters-savedqueries-add-new-title": "Gem nuværende filterindstillinger", "rcfilters-restore-default-filters": "Gendan standardfiltre", "rcfilters-clear-all-filters": "Ryd alle filtre", + "rcfilters-show-new-changes": "Vis seneste ændringer", "rcfilters-search-placeholder": "Filtrer seneste ændringer (gennemse eller begynd at taste)", "rcfilters-invalid-filter": "Ugyldigt filter", "rcfilters-empty-filter": "Ingen aktive filtre. All bidrag vises.", @@ -1361,6 +1385,8 @@ "rcfilters-filter-watchlist-watchednew-description": "Ændringer af overvågede sider du ikke har besøgt siden ændringerne blev gjort.", "rcfilters-filter-watchlist-notwatched-label": "Ikke på overvågningsliste", "rcfilters-filter-watchlist-notwatched-description": "Alt undtagen ændringer af sider på din overvågningsliste.", + "rcfilters-filter-watchlistactivity-unseen-label": "Usete ændringer", + "rcfilters-filter-watchlistactivity-seen-label": "Sete ændringer", "rcfilters-filtergroup-changetype": "Type ændring", "rcfilters-filter-pageedits-label": "Sideredigeringer", "rcfilters-filter-pageedits-description": "Ændringer af wikiindhold, diskussioner, kategoribeskrivelser...", @@ -1375,6 +1401,9 @@ "rcfilters-filter-lastrevision-description": "Den nyeste ændring af en side.", "rcfilters-filter-previousrevision-label": "Tidligere revisioner", "rcfilters-filter-previousrevision-description": "Alle ændringer som ikke er den nyeste ændring af en side.", + "rcfilters-view-advanced-filters-label": "Avancerede filtre", + "rcfilters-view-tags": "Mærkede redigeringer", + "rcfilters-view-namespaces-tooltip": "Filtrer resultater efter navnerum", "rcnotefrom": "Nedenfor er op til '''$1''' {{PLURAL:$5|ændring|ændringer}} siden '''$2''' vist.", "rclistfromreset": "Nulstil datovalg", "rclistfrom": "Vis nye ændringer startende fra den $3 kl. $2", @@ -1727,6 +1756,7 @@ "pageswithprop-legend": "Sider med en sideegenskab", "pageswithprop-text": "Denne side viser en liste over sider, der har en bestemt sideegenskab.", "pageswithprop-prop": "Egenskabsnavn:", + "pageswithprop-sortbyvalue": "Sorter efter egenskabsværdi", "pageswithprop-submit": "Vis", "pageswithprop-prophidden-long": "lang tekst værdi for egenskaben skjult ($1)", "pageswithprop-prophidden-binary": "binær værdi for egenskaben skjult ($1)", @@ -1841,10 +1871,19 @@ "apisandbox-reset": "Ryd", "apisandbox-retry": "Forsøg igen", "apisandbox-examples": "Eksempler", + "apisandbox-dynamic-parameters": "Yderligere parametre", + "apisandbox-dynamic-parameters-add-label": "Tilføj parameter:", "apisandbox-dynamic-parameters-add-placeholder": "Parameternavn", + "apisandbox-dynamic-error-exists": "En parameter navngivet »$1« findes allerede.", + "apisandbox-deprecated-parameters": "Forældede parametre", + "apisandbox-submit-invalid-fields-title": "Nogle felter er ugyldige", "apisandbox-results": "Resultater", + "apisandbox-sending-request": "Sender API-forespørgsel ...", + "apisandbox-loading-results": "Modtager API-resultater ...", "apisandbox-request-url-label": "Forespurgt URL:", "apisandbox-request-time": "Forespørgselstid: {{PLURAL:$1|$1 ms}}", + "apisandbox-alert-page": "Felter på denne side er ugyldige.", + "apisandbox-alert-field": "Værdien af dette felt er ugyldigt.", "apisandbox-continue": "Fortsæt", "apisandbox-continue-clear": "Ryd", "apisandbox-multivalue-all-namespaces": "$1 (alle navnerum)", @@ -2020,7 +2059,7 @@ "enotif_body_intro_restored": "{{SITENAME}} siden $1 er blevet gendannet den $PAGEEDITDATE af {{gender:$2|$2}}, se $3 for den aktuelle version.", "enotif_body_intro_changed": "{{SITENAME}}-siden $1 er blevet ændret den $PAGEEDITDATE af {{gender:$2|$2}}, se $3 for den aktuelle version.", "enotif_lastvisited": "Gå til $1 for at se alle ændringer siden dit sidste besøg.", - "enotif_lastdiff": "Gå til $1 for at se denne ændring.", + "enotif_lastdiff": "For at se denne ændring, se $1", "enotif_anon_editor": "anonym bruger $1", "enotif_body": "Kære $WATCHINGUSERNAME\n\n$PAGEINTRO $NEWPAGE\n\nBidragyderens opsummering: $PAGESUMMARY $PAGEMINOREDIT\n\nKontakt bidragyderen:\ne-mail: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nDu vil ikke modtage flere beskeder om yderligere aktivitet medmindre du besøger denne side. På din overvågningsliste kan du også nulstille alle markeringer for de sider, du overvåger.\n\n Med venlig hilsen {{SITENAME}}s informationssystem\n\n--\nFor at ændre dine indstillinger for e-mail-meddelelser, besøg\n{{canonicalurl:{{#special:Preferences}}}}\n\nFor at ændre indstillingerne for din overvågningsliste, besøg\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nFor at slette siden fra din overvågningsliste, besøg\n$UNWATCHURL\n\nTilbagemelding og yderligere hjælp:\n$HELPPAGE", "created": "oprettet", @@ -2050,12 +2089,13 @@ "delete-toobig": "Denne side har en stor historik, over {{PLURAL:$1|en version|$1 versioner}}. Sletning af sådanne sider er begrænset, for at forhindre utilsigtet forstyrrelse af {{SITENAME}}.", "delete-warning-toobig": "Denne side har en stor historik, over {{PLURAL:$1|en version|$1 versioner}} versioner, slettes den kan det forstyrre driften af {{SITENAME}}, gå forsigtigt frem.", "deleteprotected": "Du kan ikke slette denne side, fordi den er beskyttet.", - "deleting-backlinks-warning": "'''Advarsel:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Andre sider]] linker til eller inkluderer den side, du er ved at slette.", + "deleting-backlinks-warning": "Advarsel: [[Special:WhatLinksHere/{{FULLPAGENAME}}|Andre sider]] henviser til eller inkluderer den side, du er ved at slette.", "rollback": "Fjern redigeringer", "rollbacklink": "rul tilbage", "rollbacklinkcount": "rul {{PLURAL:$1|en redigering|$1 redigeringer}} tilbage", "rollbacklinkcount-morethan": "rul mere end {{PLURAL:$1|en redigering|$1 redigeringer}} tilbage", "rollbackfailed": "Kunne ikke fjerne redigeringen", + "rollback-missingrevision": "Kunne ikke indlæse revisionsdata.", "cantrollback": "Kan ikke fjerne redigering; den sidste bruger er den eneste forfatter.", "alreadyrolled": "Kan ikke fjerne den seneste redigering af [[:$1]] foretaget af [[User:$2|$2]] ([[User talk:$2|diskussion]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);\nen anden har allerede redigeret siden eller fjernet redigeringen.\n\nDen seneste redigering er foretaget af [[User:$3|$3]] ([[User talk:$3|diskussion]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).", "editcomment": "Redigeringsbeskrivelsen var: $1.", @@ -2067,6 +2107,8 @@ "changecontentmodel-title-label": "Sidetitel", "changecontentmodel-model-label": "Ny indholdsmodel", "changecontentmodel-reason-label": "Begrundelse:", + "changecontentmodel-emptymodels-title": "Ingen indholdsmodeller er tilgængelige", + "changecontentmodel-emptymodels-text": "Indholdet på [[:$1]] kan ikke konverteres til en anden type.", "protectlogpage": "Skrivebeskyttelseslog", "protectlogtext": "Herunder er en liste over ændringer til sidebeskyttelser.\nSe [[Special:ProtectedPages|listen over beskyttede sider]] for listen over sidebeskyttelser, der er i kraft i øjeblikket.", "protectedarticle": "[[$1]] beskyttet", @@ -2444,9 +2486,14 @@ "import": "Importer sider", "importinterwiki": "Import fra en anden wiki", "import-interwiki-text": "Vælg en Wiki og en side til importen.\nDatoen i den pågældende version og forfatterne ændres ikke.\nAlle Transwiki import-aktioner protokolleres i [[Special:Log/import|import-loggen]].", + "import-interwiki-sourcewiki": "Kildewiki:", + "import-interwiki-sourcepage": "Kildeside:", "import-interwiki-history": "Importer alle versioner af denne side", "import-interwiki-templates": "Inkluder alle skabeloner", "import-interwiki-submit": "Importer", + "import-mapping-default": "Importer til standardplaceringer", + "import-mapping-namespace": "Importer til et navnerum:", + "import-mapping-subpage": "Importer som undersider for den følgende side:", "import-upload-filename": "Filnavn:", "import-comment": "Kommentar:", "importtext": "Eksportér filen fra kilde-wiki'en ved hjælp af [[Special:Export|eksporterings værktøjet]], gem den på din harddisk og upload den her.", @@ -2622,6 +2669,7 @@ "pageinfo-protect-cascading-yes": "Ja", "pageinfo-protect-cascading-from": "Kaskadebeskyttelser begynder fra", "pageinfo-category-info": "Kategorioplysninger", + "pageinfo-category-total": "Samlet antal medlemmer", "pageinfo-category-pages": "Antal sider", "pageinfo-category-subcats": "Antal underkategorier", "pageinfo-category-files": "Antal filer", @@ -2681,8 +2729,10 @@ "newimages-legend": "Filter", "newimages-label": "Filnavn (eller en del af det):", "newimages-user": "IP-adresse eller brugernavn", + "newimages-newbies": "Vis kun bidrag fra nye konti", "newimages-showbots": "Vis oplægninger af robotter", "newimages-hidepatrolled": "Skjul patruljerede uploads", + "newimages-mediatype": "Medietype:", "noimages": "Ingen filer fundet.", "gallery-slideshow-toggle": "Til- eller fravælg thumbnails", "ilsubmit": "Søg", @@ -3075,6 +3125,8 @@ "confirmemail_body_set": "En person, sandsynligvis dig, har fra IP-adressen $1,\nangivet denne e-mailadresse til kontoen \"$2\" på {{SITENAME}}.\n\nFor at bekræfte, at denne konto virkelig tilhører dig og aktivere\ne-mailfunktionerne på {{SITENAME}}, åbn dette link i din browser:\n\n$3\n\nHvis kontoen *ikke* tilhører dig, så følg dette link\nfor at annullere e-mailadressens bekræftelse:\n\n$5\n\nDenne bekræftelseskode vil udløbe den $4.", "confirmemail_invalidated": "E-mail-bekræftelse afvist", "invalidateemail": "Cancel e-mail confirmation", + "notificationemail_subject_changed": "Registreret e-postadresse for {{SITENAME}} er blevet ændret", + "notificationemail_subject_removed": "Registreret e-postadresse på {{SITENAME}} er blevet fjernet", "scarytranscludedisabled": "[Interwiki-tilkobling er deaktiveret]", "scarytranscludefailed": "[Hentning af skabelon for $1 mislykkedes]", "scarytranscludefailed-httpstatus": "[Hentning af skabelon for $1 mislykkedes: HTTP $2]", @@ -3135,6 +3187,7 @@ "watchlistedit-clear-titles": "Sider:", "watchlistedit-clear-submit": "Ryd overvågningslisten (dette er permanent!)", "watchlistedit-clear-done": "Din overvågningsliste er blevet ryddet.", + "watchlistedit-too-many": "Der er for mange sider til, at de kan vises her.", "watchlisttools-clear": "Ryd overvågningsliste", "watchlisttools-view": "Se ændrede sider i overvågningslisten", "watchlisttools-edit": "Rediger overvågningsliste", @@ -3194,6 +3247,7 @@ "redirect-page": "Side-ID", "redirect-revision": "Sideversion", "redirect-file": "Filnavn", + "redirect-logid": "Log-id", "redirect-not-exists": "Værdi ej fundet", "fileduplicatesearch": "Find dubletfiler", "fileduplicatesearch-summary": "Find dublerede filer baseret på deres hash-værdi.", @@ -3243,14 +3297,37 @@ "tags-activate": "aktiver", "tags-deactivate": "deaktiver", "tags-hitcount": "{{PLURAL:$1|en ændring|$1 ændringer}}", + "tags-create-tag-name": "Mærkenavn:", "tags-create-reason": "Årsag:", "tags-create-submit": "Opret", + "tags-create-no-name": "Du skal angive et mærkenavn.", + "tags-create-already-exists": "Mærket »$1« findes allerede.", + "tags-delete-title": "Slet mærke", + "tags-delete-explanation-initial": "Du er ved at slette mærket »$1« fra databasen.", "tags-delete-reason": "Årsag:", + "tags-activate-title": "Aktiver mærke", + "tags-activate-question": "Du er ved at aktivere mærket »$1«.", "tags-activate-reason": "Årsag:", + "tags-activate-not-allowed": "Det er ikke muligt at aktivere mærket »$1«.", + "tags-activate-not-found": "Mærket »$1« findes ikke.", "tags-activate-submit": "Aktiver", + "tags-deactivate-title": "Deaktiver mærke", + "tags-deactivate-question": "Du er ved at deaktivere mærket »$1«.", "tags-deactivate-reason": "Årsag:", + "tags-deactivate-not-allowed": "Det er ikke muligt at deaktivere mærket »$1«.", "tags-deactivate-submit": "Deaktiver", + "tags-apply-no-permission": "Du har ikke rettigheder til at anvende ændringsmærker sammen med dine ændringer.", + "tags-update-blocked": "Du kan ikke tilføje eller fjerne ændringsmærker mens {{GENDER:$1|du}} er blokeret.", + "tags-edit-title": "Rediger mærker", + "tags-edit-manage-link": "Håndter mærker", + "tags-edit-existing-tags": "Eksisterende mærker:", "tags-edit-existing-tags-none": "Ingen", + "tags-edit-new-tags": "Nye mærker:", + "tags-edit-add": "Tilføj disse mærker:", + "tags-edit-remove": "Fjern disse mærker:", + "tags-edit-remove-all-tags": "(fjern alle mærker)", + "tags-edit-chosen-placeholder": "Vælg nogle mærker", + "tags-edit-chosen-no-results": "Ingen mærker fundet som matcher", "tags-edit-reason": "Årsag:", "comparepages": "Sammenlign sider", "compare-page1": "Side 1", @@ -3261,6 +3338,7 @@ "compare-invalid-title": "Den titel, du har angivet, er ugyldig.", "compare-title-not-exists": "Den titel, du har angivet, findes ikke.", "compare-revision-not-exists": "Den version, du har angivet, findes ikke.", + "diff-form": "et '''skema'''", "dberr-problems": "Undskyld! Siden har tekniske problemer.", "dberr-again": "Prøv at vente et par minutter og opdater så siden igen.", "dberr-info": "(Kan ikke tilgå databasen: $1)", @@ -3450,8 +3528,11 @@ "mw-widgets-titleinput-description-new-page": "side eksisterer ikke endnu", "mw-widgets-titleinput-description-redirect": "omdiriger til $1", "mw-widgets-categoryselector-add-category-placeholder": "Tilføj en kategori...", + "mw-widgets-usersmultiselect-placeholder": "Tilføj flere ...", "date-range-from": "Fra dato:", "date-range-to": "Til dato:", + "sessionmanager-tie": "Kan ikke kombinere flere forespørgselgodkendelsetyper: $1.", + "sessionprovider-generic": "$1 sessioner", "randomrootpage": "Tilfældig stamside", "log-action-filter-block": "Blokeringstype:", "log-action-filter-delete": "Sletningstype:", @@ -3477,8 +3558,18 @@ "log-action-filter-protect-modify": "Ændring af beskyttelse", "log-action-filter-protect-unprotect": "Fjernede beskyttelse", "log-action-filter-protect-move_prot": "Flyttede beskyttelse", + "log-action-filter-upload-upload": "Ny overførsel", + "authmanager-create-from-login": "For at oprette din konto, så udfyld venligst felterne.", + "authmanager-email-label": "E-post", + "authmanager-email-help": "E-postadresse", "authmanager-provider-temporarypassword": "Midlertidig adgangskode", + "specialpage-securitylevel-not-allowed-title": "Ikke tilladt", "cannotauth-not-allowed-title": "Adgang nægtet", "cannotauth-not-allowed": "Du har ikke tilladelse til at bruge denne side", + "removecredentials": "Fjern akkreditiver", + "removecredentials-submit": "Fjern akkreditiver", + "removecredentials-invalidsubpage": "$1 er ikke en gyldig type for akkreditiver.", + "removecredentials-success": "Dine akkreditiver er blevet fjernet.", + "credentialsform-provider": "Akkreditivtype:", "credentialsform-account": "Kontonavn:" } diff --git a/languages/i18n/de-formal.json b/languages/i18n/de-formal.json index c4c6984144..a719fb62fd 100644 --- a/languages/i18n/de-formal.json +++ b/languages/i18n/de-formal.json @@ -72,6 +72,7 @@ "yourdomainname": "Ihre Domain:", "password-change-forbidden": "Sie können auf diesem Wiki keine Passwörter ändern.", "externaldberror": "Entweder liegt ein Fehler bei der externen Authentifizierung vor oder Sie dürfen Ihr externes Benutzerkonto nicht aktualisieren.", + "login-security": "Verifizieren Sie Ihre Identität", "userlogin-noaccount": "Sie haben noch kein Benutzerkonto?", "userlogin-loggedin": "Sie sind bereits als {{GENDER:$1|$1}} angemeldet.\nBenutzen Sie das unten stehende Formular, um sich unter einem anderen Benutzernamen anzumelden.", "createacct-email-ph": "Geben Sie Ihre E-Mail-Adresse ein", diff --git a/languages/i18n/de.json b/languages/i18n/de.json index 59c3b26c43..4e4a469c90 100644 --- a/languages/i18n/de.json +++ b/languages/i18n/de.json @@ -89,7 +89,8 @@ "Predatorix", "Matma Rex", "ThePiscin", - "Osnard" + "Osnard", + "Suriyaa Kudo" ] }, "tog-underline": "Links unterstreichen:", @@ -100,7 +101,7 @@ "tog-extendwatchlist": "Alle und nicht nur die aktuellsten Änderungen in der Beobachtungsliste anzeigen", "tog-usenewrc": "Änderungen auf „Letzte Änderungen“ und der Beobachtungsliste nach Seite gruppieren", "tog-numberheadings": "Überschriften automatisch nummerieren", - "tog-showtoolbar": "Bearbeiten-Werkzeugleiste aktivieren", + "tog-showtoolbar": "Bearbeiten-Werkzeugleiste anzeigen", "tog-editondblclick": "Seiten mit Doppelklick bearbeiten", "tog-editsectiononrightclick": "Einzelne Abschnitte per Rechtsklick bearbeiten", "tog-watchcreations": "Selbst erstellte Seiten und hochgeladene Dateien automatisch beobachten", @@ -1365,6 +1366,7 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (siehe auch die [[Special:NewPages|Liste neuer Seiten]])", "recentchanges-legend-plusminus": "''(±123)''", "recentchanges-submit": "Anzeigen", + "rcfilters-tag-remove": "„$1“ entfernen", "rcfilters-legend-heading": "Liste von Abkürzungen:", "rcfilters-other-review-tools": "Andere Überprüfungswerkzeuge", "rcfilters-group-results-by-page": "Ergebnisse nach Seite gruppieren", @@ -1377,6 +1379,7 @@ "rcfilters-hours-title": "Letzte Stunden", "rcfilters-days-show-days": "{{PLURAL:$1|Ein Tag|$1 Tage}}", "rcfilters-days-show-hours": "{{PLURAL:$1|Eine Stunde|$1 Stunden}}", + "rcfilters-highlighted-filters-list": "Hervorgehoben: $1", "rcfilters-quickfilters": "Gespeicherte Filter", "rcfilters-quickfilters-placeholder-title": "Noch keine Links gespeichert", "rcfilters-quickfilters-placeholder-description": "Um deine Filtereinstellungen zu speichern und später erneut zu verwenden, klicke unten auf das Lesezeichensymbol im Bereich der aktiven Filter.", @@ -1399,14 +1402,14 @@ "rcfilters-empty-filter": "Keine aktiven Filter. Es werden alle Beiträge angezeigt.", "rcfilters-filterlist-title": "Filter", "rcfilters-filterlist-whatsthis": "Wie funktioniert das?", - "rcfilters-filterlist-feedbacklink": "Rückmeldung zu den neuen (Beta-)Filtern hinterlassen", + "rcfilters-filterlist-feedbacklink": "Erzähle uns, was du über diese (neuen) Filterwerkzeuge denkst.", "rcfilters-highlightbutton-title": "Ergebnisse hervorheben", "rcfilters-highlightmenu-title": "Eine Farbe auswählen", "rcfilters-highlightmenu-help": "Eine Farbe auswählen, um diese Eigenschaft hervorzuheben.", "rcfilters-filterlist-noresults": "Keine Filter gefunden", "rcfilters-noresults-conflict": "Keine Ergebnisse gefunden, da sich die Suchkriterien in Konflikt befinden.", "rcfilters-state-message-subset": "Dieser Filter hat keinen Effekt, da seine Ergebnisse mit denen {{PLURAL:$2|des folgenden breiteren Filters|der folgenden breiteren Filter}} einbezogen sind (versuche die Hervorhebung, um sie zu unterscheiden): $1", - "rcfilters-state-message-fullcoverage": "Das Auswählen aller Filter in einer Gruppe ist das Gleiche wie das Auswählen keines Filters. Deshalb hat dieser Filter keinen Effekt. Die Gruppe enthält: $1", + "rcfilters-state-message-fullcoverage": "Das Auswählen aller Filter in dieser Gruppe ist das Gleiche wie das Auswählen keines Filters. Deshalb hat dieser Filter keinen Effekt. Die Gruppe enthält: $1", "rcfilters-filtergroup-authorship": "Beitrags-Autorenschaft", "rcfilters-filter-editsbyself-label": "Änderungen von dir", "rcfilters-filter-editsbyself-description": "Deine eigenen Beiträge.", @@ -1445,6 +1448,11 @@ "rcfilters-filter-watchlist-watchednew-description": "Änderungen an beobachteten Seiten, die du nicht besucht hast, seitdem die Änderungen auftraten.", "rcfilters-filter-watchlist-notwatched-label": "Nicht auf der Beobachtungsliste", "rcfilters-filter-watchlist-notwatched-description": "Alle außer Änderungen an deinen beobachteten Seiten.", + "rcfilters-filtergroup-watchlistactivity": "Beobachtungslistenaktivität", + "rcfilters-filter-watchlistactivity-unseen-label": "Ungesehene Änderungen", + "rcfilters-filter-watchlistactivity-unseen-description": "Änderungen an Seiten, die du seit dem Auftreten nicht besucht hast.", + "rcfilters-filter-watchlistactivity-seen-label": "Gesehene Änderungen", + "rcfilters-filter-watchlistactivity-seen-description": "Änderungen an Seiten, die du seit dem Auftreten besucht hast.", "rcfilters-filtergroup-changetype": "Typ der Änderung", "rcfilters-filter-pageedits-label": "Seitenbearbeitungen", "rcfilters-filter-pageedits-description": "Änderungen am Wikiinhalt oder an Diskussionen, Kategoriebeschreibungen …", @@ -1474,6 +1482,9 @@ "rcfilters-liveupdates-button": "Live-Aktualisierungen", "rcfilters-liveupdates-button-title-on": "Live-Aktualisierungen ausschalten", "rcfilters-liveupdates-button-title-off": "Neue Änderungen bei Auftreten anzeigen", + "rcfilters-watchlist-markseen-button": "Alle Änderungen als gesehen markieren", + "rcfilters-watchlist-edit-watchlist-button": "Deine Liste der beobachteten Seiten bearbeiten", + "rcfilters-watchlist-showupdated": "Änderungen an Seiten, die du seit ihrem Auftreten nicht besucht hast, sind fett markiert.", "rcnotefrom": "Angezeigt {{PLURAL:$5|wird die Änderung|werden die Änderungen}} seit $3, $4 (max. $1 Einträge).", "rclistfromreset": "Datumsauswahl zurücksetzen", "rclistfrom": "Nur Änderungen seit $3, $2 Uhr zeigen.", @@ -2159,7 +2170,7 @@ "unwatchthispage": "Nicht mehr beobachten", "notanarticle": "Keine Seite", "notvisiblerev": "Version wurde gelöscht", - "watchlist-details": "Du beobachtest {{PLURAL:$1|eine Seite|$1 Seiten}}, ohne dass Diskussionsseiten getrennt gezählt werden.", + "watchlist-details": "{{PLURAL:$1|Eine Seite ist|$1 Seiten sind}} auf deiner Beobachtungsliste (sowie Diskussionsseiten).", "wlheader-enotif": "Der E-Mail-Benachrichtigungsdienst ist aktiviert.", "wlheader-showupdated": "Seiten mit noch nicht gesehenen Änderungen werden '''fett''' dargestellt.", "wlnote": "Es {{PLURAL:$1|folgt die letzte Änderung|folgen die letzten $1 Änderungen}} der letzten {{PLURAL:$2|Stunde|$2 Stunden}}. Stand: $3, $4 Uhr.", diff --git a/languages/i18n/din.json b/languages/i18n/din.json index eed494d50c..fa94b3b784 100644 --- a/languages/i18n/din.json +++ b/languages/i18n/din.json @@ -217,7 +217,7 @@ "template-semiprotected": "(gëlamääth)", "hiddencategories": "Apamkën ee rem ë {{PLURAL:$1|1 bekätakthook cï thiaan |$1 bekätakthuɔk cï thiaan}}:", "permissionserrorstext-withaction": "Yïn acïï nɔŋ nhomlääu ba $2, {{PLURAL:$1|wɛ̈t de kän|wët de käk}}:", - "moveddeleted-notice": "Apam acï cuɔthwei. Athörtɔ̈ɔ̈u de cothëwei ku nyiɛɛi në apamë aa cïke gam piiny ëtɛ̈n tɔŋ raan wïc bë ke kueen", + "moveddeleted-notice": "Apam acï cuɔthwei. Athörtɔ̈ɔ̈u de cothëwei ku nyiɛɛi në apamë aa cïke gam piiny ëtɛ̈n tɔŋ raan wïc bë ke kueen.", "content-model-javascript": "JavaScript", "viewpagelogs": "Ɣoi athörtɔ̈ɔ̈u në apamkën", "currentrev-asof": "Dhuɔ̈kic yambëtɛɛm ee bɔ̈bei pɛinïn $1", diff --git a/languages/i18n/el.json b/languages/i18n/el.json index 720a059820..9a8983b334 100644 --- a/languages/i18n/el.json +++ b/languages/i18n/el.json @@ -427,7 +427,7 @@ "createacct-another-username-ph": "Εισαγάγετε το όνομα χρήστη", "yourpassword": "Κωδικός:", "userlogin-yourpassword": "Κωδικός", - "userlogin-yourpassword-ph": "Εισαγάγετε τον κωδικό σας", + "userlogin-yourpassword-ph": "Εισαγάγετε το συνθηματικό σας", "createacct-yourpassword-ph": "Εισαγωγή κωδικού", "yourpasswordagain": "Επαναπληκτρολόγηση κωδικού:", "createacct-yourpasswordagain": "Επιβεβαίωση κωδικού", @@ -481,7 +481,7 @@ "loginerror": "Σφάλμα σύνδεσης", "createacct-error": "Σφάλμα δημιουργίας λογαριασμού", "createaccounterror": "Δεν ήταν δυνατή η δημιουργία λογαριασμού: $1", - "nocookiesnew": "Ο λογαριασμός χρήστη έχει δημιουργηθεί, αλλά δεν έχετε ακόμα συνδεθεί. Το {{SITENAME}} χρησιμοποιεί cookies κατά τη σύνδεση των χρηστών. Τα cookies είναι απενεργοποιημένα στον υπολογιστή σας. Παρακαλούμε ενεργοποιήστε τα και στη συνέχεια συνδεθείτε χρησιμοποιώντας το νέο όνομα χρήστη σας και τον κωδικό σας.", + "nocookiesnew": "Ο λογαριασμός χρήστη έχει δημιουργηθεί, αλλά δεν έχετε συνδεθεί. Ο ιστότοπος {{SITENAME}} χρησιμοποιεί cookies για τη σύνδεση των χρηστών. Τα cookies είναι απενεργοποιημένα στον υπολογιστή σας. Παρακαλούμε ενεργοποιήστε τα και στη συνέχεια συνδεθείτε χρησιμοποιώντας το νέο όνομα χρήστη σας και το συνθηματικό σας.", "nocookieslogin": "Το {{SITENAME}} χρησιμοποιεί cookies κατά τη σύνδεση των χρηστών. Τα cookies είναι απενεργοποιημένα στον υπολογιστή σας. Παρακαλούμε ενεργοποιήστε τα και ξαναδοκιμάστε!", "nocookiesfornew": "Ο λογαριασμός χρήστη δεν δημιουργήθηκε, καθώς δεν μπορούσε να επιβεβαιώσει την πηγή του. \n Βεβαιωθείτε ότι έχετε ενεργοποιήσει τα cookies, ξαναφορτώστε αυτή τη σελίδα και προσπαθήστε ξανά.", "createacct-loginerror": "Ο λογαριασμός δημιουργήθηκε με επιτυχία, αλλά δεν ήταν δυνατόν να συνδεθείτε αυτόματα. Παρακαλούμε [[Special:UserLogin|συνδεθείτε με το χέρι]].", @@ -501,7 +501,7 @@ "password-login-forbidden": "Η χρήση αυτού του ονόματος χρήστη και συνθηματικού έχουν απαγορευτεί.", "mailmypassword": "Επαναφορά κωδικού", "passwordremindertitle": "Καινούργιος προσωρινός κωδικός για το {{SITENAME}}", - "passwordremindertext": "Κάποιος (πιθανώς εσείς, από την διεύθυνση IP $1) ζήτησε να σας στείλουμε ένα νέο κωδικό πρόσβασης για τον ιστότοπο {{SITENAME}} ($4). Ο κωδικός πρόσβασης για το χρήστη \"$2\" είναι τώρα \"$3\". Αν το κάνατε εσείς, θα πρέπει να συνδεθείτε και να αλλάξετε τον κωδικό πρόσβασης σας τώρα. Ο προσωρινός σας κωδικός πρόσβασης θα λήξει σε {{PLURAL:$5|μια ημέρα|$5 ημέρες}}.\n\nΑν κάποιος άλλος έκανε αυτή την αίτηση ή αν έχετε θυμηθεί τον κωδικό πρόσβασης σας και δεν επιθυμείτε πλέον να τον αλλάξετε, μπορείτε να αγνοήσετε αυτό το μήνυμα και να συνεχίσετε να χρησιμοποιείτε τον παλιό κωδικό πρόσβασης σας.", + "passwordremindertext": "Κάποιος (κατά πάσα πιθανότητα εσείς, από τη διεύθυνση IP $1) αιτήθηκε νέο συνθηματικό για τον ιστότοπο {{SITENAME}} ($4). Έχει δημιουργηθεί το προσωρινό συνθηματικό «$3» για το χρήστη «$2». Αν ήταν αυτή η πρόθεσή σας, θα πρέπει να συνδεθείτε και να αλλάξετε το συνθηματικό σας τώρα. Το προσωρινό σας συνθηματικό θα λήξει σε {{PLURAL:$5|μια ημέρα|$5 ημέρες}}.\n\nΕάν αυτό το αίτημα έγινε από κάποιον τρίτο, ή αν θυμηθήκατε το συνθηματικό σας και δεν επιθυμείτε πλέον να το αλλάξετε, μπορείτε να αγνοήσετε αυτό το μήνυμα και να συνεχίσετε να χρησιμοποιείτε το παλιό σας συνθηματικό.", "noemail": "Δεν έχει καθοριστεί ηλεκτρονική διεύθυνση για τον χρήστη \"$1\".", "noemailcreate": "Είναι απαραίτητο να υποβάλλετε μια έγκυρη διεύθυνση ηλεκτρονικού ταχυδρομείου", "passwordsent": "Σας έχει σταλεί ένας νέος κωδικός στην ηλεκτρονική διέθυνση που δηλώσατε για \"$1\".\nΣας παρακαλούμε να ξανασυνδεθείτε μόλις τον λάβετε.", @@ -536,13 +536,13 @@ "user-mail-no-addy": "Προσπαθήσατε να στείλετε e-mail χωρίς μια διεύθυνση e-mail.", "user-mail-no-body": "Προσπάθησε να στείλει e-mail με ένα κενό ή αδικαιολόγητα σύντομο σώμα.", "changepassword": "Αλλαγή κωδικού", - "resetpass_announce": "Για να ολοκληρώσετε την σύνδεση, πρέπει να στείλετε ένα νέο κωδικό εδώ:", + "resetpass_announce": "Για να ολοκληρώσετε τη σύνδεση πρέπει να καθορίσετε νέο συνθηματικό.", "resetpass_text": "", "resetpass_header": "Αλλαγή κωδικού πρόσβασης", "oldpassword": "Παλιός κωδικός", "newpassword": "Νέος κωδικός πρόσβασης", - "retypenew": "Πληκτρολογήστε ξανά το νέο κωδικό.", - "resetpass_submit": "Δώστε κωδικό πρόσβασης και συνδεθείτε", + "retypenew": "Πληκτρολογήστε ξανά το νέο συνθηματικό:", + "resetpass_submit": "Καθορίστε συνθηματικό και συνδεθείτε", "changepassword-success": "Ο κωδικός πρόσβασής σας άλλαξε!", "changepassword-throttled": "Κάνατε πάρα πολλές πρόσφατες απόπειρες σύνδεσης.\nΠαρακαλούμε περιμένετε $1 προτού ξαναδοκιμάσετε.", "botpasswords": "Συνθηματικά για ρομπότ", @@ -580,25 +580,25 @@ "resetpass-no-info": "Πρέπει να είστε συνδεδεμένος για να δείτε αυτήν την σελίδα απευθείας", "resetpass-submit-loggedin": "Αλλαγή κωδικού", "resetpass-submit-cancel": "Ακύρωση", - "resetpass-wrong-oldpass": "Λάθος προσωρινός ή κανονικός κωδικός.\nΜπορεί να έχετε ήδη αλλάξει τον κωδικό σας ή να έχετε ζητήσει έναν νέο προσωρινό κωδικό.", - "resetpass-recycled": "Παρακαλούμε επαναφέρετε τον κωδικό πρόσβασής σας σε κάτι διαφορετικό από τον τρέχοντα κωδικό πρόσβασης.", - "resetpass-temp-emailed": "Έχετε συνδεθεί με έναν προσωρινό κωδικό μέσω ηλεκτρονικού ταχυδρομείου.\nΓια να ολοκληρώσετε τη σύνδεση, πρέπει να ορίσετε έναν νέο κωδικό εδώ:", + "resetpass-wrong-oldpass": "Μη έγκυρο προσωρινό ή τρέχον συνθηματικό.\nΜπορεί να έχετε ήδη αλλάξει το συνθηματικό σας ή να έχετε αιτηθεί νέο προσωρινό συνθηματικό.", + "resetpass-recycled": "Παρακαλούμε επαναφέρετε το συνθηματικό σας επιλέγοντας κάτι διαφορετικό από το τρέχον συνθηματικό σας.", + "resetpass-temp-emailed": "Έχετε συνδεθεί με έναν προσωρινό κωδικό μέσω ηλεκτρονικού ταχυδρομείου.\nΓια να ολοκληρώσετε τη σύνδεσή σας, πρέπει να ορίσετε νέο συνθηματικό εδώ:", "resetpass-temp-password": "Προσωρινός κωδικός:", "resetpass-abort-generic": "Η αλλαγή του κωδικού έχει απορριφθεί από μια προέκταση.", - "resetpass-expired": "Ο κωδικός πρόσβασης έχει λήξει. Ορίστε έναν νέο κωδικό πρόσβασης για να συνδεθείτε.", - "resetpass-expired-soft": "Ο κωδικός πρόσβασης έχει λήξει και πρέπει να γίνει επαναφορά του. Επιλέξτε έναν νέο κωδικό πρόσβασης τώρα ή πατήστε «{{int:authprovider-resetpass-skip-label}}» για τον επαναφέρετε αργότερα.", + "resetpass-expired": "Το συνθηματικό σας έχει λήξει. Παρακαλούμε καθορίστε νέο συνθηματικό για να συνδεθείτε.", + "resetpass-expired-soft": "Το συνθηματικό σας έχει λήξει και πρέπει να γίνει επαναφορά του. Παρακαλούμε επιλέξτε νέο συνθηματικό τώρα, ή κάντε κλικ στο «{{int:authprovider-resetpass-skip-label}}» για το επαναφέρετε αργότερα.", "resetpass-validity-soft": "Ο κωδικός πρόσβασής σας δεν είναι έγκυρος: $1\n\nΠαρακαλούμε επιλέξτε έναν νέο κωδικό πρόσβασης τώρα, ή πατήστε «{{int:authprovider-resetpass-skip-label}}» για να τον επαναφέρετε αργότερα.", "passwordreset": "Επαναφορά κωδικού", - "passwordreset-text-one": "Συμπληρώστε την παρακάτω φόρμα για να επαναφέρετε τον κωδικό πρόσβασής σας.", - "passwordreset-text-many": "{{PLURAL:$1|Συμπληρώστε ένα από τα πεδία για να λάβετε προσωρινό κωδικό πρόσβαση μέσω ηλεκτρονικού ταχυδρομείου.}}", + "passwordreset-text-one": "Συμπληρώστε αυτήν τη φόρμα για να λάβετε ένα προσωρινό συνθηματικό μέσω ηλεκτρονικού ταχυδρομείου.", + "passwordreset-text-many": "{{PLURAL:$1|Συμπληρώστε ένα από τα πεδία για να λάβετε προσωρινό συνθηματικό μέσω ηλεκτρονικού ταχυδρομείου.}}", "passwordreset-disabled": "Η επαναφορά κωδικού πρόσβασης έχει απενεργοποιηθεί σε αυτό το wiki", "passwordreset-emaildisabled": "Τα χαρακτηριστικά ηλεκτρονικού ταχυδρομείου έχουν απενεργοποιηθεί σ' αυτό το wiki.", "passwordreset-username": "Όνομα χρήστη:", "passwordreset-domain": "Domain:", "passwordreset-email": "Διεύθυνση ηλεκτρονικού ταχυδρομείου:", "passwordreset-emailtitle": "Λεπτομέρειες λογαριασμού για {{SITENAME}}", - "passwordreset-emailtext-ip": "Κάποιος (πιθανώς εσείς, από την διεύθυνση IP $1) ζήτησε την επαναφορά του κωδικού σας σε {{SITENAME}} ($4). {{PLURAL:$3|Ο ακόλουθος λογαριασμός|Οι ακόλουθοι λογαριασμοί}} χρήστη συνδέονται με αυτή τη διεύθυνση e-mail:\n\n$2\n\n{{PLURAL:$3|Αυτός ο προσωρινός κωδικός πρόσβασης θα λήξει|Αυτοί οι προσωρινοί κωδικοί πρόσβασης θα λήξουν}} σε {{PLURAL:$5|μία ημέρα|$5 ημέρες}}.\nΘα πρέπει να συνδεθείτε τώρα και να επιλέξετε ένα νέο κωδικό. Αν κάποιος άλλος έκανε αυτό το αίτημα ή αν έχετε θυμηθεί τον αρχικό κωδικό πρόσβασής σας, και δεν επιθυμείτε πια να τον αλλάξετε, μπορείτε να αγνοήσετε αυτό το μήνυμα και να συνεχίσετε να χρησιμοποιείτε τον παλιό σας κωδικό πρόσβασης.", - "passwordreset-emailtext-user": "Ο χρήστης $1 στη {{SITENAME}} ζήτησε μια επαναφορά του κωδικού πρόσβασης σας σε {{SITENAME}} ($4). {{PLURAL:$3|Ο ακόλουθος λογαριασμός|Οι ακόλουθοι λογαριασμοί}} χρήστη συνδέονται με αυτή τη διεύθυνση e-mail:\n\n$2\n\n{{PLURAL:$3|Αυτός ο προσωρινός κωδικός πρόσβασης θα λήξει| Αυτοί οι προσωρινοί κωδικοί πρόσβασης θα λήξουν}} σε {{PLURAL:$5| μία ημέρα| $5 ημέρες}}.\nΘα πρέπει να συνδεθείτε τώρα και να επιλέξετε ένα νέο κωδικό. Αν κάποιος άλλος έκανε αυτό το αίτημα ή αν έχετε θυμηθεί τον αρχικό κωδικό πρόσβασής σας, και δεν επιθυμείτε πια να τον αλλάξετε, μπορείτε να αγνοήσετε αυτό το μήνυμα και να συνεχίσετε να χρησιμοποιείτε τον παλιό σας κωδικό πρόσβασης.", + "passwordreset-emailtext-ip": "Κάποιος (κατά πάσα πιθανότητα εσείς, από την διεύθυνση IP $1) αιτήθηκε επαναφορά του συνθηματικού σας στον ιστότοπο {{SITENAME}} ($4). {{PLURAL:$3|Ο ακόλουθος λογαριασμός|Οι ακόλουθοι λογαριασμοί}} χρήστη συνδέονται με αυτήν τη διεύθυνση ηλεκτρονικού ταχυδρομείου:\n\n$2\n\n{{PLURAL:$3|Αυτό το προσωρινό συνθηματικό θα λήξει| Αυτά τα προσωρινά συνθηματικά θα λήξουν}} σε {{PLURAL:$5|μία ημέρα|$5 ημέρες}}.\nΘα πρέπει να συνδεθείτε και να επιλέξετε νέο συνθηματικό τώρα. Αν κάποιος άλλος έκανε αυτό το αίτημα ή αν θυμηθήκατε το αρχικό συνθηματικό σας και δεν επιθυμείτε πια να το αλλάξετε, μπορείτε να αγνοήσετε αυτό το μήνυμα και να συνεχίσετε να χρησιμοποιείτε το παλιό σας συνθηματικό.", + "passwordreset-emailtext-user": "Ο χρήστης $1 στον ιστότοπο {{SITENAME}} ζήτησε μια επαναφορά του συνθηματικού σας για τον ιστότοπο {{SITENAME}} ($4). {{PLURAL:$3|Ο ακόλουθος λογαριασμός|Οι ακόλουθοι λογαριασμοί}} χρήστη συνδέονται με αυτήν τη διεύθυνση ηλεκτρονικού ταχυδρομείου:\n\n$2\n\n{{PLURAL:$3|Αυτό το προσωρινό συνθηματικό θα λήξει| Αυτά τα προσωρινά συνθηματικά θα λήξουν}} σε {{PLURAL:$5|μία ημέρα|$5 ημέρες}}.\nΘα πρέπει να συνδεθείτε και να επιλέξετε νέο συνθηματικό τώρα. Αν κάποιος άλλος έκανε αυτό το αίτημα ή αν θυμηθήκατε το αρχικό συνθηματικό σας και δεν επιθυμείτε πια να το αλλάξετε, μπορείτε να αγνοήσετε αυτό το μήνυμα και να συνεχίσετε να χρησιμοποιείτε το παλιό σας συνθηματικό.", "passwordreset-emailelement": "Όνομα χρήστη: \n$1\n\nΠροσωρινός κωδικός πρόσβασης:\n$2", "passwordreset-emailsentemail": "Αν αυτή η διεύθυνση ηλεκτρονικού ταχυδρομείου συνδέεται με το λογαριασμό σας, τότε θα σας αποσταλεί μήνυμα ηλεκτρονικού ταχυδρομείου για την επαναφορά του κωδικού πρόσβασης.", "passwordreset-emailsentusername": "Αν υπάρχει μια διεύθυνση ηλεκτρονικού ταχυδρομείου που συνδέεται με αυτό το όνομα χρήστη, τότε θα σας αποσταλεί ένα μήνυμα ηλεκτρονικού ταχυδρομείου για την επαναφορά του κωδικού πρόσβασης.", @@ -722,8 +722,8 @@ "semiprotectedpagewarning": "'''Σημείωση:''' Αυτή η σελίδα έχει κλειδωθεί ώστε μόνο εγγεγραμμένοι χρήστες μπορούν να την επεξεργαστούν.\nΗ πιο πρόσφατη καταχώρηση στο αρχείο καταγραφής παρέχεται παρακάτω για αναφορά:", "cascadeprotectedwarning": "Προσοχή: Αυτή η σελίδα έχει κλειδωθεί ώστε μόνο χρήστες με [[Special:ListGroupRights|συγκεκριμένα δικαιώματα]] να μπορούν να την επεξεργαστούν, επειδή περιλαμβάνεται {{PLURAL:$1|στην ακόλουθη|στις ακόλουθες}} διαδοχικά (cascaded) {{PLURAL:$1|προστατευμένη σελίδα|προστατευμένες σελίδες}}:", "titleprotectedwarning": "'''Προειδοποίηση: Αυτή η σελίδα έχει κλειδωθεί ώστε χρειάζονται [[Special:ListGroupRights|ειδικά δικαιώματα]] για να δημιουργηθεί.'''\nΗ πιο πρόσφατη καταχώρηση στο αρχείο καταγραφής παρέχεται παρακάτω για αναφορά:", - "templatesused": "{{PLURAL:$1|Πρότυπο που χρησιμοποιείται|Πρότυπα που χρησιμοποιούνται}} στη σελίδα αυτή:", - "templatesusedpreview": "{{PLURAL:$1|Πρότυπο που χρησιμοποιείται|Πρότυπα που χρησιμοποιούνται}} σε αυτήν την προεπισκόπηση:", + "templatesused": "{{PLURAL:$1|Πρότυπο που χρησιμοποιείται|Πρότυπα που χρησιμοποιούνται}} σε αυτή τη σελίδα:", + "templatesusedpreview": "{{PLURAL:$1|Πρότυπο που χρησιμοποιείται|Πρότυπα που χρησιμοποιούνται}} σε αυτή την προεπισκόπηση:", "templatesusedsection": "{{PLURAL:$1|Πρότυπο|Πρότυπα}} που χρησιμοποιούνται σε αυτή την ενότητα:", "template-protected": "(προστατευμένη)", "template-semiprotected": "(ημιπροστατευμένη)", @@ -777,7 +777,7 @@ "node-count-exceeded-category": "Σελίδες υπέρβασης του αριθμού κόμβων", "node-count-exceeded-category-desc": "Η σελίδα υπερβαίνει το μέγιστο αριθμό κόμβων.", "node-count-exceeded-warning": "Η σελίδα έχει υπερβεί τον αριθμό κόμβων", - "expansion-depth-exceeded-category": "Σελίδες υπέρβασης της επέκτασης σε βάθος", + "expansion-depth-exceeded-category": "Σελίδες όπου υπερβαίνεται το βάθος ανάπτυξης", "expansion-depth-exceeded-category-desc": "Η σελίδα υπερβαίνει το μέγιστο βάθος επέκτασης.", "expansion-depth-exceeded-warning": "Η σελίδα υπερέβη το βάθος επέκτασης", "parser-unstrip-loop-warning": "εντοπίστηκε ένας βρόχος unstrip", @@ -1068,7 +1068,7 @@ "prefs-help-gender": "Η ρύθμιση αυτή της προτίμησης είναι προαιρετική.\nΤο λογισμικό χρησιμοποιεί την τιμή αυτής της παραμέτρου για να απευθύνεται προς εσάς και για να αναφέρεται σε σας όταν απευθύνεται σε άλλους, χρησιμοποιώντας το κατάλληλο γραμματικό γένος.\nΑυτή η πληροφορία θα είναι δημόσια.", "email": "Ηλεκτρονικό ταχυδρομείο", "prefs-help-realname": "Το πραγματικό όνομα είναι προαιρετικό.\nΕφόσον παρέχεται, μπορεί να χρησιμοποιηθεί για να αναγνωριστεί η δουλειά σας.", - "prefs-help-email": "Το ηλεκτρονικό ταχυδρομείο είναι προαιρετικό, ωστόσο δίνει τη δυνατότητα να σας αποσταλεί ένας νέος κωδικός στην περίπτωση που ξεχάσετε τον κωδικό σας.", + "prefs-help-email": "Η διεύθυνση ηλεκτρονικού ταχυδρομείου είναι προαιρετική, αλλά χρειάζεται για επαναφορές συνθηματικού, αν ξεχάσετε το συνθηματικό σας.", "prefs-help-email-others": "Μπορείτε επίσης να επιλέξετε να αφήσετε τους άλλους να επικοινωνήσουν μαζί σας μέσω της σελίδας χρήστη ή συζήτησης χωρίς να χρειάζεται να αποκαλύψετε την ταυτότητά σας.", "prefs-help-email-required": "Απαιτείται διεύθυνση ηλεκτρονικού ταχυδρομείου.", "prefs-info": "Βασικές πληροφορίες", diff --git a/languages/i18n/en-gb.json b/languages/i18n/en-gb.json index af8eda1f10..f2a51b92b5 100644 --- a/languages/i18n/en-gb.json +++ b/languages/i18n/en-gb.json @@ -31,7 +31,8 @@ "Dr. Shikha Jaggi", "Xð", "Matma Rex", - "Dejavu" + "Dejavu", + "Jdforrester" ] }, "tog-underline": "Link underlining:", @@ -61,7 +62,7 @@ "tog-shownumberswatching": "Show the number of watching users", "tog-oldsig": "Your existing signature:", "tog-fancysig": "Treat signature as wikitext (without an automatic link)", - "tog-uselivepreview": "Use live preview", + "tog-uselivepreview": "Show previews without reloading the page", "tog-forceeditsummary": "Prompt me when entering a blank edit summary", "tog-watchlisthideown": "Hide my edits from the watchlist", "tog-watchlisthidebots": "Hide bot edits from the watchlist", diff --git a/languages/i18n/en.json b/languages/i18n/en.json index 3497d80f97..4b01132e37 100644 --- a/languages/i18n/en.json +++ b/languages/i18n/en.json @@ -1350,6 +1350,7 @@ "recentchanges-legend-unpatrolled": "{{int:recentchanges-label-unpatrolled}}", "recentchanges-legend-plusminus": "(±123)", "recentchanges-submit": "Show", + "rcfilters-tag-remove": "Remove '$1'", "rcfilters-legend-heading": "List of abbreviations:", "rcfilters-other-review-tools": "Other review tools", "rcfilters-group-results-by-page": "Group results by page", @@ -1362,6 +1363,7 @@ "rcfilters-hours-title": "Recent hours", "rcfilters-days-show-days": "$1 {{PLURAL:$1|day|days}}", "rcfilters-days-show-hours": "$1 {{PLURAL:$1|hour|hours}}", + "rcfilters-highlighted-filters-list": "Highlighted: $1", "rcfilters-quickfilters": "Saved filters", "rcfilters-quickfilters-placeholder-title": "No links 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.", @@ -1384,7 +1386,7 @@ "rcfilters-empty-filter": "No active filters. All contributions are shown.", "rcfilters-filterlist-title": "Filters", "rcfilters-filterlist-whatsthis": "How do these work?", - "rcfilters-filterlist-feedbacklink": "Provide feedback on the new (beta) filters", + "rcfilters-filterlist-feedbacklink": "Tell us what you think about these (new) filtering tools", "rcfilters-highlightbutton-title": "Highlight results", "rcfilters-highlightmenu-title": "Select a color", "rcfilters-highlightmenu-help": "Select a color to highlight this property", @@ -1430,6 +1432,11 @@ "rcfilters-filter-watchlist-watchednew-description": "Changes to Watchlisted pages you haven't visited since the changes occurred.", "rcfilters-filter-watchlist-notwatched-label": "Not on Watchlist", "rcfilters-filter-watchlist-notwatched-description": "Everything except changes to your Watchlisted pages.", + "rcfilters-filtergroup-watchlistactivity": "Watchlist activity", + "rcfilters-filter-watchlistactivity-unseen-label": "Unseen changes", + "rcfilters-filter-watchlistactivity-unseen-description": "Changes to pages you haven't visited since the changes occurred.", + "rcfilters-filter-watchlistactivity-seen-label": "Seen changes", + "rcfilters-filter-watchlistactivity-seen-description": "Changes to pages you have visited since the changes occurred.", "rcfilters-filtergroup-changetype": "Type of change", "rcfilters-filter-pageedits-label": "Page edits", "rcfilters-filter-pageedits-description": "Edits to wiki content, discussions, category descriptions…", @@ -1461,6 +1468,9 @@ "rcfilters-liveupdates-button": "Live updates", "rcfilters-liveupdates-button-title-on": "Turn off live updates", "rcfilters-liveupdates-button-title-off": "Display new changes as they happen", + "rcfilters-watchlist-markseen-button": "Mark all changes as seen", + "rcfilters-watchlist-edit-watchlist-button": "Edit your list of watched pages", + "rcfilters-watchlist-showupdated": "Changes to pages you haven't visited since the changes occurred are in bold, with solid markers.", "rcnotefrom": "Below {{PLURAL:$5|is the change|are the changes}} since $3, $4 (up to $1 shown).", "rclistfromreset": "Reset date selection", "rclistfrom": "Show new changes starting from $2, $3", @@ -2210,7 +2220,7 @@ "unwatchthispage": "Stop watching", "notanarticle": "Not a content page", "notvisiblerev": "The last revision by a different user has been deleted", - "watchlist-details": "{{PLURAL:$1|$1 page|$1 pages}} on your watchlist, not separately counting talk pages.", + "watchlist-details": "{{PLURAL:$1|$1 page is|$1 pages are}} on your Watchlist (plus talk pages).", "wlheader-enotif": "Email notification is enabled.", "wlheader-showupdated": "Pages that have been changed since you last visited them are shown in bold.", "wlnote": "Below {{PLURAL:$1|is the last change|are the last $1 changes}} in the last {{PLURAL:$2|hour|$2 hours}}, as of $3, $4.", @@ -2449,7 +2459,9 @@ "sp-contributions-explain": "", "sp-contributions-footer": "-", "sp-contributions-footer-anon": "-", + "sp-contributions-footer-anon-range": "-", "sp-contributions-footer-newbies": "-", + "sp-contributions-outofrange": "Unable to show any results. The requested IP range is larger than the CIDR limit of /$1.", "whatlinkshere": "What links here", "whatlinkshere-title": "Pages that link to \"$1\"", "whatlinkshere-summary": "", @@ -4361,7 +4373,7 @@ "undelete-cantedit": "You cannot undelete this page as you are not allowed to edit this page.", "undelete-cantcreate": "You cannot undelete this page as there is no existing page with this name and you are not allowed to create this page.", "pagedata-title": "Page data", - "pagedata-text": "This page provides a data interface to pages. Please provide the page title in the URL, using subpage syntax.\n* Content negotiation applies based on you client's Accept header. This means that the page data will be provided in the format preferred by your client.", + "pagedata-text": "This page provides a data interface to pages. Please provide the page title in the URL, using subpage syntax.\n* Content negotiation applies based on your client's Accept header. This means that the page data will be provided in the format preferred by your client.", "pagedata-not-acceptable": "No matching format found. Supported MIME types: $1", "pagedata-bad-title": "Invalid title: $1." } diff --git a/languages/i18n/eo.json b/languages/i18n/eo.json index 87a00be079..092d1ecea6 100644 --- a/languages/i18n/eo.json +++ b/languages/i18n/eo.json @@ -1317,17 +1317,16 @@ "rcfilters-empty-filter": "Ekzistas neniuj aktivaj filtriloj. Ĉiuj kontribuaĵoj estas montritaj.", "rcfilters-filterlist-title": "Filtriloj", "rcfilters-filterlist-noresults": "Neniuj filtriloj troviĝis", - "rcfilters-filtergroup-registration": "Registrado de uzanto", - "rcfilters-filter-registered-label": "Registrita", - "rcfilters-filter-registered-description": "Ensalutitaj redaktantoj.", - "rcfilters-filter-unregistered-label": "Neregistrita", - "rcfilters-filter-unregistered-description": "Redaktantoj kiuj ne estas ensalutita.", "rcfilters-filtergroup-authorship": "Redakta aŭtoreco", "rcfilters-filter-editsbyself-label": "Viaj redaktoj", "rcfilters-filter-editsbyself-description": "Viaj redaktoj.", "rcfilters-filter-editsbyother-label": "Redaktoj de aliuloj", "rcfilters-filter-editsbyother-description": "Redaktoj kreitaj far aliaj uzantoj (krom vi).", "rcfilters-filtergroup-userExpLevel": "Spertonivelo (nur por registritaj uzantoj)", + "rcfilters-filter-user-experience-level-registered-label": "Registrita", + "rcfilters-filter-user-experience-level-registered-description": "Ensalutitaj redaktantoj.", + "rcfilters-filter-user-experience-level-unregistered-label": "Neregistrita", + "rcfilters-filter-user-experience-level-unregistered-description": "Redaktantoj kiuj ne estas ensalutita.", "rcfilters-filter-user-experience-level-newcomer-label": "Novuloj", "rcfilters-filter-user-experience-level-newcomer-description": "Malpli ol 10 redaktoj kaj 4 tagoj de aktiveco.", "rcfilters-filter-user-experience-level-learner-label": "Lernantoj", @@ -3348,7 +3347,6 @@ "fileduplicatesearch-noresults": "Neniu dosiero nomita \"$1\" troviĝis.", "specialpages": "Specialaj paĝoj", "specialpages-note-top": "Klarigo", - "specialpages-note": "* Normaj specialaj paĝoj.\n* Limigitaj specialaj paĝoj.", "specialpages-group-maintenance": "Raportoj pri prizorgado", "specialpages-group-other": "Aliaj specialaj paĝoj", "specialpages-group-login": "Ensaluti / registriĝi", @@ -3467,6 +3465,7 @@ "compare-invalid-title": "La titolo kiun vi enmetis estas malvalida.", "compare-title-not-exists": "La titolo kiun vi specifis ne ekzistas.", "compare-revision-not-exists": "La revizio kiun vi specifis ne ekzistas.", + "diff-form": "Malsamoj", "dberr-problems": "Bedaŭrinde, ĉi tiu retejo suferas pro teknikaj problemoj.", "dberr-again": "Bonvolu atendi kelkajn minutojn kaj reŝargi.", "dberr-info": "(Ne eblas konekti la datumbazon: $1)", diff --git a/languages/i18n/es.json b/languages/i18n/es.json index 03b3c64b9a..c510099739 100644 --- a/languages/i18n/es.json +++ b/languages/i18n/es.json @@ -199,6 +199,7 @@ "tog-watchlisthideminor": "Ocultar las ediciones menores de la lista de seguimiento", "tog-watchlisthideliu": "Ocultar las ediciones de los usuarios registrados de la lista de seguimiento", "tog-watchlistreloadautomatically": "Recargar la lista de seguimiento automáticamente cuando se modifica un filtro (requiere JavaScript)", + "tog-watchlistunwatchlinks": "Añadir enlaces directos para seguir o dejar de seguir las entradas de la lista de seguimiento (se requiere JavaScript para utilizar esta funcionalidad)", "tog-watchlisthideanons": "Ocultar las ediciones de los usuarios anónimos de la lista de seguimiento", "tog-watchlisthidepatrolled": "Ocultar las ediciones verificadas de la lista de seguimiento", "tog-watchlisthidecategorization": "Ocultar la categorización de páginas", @@ -421,13 +422,13 @@ "thisisdeleted": "¿Ver o restaurar $1?", "viewdeleted": "¿Quieres ver $1?", "restorelink": "{{PLURAL:$1|una edición borrada|$1 ediciones borradas}}", - "feedlinks": "Canal:", + "feedlinks": "Suministro:", "feed-invalid": "El tipo de canal de suscripción no es correcto.", "feed-unavailable": "Los canales de sindicación no están disponibles", - "site-rss-feed": "Canal RSS de $1", - "site-atom-feed": "Canal Atom de $1", - "page-rss-feed": "Canal RSS «$1»", - "page-atom-feed": "Canal Atom de «$1»", + "site-rss-feed": "Suministro RSS de $1", + "site-atom-feed": "Suministro Atom de $1", + "page-rss-feed": "Suministro RSS de «$1»", + "page-atom-feed": "Suministro Atom de «$1»", "feed-atom": "Atom", "red-link-title": "$1 (la página no existe)", "sort-descending": "Orden descendente", @@ -763,7 +764,7 @@ "preview": "Previsualizar", "showpreview": "Mostrar previsualización", "showdiff": "Mostrar los cambios", - "blankarticle": "Aviso: estás a punto de crear una página vacía.\nSi haces clic en «$1» de nuevo, se creará la página sin ningún contenido.", + "blankarticle": "Atención: estás a punto de crear una página vacía.\nSi pulsas en «$1» de nuevo, se creará la página sin ningún contenido.", "anoneditwarning": "Advertencia: no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición en estas condiciones. Si [$1 inicias sesión] o [$2 creas una cuenta], tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.", "anonpreviewwarning": "No has iniciado sesión. Al guardar los cambios se almacenará tu dirección IP en el historial de edición de esta página.", "missingsummary": "Atención: no has escrito un resumen de edición.\nSi haces clic de nuevo en «$1» tu edición se grabará sin él.", @@ -849,8 +850,8 @@ "permissionserrorstext-withaction": "No tienes permiso para $2, por {{PLURAL:$1|el siguiente motivo|los siguientes motivos}}:", "contentmodelediterror": "No puedes editar esta revisión porque su modelo de contenido es $1, que difiere del modelo actual de contenido de la página $2.", "recreate-moveddeleted-warn": "Atención: estás volviendo a crear una página que ha sido borrada anteriormente.\n\nPiensa si es adecuado continuar editando la página.\nA continuación, se proporciona el registro de borrado y traslados de esta página para más información:", - "moveddeleted-notice": "Esta página ha sido borrada.\nA continuación, se proporciona el registro de borrados y traslados de la página para más información.", - "moveddeleted-notice-recent": "Esta página se ha eliminado recientemente (durante las últimas 24 horas).\nEl registro de eliminación y traslado de la página se muestran a continuación como referencia.", + "moveddeleted-notice": "Esta página ha sido borrada.\nA continuación, se muestra el registro de eliminaciones, protecciones y traslados de la página a modo de referencia.", + "moveddeleted-notice-recent": "Esta página se ha eliminado recientemente (durante las últimas 24 horas).\nA continuación, se muestra el registro de eliminaciones, protecciones y traslados de la página a modo de referencia.", "log-fulllog": "Ver el registro completo", "edit-hook-aborted": "Una extensión ha evitado la edición.\nNo hay explicación disponible.", "edit-gone-missing": "No se ha podido actualizar la página.\nParece haber sido borrada.", @@ -1433,10 +1434,11 @@ "recentchanges-legend-heading": "Leyenda:", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (véase también la [[Special:NewPages|lista de páginas nuevas]])", "recentchanges-submit": "Mostrar", + "rcfilters-tag-remove": "Quitar «$1»", "rcfilters-legend-heading": "Lista de abreviaturas:", "rcfilters-other-review-tools": "Otras herramientas de revisión", "rcfilters-group-results-by-page": "Agrupar resultados por página", - "rcfilters-grouping-title": "Agrupando", + "rcfilters-grouping-title": "Agrupación", "rcfilters-activefilters": "Filtros activos", "rcfilters-advancedfilters": "Filtros avanzados", "rcfilters-limit-title": "Cambios para mostrar", @@ -1445,6 +1447,7 @@ "rcfilters-hours-title": "Horas recientes", "rcfilters-days-show-days": "$1 {{PLURAL:$1|día|días}}", "rcfilters-days-show-hours": "$1 {{PLURAL:$1|hora|horas}}", + "rcfilters-highlighted-filters-list": "Destacados: $1", "rcfilters-quickfilters": "Filtros guardados", "rcfilters-quickfilters-placeholder-title": "Ningún enlace guardado aún", "rcfilters-quickfilters-placeholder-description": "Para guardar tus ajustes de filtro y reutilizarlos más tarde, pulsa en el icono del marcador en el área de Filtro activo que se encuentra a continuación.", @@ -1462,20 +1465,19 @@ "rcfilters-restore-default-filters": "Restaurar filtros predeterminados", "rcfilters-clear-all-filters": "Borrar todos los filtros", "rcfilters-show-new-changes": "Ver cambios más recientes", - "rcfilters-previous-changes-label": "Cambios previamente vistos", "rcfilters-search-placeholder": "Filtrar cambios recientes (navega o empieza a escribir)", "rcfilters-invalid-filter": "Filtro no válido", "rcfilters-empty-filter": "No hay filtros activos. Se muestran todas las contribuciones.", "rcfilters-filterlist-title": "Filtros", "rcfilters-filterlist-whatsthis": "¿Cómo funcionan?", - "rcfilters-filterlist-feedbacklink": "Comparte tus comentarios sobre los filtros (beta) nuevos", + "rcfilters-filterlist-feedbacklink": "Comparte tus comentarios sobre estas (nuevas) herramientas de filtrado", "rcfilters-highlightbutton-title": "Resaltar los resultados", "rcfilters-highlightmenu-title": "Selecciona un color", "rcfilters-highlightmenu-help": "Selecciona un color para resaltar esta propiedad", "rcfilters-filterlist-noresults": "No se encontraron filtros", "rcfilters-noresults-conflict": "No se encontraron resultados porque los criterios de búsqueda están en conflicto.", "rcfilters-state-message-subset": "Este filtro no tiene ningún efecto debido a que sus resultados se incluyen con los de los siguientes: {{PLURAL:$2|filtro|filtros}} (intente destacarlo para distinguirlo): $1", - "rcfilters-state-message-fullcoverage": "Seleccionar todos los filtros de un grupo es lo mismo que seleccionar ninguno, por lo que este filtro no tiene efecto. El grupo incluye: $1", + "rcfilters-state-message-fullcoverage": "Seleccionar todos los filtros de este grupo es lo mismo que no seleccionar ninguno, por lo que este filtro no tiene efecto. El grupo incluye $1", "rcfilters-filtergroup-authorship": "Autoría de la contribución", "rcfilters-filter-editsbyself-label": "Cambios tuyos", "rcfilters-filter-editsbyself-description": "Tus propias contribuciones", @@ -1514,6 +1516,9 @@ "rcfilters-filter-watchlist-watchednew-description": "Cambios en las páginas de tu lista de seguimiento que no has visitado desde que se produjeron los cambios.", "rcfilters-filter-watchlist-notwatched-label": "No en mi lista de seguimiento", "rcfilters-filter-watchlist-notwatched-description": "Todos, excepto los cambios en las páginas de tu lista de seguimiento.", + "rcfilters-filtergroup-watchlistactivity": "Actividad de la lista de seguimiento", + "rcfilters-filter-watchlistactivity-unseen-label": "Cambios no vistos", + "rcfilters-filter-watchlistactivity-seen-label": "Cambios vistos", "rcfilters-filtergroup-changetype": "Tipo de cambio", "rcfilters-filter-pageedits-label": "Ediciones de páginas", "rcfilters-filter-pageedits-description": "Modificaciones del contenido wiki, discusiones, descripción de categorías...", @@ -1543,6 +1548,8 @@ "rcfilters-liveupdates-button": "Actualizaciones en directo", "rcfilters-liveupdates-button-title-on": "Apagar actualizaciones en directo", "rcfilters-liveupdates-button-title-off": "Mostar los cambios en tiempo real", + "rcfilters-watchlist-markseen-button": "Marcar todos los cambios como vistos", + "rcfilters-watchlist-showupdated": "Los cambios hechos a páginas que no has visitado desde que se efectuaron aparecen en negrita, acompañados de marcadores sólidos.", "rcnotefrom": "Debajo {{PLURAL:$5|aparece el cambio|aparecen los cambios}} desde $3, $4 (se muestran hasta $1).", "rclistfromreset": "Restablecer selección de fecha", "rclistfrom": "Mostrar cambios nuevos desde las $2 del $3", @@ -1987,9 +1994,9 @@ "deadendpages": "Páginas sin salida", "deadendpagestext": "Las siguientes páginas no enlazan a otras páginas de {{SITENAME}}.", "protectedpages": "Páginas protegidas", - "protectedpages-indef": "Sólo protecciones indefinidas", + "protectedpages-indef": "Solo protecciones indefinidas", "protectedpages-summary": "Esta página enumera las páginas existentes que actualmente están protegidas. Para obtener una lista de títulos que están protegidos desde su creación, véase [[{{#special:ProtectedTitles}}|{{int:protectedtitles}}]].", - "protectedpages-cascade": "Sólo protecciones en cascada", + "protectedpages-cascade": "Solo protecciones en cascada", "protectedpages-noredirect": "Ocultar redirecciones", "protectedpagesempty": "Actualmente no hay ninguna página protegida con esos parámetros.", "protectedpages-timestamp": "Fecha y hora", @@ -2226,7 +2233,7 @@ "unwatchthispage": "Dejar de vigilar", "notanarticle": "No es una página de contenido", "notvisiblerev": "La última revisión de un usuario diferente ha sido borrada", - "watchlist-details": "{{PLURAL:$1|$1 página|$1 páginas}} en tu lista de seguimiento, sin contar las de discusión.", + "watchlist-details": "Hay {{PLURAL:$1|$1 página|$1 páginas}} en tu lista de seguimiento (más las páginas de discusión).", "wlheader-enotif": "La notificación por correo está activada.", "wlheader-showupdated": "Las páginas modificadas desde tu última visita aparecen en negrita.", "wlnote": "A continuación {{PLURAL:$1|se muestra el último cambio|se muestran los últimos $1 cambios}} en {{PLURAL:$2|la última hora|las últimas $2 horas}} a fecha de $4 $3.", @@ -2289,8 +2296,8 @@ "delete-toobig": "Esta página tiene un historial muy grande, con más de $1 {{PLURAL:$1|revisión|revisiones}}. Borrar este tipo de páginas ha sido restringido para prevenir posibles problemas en {{SITENAME}}.", "delete-warning-toobig": "Esta página tiene un historial de más de $1 {{PLURAL:$1|revisión|revisiones}}.\nEliminarla puede perturbar las operaciones de la base de datos de {{SITENAME}}.\nProcede con cautela.", "deleteprotected": "No puedes eliminar esta página porque ha sido protegida.", - "deleting-backlinks-warning": "Advertencia: [[Special:WhatLinksHere/{{FULLPAGENAME}}|otras páginas]] enlazan o transcluyen la página que estás a punto de eliminar.", - "deleting-subpages-warning": "Advertencia: La página que estás a punto de borrar tiene [[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|una subpágina|$1 subpáginas|51=más de 50 subpáginas}}]].", + "deleting-backlinks-warning": "Atención: [[Special:WhatLinksHere/{{FULLPAGENAME}}|otras páginas]] enlazan o transcluyen la página que estás a punto de borrar.", + "deleting-subpages-warning": "Atención: la página que estás a punto de borrar tiene [[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|una subpágina|$1 subpáginas|51=más de 50 subpáginas}}]].", "rollback": "Revertir ediciones", "rollbacklink": "revertir", "rollbacklinkcount": "revertir $1 {{PLURAL:$1|edición|ediciones}}", @@ -2315,7 +2322,7 @@ "changecontentmodel-submit": "Cambiar", "changecontentmodel-success-title": "Se cambió el modelo de contenido", "changecontentmodel-success-text": "Se ha cambiado el tipo de contenido de [[:$1]].", - "changecontentmodel-cannot-convert": "El contenido de [[:$1]] no se puede convertir a un tipo de $2.", + "changecontentmodel-cannot-convert": "No se puede convertir el contenido de [[:$1]] en un tipo de $2.", "changecontentmodel-nodirectediting": "El modelo de contenido $1 no admite la edición directa", "changecontentmodel-emptymodels-title": "No hay modelos de contenido disponibles", "changecontentmodel-emptymodels-text": "El contenido de [[:$1]] no se puede convertir a ningún tipo.", @@ -2540,7 +2547,7 @@ "ipblocklist-otherblocks": "{{PLURAL:$1|Otro bloqueo|Otros bloqueos}}", "infiniteblock": "infinito", "expiringblock": "expira el $1 a las $2", - "anononlyblock": "sólo anón.", + "anononlyblock": "solo anón.", "noautoblockblock": "bloqueo automático desactivado", "createaccountblock": "creación de cuenta bloqueada", "emailblock": "correo electrónico bloqueado", @@ -3189,7 +3196,7 @@ "exif-organisationinimage": "Organización representada", "exif-personinimage": "Persona representada", "exif-originalimageheight": "Altura de la imagen antes de que fuera recortada", - "exif-originalimagewidth": "Ancho de la imagen antes de que fuera recortada", + "exif-originalimagewidth": "Anchura de la imagen antes de que fuera recortada", "exif-compression-1": "Sin comprimir", "exif-compression-2": "CCITT Group 3 1-Dimensional Modified Huffman run length encoding", "exif-compression-3": "Codificación de fax CCITT grupo 3", @@ -3499,7 +3506,7 @@ "version-entrypoints-header-entrypoint": "Punto de entrada", "version-entrypoints-header-url": "URL", "version-entrypoints-articlepath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgArticlePath Ruta del artículo]", - "version-entrypoints-scriptpath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgScriptPath Ruta de la secuencia de comandos (script)]", + "version-entrypoints-scriptpath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgScriptPath Ruta de la secuencia de órdenes]", "version-libraries": "Bibliotecas instaladas", "version-libraries-library": "Biblioteca", "version-libraries-version": "Versión", @@ -3646,7 +3653,8 @@ "compare-invalid-title": "El título especificado es inválido.", "compare-title-not-exists": "El título especificado no existe.", "compare-revision-not-exists": "La revisión especificada no existe.", - "diff-form": "un '''formulario'''", + "diff-form": "Diferencias", + "permanentlink": "Enlace permanente", "dberr-problems": "Lo sentimos. Este sitio está experimentando dificultades técnicas.", "dberr-again": "Prueba a recargar dentro de unos minutos.", "dberr-info": "(No se puede acceder a la base de datos: $1)", @@ -3912,7 +3920,7 @@ "mw-widgets-titleinput-description-new-page": "la página aún no existe", "mw-widgets-titleinput-description-redirect": "redirigir a $1", "mw-widgets-categoryselector-add-category-placeholder": "Agregar una categoría...", - "mw-widgets-usersmultiselect-placeholder": "Agregar más...", + "mw-widgets-usersmultiselect-placeholder": "Añadir más…", "date-range-from": "Desde la fecha:", "date-range-to": "Hasta la fecha:", "sessionmanager-tie": "No se pueden combinar múltiples tipos de autenticación de solicitudes: $1.", diff --git a/languages/i18n/et.json b/languages/i18n/et.json index 07e100c5ac..2ccddbf5fb 100644 --- a/languages/i18n/et.json +++ b/languages/i18n/et.json @@ -523,9 +523,34 @@ "changepassword-throttled": "Oled hiljuti proovinud liiga palju kordi sisse logida.\nPalun oota $1, enne kui uuesti proovid.", "botpasswords": "Robotiparoolid", "botpasswords-summary": "Robotiparoolid võimaldavad API-põhist juurdepääsu kasutajakontole, ilma kasutamata konto peamisi autentimisandmeid. Kui konto on sisse logitud robotiparooliga, võivad saadaolevad kasutajaõigused olla piiratud.\n\nKui sa ei tea, miks sul on vaja robotiparooli, siis on parem seda mitte kasutada. Mitte keegi ei peaks paluma sul robotiparooli genereerida ja seda talle edasi anda.", + "botpasswords-disabled": "Robotiparoolid on keelatud.", + "botpasswords-no-central-id": "Et robotiparoole kasutada, pead olema ühendkontoga sisse logitud.", + "botpasswords-existing": "Olemasolevad robotiparoolid", "botpasswords-createnew": "Uue robotiparooli loomine", - "botpasswords-label-appid": "Roboti nimi:", + "botpasswords-editexisting": "Olemasoleva robotiparooli muutmine", + "botpasswords-label-appid": "Robotinimi:", "botpasswords-label-create": "Loo", + "botpasswords-label-update": "Uuenda", + "botpasswords-label-cancel": "Loobu", + "botpasswords-label-delete": "Kustuta", + "botpasswords-label-resetpassword": "Lähtesta parool", + "botpasswords-label-grants": "Rakendatavad volitused:", + "botpasswords-help-grants": "Volitused võimaldavad juurdepääsu õigustele, mis su kontol juba on. Siin volituse lubamine ei võimalda juurdepääsu õigustele, mida su kontol muidu pole. Lisateavet leiad [[Special:ListGrants|volituste loetelust]].", + "botpasswords-label-grants-column": "Volitatud", + "botpasswords-bad-appid": "Robotinimi \"$1\" ei sobi.", + "botpasswords-insert-failed": "Ei õnnestunud lisada robotinime \"$1\". Kas see on juba lisatud?", + "botpasswords-update-failed": "Ei õnnestunud uuendada robotinime \"$1\". Kas see on kustutatud?", + "botpasswords-created-title": "Robotiparool loodud", + "botpasswords-created-body": "Robotiparool kasutaja \"$2\" robotinimele \"$1\" on loodud.", + "botpasswords-updated-title": "Robotiparool uuendatud", + "botpasswords-updated-body": "Robotiparool kasutaja \"$2\" robotinimele \"$1\" on uuendatud.", + "botpasswords-deleted-title": "Robotiparool kustutatud", + "botpasswords-deleted-body": "Robotiparool kasutaja \"$2\" robotinimele \"$1\" on kustutatud.", + "botpasswords-newpassword": "Uus parool, millega kontole $1 sisse logida, on $2. Palun kirjuta see edaspidiseks üles.
(Mõni vana robot nõuab, et sisselogimisnimi langeb kokku edaspidise kasutajanimega. Sellisel juhul saad kasutada nime $3 ja parooli $4.)", + "botpasswords-no-provider": "BotPasswordsSessionProvider pole saadaval.", + "botpasswords-restriction-failed": "Robotiparooli piirangud takistavad sisselogimist.", + "botpasswords-invalid-name": "Määratud kasutajanimi ei sisalda robotiparooli eraldajat (\"$1\").", + "botpasswords-not-exist": "Kasutaja \"$1\" robotinimele \"$2\" vastav robotiparool puudub.", "resetpass_forbidden": "Paroole ei saa muuta", "resetpass_forbidden-reason": "Paroole ei saa muuta: $1", "resetpass-no-info": "Pead olema sisselogitud, et sellele lehele pääseda.", @@ -553,6 +578,8 @@ "passwordreset-emailelement": "Kasutajanimi: \n$1\n\nAjutine parool: \n$2", "passwordreset-emailsentemail": "Kui oled sidunud konto selle e-posti aadressiga, siis saadetakse sulle parooli lähtestamise e-kiri.", "passwordreset-emailsentusername": "Parooli lähtestamise e-kiri saadetakse, kui olemas on kontoga seotud e-posti aadress.", + "passwordreset-nocaller": "Kutse saatja peab olema ära toodud", + "passwordreset-nosuchcaller": "Kutse saatjat pole olemas: $1", "passwordreset-ignored": "Parooli lähtestamine jäi rahuldamata. Võimalik, et ühtegi pakkujat polnud häälestatud.", "passwordreset-invalidemail": "Vigane e-posti aadress", "passwordreset-nodata": "Ära toomata jäid nii kasutajanimi kui ka e-posti aadress", @@ -1273,6 +1300,7 @@ "recentchanges-legend-heading": "Seletus:", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (vaata ka [[Special:NewPages|uute lehekülgede loendit]])", "recentchanges-submit": "Näita", + "rcfilters-tag-remove": "Eemalda \"$1\"", "rcfilters-legend-heading": "Lühendite loetelu:", "rcfilters-other-review-tools": "Muud ülevaatusriistad", "rcfilters-group-results-by-page": "Rühmita tulemused lehekülje kaupa", @@ -1280,11 +1308,12 @@ "rcfilters-activefilters": "Aktiivsed filtrid", "rcfilters-advancedfilters": "Täpsemad filtrid", "rcfilters-limit-title": "Näita nii mitut muudatust", - "rcfilters-limit-shownum": "Näita viimast $1 muudatust", + "rcfilters-limit-shownum": "Näita viimast {{PLURAL:$1|muudatust|$1 muudatust}}", "rcfilters-days-title": "Viimased päevad", "rcfilters-hours-title": "Viimased tunnid", "rcfilters-days-show-days": "$1 {{PLURAL:$1|päev|päeva}}", "rcfilters-days-show-hours": "$1 {{PLURAL:$1|tund|tundi}}", + "rcfilters-highlighted-filters-list": "Esile tõstetud: $1", "rcfilters-quickfilters": "Salvestatud filtrid", "rcfilters-quickfilters-placeholder-title": "Linke pole veel salvestatud", "rcfilters-quickfilters-placeholder-description": "Et filtri sätted salvestada ja et neid hiljem uuesti kasutada, klõpsa alloleva aktiivsete filtrite loendi juures järjehoidjaikooni.", @@ -1314,7 +1343,7 @@ "rcfilters-filterlist-noresults": "Ei leitud ühtegi filtrit.", "rcfilters-noresults-conflict": "Tulemusi ei leitud, sest otsikriteeriumid on konfliktsed.", "rcfilters-state-message-subset": "See filter ei tee midagi, sest selle tulemused on kaasatud {{PLURAL:$2|järgmise laiema filtri|järgmiste laiemate filtrite}} tulemustes (tulemuste eristamiseks proovi esiletõstu): $1", - "rcfilters-state-message-fullcoverage": "Ühe rühma kõigi filtrite valimine on samaväärne mitte ühegi filtri valimisega, mistõttu ei tee see filter midagi. Rühmas on: $1", + "rcfilters-state-message-fullcoverage": "Selle rühma kõigi filtrite valimine on samaväärne mitte ühegi filtri valimisega, mistõttu ei tee see filter midagi. Rühmas on: $1", "rcfilters-filtergroup-authorship": "Kaastöö autorsus", "rcfilters-filter-editsbyself-label": "Enda muudatused", "rcfilters-filter-editsbyself-description": "Sinu enda muudatused.", @@ -1353,6 +1382,11 @@ "rcfilters-filter-watchlist-watchednew-description": "Muudatused jälgimisloendi lehekülgedel, mida sa pole pärast muudatuse tegemist külastanud.", "rcfilters-filter-watchlist-notwatched-label": "Pole jälgimisloendis", "rcfilters-filter-watchlist-notwatched-description": "Kõik muu peale sinu jälgimisloendi lehekülgedel tehtud muudatuste.", + "rcfilters-filtergroup-watchlistactivity": "Jälgimisloendi tegevused", + "rcfilters-filter-watchlistactivity-unseen-label": "Nägemata muudatused", + "rcfilters-filter-watchlistactivity-unseen-description": "Muudatused lehekülgedel, mida sa pole pärast muudatuste tegemist külastanud.", + "rcfilters-filter-watchlistactivity-seen-label": "Nähtud muudatused", + "rcfilters-filter-watchlistactivity-seen-description": "Muudatused lehekülgedel, mida oled pärast muudatuste tegemist külastanud.", "rcfilters-filtergroup-changetype": "Muudatuse tüüp", "rcfilters-filter-pageedits-label": "Lehekülgede muutmine", "rcfilters-filter-pageedits-description": "Näiteks viki sisu, arutelude ja kategooriate kirjelduste muutmine.", @@ -1382,6 +1416,7 @@ "rcfilters-liveupdates-button": "Uuendused reaalajas", "rcfilters-liveupdates-button-title-on": "Lülita reaalajas uuendamine välja", "rcfilters-liveupdates-button-title-off": "Näita uusi muudatusi kohe nende tegemise järel", + "rcfilters-watchlist-markseen-button": "Märgi kõik muudatused nähtuks", "rcnotefrom": "Allpool on toodud {{PLURAL:$5|muudatus|muudatused}} alates: $3, kell $4 (näidatakse kuni $1 muudatust)", "rclistfromreset": "Lähtesta kuupäeva valik", "rclistfrom": "Näita muudatusi alates: $3, kell $2", @@ -3848,6 +3883,13 @@ "removecredentials-success": "Sinu autentimisandmed on eemaldatud.", "credentialsform-provider": "Andmete tüüp:", "credentialsform-account": "Konto nimi:", + "cannotlink-no-provider-title": "Lingitavad kontod puuduvad", + "cannotlink-no-provider": "Lingitavad kontod puuduvad.", + "linkaccounts": "Kontode linkimine", + "linkaccounts-success-text": "Konto on lingitud.", + "linkaccounts-submit": "Lingi kontod", + "unlinkaccounts": "Tühista kontode linkimine", + "unlinkaccounts-success": "Kontode linkimine on tühistatud.", "authenticationdatachange-ignored": "Autentimisandmete muutmine jäi rahuldamata. Võimalik, et ühtegi pakkujat polnud häälestatud.", "userjsispublic": "Pea silmas, et JavaScripti alamleheküljed ei tohiks sisaldada konfidentsiaalseid andmeid, kuna neid näevad teised kasutajad.", "usercssispublic": "Palun pane tähele: CSS-alamleheküljel ei peaks olema konfidentsiaalseid andmeid, kuna teised kasutajad näevad seda.", @@ -3856,9 +3898,14 @@ "restrictionsfield-help": "Üks IP-aadress või CIDR-vahemik rea kohta. Et lubada kõik, kasuta järgmist süntaksit:
0.0.0.0/0\n::/0
", "revid": "redaktsioon $1", "pageid": "lehekülje identifikaator $1", + "rawhtml-notallowed": "<html>-silte ei saa kasutada mujal kui harilikel lehekülgedel.", + "gotointerwiki": "Lahkud {{GRAMMAR:elative|{{SITENAME}}}}", + "gotointerwiki-invalid": "Määratud pealkiri on vigane.", + "gotointerwiki-external": "Lahkud {{GRAMMAR:elative|{{SITENAME}}}}, et minna asukohta [[$2]], mis on eraldi veebisait.\n\n'''[$1 Mine edasi aadressile $1]'''", "undelete-cantedit": "Sa ei saa seda lehekülge taastada, sest sul pole lubatud seda lehekülge redigeerida.", "undelete-cantcreate": "Sa ei saa seda lehekülge taastada, sest sellise pealkirjaga lehekülg puudub ja sul pole lubatud seda lehekülge alustada.", "pagedata-title": "Lehekülje andmed", + "pagedata-text": "See lehekülg varustab leheküljed andmeliidesega. Palun too internetiaadressis ära lehekülje pealkiri, kasutades alamlehekülje süntaksit.\n* Sisu kooskõlastatakse vastavalt sinu kliendi Accept-päisele. See tähendab seda, et andmeid pakutakse vormingus, mida sinu klient eelistab.", "pagedata-not-acceptable": "Vastavat vormingut ei leitud. Toetatud MIME tüübid: $1", "pagedata-bad-title": "Vigane pealkiri: $1." } diff --git a/languages/i18n/eu.json b/languages/i18n/eu.json index 86c5767d11..a1bb68bab8 100644 --- a/languages/i18n/eu.json +++ b/languages/i18n/eu.json @@ -350,6 +350,7 @@ "title-invalid-interwiki": "Eskatutako orriaren tituluak bertan erabili ezin den interwiki linka darama.", "title-invalid-talk-namespace": "Eskatutako orriaren izenburuak agian existitzen ez den eztabaida-orri bati egiten dio erreferentzia.", "title-invalid-characters": "Eskatutako orriaren izenburuak baliagarri ez diren karaktereak ditu: \"$1\".", + "title-invalid-leading-colon": "Eskatutako orriaren izenburua puntuazio baliogabea dauka hasieran.", "perfcached": "Hurrengo datuak katxean gordeta daude eta litekeena da guztiz eguneratuta ez egotea. Gehienez {{PLURAL:$1|emaitza 1 dago|$1 emaitza daude}} eskuragarri katxean.", "perfcachedts": "Hurrengo datuak katxean daude, $1 eguneratu zen azkenekoz. {{PLURAL:$4|emaitza 1 dago|$4 emaitza daude}} eskuragarri katxean.", "querypage-no-updates": "Orrialde honen berritzeak ez dira baimentzen. Hemen dagoen data ez da zuzenean berrituko.", @@ -487,6 +488,7 @@ "createaccount-text": "Norbaitek zure e-postarekin kontu bat sortu du {{SITENAME}}(e)n ($4) \"$2\" izenarekin eta \"$3\" pasahitzarekin.\nOrain bertan sar zaitezke eta zure pasahitza aldatu.\n\nKontu honen sorrera akats bat dela uste baduzu mezu honi ez diozu zertan jaramonik egin.", "login-throttled": "Saioa hasteko saiakera gehiegi egin berri dituzu.\nBerriro saiatu aurretik $1 itxoin, mesedez.", "login-abort-generic": "Zure sarrerak akatsa izan du - Abortatua", + "login-migrated-generic": "Zure kontua migratu da, eta zure erabiltzaile-izena ez dago jadanik wiki honetan.", "loginlanguagelabel": "Hizkuntza: $1", "suspicious-userlogout": "Saioa amaitzeko egin duzun eskaria ukatu da. Izan ere, ematen du eskari hori gaizki dabilen nabigatzaile edo cache proxy batek bidali duela.", "createacct-another-realname-tip": "Benetako izena hautazkoa da.\nEmatea erabakitzen baduzu hori erabiliko da lanaren atribuzioa egiterako garaian.", @@ -659,6 +661,7 @@ "yourdiff": "Ezberdintasunak", "copyrightwarning": "Kontuan izan ezazu {{SITENAME}} webgunean egindako ekarpen guztiak $2 lizentziaren pean argitaratzen direla (xehetasunetarako, ikus $1). Zuk idatzitakoa libreki aldatua eta banatua izatea nahi ez baduzu, ez ezazu hemen jarri.
\nEra berean, hitzematen ari zara hau zuk zeuk idatzia dela, edo jabari publikotik nahiz askea den beste ituri batetik kopiatu duzula.\n'''Ez erabili copyright eskubideek babestutako lanik, baimenik gabe!'''", "copyrightwarning2": "Mesedez, kontuan izan ezazu {{SITENAME}} webgunean egindako ekarpen guztiak beste erabiltzaileek aldatu edo ezabatu ditzaketela. Zuk idatzitakoa libreki aldatua izatea nahi ez baduzu, ez ezazu hemen jarri.
\nEra berean, hitzematen ari zara hau zuk zeuk idatzia dela, edo jabari publikotik nahiz askea den beste ituri batetik kopiatu duzula (xehetasunetarako, ikus $1).\n'''Ez erabili copyright eskubideek babestutako lanik, baimenik gabe!'''", + "editpage-cannot-use-custom-model": "Orri honetako eduki eredua ezin da aldatu.", "longpageerror": "'''Errorea: Bidali duzun testuak {{PLURAL:$1|kilobyte 1eko|$1 kilobyteko}} luzera du, eta {{PLURAL:$2|kilobyte 1eko|$2 kilobyteko}} maximoa baino luzeagoa da.'''\nEzin da gorde.", "readonlywarning": "Oharra: Datu-basea blokeatu egin da mantenu lanak burutzeko, beraz ezingo dituzu orain zure aldaketak gorde.I\nTestua fitxategi baten kopiatu dezakezu, eta beranduago erabiltzeko gorde.\n\nBlokeatu zuen administratzaileak honako azalpena eman zuen: $1", "protectedpagewarning": "'''Oharra: Orri hau blokeatua dago administratzaileek soilik eraldatu ahal dezaten.'''\nAzken erregistroa ondoren ikusgai dago erreferentzia gisa:", @@ -680,7 +683,7 @@ "permissionserrorstext": "Ez duzu hori egiteko baimenik, hurrengo {{PLURAL:$1|arrazoia dela eta|arrazoiak direla eta}}:", "permissionserrorstext-withaction": "Ezin duzu $2, ondorengo {{PLURAL:$1|arrazoi hau dela eta:|arrazoi hauek direla eta:}}", "recreate-moveddeleted-warn": "'''Oharra: Lehenago ezabatutako orri bat berriz sortzen ari zara.'''\n\nPentsatu ea orri hau editatzen jarraitzeak zentzurik baduen.\nHemen duzu orri honen ezabaketa erregistroa, badaezpada ere:", - "moveddeleted-notice": "Orrialde hau ezabatua izan da.\nOrrialdearen ezabatze erregistroa behean agertzen da erreferentzia gisa.", + "moveddeleted-notice": "Orrialde hau ezabatua izan da. Orrialdearen ezabatze erregistroa behean agertzen da erreferentzia gisa.", "log-fulllog": "Erregistro osoa ikusi", "edit-hook-aborted": "Gehigarriak aldaketa ezeztatu du.\nEz du azalpenik eman.", "edit-gone-missing": "Ezin da orria eguneratu. Ezabatu omen dute.", @@ -726,6 +729,7 @@ "undo-success": "Aldaketa desegin daiteke.\nMesedez beheko alderaketa egiaztatu, egin nahi duzuna hori dela frogatzeko, eta ondoren azpiko aldaketak gorde, aldaketa desegiten amaitzeko.", "undo-failure": "Ezin izan da aldaketa desegin tarteko aldaketekin gatazkak direla-eta.", "undo-norev": "Aldaketa ezin da desegin ez delako existitzen edo ezabatu zutelako.", + "undo-nochange": "Aldaketa hau honezkero desegin da.", "undo-summary": "[[Special:Contributions/$2|$2]] ([[User talk:$2|eztabaida]]) wikilariaren $1 berrikuspena desegin da", "undo-summary-username-hidden": "Deuseztatu ezkutuko erabiltzaile batek egindako $1 berrikusketa", "cantcreateaccount-text": "IP helbide honetatik ('''$1''') kontu berria sortzeko aukera blokeatu du [[User:$3|$3]](e)k.\n\n$3(e)k emandako arrazoia: ''$2''", @@ -853,6 +857,7 @@ "editundo": "desegin", "diff-empty": "(Ez dago alderik)", "diff-multi-sameuser": "(Erabiltzaile berdinaren {{PLURAL:$1|erdiko ekarpen bat ez da|$1 erdiko ekarpen ez dira}} erakusten)", + "diff-multi-otherusers": "({{PLURAL:$1|Tarteko berrikusketa bat|$1 tarteko berrikusketak}} {{PLURAL:$2|beste erabiltzaile bat|$2 erabiltzaileak}} egina ez da erakusten)", "searchresults": "Bilaketaren emaitzak", "searchresults-title": "«$1» bilaketaren emaitzak", "titlematches": "Emaitzak artikuluen izenburuetan", @@ -1085,6 +1090,7 @@ "right-browsearchive": "Ezabatutako orrialdeak bilatu", "right-undelete": "Ezabatutako orrialde bat itzularazi", "right-suppressrevision": "Edozein erabiltzaileren berrikuspenak ikusi, ezkutatu ala ikustarazi", + "right-viewsuppressed": "Edozein erabiltzailek izkutatutako berrikusketak ikusi", "right-suppressionlog": "Log pribatuak ikusi", "right-block": "Blokeatu beste erabiltzaile batzuk, edita ez dezaten", "right-blockemail": "Erabiltzaile bati blokeatu mezu elektronikoak bidaltzeko aukera", @@ -1214,20 +1220,25 @@ "recentchanges-legend-heading": "Azalpenak:", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (ikus, gainera, [[Special:NewPages|orri berrien zerrenda]])", "recentchanges-submit": "Erakutsi", + "rcfilters-tag-remove": "$1 ezabatu", "rcfilters-legend-heading": "Laburpenen zerrenda:", "rcfilters-other-review-tools": "Beste berrikusketa tresna:", + "rcfilters-group-results-by-page": "Talde emaitzak orrika", + "rcfilters-grouping-title": "Taldekatzen", "rcfilters-activefilters": "Iragazki aktiboak", "rcfilters-advancedfilters": "Iragazki aurreratuak", "rcfilters-limit-title": "Aldaketak erakutsi", - "rcfilters-limit-shownum": "Azken $1 aldaketak erakutsi", + "rcfilters-limit-shownum": "Azken {{PLURAL:$1|aldaketa|999=aldaketak}} erakutsi", "rcfilters-days-title": "Azken egunak", "rcfilters-hours-title": "Azken orduak", "rcfilters-days-show-days": "{{PLURAL:$1|Egun $1|$1 egun}}", "rcfilters-days-show-hours": "{{PLURAL:$1|Ordu $1|$1 ordu}}", + "rcfilters-highlighted-filters-list": "Azpimarratua: $1", "rcfilters-quickfilters": "Gordetako iragazkiak", "rcfilters-quickfilters-placeholder-title": "Ez dira oraindik Link-ak gorde", "rcfilters-savedqueries-defaultlabel": "Gordetako iragazkiak", "rcfilters-savedqueries-rename": "Berrizendatu", + "rcfilters-savedqueries-setdefault": "Lehenetsi", "rcfilters-savedqueries-remove": "Kendu", "rcfilters-savedqueries-new-name-label": "Izena", "rcfilters-savedqueries-new-name-placeholder": "Deskribatu filtro honen helburua", @@ -1237,6 +1248,7 @@ "rcfilters-savedqueries-add-new-title": "Gorde oraingo iragazki ezarpenak", "rcfilters-restore-default-filters": "Leheneratu iragazki lehenetsiak", "rcfilters-clear-all-filters": "Iragazki guztiak garbitu", + "rcfilters-show-new-changes": "Aldaketa berrienak ikusi", "rcfilters-search-placeholder": "Aldaketa berriak iragazi (nabigatu ala idatzi)", "rcfilters-invalid-filter": "Balio ez duen iragazkia", "rcfilters-empty-filter": "Filtro aktiborik ez dago. Ekarpen guztiak erakusten.", @@ -1244,6 +1256,7 @@ "rcfilters-filterlist-whatsthis": "Nola erabiltzen da?", "rcfilters-highlightbutton-title": "Nabarmendu emaitzak", "rcfilters-highlightmenu-title": "Hautatu kolore bat", + "rcfilters-highlightmenu-help": "Aukeratu kolore bat propietate hau nabarmentzeko", "rcfilters-filterlist-noresults": "Ez da iragazkirik aurkitu", "rcfilters-filtergroup-authorship": "Ekarpenaren egiletza", "rcfilters-filter-editsbyself-label": "Zuk egindako aldaketak", @@ -1282,6 +1295,8 @@ "rcfilters-filter-watchlist-watchednew-label": "Ikus-zerrenda berriko aldaketak", "rcfilters-filter-watchlist-notwatched-label": "Ez da ageri ikus-zerrendan", "rcfilters-filter-watchlist-notwatched-description": "Guztia zure ikus-zerrenda orrientzako aldaketak izan ezik", + "rcfilters-filter-watchlistactivity-unseen-label": "Ikusi gabeko aldaketak", + "rcfilters-filter-watchlistactivity-seen-label": "Ikusitako aldaketak", "rcfilters-filtergroup-changetype": "Aldaketa mota", "rcfilters-filter-pageedits-label": "Orrialde aldaketak", "rcfilters-filter-pageedits-description": "Aldaketak wiki eduki, eztabaida, kategoria deskribapenetan...", @@ -1297,12 +1312,16 @@ "rcfilters-filter-excluded": "Baztertua", "rcfilters-exclude-button-off": "Baztertzea aukeratuta", "rcfilters-exclude-button-on": "Baztertzea aukeratuta", + "rcfilters-view-advanced-filters-label": "Iragazki aurreratuak", "rcfilters-view-tags": "Etiketa aldaketak", "rcfilters-view-namespaces-tooltip": "Emaitzak aurrikiaren arabera hautatu", "rcfilters-view-tags-tooltip": "Iragazi emaitzak aldaketa etiketak erabiliz", "rcfilters-view-return-to-default-tooltip": "Oinarrizko iragazketa menura bueltatu", "rcfilters-liveupdates-button": "Zuzenean egindako eguneraketak", + "rcfilters-liveupdates-button-title-on": "Desgaitu zuzenean egindako eguneraketak", + "rcfilters-watchlist-markseen-button": "Aldaketa guztiak ikusitakoak bezala markatu", "rcnotefrom": "Jarraian azaltzen diren {{PLURAL:$5|aldaketak}} data honetatik aurrerakoak dira: $3,$4 (gehienez $1 erakusten dira).", + "rclistfromreset": "Data aukeraketa berrezarri", "rclistfrom": "Erakutsi $3 $2 ondorengo aldaketa berriak", "rcshowhideminor": "$1 aldaketa txikiak", "rcshowhideminor-show": "Erakutsi", @@ -1940,6 +1959,7 @@ "delete-edit-reasonlist": "Ezabaketa arrazoiak aldatu", "delete-toobig": "Orrialde honek aldaketa historia luzea du, {{PLURAL:$1|berrikuspen batetik|$1 berrikuspenetik}} gorakoa.\nOrrialde horien ezabaketa mugatua dago {{SITENAME}}n ezbeharrak saihesteko.", "delete-warning-toobig": "Orrialde honek aldaketa historia luzea du, {{PLURAL:$1|berrikuspen batetik|$1 berrikuspenetik}} gorakoa.\nEzabatzeak ezbeharrak eragin ditzake {{SITENAME}}ren datu-basean;\nkontu izan.", + "deleteprotected": "Ezin dezakezu orri hau ezabatu babestu egin delako.", "deleting-subpages-warning": "Oharra: Ezabatuko duzun orrialdeak [[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|a subpage|$1 subpages|51=over 50 subpages}}]] dauka.", "rollback": "Desegin aldaketak", "rollbacklink": "desegin", @@ -2113,7 +2133,7 @@ "unblock": "Erabiltzailea desblokeatu", "blockip": "Blokeatu {{GENDER:$1|erabiltzailea}}", "blockip-legend": "Blokeatu erabiltzailea", - "blockiptext": "IP helbide edo erabiltzaile izen bati idazketa baimenak kentzeko beheko formularioa erabil dezakezu. Ekintza hau bandalismoa saihesteko baino ez da burutu behar, eta beti ere [[{{MediaWiki:Policy-url}}|politikak]] errespetatuz. Blokeoaren arrazoi bat ere zehaztu ezazu (adibidez, orrialde batzuk zehaztuz).", + "blockiptext": "IP helbide edo erabiltzaile izen bati idazketa baimenak kentzeko beheko formularioa erabil dezakezu. Ekintza hau bandalismoa saihesteko baino ez da burutu behar, eta beti ere [[{{MediaWiki:Policy-url}}|politikak]] errespetatuz. Blokeoaren arrazoi bat ere zehaztu ezazu (adibidez, orrialde batzuk zehaztuz). IP helbideak [https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR] syntax; the largest allowed range is /$1 for IPv4 and /$2 for IPv6. erabiliz blokeatu ditzakezu.", "ipaddressorusername": "IP Helbidea edo erabiltzaile izena", "ipbexpiry": "Iraungipena", "ipbreason": "Arrazoia:", @@ -2200,7 +2220,7 @@ "ipb_expiry_invalid": "Aldiaren bukaerako data ez da baliozkoa.", "ipb_expiry_old": "Epemuga iraganean dago.", "ipb_expiry_temp": "Izkutuan dauden lankide izenen blokeoa betierekikoa izan behar du.", - "ipb_hide_invalid": "Ezin izan da kontu hau ezabatu; aldaketa asko izan baitezake.", + "ipb_hide_invalid": "Ezin izan da kontu hau ezabatu; {{PLURAL:$1|one edit|$1 edits}} baino gehiago baiditu.", "ipb_already_blocked": "\"$1\" badago blokeatuta", "ipb-needreblock": "$1 dagoeneko blokeaturik dago. Ezarpenak aldatu nahi al dituzu?", "ipb-otherblocks-header": "Bestelako {{PLURAL:$1|blokeoa|blokeoak}}", @@ -2488,7 +2508,7 @@ "pageinfo-few-watchers": "{{PLURAL:$1|Ikusle bat|$1 ikusle}} baino gutxiago", "pageinfo-redirects-name": "Orri honetara dakarten birzuzenketak", "pageinfo-subpages-name": "Orri honen azpiorriak", - "pageinfo-subpages-value": "$1 ({{PLURAL:$2|birzuzenketa $2|$2 birzuzenketa}}; {{PLURAL:$3|ez-birzuzenketa $3|$3 ez-birzuzenketa}}", + "pageinfo-subpages-value": "$1 ({{PLURAL:$2|birzuzenketa $2|$2 birzuzenketa}}; {{PLURAL:$3|ez-birzuzenketa $3|$3 ez-birzuzenketa}})", "pageinfo-firstuser": "Orriaren sortzailea", "pageinfo-firsttime": "Orriaren sortze data", "pageinfo-lastuser": "Azken editorea", @@ -3205,6 +3225,12 @@ "compare-invalid-title": "Zehaztutako izenburua ez dago zuzen.", "compare-title-not-exists": "Adierazi duzun izenburua ez da existitzen.", "compare-revision-not-exists": "Zehazturiko berrikuspena ez da existitzen.", + "diff-form": "Ezberdintasunak", + "diff-form-revid": "Ezberdintasunaren ID berrikusketa", + "diff-form-submit": "Erakutsi ezberdintasunak", + "permanentlink": "Lotura finkoa", + "permanentlink-revid": "Berrikuspen IDa", + "permanentlink-submit": "Berrikusketara joan", "dberr-problems": "Barkatu! Webgune honek zailtasun teknikoak jasaten ari da.", "dberr-again": "Saiatu pare bat minutu itxaroten edo kargatu ezazu orrialdea berriro.", "dberr-info": "($1: Ezin da datu-basera konektatu)", @@ -3242,7 +3268,7 @@ "logentry-delete-restore": "$1 administratzaileak «$3» orria {{GENDER:$2|lehengoratu}} du", "restore-count-files": "{{PLURAL:$1|Fitxategi 1|$1 fitxategi}}", "logentry-delete-event": "$1 wikilariak ikusgaitasuna {{GENDER:$2|aldatu}} {{PLURAL:$5|dio erregistroko sarrera bati|die erregistroko $5 sarrerari}}, $3 orrian: $4", - "logentry-delete-revision": "$1 erabiltzaileak {{PLURAL:$5|berrikuste baten|$5 berrikusteren}} ikusgaitasuna aldatu du «$3» orrian: $4", + "logentry-delete-revision": "$1 wikilariak ikusgaitasuna {{GENDER:$2|aldatu}} {{PLURAL:$5|dio erregistroko sarrera bati|die erregistroko $5 sarrerari}}, $3 orrian: $4", "logentry-suppress-delete": "$1 erabiltzaileak $3 orria {{GENDER:$2|ezabatu}} du", "logentry-suppress-event": "$1 wikilariak ezkutuan ikusgaitasuna aldatu {{PLURAL:$5|dio erregistroko sarrera bati|die erregistroko $5 sarrerari}}, «$3» orrian: $4", "revdelete-content-hid": "edukia ezkutatu da", @@ -3263,6 +3289,7 @@ "logentry-move-move_redir": "$1 {{GENDER:$2|wikilariak}} «$3» orria «$4» izenera aldatu du, birzuzenketaren gainetik", "logentry-move-move_redir-noredirect": "$1 {{GENDER:wikilariak}} «$3» orria «$4» izenera aldatu du, birbideratze bat gainidatzita, birbideratzerik utzi gabe", "logentry-patrol-patrol": "$1(e)k $3 orrialdearen $4 berrikuspena patruilatutzat {{GENDER:$2|markatu}} du", + "logentry-patrol-patrol-auto": "$1(e)k $3 orrialdearen $4 berrikuspena patruilatutzat {{GENDER:$2|markatu}} du", "logentry-newusers-newusers": "$1 erabiltzaile kontua {{GENDER:$2|sortu da}}", "logentry-newusers-create": "$1 erabiltzaile kontua {{GENDER:$2|sortu da}}", "logentry-newusers-create2": "$1 wikilariak $3 erabiltzaile kontua {{GENDER:$2|sortu}} du", @@ -3287,6 +3314,7 @@ "feedback-subject": "Gaia:", "feedback-submit": "Bidali", "feedback-thanks-title": "Eskerrik asko!", + "feedback-useragent": "Erabiltzaile agentea:", "searchsuggest-search": "{{SITENAME}} wikian bilatu", "searchsuggest-containing": "edukian...", "api-error-badtoken": "Barne akatsa: token okerra.", @@ -3452,9 +3480,23 @@ "authprovider-resetpass-skip-label": "Utzi", "authform-wrongtoken": "Token okerra", "specialpage-securitylevel-not-allowed-title": "Baimenik gabe", + "authpage-cannot-login": "Saio hasiera ezin izan da burutu.", "cannotauth-not-allowed-title": "Ez da baimendu", "cannotauth-not-allowed": "Ez duzu baimenik orri hau erabiltzeko", "changecredentials": "Kredentzialak aldatu", + "changecredentials-submit": "Kredentzialak aldatu", + "removecredentials": "Kredentzialak kendu", + "removecredentials-submit": "Kredentzialak kendu", + "credentialsform-provider": "Kredentzial mota:", "credentialsform-account": "Kontuaren izena:", - "gotointerwiki": "{{SITENAME}}(e)tik irteten" + "linkaccounts": "Kontuak lotu", + "linkaccounts-success-text": "Kontua lotu da.", + "linkaccounts-submit": "Kontuak lotu", + "unlinkaccounts": "Kontuak desestekatu", + "unlinkaccounts-success": "Kontua desestekatu da.", + "revid": "$1 berrikusi", + "pageid": "$1 orri IDa", + "gotointerwiki": "{{SITENAME}}(e)tik irteten", + "pagedata-title": "Orri data", + "pagedata-bad-title": "Izenburu baliogabea: $1" } diff --git a/languages/i18n/fa.json b/languages/i18n/fa.json index 60cbd837c0..d376427606 100644 --- a/languages/i18n/fa.json +++ b/languages/i18n/fa.json @@ -97,6 +97,7 @@ "tog-watchlisthideminor": "ویرایش‌های جزئی در فهرست پی‌گیری‌ها پنهان شود", "tog-watchlisthideliu": "ویرایش‌های کاربران وارد شده به سامانه در فهرست پی‌گیری‌ها پنهان شود", "tog-watchlistreloadautomatically": "زمانی که یک پالایه تغییر کرد فهرست پیگیری به صورت خودکار به روز شود (نیازمند جاوااسکریپت)", + "tog-watchlistunwatchlinks": "افزودن پیوندهای مستقیم خروج از پی‌گیری به فهرست پی‌گیری (جاواسکریپت ممکن است نیاز شود)", "tog-watchlisthideanons": "ویرایش‌های کاربران ناشناس در فهرست پی‌گیری‌ها پنهان شود", "tog-watchlisthidepatrolled": "ویرایش‌های گشت‌خورده در فهرست پی‌گیری‌ها پنهان شود", "tog-watchlisthidecategorization": "نهفتن رده‌بندی صفحه‌ها", @@ -349,7 +350,7 @@ "nospecialpagetext": "شما یک صفحهٔ ویژهٔ نامجاز را درخواست کرده‌اید.\n\nفهرستی از صفحه‌های ویژهٔ مجاز در [[Special:SpecialPages|{{int:specialpages}}]] وجود دارد.", "error": "خطا", "databaseerror": "خطای پایگاه داده", - "databaseerror-text": "مشکلی در پایگاه‌های داده رخ داد. \nاین ممکن است نشان‌دهندهٔ ایرادی در نرم‌افزار باشد.", + "databaseerror-text": "مشکلی در پرسمان از پایگاه داده رخ داد. \nاین ممکن است نشان‌دهندهٔ ایرادی در نرم‌افزار باشد.", "databaseerror-textcl": "یک خطا در پرسمان پایگاه داده رخ داد.", "databaseerror-query": "پرسمان: $1", "databaseerror-function": "تابع: $1", @@ -1334,6 +1335,7 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (همچنین به [[Special:NewPages|فهرست صفحات تازه]] نگاه کنید)", "recentchanges-legend-plusminus": "(±۱۲۳)", "recentchanges-submit": "نمایش", + "rcfilters-tag-remove": "حذف «$1»", "rcfilters-legend-heading": "فهرست کوته‌نوشت‌ها:", "rcfilters-other-review-tools": "دیگر ابزارهای بازبینی", "rcfilters-group-results-by-page": "گروه‌بندی نتایج بر اساس صفحه", @@ -1346,6 +1348,7 @@ "rcfilters-hours-title": "ساعت‌های اخیر", "rcfilters-days-show-days": "$1 {{PLURAL:$1|روز|روز}}", "rcfilters-days-show-hours": "$1 {{PLURAL:$1|ساعت|ساعت}}", + "rcfilters-highlighted-filters-list": "پررنگ شده: $1", "rcfilters-quickfilters": "پالایه‌های ذخیره‌شده", "rcfilters-quickfilters-placeholder-title": "هنوز پیوندی ذخیره نشده‌است", "rcfilters-quickfilters-placeholder-description": "برای ذخیره پالایه‌هایتان و استفاده مجدد آنها، در محیط فعال پالایه در پایین بر روی دکمهٔ بوک‌مارک کلیک کنید.", @@ -1368,14 +1371,14 @@ "rcfilters-empty-filter": "پالایه‌ای فعال نیست. همهٔ مشارکت‌های دیده می‌شوند.", "rcfilters-filterlist-title": "پالایه‌ها", "rcfilters-filterlist-whatsthis": "این چطور کار می‌کند؟", - "rcfilters-filterlist-feedbacklink": "ارسال بازخورد برای پالایه‌های جدید (آزمایشی)", + "rcfilters-filterlist-feedbacklink": "به ما در مورد این پالایه‌های جدید بازخورد دهید", "rcfilters-highlightbutton-title": "پررنگ کردن نتایج", "rcfilters-highlightmenu-title": "انتخاب رنگ", "rcfilters-highlightmenu-help": "یک رنگ انتخاب کنید تا این خصوصیت پر رنگ شود", "rcfilters-filterlist-noresults": "پالایه‌ای یافت نشد", "rcfilters-noresults-conflict": "نتیجه‌ای یافت نشد چون محدودهٔ جستجو دارای تعارض است", "rcfilters-state-message-subset": "این پالایه تاثیری ندارد چون نتایج آن توسط {{PLURAL:$2|پالایهٔ|پالایه‌های}} گسترده‌تری که در ادامه {{PLURAL:$2|آمده‌است|آمده‌اند}} شامل می‌شود (از پررنگ‌کننده برای تمایز استفاده کنید): $1", - "rcfilters-state-message-fullcoverage": "انتخاب تمام پالایه‌ها در یک گروه مثل این است که هیچ‌کدام را انتخاب نکنید، بنابراین پالایه‌ها اثری نداشتند. گروه شامل این موارد است: $1", + "rcfilters-state-message-fullcoverage": "انتخاب تمام پالایه‌ها در این گروه مثل این است که هیچ‌کدام را انتخاب نکنید، بنابراین پالایه‌ها اثری نداشتند. گروه شامل این موارد است: $1", "rcfilters-filtergroup-authorship": "ویرایشگر", "rcfilters-filter-editsbyself-label": "تغییریافته توسط شما", "rcfilters-filter-editsbyself-description": "ویرایش‌های شما.", @@ -1414,6 +1417,10 @@ "rcfilters-filter-watchlist-watchednew-description": "تغییرات در صفحه‌هایی در فهرست پی‌گیری شما که از زمان تغییرشان آن‌ها را بازدید نکرده‌اید.", "rcfilters-filter-watchlist-notwatched-label": "پی‌گیری‌نشده", "rcfilters-filter-watchlist-notwatched-description": "همه‌چیز به غیر از تغییرات در صفحه‌هایی که در فهرست پی‌گیری شما هستند.", + "rcfilters-filtergroup-watchlistactivity": "فعالیت فهرست پیگیری", + "rcfilters-filter-watchlistactivity-unseen-label": "تغییرات دیده نشده", + "rcfilters-filter-watchlistactivity-unseen-description": "تغییرات در صفحاتی که شما تغییرات رخ داده در آنها را مشاهده نکردید.", + "rcfilters-filter-watchlistactivity-seen-label": "تغییرات دیده‌شده", "rcfilters-filtergroup-changetype": "نوع تغییرات", "rcfilters-filter-pageedits-label": "ویرایش‌های صفحه", "rcfilters-filter-pageedits-description": "ویرایش‌های محتوای ویکی، بحث‌ها، توضیحات رده...", @@ -1443,6 +1450,8 @@ "rcfilters-liveupdates-button": "به‌روزرسانی‌های زنده", "rcfilters-liveupdates-button-title-on": "خاموش کردن به‌روزرسانی خودکار", "rcfilters-liveupdates-button-title-off": "نمایش تغییرات جدید همچنان که رخ می‌دهند", + "rcfilters-watchlist-markseen-button": "نشانه‌گذاری تمام تغییرات به‌عنوان خوانده‌شده", + "rcfilters-watchlist-edit-watchlist-button": "ویرایش فهرست صفحه‌های پی‌گیری‌هایتان", "rcnotefrom": "در زیر تغییرات از $3, $4 (تا $1 {{PLURAL:$5|نشان داده شده‌است|نشان داده شده‌اند}}).", "rclistfromreset": "از نو کردن انتخاب تاریخ", "rclistfrom": "نمایش تغییرات تازه با شروع از $3 $2", @@ -1956,6 +1965,7 @@ "apisandbox-sending-request": "ارسال درخواست ای‌پی‌آی...", "apisandbox-loading-results": "دریافت درخواست‌های ای‌پی‌آی...", "apisandbox-results-error": "در زمان بارگیری پاسخ پرسمان از رابط برنامه‌نویسی خطایی رخ داد: $1.", + "apisandbox-results-login-suppressed": "این درخواست به عنوان یک کاربر خارج شده از سامانه بررسی شد تا بتواند قانون امنیتی یک منبع را دور بزند. توجه کنید که سامانه افزودن خودکار توکن در صفحه تمرین API با چنین درخواست‌هایی درست کار نمی‌کند. لطفا توکن را دستی وارد کنید.", "apisandbox-request-selectformat-label": "نمایش داده‌های درخواست به عنوان:", "apisandbox-request-format-url-label": "آدرس اینترنتی متن پرسمان", "apisandbox-request-url-label": "درخواست آدرس:", @@ -2125,7 +2135,7 @@ "unwatchthispage": "توقف پی‌گیری", "notanarticle": "صفحه محتوایی نیست", "notvisiblerev": "آخرین نسخه توسط کاربری دیگر حذف شده‌است", - "watchlist-details": "بدون احتساب صفحه‌های جداگانهٔ بحث، {{PLURAL:$1|$1 صفحه|$1 صفحه}} در فهرست پی‌گیری‌های شما قرار {{PLURAL:$1|دارد|دارند}}.", + "watchlist-details": "{{PLURAL:$1|$1 صفحه|$1 صفحه}} در فهرست پی‌گیری‌های شما قرار {{PLURAL:$1|دارد|دارند}}.", "wlheader-enotif": "ایمیل‌های اعلان فعال است.", "wlheader-showupdated": "صفحه‌هایی که پس از آخرین بازدید شما تغییر کرده‌اند پررنگ نمایش داده شده‌اند.", "wlnote": "در زیر {{PLURAL:$1|تغییری|$1 تغییری}} که در {{PLURAL:$2|ساعت|$2 ساعت}} گذشته انجام شده موجود است، تاریخ آخرین بازیابی: $3، $4", @@ -2231,7 +2241,7 @@ "unprotectedarticle": "صفحهٔ «[[$1]]» را از محافظت بیرون آورد", "movedarticleprotection": "تنظیمات محافظت را از «[[$2]]» به «[[$1]]» منتقل کرد", "protectedarticle-comment": "«[[$1]]» را {{GENDER:$2|محافظت کرد}}", - "modifiedarticleprotection-comment": "سطح محاظفت «[[$1]]» را {{GENDER:$2|تغییر داد}}", + "modifiedarticleprotection-comment": "سطح محافظت «[[$1]]» را {{GENDER:$2|تغییر داد}}", "unprotectedarticle-comment": "«[[$1]]» را از محافظت {{GENDER:$2|در آورد}}", "protect-title": "تغییر وضعیت محافظت «$1»", "protect-title-notallowed": "مشاهدهٔ سطح محافظت «$1»", @@ -3999,6 +4009,7 @@ "undelete-cantedit": "شما نمی‌توانید این صفحه را احیا کنید چون مجاز به ویرایش این صفحه نیستید.", "undelete-cantcreate": "شما نمی‌توانید این صفحه را احیا کنید چرا که صفحه‌ای به این نام همینک وجود ندارد و شما مجاز به ساختن آن نیستید.", "pagedata-title": "اطلاعات صفحه", + "pagedata-text": "این صفحه یک رابط داده به صفحات است. لطفا نام صفحه را در آدرس به شکل زیرصفحه وارد کنید.\n* مذاکره محتوا با استفاده از هدر Accept ممکن است. این به این معنی است که داده‌ّای صفحه در قالبی که ترجیح دهید باز خواهد شد.", "pagedata-not-acceptable": "هیچ قالب تطبیقی یافت نشد. انواع MIME پشتیبانی شده: $1", "pagedata-bad-title": "عنوان نامعتبر: «$1»." } diff --git a/languages/i18n/fi.json b/languages/i18n/fi.json index 9ae91618ca..3dcb491d7b 100644 --- a/languages/i18n/fi.json +++ b/languages/i18n/fi.json @@ -370,7 +370,7 @@ "formerror": "Lomakkeen tiedot eivät kelpaa", "badarticleerror": "Tätä toimintoa ei voi suorittaa tälle sivulle.", "cannotdelete": "Sivun tai tiedoston ”$1” poisto epäonnistui.\nJoku muu on saattanut poistaa sen.", - "cannotdelete-title": "Sivua $1 ei voi poistaa", + "cannotdelete-title": "Sivua \"$1\" ei voi poistaa", "delete-hook-aborted": "Laajennuskoodi esti poiston antamatta syytä.", "no-null-revision": "Nollamuokkausta sivulla \"$1\" ei voi tehdä", "badtitle": "Kelvoton sivun nimi", @@ -707,7 +707,7 @@ "editingsection": "Muokataan osiota sivusta $1", "editingcomment": "Muokataan uutta osiota sivulla $1", "editconflict": "Päällekkäinen muokkaus: $1", - "explainconflict": "Joku muu on muuttanut tätä sivua sen jälkeen, kun aloit muokata sitä.\nYlempi tekstialue sisältää tämänhetkisen tekstin.\nTekemäsi muutokset näkyvät alemmassa ikkunassa.\nSinun täytyy yhdistää muutoksesi olemassa olevaan tekstiin.\n'''Vain''' ylemmässä alueessa oleva teksti tallentuu, kun tallennat sivun.", + "explainconflict": "Joku muu on muuttanut tätä sivua sen jälkeen, kun aloit muokata sitä.\nYlempi tekstialue sisältää tämänhetkisen tekstin.\nTekemäsi muutokset näkyvät alemmassa ikkunassa.\nSinun täytyy yhdistää muutoksesi olemassa olevaan tekstiin.\nVain ylemmässä alueessa oleva teksti tallentuu, kun napsautat \"$1\".", "yourtext": "Oma tekstisi", "storedversion": "Tallennettu versio", "nonunicodebrowser": "'''Selaimesi ei ole Unicode-yhteensopiva. Ole hyvä ja vaihda selainta, ennen kuin muokkaat sivua.'''", @@ -1318,17 +1318,20 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (katso myös [[Special:NewPages|lista uusista sivuista]])", "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Näytä", + "rcfilters-tag-remove": "Poista '$1'", "rcfilters-legend-heading": "Luettelo lyhenteistä:", "rcfilters-other-review-tools": "Muut arviointityökalut", "rcfilters-group-results-by-page": "Ryhmitä tulokset sivujen mukaan", "rcfilters-grouping-title": "Ryhmitys", "rcfilters-activefilters": "Aktiiviset suodattimet", + "rcfilters-advancedfilters": "Kehittyneet suodattimet", "rcfilters-limit-title": "Näytettävät muutokset", "rcfilters-limit-shownum": "Näytä {{PLURAL:$1|viimeisin muutos|$1 viimeisintä muutosta}}", "rcfilters-days-title": "Viimeisimmät päivät", "rcfilters-hours-title": "Viimeisimmät tunnit", "rcfilters-days-show-days": "$1 {{PLURAL:$1|päivä|päivää}}", "rcfilters-days-show-hours": "$1 {{PLURAL:$1|tunti|tuntia}}", + "rcfilters-highlighted-filters-list": "Korostettu: $1", "rcfilters-quickfilters": "Tallennetut suodattimet", "rcfilters-quickfilters-placeholder-title": "Ei vielä tallennettuja linkkejä", "rcfilters-savedqueries-defaultlabel": "Tallennetut suodattimet", @@ -1337,6 +1340,7 @@ "rcfilters-savedqueries-unsetdefault": "Poista oletuksena", "rcfilters-savedqueries-remove": "Poista", "rcfilters-savedqueries-new-name-label": "Nimi", + "rcfilters-savedqueries-new-name-placeholder": "Kuvaa suodattimen tarkoitusta", "rcfilters-savedqueries-apply-label": "Luo suodatin", "rcfilters-savedqueries-apply-and-setdefault-label": "Luo oletussuodatin", "rcfilters-savedqueries-cancel-label": "Peru", @@ -1356,9 +1360,9 @@ "rcfilters-filterlist-noresults": "Ei löytynyt suodattimia", "rcfilters-noresults-conflict": "Tuloksia ei löytynyt, koska hakuehdot ovat ristiriidassa", "rcfilters-state-message-subset": "Tällä suodattimella ei ole vaikutusta, koska sen tulokset sisältyvät {{PLURAL:$2|seuraavaan laajempaan suodattimeen|seuraaviin laajempiin suodattimiin}} (kokeile korostusta sen erottamiseksi): $1", - "rcfilters-state-message-fullcoverage": "Ryhmän kaikkien suodattimien valitseminen on sama, kuin ei valitse mitään, joten tällä suodattimella ei ole vaikutusta. Ryhmään sisältyy: $1", + "rcfilters-state-message-fullcoverage": "Tässä ryhmässä kaikkien suodattimien valitseminen on sama, kuin ei valitse mitään, joten tällä suodattimella ei ole vaikutusta. Ryhmään sisältyy: $1", "rcfilters-filtergroup-authorship": "Muutoksen tekijä", - "rcfilters-filter-editsbyself-label": "Muutoksesi", + "rcfilters-filter-editsbyself-label": "Sinun tekemät muutokset", "rcfilters-filter-editsbyself-description": "Tekemäsi muutokset.", "rcfilters-filter-editsbyother-label": "Muiden muutokset", "rcfilters-filter-editsbyother-description": "Muiden käyttäjien tekemät muutokset.", @@ -1392,6 +1396,7 @@ "rcfilters-filter-watchlist-watched-label": "Tarkkailulistalla", "rcfilters-filter-watchlist-watched-description": "Muutokset tarkkailulistalla oleviin sivuihin.", "rcfilters-filter-watchlist-watchednew-label": "Uudet tarkkailulistan muutokset", + "rcfilters-filter-watchlist-watchednew-description": "Muutokset tarkkailulistalla oleviin sivuihin, joilla et ole vieraillut sen jälkeen, kun sivuille on tehty muutoksia.", "rcfilters-filter-watchlist-notwatched-label": "Ei tarkkailulistalla", "rcfilters-filtergroup-changetype": "Muutoksen tyyppi", "rcfilters-filter-pageedits-label": "Sivun muokkaukset", @@ -1407,10 +1412,12 @@ "rcfilters-typeofchange-conflicts-hideminor": "\"Muutoksen tyyppi\" on ristiriidassa \"Pienet muutokset\" -suodattimen kanssa. Joitain muutostyyppejä ei voida merkitä \"pieniksi\".", "rcfilters-filtergroup-lastRevision": "Viimeisimmät versiot", "rcfilters-filter-lastrevision-label": "Viimeisin versio", - "rcfilters-filter-lastrevision-description": "Viimeisin muutos sivulle.", - "rcfilters-filter-previousrevision-label": "Aikaisemman versiot", + "rcfilters-filter-lastrevision-description": "Vain viimeisin muutos sivulle.", + "rcfilters-filter-previousrevision-label": "Ei viimeisin muutos", + "rcfilters-view-advanced-filters-label": "Kehittyneet suodattimet", "rcfilters-view-namespaces-tooltip": "Suodata tuloksia nimiavaruuden mukaan", "rcnotefrom": "Alla ovat muutokset $3, $4 lähtien. (Enintään $1 näytetään.)", + "rclistfromreset": "Tyhjennä ajankohdan valinta", "rclistfrom": "Näytä uudet muutokset $3 kello $2 alkaen", "rcshowhideminor": "$1 pienet muutokset", "rcshowhideminor-show": "Näytä", @@ -2820,6 +2827,7 @@ "newimages-user": "IP-osoite tai käyttäjänimi:", "newimages-showbots": "Näytä bottien tekemät tallennukset", "newimages-hidepatrolled": "Piilota tarkastetut tiedostotallennukset", + "newimages-mediatype": "Median tyyppi:", "noimages": "Ei uusia tiedostoja.", "gallery-slideshow-toggle": "Vaihda pienoiskuvaa", "ilsubmit": "Hae", diff --git a/languages/i18n/fr.json b/languages/i18n/fr.json index 80ff2e5bf5..4fb2636ed1 100644 --- a/languages/i18n/fr.json +++ b/languages/i18n/fr.json @@ -155,7 +155,9 @@ "Archaeodontosaurus", "Trizek (WMF)", "Framawiki", - "Jona" + "Jona", + "Epok", + "DePlusJean" ] }, "tog-underline": "Soulignement des liens :", @@ -175,11 +177,11 @@ "tog-watchdeletion": "Ajouter à ma liste de suivi les pages et les fichiers que je supprime", "tog-watchuploads": "Ajouter les nouveaux fichiers que j’importe à ma liste de suivi", "tog-watchrollback": "Ajouter à ma liste de suivi les pages sur lesquelles j’ai effectué une révocation", - "tog-minordefault": "Marquer toutes les modifications comme étant mineures par défaut", - "tog-previewontop": "Afficher la prévisualisation avant la zone d’édition", + "tog-minordefault": "Marquer toutes mes modifications comme étant mineures par défaut", + "tog-previewontop": "Afficher la prévisualisation au dessus de la zone d’édition", "tog-previewonfirst": "Afficher la prévisualisation lors de la première modification", "tog-enotifwatchlistpages": "M’avertir par courriel lorsqu’une page ou un fichier de ma liste de suivi est modifié", - "tog-enotifusertalkpages": "M’avertir par courriel si ma page de discussion est modifiée", + "tog-enotifusertalkpages": "M’avertir par courriel lorsque ma page de discussion est modifiée", "tog-enotifminoredits": "M’avertir par courriel également lors des modifications mineures des pages ou des fichiers", "tog-enotifrevealaddr": "Afficher mon adresse électronique dans les courriels de notification", "tog-shownumberswatching": "Afficher le nombre d’utilisateurs en cours", @@ -192,7 +194,7 @@ "tog-watchlisthideminor": "Masquer les modifications mineures dans la liste de suivi", "tog-watchlisthideliu": "Masquer les modifications faites par des utilisateurs inscrits dans la liste de suivi", "tog-watchlistreloadautomatically": "Recharger automatiquement la liste de suivi lorsque les options de filtrage sont modifiées (JavaScript requis)", - "tog-watchlistunwatchlinks": "Ajouter des liens directs de suivi/non suivi pour les entrées de la liste de suivi (JavaScript est nécessaire pour la fonctionnalité de bascule)", + "tog-watchlistunwatchlinks": "Ajouter des liens directs pour suivre ou arrêter de suivre les entrées de la liste de suivi (JavaScript est nécessaire pour utiliser la fonctionnalité)", "tog-watchlisthideanons": "Masquer les modifications d’utilisateurs anonymes dans la liste de suivi", "tog-watchlisthidepatrolled": "Masquer les modifications relues dans la liste de suivi", "tog-watchlisthidecategorization": "Masquer la catégorisation des pages", @@ -201,7 +203,7 @@ "tog-showhiddencats": "Afficher les catégories cachées", "tog-norollbackdiff": "Ne pas afficher le diff après avoir révoqué", "tog-useeditwarning": "M’avertir quand je quitte une page en cours de modification sans avoir sauvegardé", - "tog-prefershttps": "Utilisez toujours une connexion sécurisée pour vous connecter", + "tog-prefershttps": "Toujours utiliser une connexion sécurisée lorsque je suis connecté", "underline-always": "Toujours", "underline-never": "Jamais", "underline-default": "Valeur par défaut du thème ou du navigateur", @@ -248,18 +250,18 @@ "october-gen": "octobre", "november-gen": "novembre", "december-gen": "décembre", - "jan": "jan", - "feb": "fév", - "mar": "mar", - "apr": "avr", + "jan": "janv.", + "feb": "fév.", + "mar": "mars", + "apr": "avr.", "may": "mai", "jun": "juin", - "jul": "juil", + "jul": "juill.", "aug": "août", - "sep": "sep", - "oct": "oct", - "nov": "nov", - "dec": "déc", + "sep": "sept.", + "oct": "oct.", + "nov": "nov.", + "dec": "déc.", "january-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} janvier", "february-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} février", "march-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} mars", @@ -295,7 +297,7 @@ "category-header-numerals": "$1–$2", "about": "À propos", "article": "Page de contenu", - "newwindow": "(ouvre dans une nouvelle fenêtre)", + "newwindow": "(s’ouvre dans une nouvelle fenêtre)", "cancel": "Annuler", "moredotdotdot": "Plus...", "morenotlisted": "Cette liste peut être incomplète.", @@ -313,17 +315,17 @@ "returnto": "Revenir à la page $1.", "tagline": "De {{SITENAME}}", "help": "Aide", - "search": "Rechercher", - "search-ignored-headings": " #
\n# Titres des sections qui seront ignorés par la recherche\n# Les changements effectués ici prennent effet dès lors que la page avec le titre est indexée.\n# Vous pouvez forcer la réindexation de la page en effectuant une modification vide\n# La syntaxe est la suivante :\n#   * Toute ligne précédée d’un « # » est un commentaire\n#   * Toute ligne non-vide est le titre exact à ignorer, casse comprise\nRéférences\nLiens externes\nVoir aussi\n #
", - "searchbutton": "Rechercher", + "search": "Chercher", + "search-ignored-headings": " #
\n# Titres des sections qui seront ignorés par la recherche.\n# Les changements effectués ici prennent effet dès lors que la page avec le titre est indexée.\n# Vous pouvez forcer la réindexation de la page en effectuant une modification vide.\n# La syntaxe est la suivante :\n#   * Toute ce qui suit un « # » jusqu’à la fin de la ligne est un commentaire.\n#   * Toute ligne non-vide est le titre exact à ignorer, casse comprise.\nRéférences\nLiens externes\nVoir aussi\n #
", + "searchbutton": "Chercher", "go": "Consulter", - "searcharticle": "Lire", + "searcharticle": "Continuer", "history": "Historique de la page", "history_short": "Historique", "history_small": "historique", "updatedmarker": "modifié depuis ma dernière visite", "printableversion": "Version imprimable", - "permalink": "Adresse permanente", + "permalink": "Lien permanent", "print": "Imprimer", "view": "Lire", "view-foreign": "Voir sur $1", @@ -357,7 +359,7 @@ "redirectedfrom": "(Redirigé depuis $1)", "redirectpagesub": "Page de redirection", "redirectto": "Rediriger vers :", - "lastmodifiedat": "Cette page a été modifiée pour la dernière fois le $1 à $2.", + "lastmodifiedat": "La dernière modification de cette page a été faite le $1 à $2.", "viewcount": "Cette page {{PLURAL:$1|0=n’a jamais été consultée|1=a été consultée une seule fois|a été consultée $1 fois}}.", "protectedpage": "Page protégée", "jumpto": "Aller à :", @@ -371,22 +373,22 @@ "pool-servererror": "Le service de réservation n’est pas disponible ($1).", "poolcounter-usage-error": "Erreur d’utilisation : $1", "aboutsite": "À propos de {{SITENAME}}", - "aboutpage": "Project:À propos", + "aboutpage": "Project: À propos de", "copyright": "Le contenu est disponible sous licence $1 sauf mention contraire.", "copyrightpage": "{{ns:project}}:Copyrights", "currentevents": "Actualités", - "currentevents-url": "Project:Actualités", + "currentevents-url": "Project: Actualités", "disclaimers": "Avertissements", - "disclaimerpage": "Project:Avertissements généraux", + "disclaimerpage": "Project: Avertissements généraux", "edithelp": "Aide pour l'édition", "helppage-top-gethelp": "Aide", "mainpage": "Accueil", "mainpage-description": "Accueil", "policy-url": "Project:Règles", "portal": "Communauté", - "portal-url": "Project:Accueil", + "portal-url": "Project: portail communautaire", "privacy": "Politique de confidentialité", - "privacypage": "Project:Confidentialité", + "privacypage": "Project: Politique de confidentialité", "badaccess": "Erreur de permissions", "badaccess-group0": "Vous n’avez pas les droits suffisants pour réaliser l’action demandée.", "badaccess-groups": "L’action que vous essayez de réaliser n’est permise qu’aux utilisateurs {{PLURAL:$2|du groupe|d’un des groupes}} : $1.", @@ -462,7 +464,7 @@ "missing-article": "La base de données n’a pas trouvé le texte d’une page qu’elle aurait dû trouver, intitulée « $1 » $2.\n\nGénéralement, cela survient en suivant un lien vers un diff périmé ou vers l’historique d’une page supprimée.\n\nSi ce n’est pas le cas, il peut s’agir d’une anomalie dans le programme.\nVeuillez la signaler à un [[Special:ListUsers/sysop|administrateur]] sans oublier de lui indiquer l’URL de la page.", "missingarticle-rev": "(numéro de version : $1)", "missingarticle-diff": "(diff : $1, $2)", - "readonly_lag": "La base de données a été automatiquement verrouillée pendant que les serveurs secondaires se réalignent sur le serveur principal.", + "readonly_lag": "La base de données a été automatiquement verrouillée pendant que les serveurs secondaires se réalignent sur le serveur principal", "nonwrite-api-promise-error": "L’entête HTTP « Promise-Non-Write-API-Action: » a été envoyé mais la requête a été faite à un module d’écriture de l’API.", "internalerror": "Erreur interne", "internalerror_info": "Erreur interne : $1", @@ -488,7 +490,7 @@ "title-invalid-interwiki": "La page cible contient un lien interwiki ne pouvant être utilisé dans les titres.", "title-invalid-talk-namespace": "Le titre de la page demandée fait référence à une page de discussion qui peut ne pas exister.", "title-invalid-characters": "Le titre de la page demandée contient des caractères non valides : « $1 ».", - "title-invalid-relative": "Le titre contient un chemin relatif. Les titres référençant des pages relatives (./, ../) sont non valides car il seront souvent inaccessibles pour certains explorateurs des utilisateurs.", + "title-invalid-relative": "Le titre contient un chemin relatif. Les titres référençant des pages relatives (./, ../) sont non valides car il seront souvent inaccessibles lorsque utilisés par le navigateur de l'utilisateur.", "title-invalid-magic-tilde": "Le titre de la page demandée contient une séquence de tilde magiques non valide (~~~).", "title-invalid-too-long": "La titre de la page demandée est trop long. Il ne doit pas dépasser $1 {{PLURAL:$1|octet|octets}} dans l’encodage UTF-8.", "title-invalid-leading-colon": "Le titre de la page demandée contient un deux-points invalide au début.", @@ -507,7 +509,7 @@ "translateinterface": "Pour ajouter ou modifier des traductions pour tous les wikis, veuillez utiliser [https://translatewiki.net/ translatewiki.net], le projet de localisation linguistique de MediaWiki.", "cascadeprotected": "Cette page est protégée contre les modifications car elle est transcluse par {{PLURAL:$1|la page suivante, qui a été protégée|les pages suivantes, qui ont été protégées}} avec l’option « protection en cascade » activée :\n$2", "namespaceprotected": "Vous n’avez pas la permission de modifier les pages de l’espace de noms « $1 ».", - "customcssprotected": "Vous n’avez pas la permission de modifier cette page de CSS, car elle contient les paramètres personnels d’un autre utilisateur.", + "customcssprotected": "Vous n’avez pas la permission de modifier cette feuille de style CSS, car elle contient les paramètres personnels d’un autre utilisateur.", "customjsprotected": "Vous n’avez pas la permission de modifier cette page de JavaScript, car elle contient les paramètres personnels d’un autre utilisateur.", "mycustomcssprotected": "Vous n’avez pas le droit de modifier cette page CSS.", "mycustomjsprotected": "Vous n’avez pas le droit de modifier cette page JavaScript.", @@ -522,13 +524,13 @@ "exception-nologin-text": "Veuillez vous connecter pour pouvoir accéder à cette page ou cette action.", "exception-nologin-text-manual": "Veuillez vous $1 pour pouvoir accéder à cette page ou cette action.", "virus-badscanner": "Mauvaise configuration : analyseur de virus inconnu : $1", - "virus-scanfailed": "Échec de la recherche (code $1)", + "virus-scanfailed": "échec de l’analyse (code $1)", "virus-unknownscanner": "antivirus inconnu :", "logouttext": "Vous êtes à présent déconnecté{{GENDER:||e|(e)}}.\n\nNotez que certaines pages peuvent être encore affichées comme si vous étiez toujours connecté, jusqu’à ce que vous effaciez le cache de votre navigateur.", "cannotlogoutnow-title": "Impossible de se déconnecter maintenant", "cannotlogoutnow-text": "La déconnexion n’est pas possible en utilisant $1.", "welcomeuser": "Bienvenue, $1 !", - "welcomecreation-msg": "Votre compte a été créé.\nVous pouvez modifier [[Special:Preferences|vos préférences pour {{SITENAME}}]] si vous le souhaitez.", + "welcomecreation-msg": "Votre compte a été créé.\nVous pouvez modifier [[Special:Preferences|vos préférences]] pour {{SITENAME}} si vous le souhaitez.", "yourname": "Nom d’utilisateur :", "userlogin-yourname": "Nom d’utilisateur", "userlogin-yourname-ph": "Entrez votre nom d’utilisateur", @@ -585,7 +587,7 @@ "createacct-benefit-body3": "{{PLURAL:$1|contributeur récent|contributeurs récents}}", "badretype": "Les mots de passe que vous avez saisis ne correspondent pas.", "usernameinprogress": "Une création de compte pour ce nom d’utilisateur est déjà en cours.\nVeuillez patienter.", - "userexists": "Nom d’utilisateur entré déjà utilisé.\nVeuillez choisir un nom différent.", + "userexists": "Le nom d’utilisateur saisi est déjà utilisé.\nVeuillez choisir un nom différent.", "loginerror": "Erreur de connexion", "createacct-error": "Erreur lors de la création du compte", "createaccounterror": "Impossible de créer le compte : $1", @@ -600,7 +602,7 @@ "nosuchuser": "L’utilisateur « $1 » n’existe pas.\nLes noms d’utilisateur sont sensibles à la casse.\nVérifiez l’orthographe, ou [[Special:CreateAccount|créez un nouveau compte]].", "nosuchusershort": "Il n’y a pas de contributeur avec le nom « $1 ».\nVeuillez vérifier l’orthographe.", "nouserspecified": "Vous devez saisir un nom d’utilisateur.", - "login-userblocked": "Cet utilisateur est bloqué. Connexion non autorisée.", + "login-userblocked": "{{GENDER:$1|Cet utilisateur|Cette utilisatrice}} est bloqué{{GENDER:$1||e}}. La connexion n’est pas autorisée.", "wrongpassword": "Le mot de passe est incorrect.\nVeuillez essayer à nouveau.", "wrongpasswordempty": "Vous n’avez entré aucun mot de passe.\nVeuillez essayer à nouveau.", "passwordtooshort": "Votre mot de passe doit contenir au moins $1 caractère{{PLURAL:$1||s}}.", @@ -611,9 +613,9 @@ "mailmypassword": "Réinitialiser le mot de passe", "passwordremindertitle": "Nouveau mot de passe temporaire pour {{SITENAME}}", "passwordremindertext": "Quelqu’un (probablement vous, ayant l’adresse IP $1) a demandé un nouveau mot de\npasse pour {{SITENAME}} ($4). Un mot de passe temporaire pour l’utilisateur\n« $2 » a été créé et est « $3 ». Si cela était votre intention,\nvous devrez vous connecter et choisir un nouveau mot de passe.\nVotre mot de passe temporaire expirera dans $5 jour{{PLURAL:$5||s}}.\n\nSi vous n’êtes pas l’auteur de cette demande, ou si vous vous souvenez à présent de\nvotre mot de passe et ne souhaitez plus en changer, vous pouvez ignorer ce message\net continuer à utiliser votre ancien mot de passe.", - "noemail": "Aucune adresse de courriel n’a été enregistrée pour l'utilisateur « $1 ».", + "noemail": "Aucune adresse de courriel n’a été enregistrée pour l’utilisat{{GENDER:$1|eur|rice}} « $1 ».", "noemailcreate": "Vous devez fournir une adresse de courriel valide", - "passwordsent": "Un nouveau mot de passe a été envoyé à l’adresse de courriel de l’utilisateur « $1 ».\nVeuillez vous reconnecter après l’avoir reçu.", + "passwordsent": "Un nouveau mot de passe a été envoyé à l’adresse de courriel de l’utilisat{{GENDER:$1|eur|rice}} « $1 ».\nVeuillez vous reconnecter après l’avoir reçu.", "blocked-mailpassword": "Votre adresse IP est bloquée en modification. Pour éviter les abus, il n’est pas autorisé d’utiliser la récupération de mot de passe à partir de cette adresse IP.", "eauthentsent": "Un courriel de confirmation a été envoyé à l’adresse indiquée.\nAvant qu’un autre courriel ne soit envoyé à ce compte, vous devrez suivre les instructions du courriel et confirmer que le compte est bien le vôtre.", "throttled-mailpassword": "Un courriel de réinitialisation de votre mot de passe a déjà été envoyé durant {{PLURAL:$1|la dernière heure|les $1 dernières heures}}. \nAfin d’éviter les abus, un seul courriel de réinitialisation de votre mot de passe sera envoyé par {{PLURAL:$1|heure|intervalle de $1 heures}}.", @@ -623,7 +625,7 @@ "emailnotauthenticated": "Votre adresse de courriel n’est pas encore confirmée.\nAucun courriel ne sera envoyé pour chacune des fonctions suivantes.", "noemailprefs": "Indiquez une adresse de courriel dans vos préférences pour utiliser ces fonctions.", "emailconfirmlink": "Confirmez votre adresse de courriel", - "invalidemailaddress": "Cette adresse courriel ne peut pas être acceptée car son format paraît incorrect.\nEntrez une adresse bien formatée ou laissez ce champ vide.", + "invalidemailaddress": "Cette adresse courriel ne peut pas être acceptée car son format paraît incorrect.\nEntrez une adresse correctement formatée ou laissez ce champ vide.", "cannotchangeemail": "Les adresses de courriel des comptes ne peuvent pas être modifiées sur ce wiki.", "emaildisabled": "Ce site ne peut pas envoyer de courriels.", "accountcreated": "Compte créé", @@ -678,12 +680,12 @@ "botpasswords-updated-title": "Mot de passe de robots mis à jour", "botpasswords-updated-body": "Le mot de passe pour le robot « $1 » de l'utilisateur « $2 » a été mis à jour.", "botpasswords-deleted-title": "Mot de passe de robots supprimé", - "botpasswords-deleted-body": "Le mot de passe pour le robot « $1 » de l'utilisateur « $2 » a été supprimé.", + "botpasswords-deleted-body": "Le mot de passe pour le robot « $1 » de l'{{GENDER:$2|utilisateur|utilisatrice}} « $2 » a été supprimé.", "botpasswords-newpassword": "Le nouveau mot de passe pour se connecter à $1 est $2. Veuillez l’enregistrer pour y faire référence ultérieurement.
(Pour les anciens robots qui nécessitent que le nom fourni à la connexion soit le même que le nom d'utilisateur éventuel, vous pouvez aussi utiliser $3 comme nom d'utilisateur et $4 comme mot de passe).", "botpasswords-no-provider": "BotPasswordsSessionProvider n’est pas disponible.", "botpasswords-restriction-failed": "Les restrictions de mot de passe de robots empêchent cette connexion.", "botpasswords-invalid-name": "Le nom d’utilisateur spécifié ne contient pas de séparateur de mot de passe de robots (« $1 »).", - "botpasswords-not-exist": "L’utilisateur « $1 » n’a pas le mot de passe de robots intitulé « $2 ».", + "botpasswords-not-exist": "L’{{GENDER:$1|utilisateur|utilisatrice}} « $1 » n’a pas de mot de passe de robots intitulé « $2 ».", "resetpass_forbidden": "Les mots de passe ne peuvent pas être changés", "resetpass_forbidden-reason": "Les mots de passe ne peuvent pas être modifiés : $1", "resetpass-no-info": "Vous devez être connecté pour avoir accès directement à cette page.", @@ -1188,7 +1190,7 @@ "gender-unknown": "Lorsqu’il fera mention de vous, le logiciel utilisera des mots de genre neutre, quand c’est possible", "gender-male": "Il modifie des pages du wiki", "gender-female": "Elle modifie des pages du wiki", - "prefs-help-gender": "Définir cette préférence est facultatif.\nLe logiciel utilise la valeur pour s’adresser à vous ou pour vous mentionner aux autres en utilisant le bon genre grammatical.\nCette information sera publique.", + "prefs-help-gender": "La définition de cette préférence est facultative.\nLe logiciel utilise cette valeur pour s’adresser à vous ou pour faire mention de vous aux autres en utilisant le bon genre grammatical.\nCette information sera publique.", "email": "Courriel", "prefs-help-realname": "Le vrai nom est facultatif.\nS’il est fourni, il sera utilisé pour vous attribuer vos contributions.", "prefs-help-email": "L'adresse de courriel est facultative, mais elle est nécessaire pour réinitialiser votre mot de passe, si vous veniez à l'oublier.", @@ -1440,6 +1442,7 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (voir aussi la [[Special:NewPages|liste des nouvelles pages]]).", "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Lister", + "rcfilters-tag-remove": "Supprimer « $1 »", "rcfilters-legend-heading": "Liste des abréviations :", "rcfilters-other-review-tools": "Autres outils de relecture", "rcfilters-group-results-by-page": "Grouper les résultats par page", @@ -1452,6 +1455,7 @@ "rcfilters-hours-title": "Dernières heures", "rcfilters-days-show-days": "$1 {{PLURAL:$1|jour|jours}}", "rcfilters-days-show-hours": "$1 {{PLURAL:$1|heure|heures}}", + "rcfilters-highlighted-filters-list": "Mis en évidence : $1", "rcfilters-quickfilters": "Filtres sauvegardés", "rcfilters-quickfilters-placeholder-title": "Aucun lien n’a encore été sauvegardé", "rcfilters-quickfilters-placeholder-description": "Pour sauvegarder la configuration de vos filtres pour la réutiliser ultérieurement, cliquez sur l’icône des raccourcis dans la zone des filtres actifs, ci-dessous.", @@ -1474,14 +1478,14 @@ "rcfilters-empty-filter": "Aucun filtre actif. Toutes les contributions sont affichées.", "rcfilters-filterlist-title": "Filtres", "rcfilters-filterlist-whatsthis": "Comment ça marche ?", - "rcfilters-filterlist-feedbacklink": "Fournir un commentaire sur les nouveaux filtres (en bêta)", + "rcfilters-filterlist-feedbacklink": "Nous dire ce que vous pensez de ces (nouveaux) outils de filtrage", "rcfilters-highlightbutton-title": "Mettre en valeur les résultats", "rcfilters-highlightmenu-title": "Choisir une couleur", "rcfilters-highlightmenu-help": "Sélectionner une couleur pour mettre en évidence cette propriété", "rcfilters-filterlist-noresults": "Aucun filtre trouvé", "rcfilters-noresults-conflict": "Aucun résultat trouvé car les critères de recherche sont en conflit", "rcfilters-state-message-subset": "Ce filtre n'a aucun effet, parce que ses résultats sont inclus dans ceux de la recherche suivante, {{PLURAL:$2|filtre plus étendu|filtres plus étendus}} (essayez la mise en forme pour le différencier): $1", - "rcfilters-state-message-fullcoverage": "Sélectionner tous les filtres dans un groupe est la même chose que d'en sélectionner aucun, aussi ce filtre n'a aucun effet. Le groupe comprend: $1", + "rcfilters-state-message-fullcoverage": "Sélectionner tous les filtres dans ce groupe est la même chose que de n’en sélectionner aucun, aussi ce filtre n’a aucun effet. Le groupe comprend : $1", "rcfilters-filtergroup-authorship": "Paternité des contributions", "rcfilters-filter-editsbyself-label": "Modifications faites par vous", "rcfilters-filter-editsbyself-description": "Vos propres contributions.", @@ -1493,11 +1497,11 @@ "rcfilters-filter-user-experience-level-unregistered-label": "Non connecté", "rcfilters-filter-user-experience-level-unregistered-description": "Éditeurs qui ne sont pas connectés.", "rcfilters-filter-user-experience-level-newcomer-label": "Nouveaux arrivants", - "rcfilters-filter-user-experience-level-newcomer-description": "Editeurs connectés avec moins de 10 modifications et 4 jours d’activité.", + "rcfilters-filter-user-experience-level-newcomer-description": "Éditeurs connectés avec moins de 10 modifications et 4 jours d’activité.", "rcfilters-filter-user-experience-level-learner-label": "Apprentis", - "rcfilters-filter-user-experience-level-learner-description": "Editeurs connectés dont l'expérience se situe entre « Nouveaux arrivants » et « Utilisateurs expérimentés ».", + "rcfilters-filter-user-experience-level-learner-description": "Éditeurs connectés dont l’expérience se situe entre « Nouveaux arrivants » et « Utilisateurs expérimentés ».", "rcfilters-filter-user-experience-level-experienced-label": "Utilisateurs expérimentés", - "rcfilters-filter-user-experience-level-experienced-description": "Editeurs connectés avec plus de 500 modifications et 30 jours d'activité.", + "rcfilters-filter-user-experience-level-experienced-description": "Éditeurs connectés avec plus de 500 modifications et 30 jours d’activité.", "rcfilters-filtergroup-automated": "Contributions automatisées", "rcfilters-filter-bots-label": "Robot", "rcfilters-filter-bots-description": "Modifications faites par des outils automatisés.", @@ -1520,6 +1524,11 @@ "rcfilters-filter-watchlist-watchednew-description": "Changements sur les pages de la liste de suivi que vous n'avez pas consultées depuis que ces modifications ont été faites.", "rcfilters-filter-watchlist-notwatched-label": "Absent de la liste de suivi", "rcfilters-filter-watchlist-notwatched-description": "Tout sauf des modifications de pages de la liste de suivi.", + "rcfilters-filtergroup-watchlistactivity": "Activité sur la liste de suivi", + "rcfilters-filter-watchlistactivity-unseen-label": "Modifications non-visibles", + "rcfilters-filter-watchlistactivity-unseen-description": "Modifications sur les pages que vous n’avez pas visitées depuis.", + "rcfilters-filter-watchlistactivity-seen-label": "Voir les modifications", + "rcfilters-filter-watchlistactivity-seen-description": "Modifications sur les pages que vous avez visitées depuis.", "rcfilters-filtergroup-changetype": "Type de modification", "rcfilters-filter-pageedits-label": "Modifications de page", "rcfilters-filter-pageedits-description": "Modifications du contenu du wiki, des discussions, des descriptions des catégories…", @@ -1549,6 +1558,9 @@ "rcfilters-liveupdates-button": "Mises à jour en direct", "rcfilters-liveupdates-button-title-on": "Désactiver les mises à jour à chaud", "rcfilters-liveupdates-button-title-off": "Afficher les nouveaux changements dès qu'ils se produisent", + "rcfilters-watchlist-markseen-button": "Marquer toutes les modifications comme vues", + "rcfilters-watchlist-edit-watchlist-button": "Modifier votre liste de pages suivies", + "rcfilters-watchlist-showupdated": "Les modifications faites aux pages que vous n’avez pas visitées depuis qu’elles ont été modifiées sont en gras, avec des balises unies.", "rcnotefrom": "Ci-dessous {{PLURAL:$5|la modification effectuée|les modifications effectuées}} depuis le $3, $4 (affichées jusqu’à $1).", "rclistfromreset": "Réinitialiser la sélection de la date", "rclistfrom": "Afficher les nouvelles modifications depuis le $3 à $2", @@ -1842,7 +1854,7 @@ "filehist-datetime": "Date et heure", "filehist-thumb": "Vignette", "filehist-thumbtext": "Vignette pour la version du $1", - "filehist-nothumb": "Pas de miniature", + "filehist-nothumb": "Aucune miniature", "filehist-user": "Utilisateur", "filehist-dimensions": "Dimensions", "filehist-filesize": "Taille du fichier", @@ -2236,7 +2248,7 @@ "unwatchthispage": "Ne plus suivre", "notanarticle": "Ce n'est pas une page de contenu", "notvisiblerev": "La dernière version relue par un utilisateur différent, a été supprimée", - "watchlist-details": "{{PLURAL:$1|$1 page|$1 pages}} dans votre liste de suivi, sans compter les pages de discussion.", + "watchlist-details": "{{PLURAL:$1|$1 page est|$1 pages sont}} dans votre liste de suivi (plus les pages de discussion).", "wlheader-enotif": "La notification par courriel est activée.", "wlheader-showupdated": "Les pages qui ont été modifiées depuis votre dernière visite sont affichées en gras.", "wlnote": "Ci-dessous {{PLURAL:$1|figure la dernière modification effectuée|figurent les $1 dernières modifications effectuées}} durant {{PLURAL:$2|la dernière heure|les $2 dernières heures}}, jusqu'au $3, $4.", @@ -2781,15 +2793,15 @@ "tooltip-pt-watchlist": "Une liste des pages dont vous suivez les modifications", "tooltip-pt-mycontris": "La liste de {{GENDER:|vos}} contributions", "tooltip-pt-anoncontribs": "Une liste des modifications effectuées depuis cette adresse IP", - "tooltip-pt-login": "Il est recommandé de vous identifier ; ce n'est cependant pas obligatoire.", + "tooltip-pt-login": "Sans être obligatoire, il est recommandé de vous connecter.", "tooltip-pt-login-private": "Vous devez vous connecter pour utiliser ce wiki", "tooltip-pt-logout": "Se déconnecter", - "tooltip-pt-createaccount": "Il vous est conseillé de créer un compte et de vous connecter ; cependant, ce n’est pas obligatoire", + "tooltip-pt-createaccount": "Sans être obligatoire, il vous est conseillé de créer un compte utilisateur pour vous connecter", "tooltip-ca-talk": "Discussion au sujet de cette page de contenu", "tooltip-ca-edit": "Modifier le wikicode", "tooltip-ca-addsection": "Commencer une nouvelle section", "tooltip-ca-viewsource": "Cette page est protégée.\nVous pouvez toutefois en visualiser la source.", - "tooltip-ca-history": "Les versions passées de cette page (avec leurs contributeurs)", + "tooltip-ca-history": "Historique des versions de cette page", "tooltip-ca-protect": "Protéger cette page", "tooltip-ca-unprotect": "Changer la protection de cette page", "tooltip-ca-delete": "Supprimer cette page", @@ -2798,16 +2810,16 @@ "tooltip-ca-watch": "Ajouter cette page à votre liste de suivi", "tooltip-ca-unwatch": "Retirer cette page de votre liste de suivi", "tooltip-search": "Rechercher dans {{SITENAME}}", - "tooltip-search-go": "Aller vers une page portant exactement ce nom si elle existe.", + "tooltip-search-go": "Accédez à une page du même nom si elle existe", "tooltip-search-fulltext": "Rechercher les pages comportant ce texte.", - "tooltip-p-logo": "Page principale", + "tooltip-p-logo": "Accueil général", "tooltip-n-mainpage": "Visiter la page d'accueil du site", - "tooltip-n-mainpage-description": "Aller à l'accueil", - "tooltip-n-portal": "À propos du projet, ce que vous pouvez faire, où trouver des informations", - "tooltip-n-currentevents": "Trouver les informations de fond sur l'actualité du moment", + "tooltip-n-mainpage-description": "Accueil général", + "tooltip-n-portal": "À propos du projet, ce que vous pouvez faire, où trouver les informations", + "tooltip-n-currentevents": "Trouver plus d'informations sur les actualités en cours", "tooltip-n-recentchanges": "Liste des modifications récentes sur le wiki", "tooltip-n-randompage": "Afficher une page au hasard", - "tooltip-n-help": "Aide", + "tooltip-n-help": "Accès à l'aide", "tooltip-t-whatlinkshere": "Liste des pages liées qui pointent sur celle-ci", "tooltip-t-recentchangeslinked": "Liste des modifications récentes des pages appelées par celle-ci", "tooltip-feed-rss": "Flux RSS pour cette page", @@ -2815,11 +2827,11 @@ "tooltip-t-contributions": "Voir la liste des contributions de {{GENDER:$1|cet utilisateur|cette utilisatrice}}", "tooltip-t-emailuser": "Envoyer un courriel à {{GENDER:$1|cet utilisateur|cette utilisatrice}}", "tooltip-t-info": "Plus d’information sur cette page", - "tooltip-t-upload": "Téléverser des fichiers", + "tooltip-t-upload": "Importer des fichiers", "tooltip-t-specialpages": "Liste de toutes les pages spéciales", "tooltip-t-print": "Version imprimable de cette page", "tooltip-t-permalink": "Adresse permanente de cette version de la page", - "tooltip-ca-nstab-main": "Voir la page de contenu", + "tooltip-ca-nstab-main": "Voir le contenu de la page", "tooltip-ca-nstab-user": "Voir la page utilisateur", "tooltip-ca-nstab-media": "Voir la page du média", "tooltip-ca-nstab-special": "Ceci est une page spéciale, et elle ne peut pas être modifiée.", @@ -2894,13 +2906,13 @@ "pageinfo-content-model-change": "modifier", "pageinfo-robot-policy": "Indexation par robots", "pageinfo-robot-index": "Autorisée", - "pageinfo-robot-noindex": "Interdite", + "pageinfo-robot-noindex": "Non autorisé", "pageinfo-watchers": "Nombre de contributeurs ayant la page dans leur liste de suivi", "pageinfo-visiting-watchers": "Nombre d’observateurs de la page ayant consulté les modifications récentes de la page", "pageinfo-few-watchers": "Moins de $1 {{PLURAL:$1|observateur|observateurs}}", "pageinfo-few-visiting-watchers": "Il peut ou non y avoir un observateur regardant les modifications récentes", "pageinfo-redirects-name": "Nombre de redirections vers cette page", - "pageinfo-subpages-name": "Sous-pages de cette page", + "pageinfo-subpages-name": "Nombre de sous-pages de cette page", "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|redirection|redirections}}; $3 {{PLURAL:$3|non-redirection|non-redirections}})", "pageinfo-firstuser": "Créateur de la page", "pageinfo-firsttime": "Date de création de la page", @@ -2914,7 +2926,7 @@ "pageinfo-hidden-categories": "{{PLURAL:$1|Catégorie cachée|Catégories cachées}} ($1)", "pageinfo-templates": "{{PLURAL:$1|Modèle inclu|Modèles inclus}} ($1)", "pageinfo-transclusions": "{{PLURAL:$1|Page dans laquelle|Pages dans lesquelles}} cette page est incluse ($1)", - "pageinfo-toolboxlink": "Information sur la page", + "pageinfo-toolboxlink": "Plus d’informations", "pageinfo-redirectsto": "Rediriger vers", "pageinfo-redirectsto-info": "info", "pageinfo-contentpage": "Comptée comme page de contenu", @@ -2945,7 +2957,7 @@ "log-show-hide-patrol": "$1 l’historique des relectures", "log-show-hide-tag": "$1 le journal des balises", "confirm-markpatrolled-button": "Valider", - "confirm-markpatrolled-top": "Marquer la révision de $3 de $2 comme prise en compte ?", + "confirm-markpatrolled-top": "Marquer la révision $3 de $2 comme relue ?", "deletedrevision": "Ancienne version $1 supprimée", "filedeleteerror-short": "Erreur lors de la suppression du fichier : $1", "filedeleteerror-long": "Des erreurs ont été rencontrées lors de la suppression du fichier :\n\n$1", @@ -2962,7 +2974,7 @@ "widthheightpage": "$1 × $2, $3 page{{PLURAL:$3||s}}", "file-info": "Taille du fichier : $1, type MIME : $2", "file-info-size": "$1 × $2 pixels, taille du fichier : $3, type MIME : $4", - "file-info-size-pages": "$1 × $2 pixels, taille de fichier : $3, type MIME : $4, $5 page{{PLURAL:$5||s}}", + "file-info-size-pages": "$1 × $2 pixels, taille du fichier : $3, type MIME: $4, $5 page{{PLURAL:$5||s}}", "file-nohires": "Pas de plus haute résolution disponible.", "svg-long-desc": "Fichier SVG, résolution de $1 × $2 pixels, taille : $3", "svg-long-desc-animated": "Fichier SVG animé, résolution $1 × $2 pixels, taille du fichier : $3", @@ -3879,7 +3891,7 @@ "feedback-thanks": "Merci ! Votre commentaire a été publié sur la page « [$2 $1] ».", "feedback-thanks-title": "Merci !", "feedback-useragent": "Agent utilisateur :", - "searchsuggest-search": "Rechercher sur {{SITENAME}}", + "searchsuggest-search": "Rechercher dans {{SITENAME}}", "searchsuggest-containing": "contenant...", "api-error-badtoken": "Erreur interne : mauvais « jeton ».", "api-error-emptypage": "Création de pages vide n'est pas autorisée.", diff --git a/languages/i18n/gl.json b/languages/i18n/gl.json index 0278da51cf..16e369ec4f 100644 --- a/languages/i18n/gl.json +++ b/languages/i18n/gl.json @@ -1312,6 +1312,7 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (véxase tamén a [[Special:NewPages|lista de páxinas novas]])", "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Mostrar", + "rcfilters-tag-remove": "Eliminar '$1'", "rcfilters-legend-heading": "Lista de abreviaturas:", "rcfilters-other-review-tools": "Outras ferramentas de revisión", "rcfilters-group-results-by-page": "Agrupar resultados por páxina", @@ -1324,6 +1325,7 @@ "rcfilters-hours-title": "Últimas horas", "rcfilters-days-show-days": "$1 {{PLURAL:$1|día|días}}", "rcfilters-days-show-hours": "$1 {{PLURAL:$1|hora|horas}}", + "rcfilters-highlighted-filters-list": "Destacados: $1", "rcfilters-quickfilters": "Filtros gardados", "rcfilters-quickfilters-placeholder-title": "Aínda non se gardou ningunha ligazón", "rcfilters-quickfilters-placeholder-description": "Para gardar a configuración dos seus filtros e reutilizala máis tarde, prema na icona do marcador na área de Filtro activo que se atopa a abaixo.", @@ -1353,7 +1355,7 @@ "rcfilters-filterlist-noresults": "Non se atoparon filtros", "rcfilters-noresults-conflict": "Non se atoparon resultados porque os criterios de busca están en conflito.", "rcfilters-state-message-subset": "Este filtro non ten efecto porque os seus resultados están incluídos dentro da seguinte procura, {{PLURAL:$2|filtro máis amplo|filtros máis amplos}} (probe a destacalo para distinguilo): $1", - "rcfilters-state-message-fullcoverage": "Seleccionar tódolos filtros dun grupo é o mesmo que non seleccionar ningún, polo que este filtro non ten efecto. O grupo inclúeː $1", + "rcfilters-state-message-fullcoverage": "Seleccionar tódolos filtros neste grupo é o mesmo que non seleccionar ningún, polo que este filtro non ten efecto. O grupo inclúeː $1", "rcfilters-filtergroup-authorship": "Autoría da contribución", "rcfilters-filter-editsbyself-label": "Cambios seus", "rcfilters-filter-editsbyself-description": "As súas contribucións", @@ -1392,6 +1394,11 @@ "rcfilters-filter-watchlist-watchednew-description": "Cambios nas páxinas da súa lista de vixilancia que non visitou dende que se produciron os cambios.", "rcfilters-filter-watchlist-notwatched-label": "Ausente da lista de vixilancia", "rcfilters-filter-watchlist-notwatched-description": "Todos, excepto os cambios nas páxinas da súa lista de vixilancia.", + "rcfilters-filtergroup-watchlistactivity": "Actividade da lista de vixiancia", + "rcfilters-filter-watchlistactivity-unseen-label": "Cambios aínda non vistos", + "rcfilters-filter-watchlistactivity-unseen-description": "Cambios en páxinas que non visitaches dende que se produciron os cambios.", + "rcfilters-filter-watchlistactivity-seen-label": "Cambios vistos", + "rcfilters-filter-watchlistactivity-seen-description": "Cambios en páxinas visitadas dende que se produciron os cambios.", "rcfilters-filtergroup-changetype": "Tipo de cambio", "rcfilters-filter-pageedits-label": "Edicións de páxinas", "rcfilters-filter-pageedits-description": "Edicións do contido da wiki, de conversas, de descricións de categorías...", @@ -1421,6 +1428,7 @@ "rcfilters-liveupdates-button": "Actualizacións instantáneas", "rcfilters-liveupdates-button-title-on": "Desactivar actualizacións en directo", "rcfilters-liveupdates-button-title-off": "Amosar os novos cambios en canto se produzan", + "rcfilters-watchlist-markSeen-button": "Marcar tódolos cambios como xa vistos", "rcnotefrom": "A continuación {{PLURAL:$5|móstrase o cambio feito|móstranse os cambios feitos}} desde o $3 ás $4 (móstranse $1 como máximo).", "rclistfromreset": "Reinicializar a selección da data", "rclistfrom": "Mostrar os cambios novos desde o $3 ás $2", diff --git a/languages/i18n/gor.json b/languages/i18n/gor.json index b1c388006b..8390907363 100644 --- a/languages/i18n/gor.json +++ b/languages/i18n/gor.json @@ -480,27 +480,37 @@ "minoredit": "Utiye biloli'o ngo'idi", "watchthis": "Dahayi halaman botiye", "savearticle": "Tahuwa halaman", + "preview": "Bilohipo", "showpreview": "Bilohi pratayang", "showdiff": "Popobilohe u loboli'a", "anoneditwarning": "Mopo'eela: Yi'o diipo tilumuwo. Alamat IP olemu ma ontonga lo tawu daata wonu yi'o momoli'o. Wonu Yi'o [$1 tumuwoto log] meyalo [$2 mohutu akun], u biloli'umu madiatribusikan ode tanggulumu, wolo huna uweewoliyo.", + "blockedtext": "'''Tanggulumu meyalo alamat IP ulemu ma diblokir.'''\n\nBlokir pilohutu lo $1.\nAlasani u yilohiliyo de'uwito ''$2''.\n\n* Blokir tilumula lonto: $8\n* Blokir mopulita to: $6\n* Sasaran pemblokiran: $7\n\nYi'o mowali mohubungi $1 meyalo [[{{MediaWiki:Grouppage-sysop}}|pengurus uweewo]] motombilu lo masalah botiye.\n\nYi'o ja mowali mopohuna fitur ''molawo surel ode pengguna botiye'' ngopohiya yi'o ma lopotuwoto alamat surel u sah to[[Special:Preferences|preferensi akun]] wawu yi'o didu diblokir mopomake.\n\nAlamat IP ulemu de'uwito $3, wawu ID pemblokiran de'uwito $5.\nWuduwa mayi tala tuwawu meyalo oluwo lo habari botiye to timi'idu yiyintu monto olemu.", "loginreqlink": "tumuwoto log", "newarticletext": "Yi'o lodudu'a wumbuta ode halaman diya'a. \nWonu mohutu halaman botiye, ketik tuwango halaman to kotak to tibawa botiye (bilohi [$1 halaman wubodu] ode habari wumbutiyo). \nWonu Yi'o ja sangaja tilumuwota ode halaman botiye, kutiya tombol mohuwalingo.", + "anontalkpagetext": "---\nUtiya halaman lo'iya ode pengguna anonim ta diipo lohutu akun, meyalo tita ta ja lopohuna.\nSababu uwito, ami lopohuna alamat IP u pilomakeliyo molapu oliyo.\nAlamat IP odito mowali pomake lotawu ngolo lota pe'eenta.\nWonu yi'o pengguna anonim wawu lorasa lo'iya lotawu ja mopiyohu ode olemu, toduwolo [[Special:CreateAccount|create a account]] meyalo [[Special:UserLogin|log in]] alihu mopelehiya u molilingu wolo pengguna anonim to sa'ati tuwawu.", "noarticletext": "Sa'ati botiye diya'a teks to halaman botiye.\nYi'o mowali [[Special:Search/{{PAGENAME}}|mololohu judul halaman botiye]] to halaman-halaman uweewo, [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} mololohu log a'ayita], meyalo [{{fullurl:{{FULLPAGENAME}}|action=edit}} mohutu halaman botiye].", "noarticletext-nopermission": "!Sa'ati botiye diya'a teks to halaman boptiye.\nYi'o mowali [[Special:Search/{{PAGENAME}}|mololohu judul halaman botiye]] to halaman-halaman uweewo, meyalo [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} mololohu log a'ayita], dabo Yi'o ja o ijin mohutu halaman botiye.", "userpage-userdoesnotexist-view": "Ta ohu'uwo \"$1\" diyaalu to daputari.", + "clearyourcache": "Tuladu:Yilapato tilahu, yi'o musti lumawode to cache browser web bolo mo'oonto u yiloboli'a.\n* Firefox/Safari: Tahan Shift to'u yiloduto Reload, meyalo woduta Ctrl-F5 meyalo Ctrl-R (⌘-R di Mac)\n* Google Chrome: Woduta Ctrl-Shift-R (⌘-Shift-R di Mac)\n* Internet Explorer: Woduta Ctrl to'u yiloduto Refresh, meyalo woduta Ctrl-F5\n* Opera: Pergi ke Menu → Settings (Opera → Preferences di Mac) lalu ke Privacy & security → Clear browsing data → Cached images and files.", + "previewnote": "Elayi utiye bo mopobilohu.\nU biloli'umu diipo tilahu!", + "continue-editing": "Ntali ode area momoli'o", "editing": "Momoli'o $1", "creating": "Mohutu $1", "editingsection": "Momoli'o $1 (tayadu)", "yourdiff": "Hihede", "templatesused": "{{PLURAL:$1|Template}} pilopohuna to halaman botiye:", + "templatesusedpreview": "{{PLURAL:$1|Template|Templates}} pilomake to'u mopobilohu.", "template-protected": "(he dahalo)", "template-semiprotected": "(dahalo-ngowa)", "hiddencategories": "Halaman botiye woluwo anggota {{PLURAL:$1|1 kategori wanto-wanto'o $1}}:", + "permissionserrors": "Tilala haku momu'o", "permissionserrorstext-withaction": "Yi'o ja haku akses $2, sababu {{PLURAL:$1|alasani}} botiya:", - "moveddeleted-notice": "Halaman botiye ma yiluluto.\nSebagai referensi, botiya log piloluluta wawu piloheyiya halaman botiye.", + "recreate-moveddeleted-warn": "Mopo'ota: Yi'o lohutu ulangi hlaman u ma yiluluto.\n\nPopotimbangiyapo huhutumu botiye delo mowali poturusiyolo.\nBotiya log piloluluta wawu piloheyiya halaman botiye.", + "moveddeleted-notice": "Halaman botiye ma yiluluto.\nLog piloluluta, pilodahawa wawu piloheyiya halaman botiye woluwo to tibawa pohutu referensi.", "postedit-confirmation-saved": "Biloli'umu ma tilahu.", "edit-already-exists": "Ja mowali mohutu halaman bohu. Ma woluwo.", "content-model-wikitext": "tuladu wiki", + "undo-failure": "U biloli'a botiya ja mowali pohuwalingo sababu lodulehe ta lomoli'o.", "viewpagelogs": "Bilohi log lo halaman botiye", "currentrev-asof": "Biloli'o pulitiyo to $1", "revisionasof": "Biloli'o to $1", @@ -510,6 +520,7 @@ "currentrevisionlink": "Biloli'o pulitiyo", "cur": "mst", "last": "diipo", + "histlegend": "Tulawota diff: Tuwoti kasi lo radio loboli'a u mopobandingiyo wawu woduta enter meyalo tombol to tibawa.
\nLegenda: ({{int:cur}}) = hihede wolo biloli'a pulitiyo, ({{int:last}}) = hihede wolo u biloli'a muloolo, {{int:minoreditletter}} = bilili'o ngo'idi.", "history-fieldset-title": "Lolohe u biloli'o", "histfirst": "mohihewo da'a", "histlast": "bohu da'a", @@ -517,19 +528,24 @@ "history-feed-description": "Riwayati bilolio to halaman wiki botiye", "history-feed-item-nocomment": "$1 to $2", "rev-delundel": "popobilohe/wanto'a", + "mergelog": "Log mopohimbunguwo", "history-title": "Riwayati lo'u loboli'a lonto \"$1\"", "difference-title": "$1 hihede revisi", "lineno": "Baarisi $1:", "compareselectedversions": "Popotadenga u tilulawoto", "editundo": "pohuwalinga", + "diff-empty": "(Diya'a hihedeliyo)", "diff-multi-sameuser": "({{PLURAL:$1|$1 revisi wolota}} pilohutu lo tawu ngota ja pilopobilohu)", + "diff-multi-otherusers": "({{PLURAL:$1|Tuwawu lopo'opiyohu wolota|$1 lopo'opiyohu wolota}} pilohutu {{PLURAL:$2|ngota ta ohu'uwo uweewo|$2 ta ohu'uwo}} ja pilopobilohu)", "searchresults": "U yilotapu", "searchresults-title": "U yilotapu lololohe \"$1\"", "prevn": "{{PLURAL:$1|$1}} to'udiipo", "nextn": "{{PLURAL:$1|$1}} lapatiyoma'o", + "prevn-title": "To'u diipo $1 {{PLURAL:$1|hasili}}", "nextn-title": "$1 {{PLURAL:$1|hasili}}lapatiyoma'o", "shown-title": "Popobilohe $1 {{PLURAL:$1|haasili}} per halaman", "viewprevnext": "Bilohi ($1 {{int:pipe-separator}} $2) ($3)", + "searchmenu-exists": "Woluwo halaman otanggula \"[[:$1]]\" to wiki botiye. {{PLURAL: $2|0=|Bilohi olo u yilotapu uweewo.}}", "searchmenu-new": "mohutu halaman \"[[:$1]]\" to wiki botiya! {{PLURAL:$2|0=Bilohi halaman u yilotapu yilolohumu.|Bilohi hasili u yilotapu to'u yilolohu}}", "searchprofile-articles": "Tuwango halaman", "searchprofile-images": "Multimedia", @@ -540,6 +556,7 @@ "searchprofile-everything-tooltip": "Mololohe nga'amila tuwango situs (wolo halaman polo'iyalo)", "searchprofile-advanced-tooltip": "Mololohu to huwali lo tanggulo biasa", "search-result-size": "$1 ({{PLURAL:$2|1 tahe|$2 tahe}})", + "search-result-category-size": "{{PLURAL:$1|1 anggota|$1 anggota}} ({{PLURAL:$2|1 subkategori|$2 subkategori}}, {{PLURAL:$3|1 berkas|$3 berkas}})", "search-redirect": "(pilobale lonto $1)", "search-section": "(tayadu) $1", "search-file-match": "(sama lo tuwango berkas)", @@ -558,10 +575,15 @@ "default": "kakali", "yourrealname": "Tanggula banari", "yourlanguage": "Bahasa", + "group-bot": "Bot", + "group-sysop": "Pengurus", "grouppage-bot": "{{ns:project}}:Bot", + "grouppage-sysop": "{{ns:project}}:Pengurus", "right-writeapi": "Mopohuna API moluladu", "newuserlogpage": "Log ta ohu'uwo bohu", + "rightslog": "Log haku ta ohu'uwo", "action-edit": "boli'a halaman botiye", + "action-createaccount": "mohutu akun lo ta ohu'uwo botiya", "enhancedrc-history": "riwayati", "recentchanges": "Boheli loboli'a mola", "recentchanges-legend": "Tulawotolo boheli loboli'a mola", @@ -575,6 +597,7 @@ "recentchanges-label-plusminus": "Loboli'o tu'udu halaman boti to delomo bita", "recentchanges-legend-heading": "Keterangan:", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (bilohi olo [[Special:NewPages|list of new pages]])", + "rcnotefrom": "To tibawa botiye {{PLURAL:$5|loboli'a}} anggadu $3, $4 (popobilohe sambe $1 loboli'a).", "rclistfrom": "Popobilohe u loboli'a lonto $2, $3", "rcshowhideminor": "$1 biloli'o ngo'idi", "rcshowhideminor-show": "Popobilohe", @@ -588,6 +611,7 @@ "rcshowhideanons": "$1 biloli'o lo tawu weewo", "rcshowhideanons-show": "Popobilohe", "rcshowhideanons-hide": "Wanto'a", + "rcshowhidepatr": "$1 biloli'o terpatroli", "rcshowhidemine": "$1 biloli'u'u", "rcshowhidemine-show": "Popobilohe", "rcshowhidemine-hide": "Wanto'a", @@ -602,6 +626,7 @@ "rc-change-size-new": "$1 {{PLURAL:$1|bita}} lapato biloli'o", "rc-old-title": "bohuliyo pilohutu odelo \"$1\"", "recentchangeslinked": "Loboli'a wayitiyo", + "recentchangeslinked-feed": "Loboli'a wayitiyo", "recentchangeslinked-toolbox": "Loboli'o wayitiyo", "recentchangeslinked-title": "Loboli'a a'aayita wolo $1", "recentchangeslinked-summary": "Utiye daputari lo'ubawa to halaman a'ayita wolo halaman tuwawu (meyalo tayadu to kategori tuwawu)\nHalaman to [[Special:Watchlist|he'awasiyamu]] ontonga cetakiya mohulodu.", @@ -613,6 +638,7 @@ "license": "Lisensi", "license-header": "Tayadu lisensi", "imgfile": "berkas", + "listfiles": "Daputari berkas", "file-anchor-link": "Berkas", "filehist": "Riwaayati lo berkas", "filehist-help": "Klik to tanggal/wakutu momilohe berkas to saa'ati botiye.", @@ -621,19 +647,24 @@ "filehist-datetime": "Tanggal/Wakutu", "filehist-thumb": "Kiki'o", "filehist-thumbtext": "u kiki'o versi lo $1", + "filehist-nothumb": "Diya'a gambari kikino", "filehist-user": "Ta ohu'uwo", "filehist-dimensions": "Dimensi", "filehist-comment": "Lo'iya", "imagelinks": "Berkas u pilopohuna", "linkstoimage": "{{PLURAL:$1|halaman lapatiyoma'o}} o wumbuta ode berkas botiye:", + "linkstoimage-more": "Limbata lo $1 {{PLURAL:$1|halaman}} o wumbuta ode berkas botiye.\nDaputari botiya mopobilohu {{PLURAL:$1|wumbuta halaman bungaliyo}} ode berkas botiye wamba'o.\nWoluwo [[Special:WhatLinksHere/$2|daputari ganapu]] u sadi-sadiya.", "nolinkstoimage": "Diya'a halaman u owumbuta ode berkas botiye", + "linkstoimage-redirect": "$1 (mopobale berkas) $2", "sharedupload-desc-here": "Berkas botiye lonto $1 wawu hepohunaliyo to poroyek uweewo.\nDeskripsi lonto [$2 halaman deskripsiliyo] woluwo to tibawa botiya.", "filepage-nofile": "Diya'a berkas lo tanggula botiye", "upload-disallowed-here": "Yi'o diila mowali modeehe berkas botiye", "randompage": "Halaman totonula", "statistics": "Statistik", + "double-redirect-fixer": "Revisi mopobale", "nbytes": "$1 {{PLURAL:$1|bita}}", "nmembers": "$1 {{PLURAL:$1|tuwango}}", + "prefixindex": "Nga'amila halaman woluwo awalan", "listusers": "Daputari ta ohu'uwo", "newpages": "Halaman bohu", "move": "Heyiya", @@ -642,23 +673,37 @@ "booksources": "Bungo buku", "booksources-search-legend": "Lolohe to bungo lo buku", "booksources-search": "Lolohe", + "specialloguserlabel": "Ta ohu'uwo", + "speciallogtitlelabel": "Target (judul meyalo{{ns:ta ohu'uwo}}:tanggulo ta ohu'uwo ode ta ohu'uwo)", "log": "Log", "all-logs-page": "Nga'amila log publik", + "alllogstext": "Himbunguwa nga'amila log u sadi-sadiya to {{SITENAME}}.\nYi'o mowali mopo'okikingo bibilohu lo'u molulawota tayadu log, tanggulo ta ohu'uwo (sensitif kapitalisasi), meyalo judul halaman (sensitif kapitalisasi olo).", + "logempty": "Ja yilotapu entri log u mohumayawa.", "allpages": "Nga'amila halaman", "allarticles": "Nga'amila halaman", "allpagessubmit": "Ntali", + "allpages-hide-redirects": "Wanto'a mopobale", "categories": "Kategori", + "listgrouprights-members": "(daputari lo anggota)", + "emailuser": "Lawola surel ta ohu'uwo botiye", "usermessage-editor": "Sistem lo tahuli", "watchlist": "U he'awasiyalo", "mywatchlist": "Daputari he'awasiyalo", + "watchlistfor2": "Ode $1 $2", "watch": "Dahayi", "unwatch": "Batali mongawasi", + "watchlist-details": "{{PLURAL:$1|$1 halaman}} to dputari he'awasiyamu, ja wayitiyo halaman lo'iya.", + "wlheader-showupdated": "Halaman ma loboli'a to pulitiyo nila'omu mowali bilohela to bold.", + "wlnote": "To tibawa botiye {{PLURAL:$1|loboli'a|$1 loboli'a}} pulitiyo to delomo {{PLURAL:$2|jam|$2 jam}}, per $3, $4.", "wlshowlast": "Popobilohe $1 jam $2 dulahe pulitiyo", + "watchlist-options": "Tulawoto daputari he'awasiyalo", + "enotif_reset": "Tuwoti nga'amila halaman ma nila'o", "dellogpage": "Log loluluto", "rollbacklink": "wuwalinga", "rollbacklinkcount": "pohuwalinga $1 {{PLURAL:$1|biloli'o}}", "protectlogpage": "Log mopo'aamani", "protectedarticle": "modaha \"[[$1]]\"", + "modifiedarticleprotection": "momoli'a lenggota lo dudaha ode \"[[$1]]\"", "protect-default": "Poluliya nga'amila ta ohu'uwo", "restriction-edit": "Boli'a", "restriction-move": "Heyiya", @@ -669,9 +714,11 @@ "tooltip-namespace_association": "Centang halaman botiye u mopowayito huwali lo tanggulo lo'iyawa meyalo subjek u a'ayita wolo huwali lo tanggulo u tilulawoto.", "blanknamespace": "(Bungaliyo)", "contributions": "Kontribusi {{GENDER:$1|Ta ohu'uwo}}", + "contributions-title": "Kontribusi ta ohu'uwo ode $1", "mycontris": "Kontribusi", "anoncontribs": "Kontribusi", "contribsub2": "Ode {{GENDER:$3|$1}} ($2)", + "nocontribs": "Diya'a u loboli'a mohumayawa lo kriteria botiya.", "uctop": "(masatiya)", "month": "Lonto hulalo (wawu to'udiipo)", "year": "Lonto taawunu (wawu to'udiipo)", @@ -702,14 +749,18 @@ "whatlinkshere-hideimages": "$1 berkas wumbuta", "whatlinkshere-filters": "U'ayahu", "ipboptions": "2 jam:2 hours,1 huyi:1 day,3 huyi:3 days,1 diminggu:1 week,2 diminggu:2 weeks,1 hula:1 month,3 hula:3 months,6 hula:6 months,1 taawunu:1 year,layito:infinite", + "infiniteblock": "ja to enggade", "blocklink": "tangguwalo", "contribslink": "kontrib", "blocklogpage": "Bubuli log", "blocklogentry": "momubulo [[$1]] wolo pulito wakutu $2 $3", + "reblock-logentry": "momoli'o blokir [[$1]] wolo wakutu pulitiyo $2 $3", + "block-log-flags-nocreate": "mohutu akun pilateyaliyo", "proxyblocker": "Bubulo proxi", "movelogpage": "Log piloheyiya", "export": "Ekspor halaman", "thumbnail-more": "Po'odamanga", + "importlogpage": "Log impor", "tooltip-pt-userpage": "Halaman {{GENDER:|Yi'o ta ohu'uwo}}", "tooltip-pt-mytalk": "Halaman {{GENDER:|posilitamu}}", "tooltip-pt-preferences": "Preferensi{{GENDER:|Yi'o}}", @@ -743,6 +794,7 @@ "tooltip-t-recentchangeslinked": "Boheli loboli'a mola to halaman owumbuta ode halaman botiye", "tooltip-feed-atom": "Paalo atom ode halaman botiya", "tooltip-t-contributions": "Daputari kontribusi {{GENDER:$1|ta ohu'uwo botiye}}", + "tooltip-t-emailuser": "Lawola surel ode {{GENDER:$1|ta ohu'uwo botiye}}", "tooltip-t-upload": "Detohe berkas-berkas", "tooltip-t-specialpages": "Daputari nga'amila halaman spesial", "tooltip-t-print": "Persi ciletaki halaman botiye", @@ -755,6 +807,7 @@ "tooltip-ca-nstab-mediawiki": "Bilohi tahuli lo sistem", "tooltip-ca-nstab-template": "Bilohi template", "tooltip-ca-nstab-category": "Bilohi kategori halaman", + "tooltip-minoredit": "Tuwoti utiye biloli'a kiki'o", "tooltip-save": "Tahuwa u biloli'umu", "tooltip-preview": "Bilohipo u biloli'umu. Popopasiya utiye to'u diipo molahu.", "tooltip-diff": "Bilohi u loboli'o pilohutumu", @@ -766,21 +819,43 @@ "simpleantispam-label": "Momarakisa anti-spam.\nkekeya tuwangalo!", "pageinfo-title": "Informasi untuk \"$1\"", "pageinfo-header-basic": "Bungo lo habari", + "pageinfo-header-edits": "Riwayati lomoli'o", "pageinfo-header-restrictions": "Dudaha halaman", + "pageinfo-header-properties": "Properti halaman", "pageinfo-display-title": "Judul bibilohu", + "pageinfo-default-sort": "Tunuhe u'unti kakali", "pageinfo-length": "Haya'o halaman (to delomo bita)", "pageinfo-article-id": "ID Halaman", "pageinfo-language": "Bahasa tuwango halaman", + "pageinfo-content-model": "Model tuwango halaman", "pageinfo-robot-policy": "Pengindeksan monto robot", + "pageinfo-robot-index": "Mowali (lo'otapu ijini)", + "pageinfo-robot-noindex": "Ja mowali", "pageinfo-watchers": "Jumula lo ta hemongawasi halaman", + "pageinfo-few-watchers": "I'ilangi to'u $1 {{PLURAL:$1|pengunjung}}", "pageinfo-redirects-name": "Jumula u pilobale ode halaman botiya", + "pageinfo-subpages-name": "Nomoro meyalo tayadu halaman botiye", + "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|mopobale}}; $3 {{PLURAL:$3|non-mopobale}})", + "pageinfo-firstuser": "Ta lohutu halaman", "pageinfo-firsttime": "Tanggal pilohutuwa halaman", + "pageinfo-lastuser": "Ta lolulade pulitiyo", + "pageinfo-lasttime": "Tanggal lomoli'a pulitiyo", + "pageinfo-edits": "Jumula nga'amila u biloli'o", + "pageinfo-authors": "Jumula nga'amila ta hepolulade hihihede", "pageinfo-recent-edits": "Jumula boheli biloli'a mola (to delomo $1 pulitiyo)", + "pageinfo-recent-authors": "Jumula lo ta hepolulade bohu hihihede", + "pageinfo-magic-words": "{{PLURAL:$1|kata}} ajaib ($1)", + "pageinfo-hidden-categories": "{{PLURAL:$1|dalala}} wanto-wanto'o ($1)", + "pageinfo-templates": "{{PLURAL:$1|templat}} yang ditransklusi ($1)", "pageinfo-toolboxlink": "Halaman habari", + "pageinfo-contentpage": "Yirekeni odelo halaman konten", "pageinfo-contentpage-yes": "Jo", + "patrol-log-page": "Log patroli", "previousdiff": "← Biloli'o to'udiipo", "nextdiff": "Biloli'o lapatiyoma'o →", + "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|halaman}}", "file-info-size": "$1 x $2 piksel, tu'udu berkas:$3, MIME tipe: $4", + "file-info-size-pages": "$1 × $2 piksel, ukuran berkas: $3, tipe MIME: $4, $5 {{PLURAL:$5|halaman}}", "file-nohires": "Diya'a resolusi damango", "svg-long-desc": "Berkas SGV, nominal $1 x $2 piksel, damango berkas:$3", "show-big-image": "Berkas asli", @@ -804,9 +879,20 @@ "exif-orientation-1": "Normal", "namespacesall": "nga'amila", "monthsall": "nga'amila", + "imgmultipagenext": "halaman wumbutiyo", + "imgmultigo": "Ntali", + "imgmultigoto": "Ntali ode halaman $1", + "watchlisttools-clear": "Luluta daputari he'awasiyalo", + "watchlisttools-view": "Popobilohe u loboli'a wayitiyo", + "watchlisttools-edit": "Popobilohe wawu boli'a daputari he'awasiyalo", + "watchlisttools-raw": "Boli'a daputari he'awasiyalo meenggo", "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|bisala]])", + "redirect": "Lopobale payu ID berkas, ta ohu'uwo, halaman, revisi, meyalo log", + "redirect-summary": "Halaman istimewa botiye loheyi ode berkas (odelo tanggulo berkasliyo), halaman (sesuai ID revisinya), meyalo halaman pengguna (sesuai ID numerik penggunanya). Penggunaan: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], meyalo[[{{#Special:Redirect}}/user/101]].", "redirect-submit": "Ntali", "redirect-lookup": "Yilolohu", + "redirect-value": "Niai", + "redirect-user": "ID lo ta ohu'uwo", "redirect-page": "ID Halaman", "redirect-revision": "Halaman biloli'o", "redirect-file": "Tanggulo berkas", @@ -814,14 +900,20 @@ "tag-filter": "[[Special:Tags|Tag]]filter:", "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Tag}}]]: $2)", "tags-active-yes": "Jo", + "tags-active-no": "De'e", + "tags-hitcount": "$1 {{PLURAL:$1|boli'o|loboli'a}}", "logentry-delete-delete": "$1 {{GENDER:$2|moluluto}}halaman $3", + "logentry-delete-restore": "$1 {{GENDER:$2|mopowuwalingo}} halaman $3 ($4)", + "logentry-delete-revision": "$1 {{GENDER:$2|momoli'o}} bibilohu {{PLURAL:$5|$5 revisi}} to halaman $3: $4", "revdelete-content-hid": "tuwango yilanto'o", "logentry-move-move": "$1 {{GENDER:$2|moheyi}} halaman $3 ode $4", "logentry-move-move-noredirect": "$1 {{GENDER:$2|loheyi}} halaman $3 ode $4 ja lohutu pengalihan", "logentry-move-move_redir": "$1 {{GENDER:$2|loheyi}} halaman $3 ode $4 lodeehu pengalihan", + "logentry-patrol-patrol-auto": "$1 otomatis {{GENDER:$2|tuwoti}} biloli'o $4 lonto halaman $3 pilatroli", "logentry-newusers-create": "Ta ohu'uwo akun $1 {{GENDER:$2|mohutu}}", "logentry-newusers-autocreate": "Akun $1 {{GENDER:$2|pilohutu}} otomatis", "logentry-upload-upload": "$1 {{GENDER:$2|mengunggah}} $3", + "logentry-upload-overwrite": "$1 {{GENDER:$2|mopodetohu}} versi bohu lo $3", "searchsuggest-search": "Lolohe {{SITENAME}}", "duration-days": "$1 {{PLURAL:$1|huyi}}", "randomrootpage": "Halaman totonulalo" diff --git a/languages/i18n/gu.json b/languages/i18n/gu.json index 6bfcda3a22..27758c3a78 100644 --- a/languages/i18n/gu.json +++ b/languages/i18n/gu.json @@ -30,7 +30,8 @@ "Matma Rex", "Bhatakati aatma", "YmKavishwar", - "Kevin Kovadia" + "Kevin Kovadia", + "Drashti4" ] }, "tog-underline": "કડીઓની નીચે લીટી (અંડરલાઇન):", @@ -48,6 +49,8 @@ "tog-watchdefault": "હું ફેરફાર કરૂં તે પાનાં અને ફાઇલ્સ મારી ધ્યાનસૂચિમાં ઉમેરો", "tog-watchmoves": "હું ખસેડું તે પાનાં અને ફાઇલ્સ મારી ધ્યાનસૂચિમાં ઉમેરો", "tog-watchdeletion": "હું દૂર કરું તે પાનાં અને ફાઇલ્સ મારી ધ્યાનસૂચિમાં ઉમેરો", + "tog-watchuploads": "મારી જોવાનીસૂચિ પર અપલોડ કરેલી નવી ફાઇલોને ઉમેરો", + "tog-watchrollback": "પૃષ્ઠોને ઉમેરો જ્યાં મેં મારી જોવાની સૂચિમાં રોલબેક કર્યું છે", "tog-minordefault": "બધા નવા ફેરફારો નાના તરીકે માર્ક કરો.", "tog-previewontop": "ફેરફાર પેટી પહેલાં પૂર્વાલોકન દર્શાવો", "tog-previewonfirst": "પ્રથમ ફેરફાર વખતે પૂર્વાલોકન બતાવો", @@ -58,12 +61,14 @@ "tog-shownumberswatching": "ધ્યાન રાખતા સભ્યોની સંખ્યા બતાવો", "tog-oldsig": "તમારા હાલના હસ્તાક્ષર:", "tog-fancysig": "હસ્તાક્ષરનો વિકિલખાણ તરીકે ઉપયોગ કરો (સ્વચાલિત કડી વગર)", - "tog-uselivepreview": "જીવંત પૂર્વદર્શન વાપરો", + "tog-uselivepreview": "પૃષ્ઠ ફરીથી લોડ કર્યા વગર પૂર્વાવલોકનો બતાવો", "tog-forceeditsummary": "કોરો 'ફેરફાર સારાંશ' ઉમેરતા પહેલા મને ચેતવો", "tog-watchlisthideown": "'મારી ધ્યાનસુચી'માં મે કરેલા ફેરફારો છુપાવો", "tog-watchlisthidebots": "ધ્યાનસુચીમાં બોટ દ્વારા થયેલા ફેરફાર સંતાડો.", "tog-watchlisthideminor": "'મારી ધ્યાનસુચી'માં નાનાં ફેરફારો છુપાવો", "tog-watchlisthideliu": "લોગ થયેલા સભ્ય દ્વારા કરવામાં આવેલ ફેરફાર ધ્યાનસુચીમાં છુપાવો.", + "tog-watchlistreloadautomatically": "જ્યારેપણ ફિલ્ટર બદલાઈ જાય ત્યારે આપમેળે જોવાની સૂચિ ફરીથી લોડ કરો (JavaScript આવશ્યક છે)", + "tog-watchlistunwatchlinks": "દૃશ્યયાદી પ્રવેશોમાં સીધી નિષ્ક્રિય/દૃશ્ય લિંક્સ ઉમેરો (ટૉગલ કાર્યક્ષમતા માટે આવશ્યક JavaScript)", "tog-watchlisthideanons": "અજાણ્યા સભ્ય દ્વારા થયેલ ફેરફાર મારી ધ્યાનસુચીમાં છુપાવો", "tog-watchlisthidepatrolled": "સુરક્ષા કાજે કરવામાં આવેલ ફેરફાર મારી ધ્યાનસુચીમાં છુપાવો", "tog-watchlisthidecategorization": "પાનાંઓનું વર્ગીકરણ છુપાવો", @@ -143,6 +148,8 @@ "october-date": "ઓક્ટોબર $1", "november-date": "નવેમ્બર $1", "december-date": "ડિસેમ્બર $1", + "period-am": "સવારે", + "period-pm": "સાંજે", "pagecategories": "{{PLURAL:$1|શ્રેણી|શ્રેણીઓ}}", "category_header": "શ્રેણી \"$1\" ના પાનાં", "subcategories": "ઉપશ્રેણીઓ", @@ -210,6 +217,8 @@ "talk": "ચર્ચા", "views": "દેખાવ", "toolbox": "સાધનો", + "tool-link-userrights": "બદલો {{GENDER:$1|સભ્ય}} સમુહો", + "tool-link-userrights-readonly": "દેખાડો {{GENDER:$1|સભ્ય}} સમુહો", "tool-link-emailuser": "આ {{GENDER:$1|સભ્ય}}ને ઇમેલ કરો", "imagepage": "ફાઇલનું પાનું જુઓ", "mediawikipage": "સંદેશનું પાનું જુઓ", @@ -365,6 +374,8 @@ "virus-scanfailed": "સ્કેન અસફળ (code $1)", "virus-unknownscanner": "અજાણ્યું એન્ટીવાઇરસ:", "logouttext": "'''તમે સફળતાપૂર્વક બહાર નીકળી ચૂક્યા છો.'''\n\nધ્યાન રાખો કે જ્યાં સુધી તમે તમારા બ્રાઉઝરની કૅશ સાફ નહીં કરો ત્યાં સુધી કેટલાક પાનાં તમે પ્રવેશ કરેલો છે તેમ બતાવશે.", + "cannotlogoutnow-title": "હવે લૉગ આઉટ કરી શકાતું નથી", + "cannotlogoutnow-text": "$1 નો ઉપયોગ કરતી વખતે લૉગ આઉટ શક્ય નથી.", "welcomeuser": "સુસ્વાગતમ્, $1!", "welcomecreation-msg": "તમારૂં ખાતું ખુલી ગયું છે.\nતમારી [[Special:Preferences|{{SITENAME}} પસંદ]] બદલવાનું ભૂલશો નહીં.", "yourname": "સભ્ય નામ:", @@ -380,6 +391,11 @@ "createacct-yourpasswordagain-ph": "પાસવર્ડ ફરીથી દાખલ કરો", "userlogin-remembermypassword": "મને પ્રવેશિત રાખો", "userlogin-signwithsecure": "સલામત જોડાણ વાપરો", + "cannotlogin-title": "લૉગ ઇન કરી શકતા નથી", + "cannotlogin-text": "લોગ ઇન કરવું શક્ય નથી.", + "cannotloginnow-title": "હવે લૉગ ઇન કરી શકાતું નથી", + "cannotloginnow-text": "$1 નો ઉપયોગ કરતી વખતે લૉગ ઇન શક્ય નથી.", + "cannotcreateaccount-title": "ખાતું ખોલી શકાય તેમ નથી", "yourdomainname": "તમારૂં ડોમેઇન:", "password-change-forbidden": "તમે આ વિકિ માટે પાસવર્ડ્સ બદલી શકતા નથી.", "externaldberror": "પ્રમાણભૂતતાની ત્રુટી આવી અથવા તમારૂ બહારનુ ખાતું અપડેટ કરવાનો અધિકાર તમને નથી.", @@ -1129,7 +1145,7 @@ "recentchangeslinked-feed": "આની સાથે જોડાયેલા ફેરફાર", "recentchangeslinked-toolbox": "આની સાથે જોડાયેલા ફેરફાર", "recentchangeslinked-title": "\"$1\" ને લગતા ફેરફારો", - "recentchangeslinked-summary": "આ એવા ફેરફારોની યાદી છે જે આ ચોક્કસ પાના (કે શ્રેણીનાં સભ્ય પાનાઓ) સાથે જોડાયેલા પાનાઓમાં તાજેતરમાં કરવામાં આવ્યા હોય.\n[[Special:Watchlist|તમારી ધ્યાનસૂચિમાં]] હોય તેવા પાનાં '''ઘાટા અક્ષર'''માં વર્ણવ્યાં છે.", + "recentchangeslinked-summary": "આ એવા ફેરફારોની યાદી છે જે આ ચોક્કસ પાના (કે શ્રેણીનાં સભ્ય પાનાઓ) સાથે જોડાયેલા પાનાઓમાં તાજેતરમાં કરવામાં આવ્યા હોય.\n[[Special:Watchlist|તમારી ધ્યાનસૂચિમાં]] હોય તેવા પાનાં ઘાટા અક્ષરમાં વર્ણવ્યાં છે.", "recentchangeslinked-page": "પાનાનું નામ:", "recentchangeslinked-to": "આને બદલે આપેલા પાનાં સાથે જોડાયેલા લેખોમાં થયેલા ફેરફારો શોધો", "upload": "ફાઇલ ચડાવો", @@ -1501,7 +1517,7 @@ "apisandbox-examples": "ઉદાહરણો", "apisandbox-results": "પરિણામો", "booksources": "પુસ્તક સ્રોત", - "booksources-search-legend": "પુસ્તક સ્રોત માટે શોધો", + "booksources-search-legend": "પુસ્તક સ્રોત શોધો", "booksources-isbn": "આઇએસબીએન:", "booksources-search": "શોધ", "booksources-text": "નીચે દર્શાવેલ યાદી એ કડીઓ બતાવે છે જેઓ નવા અને જૂના પુસ્તકો વેચે છે , અને તમે માંગેલ વસ્તુ સંબંધિ વધુ મહિતી પણ ધરાવી શકે છે.", @@ -1665,7 +1681,7 @@ "deletecomment": "કારણ:", "deleteotherreason": "અન્ય/વધારાનું કારણ:", "deletereasonotherlist": "અન્ય કારણ", - "deletereason-dropdown": "* દૂર કરવાના સામાન્ય કારણો\n** સ્પામ\n** ભાંગફોડીયા પ્રવૃત્તિ\n** પ્રકાશનાધિકાર ભંગ \n** લેખકની વિનંતી\n** ભાંગેલ વળાંક", + "deletereason-dropdown": "* દૂર કરવાના સામાન્ય કારણો\n** સ્પામ\n** ભાંગફોડીયા પ્રવૃત્તિ\n** પ્રકાશનાધિકાર ભંગ \n** લેખકની વિનંતી\n** ભાંગેલ દિશાનિર્દેશ", "delete-edit-reasonlist": "ભુંસવાનું કારણ બદલો.", "delete-toobig": "આ પાનાના ફેરફારોનો ઇતિહાસ ખૂબ લાંબો છે , $1 {{PLURAL:$1|ફેરફાર|ફેરફારો}}થી પણ વધારે.\n{{SITENAME}}ને અક્સ્માતે ખોરવાતું અટકાવવા આવા પાનાને હટાવવા પર પ્રતિબંધ છે.", "delete-warning-toobig": "આ પાનાનો ઇતિહાસ ઘણો લાંબો છે લગભગ $1 {{PLURAL:$1|ફેરફાર|ફેરફારો}}.\nતેને ભૂંસતા {{SITENAME}}ના માહિતીસંચને લાગતા કામકાજ પર અસર થૈ શકે છે;\nસંભાળ પૂર્વક આગળ વધો.\n\n\nDeleting it may disrupt database operations of {{SITENAME}};", @@ -2739,6 +2755,7 @@ "version-libraries-library": "લાઇબ્રેરી", "version-libraries-version": "આવૃત્તિ", "redirect": "ફાઇલ, સભ્ય, પાનું, આવૃત્તિ, અથવા લૉગ ઓળખ વડે દિશાનિર્દેશન", + "redirect-summary": "આ વિશિષ્ટ પૃષ્ઠ ફાઇલને (ફાઇલ નામ આપવામાં આવે છે), એક પૃષ્ઠ (પુનરાવર્તન ID અથવા પૃષ્ઠ ID આપવામાં આવે છે), વપરાશકર્તા પૃષ્ઠ (એક આંકડાકીય વપરાશકર્તા ID આપવામાં આવે છે), અથવા લોગ એન્ટ્રી (લોગ ID ને આપવામાં આવે છે) પર પુનર્નિર્દેશન કરે છે. વપરાશ:[[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]], અથવા [[{{#Special:Redirect}}/logid/186]].", "redirect-submit": "જાઓ", "redirect-lookup": "જુઓ:", "redirect-value": "કિંમત:", diff --git a/languages/i18n/hak.json b/languages/i18n/hak.json index a46eebc7e6..63517be788 100644 --- a/languages/i18n/hak.json +++ b/languages/i18n/hak.json @@ -494,7 +494,7 @@ "showpreview": "Chán-sṳ yi-lám", "showdiff": "Chán-sṳ chhâ-phe̍t", "anoneditwarning": "Kín-ko: Ngì hàn-m̀ tên-ngi̍p. Ngì ke IP vi-chí voi ki-liu̍k chhai liá ya̍p ke phiên-siá li̍t-sṳ́ tú. Na-he ngì [$1 tên-ngi̍p] fe̍t-chá [$2 khôi fu-thèu], ngì ke phiên-siá voi hién-sṳ ngì ke yung-fu miàng-sṳ, pin-chhiâ yû khì-thâ ke yù-tiám.", - "anonpreviewwarning": "“警告:汝還吂登入。汝嘅IP地址將會記錄在邇頁嘅編輯歷史中”", + "anonpreviewwarning": "'''Kín-ko:''' Ngì hàn-màng tên-ngi̍p. Ngì ke IP vi-chí voi ki-liu̍k chhai liá-ya̍p ke siû-kói li̍t-sṳ́ tú.", "missingsummary": "'''提示:''' 汝無提供一隻編寫摘要。假使汝再次單擊「$1」,汝嘅編寫將毋帶編寫摘要保存。", "missingcommenttext": "請在下背輸入評論。", "missingcommentheader": "'''提示:''' 汝還無為邇條評論提供一隻標題。假使汝再次單擊「$1」,您嘅編寫將毋帶標題保存。", @@ -527,6 +527,7 @@ "updated": "(Yí-kîn kiên-sîn)", "note": "Chu-yi:", "previewnote": "'''請記到邇單淨係預覽。'''\n汝嘅更改還吂保存!", + "continue-editing": "Ki-siu̍k siû-kói", "previewconflict": "邇隻預覽展示矣上片文字編寫區肚嘅內容。其將在汝選擇保存後出現。", "session_fail_preview": "'''好抱歉!由於部份數據遺失,𠊎兜無辦法處理汝嘅編寫。'''\n請試多一擺。\n係講還係失敗,請[[Special:UserLogout|登出]]後重新登入。", "session_fail_preview_html": "'''Chṳ̂n tui-put-hí! Phu-fun chṳ̂-liau yí-kîn yì-sṳt, mò-fap chhú-lî ngì-ke phiên-siá.'''\n\n'''Kó-yèn liá-ke phiên-siá ko-chhàng mò-yû mun-thì, chhiáng chai-chhṳ yit-chhṳ. Yìn-yèn yû mun-thì, chhiáng tên-chhut heu chhùng-sîn tên-ngi̍p yit-chhṳ.'''", diff --git a/languages/i18n/he.json b/languages/i18n/he.json index 1a99d33370..b4f87e539b 100644 --- a/languages/i18n/he.json +++ b/languages/i18n/he.json @@ -1310,6 +1310,7 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ({{GENDER:|ראה|ראי|ראו}} גם את [[Special:NewPages|רשימת הדפים החדשים]])", "recentchanges-legend-plusminus": "(±123)", "recentchanges-submit": "הצגה", + "rcfilters-tag-remove": "הסרת \"$1\"", "rcfilters-legend-heading": "רשימת קיצורים:", "rcfilters-other-review-tools": "כלי סקירה אחרים", "rcfilters-group-results-by-page": "חלוקה התוצאות לקבוצות לפי דף", @@ -1322,6 +1323,7 @@ "rcfilters-hours-title": "שעות אחרונות", "rcfilters-days-show-days": "{{PLURAL:$1|יום אחד|יומיים|$1 ימים}}", "rcfilters-days-show-hours": "{{PLURAL:$1|שעה אחת|שעתיים|$1 שעות}}", + "rcfilters-highlighted-filters-list": "מודגש: $1", "rcfilters-quickfilters": "מסננים שמורים", "rcfilters-quickfilters-placeholder-title": "טרם נשמרו קישורים", "rcfilters-quickfilters-placeholder-description": "כדי לשמור את הגדרות המסננים שלך ולהשתמש בהן מאוחר יותר, יש ללחוץ על סמל הסימנייה באזור המסנן הפעיל להלן.", @@ -1344,7 +1346,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": "בחירת צבע להדגשת מאפיין זה", @@ -1390,6 +1392,11 @@ "rcfilters-filter-watchlist-watchednew-description": "שינויים לדפים ברשימת המעקב שלא ביקרת בהם מאז שבוצעו השינויים.", "rcfilters-filter-watchlist-notwatched-label": "לא ברשימת המעקב", "rcfilters-filter-watchlist-notwatched-description": "הכל מלבד שינויים לדפים ברשימת המעקב שלך.", + "rcfilters-filtergroup-watchlistactivity": "פעילות ברשימת המעקב", + "rcfilters-filter-watchlistactivity-unseen-label": "שינויים שלא נצפו", + "rcfilters-filter-watchlistactivity-unseen-description": "שינויים בדפים שלא ביקרת בהם מאז שבוצעו השינויים.", + "rcfilters-filter-watchlistactivity-seen-label": "שינויים שנצפו", + "rcfilters-filter-watchlistactivity-seen-description": "שינויים בדפים שביקרת בהם מאז שבוצעו השינויים.", "rcfilters-filtergroup-changetype": "סוג השינויים", "rcfilters-filter-pageedits-label": "עריכות דפים", "rcfilters-filter-pageedits-description": "עריכות של תוכן ויקי, של דיונים, של תיאורי קטגוריות…", @@ -1419,6 +1426,9 @@ "rcfilters-liveupdates-button": "עדכונים חיים", "rcfilters-liveupdates-button-title-on": "כיבוי העדכונים החיים", "rcfilters-liveupdates-button-title-off": "הצגת שינויים חדשים כשהם מתרחשים", + "rcfilters-watchlist-markseen-button": "סימון כל השינויים כאילו נצפו", + "rcfilters-watchlist-edit-watchlist-button": "עריכת רשימת הדפים במעקב שלך", + "rcfilters-watchlist-showupdated": "שינויים בדפים שלא ביקרת בהם מאז ביצוע השינויים מופיעים בכתב מודגש, ומודגשים בצבע.", "rcnotefrom": "להלן {{PLURAL:$5|השינוי שבוצע|השינויים שבוצעו}} מאז $3, $4 (מוצגים עד $1).", "rclistfromreset": "איפוס בחירת התאריך", "rclistfrom": "הצגת שינויים חדשים החל מ־$2, $3", @@ -2105,7 +2115,7 @@ "unwatchthispage": "הפסקת המעקב אחרי דף זה", "notanarticle": "זהו אינו דף תוכן", "notvisiblerev": "הגרסה האחרונה שנוצרה על־ידי משתמש אחר נמחקה", - "watchlist-details": "ברשימת המעקב יש {{PLURAL:$1|דף אחד|$1 דפים}}, כאשר דפי השיחה אינם נספרים בנפרד.", + "watchlist-details": "ברשימת המעקב שלך יש {{PLURAL:$1|דף אחד|$1 דפים}} (ובנוסף להם, דפי שיחה).", "wlheader-enotif": "הודעות דוא\"ל מאופשרות.", "wlheader-showupdated": "דפים שהשתנו מאז ביקורך האחרון בהם מוצגים ב'''הדגשה'''.", "wlnote": "להלן {{PLURAL:$1|השינוי האחרון|$1 השינויים האחרונים}} {{PLURAL:$2|בשעה האחרונה|בשעתיים האחרונות|ב־$2 השעות האחרונות}}, עד $4, $3.", diff --git a/languages/i18n/hi.json b/languages/i18n/hi.json index c33df5a64c..c0950d6ed1 100644 --- a/languages/i18n/hi.json +++ b/languages/i18n/hi.json @@ -1394,14 +1394,14 @@ "rcfilters-empty-filter": "कोई सक्रिय फिल्टर नहीं। सभी योगदान दिखाए गए है।", "rcfilters-filterlist-title": "फिल्टर", "rcfilters-filterlist-whatsthis": "यह कैसे कार्य करता है?", - "rcfilters-filterlist-feedbacklink": "नए (बीटा) फिल्टर पर प्रतिक्रिया दें", + "rcfilters-filterlist-feedbacklink": "हमें बताएं कि आप इन (नये) निस्पंदन औजारों के बारे में क्या सोचते हैं", "rcfilters-highlightbutton-title": "Highlight results", "rcfilters-highlightmenu-title": "रंग चुनें", "rcfilters-highlightmenu-help": "इस गुण को हाइलाइट करने के लिए एक रंग चुनें", "rcfilters-filterlist-noresults": "कोई फिल्टर नहीं पाया", "rcfilters-noresults-conflict": "कोई भी परिणाम नहीं मिला क्योंकि खोज मापदंड संघर्ष में है", "rcfilters-state-message-subset": "इस फिल्टर का कोई प्रभाव नहीं है क्योंकि इसका परिणाम निम्न, व्यापक {{PLURAL: $2 |फ़िल्टर|फिल्टर}} के साथ शामिल है (इसे भेद करने के लिए हाइलाइट करने की कोशिश करें): $1", - "rcfilters-state-message-fullcoverage": "किसी समूह में सभी फ़िल्टर चुनना कोई भी नहीं चुनने के समान है इसलिए इस फ़िल्टर का कोई प्रभाव नहीं है समूह में शामिल हैं: $1", + "rcfilters-state-message-fullcoverage": "किसी समूह में सभी फ़िल्टर चुनना कोई भी नहीं चुनने के समान है, इसलिए इस फ़िल्टर का कोई प्रभाव नहीं है, समूह में शामिल हैं: $1", "rcfilters-filtergroup-authorship": "लेखक योगदान", "rcfilters-filter-editsbyself-label": "आपके द्वारा बदलाव", "rcfilters-filter-editsbyself-description": "आपके अपने योगदान।", @@ -1440,6 +1440,11 @@ "rcfilters-filter-watchlist-watchednew-description": "ध्यानसूची पृष्ठों में किए गए परिवर्तन, जिन आपने परिवर्तनों के बाद से देखा नहीं है।", "rcfilters-filter-watchlist-notwatched-label": "ध्यानसूची में नहीं", "rcfilters-filter-watchlist-notwatched-description": "आपके ध्यानसूची पृष्ठों में परिवर्तन के अलावा सब कुछ", + "rcfilters-filtergroup-watchlistactivity": "ध्यानसूची क्रियाकलाप", + "rcfilters-filter-watchlistactivity-unseen-label": "अनदेखे परिवर्तन", + "rcfilters-filter-watchlistactivity-unseen-description": "उन प्रष्ठों में परिवर्तन जिन की जांच आपने परिवर्तनों के बाद से नहीं की है।", + "rcfilters-filter-watchlistactivity-seen-label": "देखे गए परिवर्तन", + "rcfilters-filter-watchlistactivity-seen-description": "परिवर्तन होने के बाद से आपके द्वारा जांचे गए पृष्ठों में परिवर्तन।", "rcfilters-filtergroup-changetype": "बदलाव के प्रकार:", "rcfilters-filter-pageedits-label": "पृष्ठ संपादन", "rcfilters-filter-pageedits-description": "विकि सामग्री, चर्चा, श्रेणी विवरणों के संपादन ....", @@ -1469,6 +1474,9 @@ "rcfilters-liveupdates-button": "जीवंत अद्यतन", "rcfilters-liveupdates-button-title-on": "जीवंत अद्यतन बंद करें", "rcfilters-liveupdates-button-title-off": "नये परिवर्तन प्रदर्शित करें जैसे ही वे घटित होते हैं", + "rcfilters-watchlist-markseen-button": "देखे गए के रूप में सभी परिवर्तनों को चिह्नित करें", + "rcfilters-watchlist-edit-watchlist-button": "देखे गए पन्नों की सूची को संपादित करें", + "rcfilters-watchlist-showupdated": "उन पन्नों में परिवर्तन जिनपर आप परिवर्तन के बाद से नहीं गए हैं, ठोस चिन्ह के साथ bold दिखाए गए हैं।", "rcnotefrom": "नीचे $2 के बाद से ($1 तक) {{PLURAL:$5|हुआ बदलाव दर्शाया गया है|हुए बदलाव दर्शाए गये हैं}}।", "rclistfromreset": "चुने दिनांक पहले जैसा करें", "rclistfrom": "$3 $2 से नये बदलाव दिखाएँ", diff --git a/languages/i18n/hr.json b/languages/i18n/hr.json index e95ae119e2..2857f4afb2 100644 --- a/languages/i18n/hr.json +++ b/languages/i18n/hr.json @@ -66,13 +66,14 @@ "tog-shownumberswatching": "Prikaži broj suradnika koji prate stranicu (u nedavnim izmjenama, popisu praćenja i samim člancima)", "tog-oldsig": "Vaš postojeći potpis:", "tog-fancysig": "Običan potpis kao wikitekst (bez automatske poveznice)", - "tog-uselivepreview": "Uključi trenutačni pretpregled", + "tog-uselivepreview": "Prikaži trenutačni pretpregled bez ponovnoga učitavanja stranice", "tog-forceeditsummary": "Podsjeti me ako sažetak uređivanja ostavljam praznim", "tog-watchlisthideown": "Sakrij moja uređivanja s popisa praćenja", "tog-watchlisthidebots": "Sakrij uređivanja botova s popisa praćenja", "tog-watchlisthideminor": "Sakrij manje promjene s popisa praćenja", "tog-watchlisthideliu": "Sakrij uređivanja prijavljenih s popisa praćenja", "tog-watchlistreloadautomatically": "Ponovo učitaj popis praćenja kad god dođe do promjene filtra (potreban JavaScript)", + "tog-watchlistunwatchlinks": "Dodaj poveznice za izravno dodavanje/uklanjanje stranica s popisa praćenja (za funkcionalnost mogućnosti potreban je JavaScript)", "tog-watchlisthideanons": "Sakrij uređivanja neprijavljenih s popisa praćenja", "tog-watchlisthidepatrolled": "Sakrij pregledane izmjene u popisu praćenja", "tog-watchlisthidecategorization": "Sakrij kategorizaciju stranica", @@ -415,6 +416,7 @@ "cannotloginnow-title": "Prijava trenutno nije moguća.", "cannotloginnow-text": "Prijava nije moguća tijekom uporabe $1.", "cannotcreateaccount-title": "Nije moguće stvoriti račune", + "cannotcreateaccount-text": "Direktno stvaranje računa nije omogućeno na ovome wikiju.", "yourdomainname": "Vaša domena", "password-change-forbidden": "Ne možete promjeniti zaporku na ovom projektu.", "externaldberror": "Došlo je do pogreške s vanjskom autorizacijom ili Vam nije dopušteno osvježavanje vanjskog suradničkog računa.", @@ -437,9 +439,11 @@ "createacct-email-ph": "Upišite svoju adresu e-pošte", "createacct-another-email-ph": "Upišite adresu e-pošte", "createaccountmail": "Uporabite nasumice odabranu privremenu zaporku i pošaljite ju na navedenu adresu e-pošte", + "createaccountmail-help": "Može se rabiti da se nekome stvori račun bez da se sazna zaporka.", "createacct-realname": "Stvarno ime (neobvezatno)", "createacct-reason": "Razlog", "createacct-reason-ph": "Zašto stvarate drugi račun", + "createacct-reason-help": "Poruka koja se prikazuje u evidenciji stvaranja suradničkih računa", "createacct-submit": "Stvorite svoj suradnički račun", "createacct-another-submit": "Otvori račun", "createacct-continue-submit": "Pritisni za stvaranje računa", @@ -449,6 +453,7 @@ "createacct-benefit-body2": "{{PLURAL:$1|stranica|stranice|stranica}}", "createacct-benefit-body3": "{{PLURAL:$1|nedavni suradnik|nedavnih suradnika}}", "badretype": "Unesene zaporke nisu istovjetne.", + "usernameinprogress": "Stvaranje računa za ovo suradničko ime upravo je u tijeku.\nMolimo, pričekajte.", "userexists": "Uneseno suradničko ime već je u upotrebi.\nUnesite neko drugo ime.", "loginerror": "Pogrješka u prijavi", "createacct-error": "Pogrješka u stvaranju računa", @@ -576,9 +581,11 @@ "changeemail-nochange": "Molimo vas, upišite neku novu adresu e-pošte.", "resettokens": "Ponovo postavljanje tajnoga ključa", "resettokens-text": "Možete ponovo postaviti tajni ključ koji Vam dopušta pristupanje određenim osobnim podatcima povezanim s Vašim ovdje navedenim suradničkim računom.\n\nTrebali bi to načiniti ukoliko ga kojim slučajem priopćite nekome ili ukoliko je Vaš suradnički račun ugrožen.", + "resettokens-no-tokens": "Nema tajnih ključeva za ponovno postavljanje", "resettokens-tokens": "Tajni ključevi:", "resettokens-token-label": "$1 (trenutačna postavka: $2)", "resettokens-watchlist-token": "Tajni ključ za uvoženje u mrežno sjedište (Atom/RSS) [[Special:Watchlist|promjena na stranicama s Vašega popisa praćenih stranica]]", + "resettokens-done": "Ponovno postavljanje tajnih ključeva", "resettokens-resetbutton": "Ponovo postavi odabrane tajne ključeve", "bold_sample": "Podebljani tekst", "bold_tip": "Podebljani tekst", @@ -861,7 +868,7 @@ "mergelogpagetext": "Slijedi popis posljednjih spajanja povijesti stranica.", "history-title": "Povijest izmjena stranice »$1«", "difference-title": "Razlika između inačica stranice »$1«", - "difference-title-multipage": "Razlika između stranica \"$1\" i \"$2\"", + "difference-title-multipage": "Razlika između stranica »$1« i »$2«", "difference-multipage": "(Razlika između stranica)", "lineno": "Redak $1:", "compareselectedversions": "Usporedi odabrane inačice", @@ -905,6 +912,7 @@ "search-interwiki-caption": "Rezultati sa sestrinskih projekata", "search-interwiki-default": "Rezultati s projekta $1:", "search-interwiki-more": "(više)", + "search-interwiki-more-results": "više rezultata", "search-relatedarticle": "Povezano", "searchrelated": "povezano", "searchall": "sve", @@ -955,6 +963,7 @@ "prefs-editing": "Uređivanje", "searchresultshead": "Prikaz rezultata pretrage", "stub-threshold": "Prag za formatiranje poveznice na mrve ($1):", + "stub-threshold-sample-link": "primjer", "stub-threshold-disabled": "Onemogućeno", "recentchangesdays": "Broj dana prikazanih u nedavnim promjenama:", "recentchangesdays-max": "(maksimalno $1 {{PLURAL:$1|dan|dana}})", @@ -996,8 +1005,8 @@ "prefs-registration": "Vrijeme prijave:", "yourrealname": "Pravo ime (nije obvezno)*", "yourlanguage": "Jezik:", - "yourvariant": "Inačica jezika:", - "prefs-help-variant": "Željena varijanta ili pravopis za prikaz stranica ovog wikija.", + "yourvariant": "Jezična inačica sadržaja:", + "prefs-help-variant": "Vaša preferirana inačica ili pravopis za prikaz sadržaja stranica na ovom wikiju.", "yournick": "Vaš nadimak (za potpisivanje)", "prefs-help-signature": "Komentari na stranicama za razgovor trebali bi biti potpisani s \"~~~~\" što će biti pretvoreno u Vaš potpis i datum.", "badsig": "Kôd Vašeg potpisa nije valjan; provjerite HTML tagove.", @@ -1054,6 +1063,9 @@ "userrights-expiry-existing": "Postojeće vrijeme isteka: $3, $2", "userrights-expiry-othertime": "Drugo vrijeme:", "userrights-expiry-options": "1 dan:1 day,1 tjedan:1 week,1 mjesec:1 month,3 mjeseca:3 months,6 mjeseci:6 months,1 godina:1 year", + "userrights-invalid-expiry": "Rok isteka prava iz skupine »$1« nije valjano upisano.", + "userrights-expiry-in-past": "Rok isteka prava iz skupine »$1« zadan je u vremenu koje je proteklo.", + "userrights-cannot-shorten-expiry": "Ne možete ubrzati vrijeme isteka pripadništva skupini »$1«. Prethodno navedeno jedino mogu ubrzati suradnici koji mogu dodjeljivati i uklanjati ovu suradničku skupinu.", "userrights-conflict": "Sukob promjene suradničkih prava! Molimo provjerite i potvrdite svoje promjene.", "group": "Skupina:", "group-user": "Suradnici", @@ -1080,6 +1092,7 @@ "right-createpage": "Stvaranje stranica (stranica koje nisu razgovor)", "right-createtalk": "Stvaranje stranica za razgovor", "right-createaccount": "Stvaranje novog suradničkog računa", + "right-autocreateaccount": "Automatska prijava s vanjskim suradničkim računom", "right-minoredit": "Označavanje izmjene manjom", "right-move": "Premještanje stranica", "right-move-subpages": "Premještanje stranica s njihovim podstranicama", @@ -1143,6 +1156,7 @@ "right-siteadmin": "Zaključavanje i otključavanje baze podataka", "right-override-export-depth": "Izvezi stranice uključujući i povezane stranice do dubine od 5", "right-sendemail": "Slanje e-pošte drugim suradnicima", + "grant-generic": "Snop prava »$1«", "grant-group-email": "Pošalji e-mail", "grant-blockusers": "Blokiraj i odblokiraj korisnike", "grant-createaccount": "Otvori račune", @@ -1231,7 +1245,7 @@ "rcfilters-savedqueries-unsetdefault": "Ukloni kao zadano", "rcfilters-savedqueries-remove": "Ukloni", "rcfilters-savedqueries-new-name-label": "Ime", - "rcfilters-savedqueries-apply-label": "Spremi postavke", + "rcfilters-savedqueries-apply-label": "Stvori filtar", "rcfilters-savedqueries-cancel-label": "Odustani", "rcfilters-savedqueries-add-new-title": "Spremi trenutačne postavke filtera", "rcfilters-restore-default-filters": "Vrati zadane filtre", @@ -1254,9 +1268,9 @@ "rcfilters-filter-editsbyother-label": "Promjene drugih suradnika", "rcfilters-filter-editsbyother-description": "Sve promjene osim Vaših.", "rcfilters-filtergroup-userExpLevel": "Napredna razina (samo za registrirane suradnike)", - "rcfilters-filter-user-experience-level-registered-label": "Prijavljeni", + "rcfilters-filter-user-experience-level-registered-label": "Registrirani", "rcfilters-filter-user-experience-level-registered-description": "Prijavljeni suradnici.", - "rcfilters-filter-user-experience-level-unregistered-label": "Neprijavljeni", + "rcfilters-filter-user-experience-level-unregistered-label": "Neregistrirani", "rcfilters-filter-user-experience-level-unregistered-description": "Suradnici koji nisu prijavljeni.", "rcfilters-filter-user-experience-level-newcomer-label": "Novopridošli", "rcfilters-filter-user-experience-level-newcomer-description": "Registrirani suradnici s manje od 10 uređivanja i 4 dana aktivnosti.", @@ -1265,6 +1279,7 @@ "rcfilters-filter-user-experience-level-experienced-label": "Iskusni suradnici", "rcfilters-filter-user-experience-level-experienced-description": "Registrirani suradnici s više od 500 uređivanja i 30 dana aktivnosti.", "rcfilters-filtergroup-automated": "Automatizirani doprinosi", + "rcfilters-filter-bots-label": "Botovi", "rcfilters-filter-bots-description": "Uređivanja učinjena automatiziranim alatima.", "rcfilters-filter-humans-label": "Osoba (ne bot)", "rcfilters-filter-humans-description": "Uređivanja koja su napravili suradnici.", @@ -1299,6 +1314,7 @@ "rcfilters-filter-previousrevision-label": "Ne najnovije izmjene", "rcfilters-filter-previousrevision-description": "Sve izmjene na stranici koje nisu najnovije.", "rcnotefrom": "Slijede promjene od $2 (prikazano ih je do $1).", + "rclistfromreset": "Vrati na zadano izbor datuma", "rclistfrom": "Prikaži nove promjene počevši od $3 $2", "rcshowhideminor": "$1 manje promjene", "rcshowhideminor-show": "prikaži", @@ -1497,6 +1513,7 @@ "uploadstash-badtoken": "Obavljanje akcije je bilo neuspješano, možda jer je vaša prijava istekla. Pokušajte ponovno.", "uploadstash-errclear": "Brisanje neobjavljenih datoteka nije uspjelo.", "uploadstash-refresh": "Osvježi popis datoteka", + "uploadstash-thumbnail": "pogledaj kao minijaturu", "invalid-chunk-offset": "Nevaljana točka nastavka snimanja", "img-auth-accessdenied": "Pristup onemogućen", "img-auth-nopathinfo": "Nedostaje PATH_INFO.\nVaš poslužitelj nije postavljen da prosljeđuje ovu informaciju.\nMožda se temelji na CGI skripti i ne može podržavati img_auth.\n[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization?uselang=hr Pogledajte stranicu o autorizaciji slika]", @@ -1587,11 +1604,11 @@ "filerevert-badversion": "Nema prethodne lokalne inačice datoteke s zadanim datumom i vremenom.", "filedelete": "Izbriši $1", "filedelete-legend": "Izbriši datoteku", - "filedelete-intro": "Brišete datoteku '''[[Media:$1|$1]]''' uključujući i sve njezine stare izmjene.", + "filedelete-intro": "Nakanili ste pobrisati datoteku [[Media:$1|$1]] zajedno s cjelokupnom njenom povjesnicom.", "filedelete-intro-old": "Brišete inačicu '''[[Media:$1|$1]]''' od [$4 $3, $2].", "filedelete-comment": "Razlog:", "filedelete-submit": "Izbriši", - "filedelete-success": "Datoteka '''$1''' je izbrisana.", + "filedelete-success": "Datoteka »$1« je pobrisana.", "filedelete-success-old": "Inačica datoteke '''[[Media:$1|$1]]''' od $3, $2 je obrisana.", "filedelete-nofile": "'''$1''' ne postoji.", "filedelete-nofile-old": "Nema arhivirane inačice datoteke '''$1''' sa zadanim parametrima.", @@ -1609,6 +1626,7 @@ "listredirects": "Popis preusmjeravanja", "listduplicatedfiles": "Popis kopija datoteka", "listduplicatedfiles-summary": "Ovo je popis datoteka kojima je zadnja inačica kopija zadnje inačice druge datoteke. Na popisu su samo lokalno postavljene datoteke.", + "listduplicatedfiles-entry": "[[:File:$1|$1]] ima [[$3|{{PLURAL:$2|jedan duplikat|$2 duplikata}}]].", "unusedtemplates": "Nekorišteni predlošci", "unusedtemplatestext": "Slijedi popis svih stranica imenskog prostora {{ns:template}}, koje nisu umetnute na drugim stranicama. Pripazite da prije brisanja provjerite druge poveznice koje vode na te predloške.", "unusedtemplateswlh": "druge poveznice", @@ -1616,6 +1634,7 @@ "randompage-nopages": "Nema stranica u {{PLURAL:$2|imenskom prostoru|imenskim prostorima}}: $1.", "randomincategory": "Slučajna stranica u kategoriji", "randomincategory-invalidcategory": "\"$1\" nije valjano ime kategorije.", + "randomincategory-nopages": "Nema stranica u kategoriji [[:Category:$1|$1]].", "randomincategory-category": "Kategorija:", "randomincategory-legend": "Slučajna stranica u kategoriji", "randomincategory-submit": "Kreni", @@ -1660,6 +1679,7 @@ "ninterwikis": "$1 međuwiki {{PLURAL:$1|poveznica|poveznice|poveznica}}", "nlinks": "$1 {{PLURAL:$1|poveznica|poveznice|poveznica}}", "nmembers": "$1 {{PLURAL:$1|član|člana|članova}}", + "nmemberschanged": "$1 → $2 {{PLURAL:$2|član|člana|članova}}", "nrevisions": "$1 {{PLURAL:$1|inačica|inačice|inačica}}", "nimagelinks": "Koristi se na $1 {{PLURAL:$1|stranici|stranice|stranica}}", "ntransclusions": "koristi se na $1 {{PLURAL:$1|stranici|stranice|stranica}}", @@ -1684,7 +1704,7 @@ "wantedtemplates": "Traženi predlošci", "mostlinked": "Stranice na koje vodi najviše poveznica", "mostlinkedcategories": "Kategorije na koje vodi najviše poveznica", - "mostlinkedtemplates": "Predlošci na koje vodi najviše poveznica", + "mostlinkedtemplates": "Stranice na koje vodi najviše transkluzija", "mostcategories": "Popis stranica po broju kategorija", "mostimages": "Slike na koje vodi najviše poveznica", "mostinterwikis": "Stranice s najviše međuwiki poveznica", @@ -1743,8 +1763,19 @@ "apisandbox-unfullscreen": "Prikaži stranicu", "apisandbox-submit": "Napraviti zahtjev", "apisandbox-reset": "Očisti", + "apisandbox-retry": "Pokušaj ponovo", + "apisandbox-loading": "Učitavam podatke o API modulu »$1«...", + "apisandbox-helpurls": "Poveznice za pomoć", "apisandbox-examples": "Primjeri", + "apisandbox-dynamic-parameters": "Dodatni parametri", + "apisandbox-dynamic-parameters-add-label": "Dodaj parametar:", + "apisandbox-dynamic-parameters-add-placeholder": "Ime parametra", + "apisandbox-dynamic-error-exists": "Parametar s imenom »$1« već postoji.", + "apisandbox-deprecated-parameters": "Zastarjeli parametri", + "apisandbox-fetch-token": "Automatski ispuni tajni ključ", + "apisandbox-submit-invalid-fields-title": "Neka polja nisu vrijedeća", "apisandbox-results": "Rezultati", + "apisandbox-request-time": "Vrijeme za izvršavanje zahtjeva: {{PLURAL:$1|$1 milisekunda|$1 milisekunde|$1 milisekundi}}", "booksources": "Pretraživanje po ISBN-u", "booksources-search-legend": "Traženje izvora za knjigu", "booksources-search": "Traži", @@ -1765,6 +1796,7 @@ "logempty": "Nema pronađenih stavki u evidenciji.", "log-title-wildcard": "Traži stranice koje počinju s navedenim izrazom", "showhideselectedlogentries": "Otkrij/sakrij odabrane evidencije", + "log-edit-tags": "Uredi oznake izabranih unosa u evidencijama", "checkbox-select": "Odaberite: $1", "checkbox-all": "Sve", "checkbox-none": "Ništa", @@ -1924,6 +1956,7 @@ "enotif_lastdiff": "Pogledajte $1 kako biste mogli vidjeti tu izmjenu.", "enotif_anon_editor": "neprijavljeni suradnik $1", "enotif_body": "Poštovani $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nSažetak urednika: $PAGESUMMARY $PAGEMINOREDIT\n\nMožete kontaktirati suradnika koji je posljednji uređivao stranicu:\nmail: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nDo Vašeg ponovnog posjeta stranici nećete dobivati nove obavijesti. Postavke za izvješćivanje možete vratiti na prvotno zadane za sve praćene stranice svog popisa praćenja.\n\nVaš sustav izvješćivanja {{SITENAME}}.\n\n--\nZa promjene postavki izvješćivanja putem e-pošte, posjetite\n{{canonicalurl:{{#special:Preferences}}}}\n\nZa promjene svog popisa praćenja, posjetite\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nZa brisanje stranica iz svog popisa praćenja, posjetite\n$UNWATCHURL\n\nZa povratne informacije i pomoć posjetite:\n$HELPPAGE", + "enotif_minoredit": "Ovo je sitnije uređivanje", "created": "stvorio", "changed": "promijenio", "deletepage": "Izbriši stranicu", @@ -1958,7 +1991,7 @@ "rollbacklinkcount-morethan": "ukloni više od $1 {{PLURAL:$1|uređivanje|uređivanja}}", "rollbackfailed": "Uklanjanje neuspješno", "cantrollback": "Ne mogu ukloniti posljednju promjenu, postoji samo jedna promjena.", - "alreadyrolled": "Ne mogu ukloniti posljednju promjenu članka [[:$1]] koju je napravio [[User:$2|$2]] ([[User talk:$2|Razgovor]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); netko je već promijenio stranicu ili uklonio promjenu.\n\nPosljednju promjenu napravio je [[User:$3|$3]] ([[User talk:$3|Razgovor]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).", + "alreadyrolled": "Ne mogu ukloniti posljednju promjenu članka [[:$1]] koju je napravio [[User:$2|$2]] ([[User talk:$2|razgovor]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); netko je već promijenio stranicu ili uklonio promjenu.\n\nPosljednju promjenu napravio je [[User:$3|$3]] ([[User talk:$3|razgovor]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).", "editcomment": "Sažetak promjene je bio: $1.", "revertpage": "uklonjena promjena {{GENDER:$2|suradnika|suradnice}} [[Special:Contributions/$2|$2]] ([[User talk:$2|razgovor]]), vraćeno na posljednju inačicu {{GENDER:$1|suradnika|suradnice}} [[User:$1|$1]]", "revertpage-nouser": "Vraćene izmjene suradnika (suradničko ime uklonjeno) na posljednju inačicu suradnika [[User:$1|$1]]", @@ -2132,7 +2165,7 @@ "ipbemailban": "Onemogući blokiranom suradniku slanje e-pošte", "ipbenableautoblock": "Automatski blokiraj IP adrese koje koristi ovaj suradnik", "ipbsubmit": "Blokiraj ovog suradnika", - "ipbother": "Neki drugi rok (na engleskom, npr. 6 days):", + "ipbother": "Drugi rok:", "ipboptions": "2 sata:2 hours,1 dan:1 day,3 dana:3 days,1 tjedan:1 week,2 tjedna:2 weeks,1 mjesec:1 month,3 mjeseca:3 months,6 mjeseci:6 months,1 godine:1 year,neograničeno:infinite", "ipbhidename": "Sakrij suradničko ime iz uređivanja i popisa", "ipbwatchuser": "Prati suradničku stranicu i stranicu za razgovor ovog suradnika", @@ -2518,7 +2551,7 @@ "pageinfo-category-files": "Broj datoteka", "markaspatrolleddiff": "Označi pregledanim", "markaspatrolledtext": "Označi ovu stranicu ophođenom", - "markaspatrolledtext-file": "Označi ovu inačicu datoteke kao pregledanu", + "markaspatrolledtext-file": "Označi ovu inačicu datoteke ophođenom", "markedaspatrolled": "Pregledano", "markedaspatrolledtext": "Odabrana promjena [[:$1]] označena je pregledanom.", "rcpatroldisabled": "Ophodnja nedavnih promjena isključena", @@ -2572,8 +2605,10 @@ "newimages-legend": "Filtar", "newimages-label": "Naziv datoteke (ili njen dio):", "newimages-user": "IP adresa ili suradničko ime", + "newimages-newbies": "Prikaži doprinose samo novih suradnika", "newimages-showbots": "Prikaži datoteke koje su postavili botovi", - "newimages-hidepatrolled": "Sakrij pregledana postavljanja", + "newimages-hidepatrolled": "Sakrij ophođena postavljanja", + "newimages-mediatype": "Vrsta datoteke:", "noimages": "Nema slika.", "ilsubmit": "Traži", "bydate": "po datumu", @@ -3186,6 +3221,7 @@ "tags-hitcount": "$1 {{PLURAL:$1|izmjena|izmjene|izmjena}}", "tags-manage-no-permission": "Nemate pravo upravljati promjenama oznaka.", "tags-create-heading": "Stvori novu oznaku", + "tags-create-explanation": "Predodređeno je da će novostvorene oznake biti omogućene za upotrebu suradnicima i botovima.", "tags-create-tag-name": "Naziv oznake:", "tags-create-reason": "Razlog:", "tags-create-submit": "Stvori", @@ -3233,7 +3269,13 @@ "compare-invalid-title": "Naslov koji ste naveli nije valjan.", "compare-title-not-exists": "Naslov koji ste naveli ne postoji.", "compare-revision-not-exists": "Navedena izmjena stranice ne postoji.", - "diff-form": "'''form'''", + "diff-form": "Razlikovne poveznice", + "diff-form-oldid": "ID stare inačice (neobvezan unos)", + "diff-form-revid": "ID inačice za izradbu razlikovne poveznice", + "diff-form-submit": "Prikaži razlikovnu poveznicu", + "permanentlink": "Trajna poveznica", + "permanentlink-revid": "ID inačice (oldid)", + "permanentlink-submit": "Idi na inačicu", "dberr-problems": "Ispričavamo se! Ova stranica ima tehničkih poteškoća.", "dberr-again": "Pričekajte nekoliko minuta i ponovno učitajte.", "dberr-info": "(Ne mogu pristupiti bazi podataka: $1)", @@ -3242,7 +3284,7 @@ "dberr-outofdate": "Imajte na umu da su njihova kazala našeg sadržaja možda zastarjela.", "dberr-cachederror": "Sljedeće je dohvaćena kopija tražene stranice, te možda nije ažurirana.", "htmlform-invalid-input": "Postoje problemi s dijelom Vašeg unosa", - "htmlform-select-badoption": "Vrijednost koju ste naveli nije ispravan izbor.", + "htmlform-select-badoption": "Vrijednost koju ste naveli nije vrijedeća mogućnost.", "htmlform-int-invalid": "Vrijednost koju ste naveli nije cijeli broj.", "htmlform-float-invalid": "Vrijednost koju ste naveli nije broj.", "htmlform-int-toolow": "Vrijednost koju ste naveli je ispod minimuma od $1", @@ -3383,13 +3425,20 @@ "log-name-pagelang": "Evidencija mijenjanja jezika", "mediastatistics": "Statistika datoteka", "mediastatistics-summary": "Slijede statistike postavljenih datoteka koje pokazuju zadnju inačicu datoteke. Starije ili izbrisane inačice nisu prikazane.", + "mediastatistics-nbytes": "{{PLURAL:$1|$1 bajt|$1 bajta|$1 bajtova}} ($2; $3 %)", "mediastatistics-bytespertype": "Ukupna veličina datoteka za ovaj odlomak: {{PLURAL:$1|$1 bajt|$1 bajta|$1 bajtova}} ($2; $3%).", "mediastatistics-allbytes": "Ukupna veličina svih datoteka: {{PLURAL:$1|$1 bajt|$1 bajta|$1 bajtova}} ($2).", + "mediastatistics-header-unknown": "Nepoznata", + "mediastatistics-header-bitmap": "Rasterske slike", "mediastatistics-header-drawing": "Crteži (vektorske slike)", - "mediastatistics-header-audio": "Audio", - "mediastatistics-header-video": "Videozapisi", - "mediastatistics-header-office": "Ured", - "mediastatistics-header-text": "Tekst", + "mediastatistics-header-audio": "Zvukovne datoteke", + "mediastatistics-header-video": "Videodatoteke", + "mediastatistics-header-multimedia": "Datoteke digitalnih kontejnerskih formata", + "mediastatistics-header-office": "Datoteke uredskih formata", + "mediastatistics-header-text": "Tekstualne datoteke", + "mediastatistics-header-executable": "Izvršne datoteke", + "mediastatistics-header-archive": "Kompresirani formati", + "mediastatistics-header-3d": "Datoteke 3D grafičkih formata", "mediastatistics-header-total": "Sve datoteke", "headline-anchor-title": "Poveznica na ovaj odlomak", "special-characters-group-latin": "latinica", @@ -3419,6 +3468,7 @@ "mw-widgets-mediasearch-noresults": "Nema rezultata.", "mw-widgets-titleinput-description-new-page": "stranica još ne postoji", "mw-widgets-titleinput-description-redirect": "preusmjeravanje na $1", + "mw-widgets-usersmultiselect-placeholder": "Dodaj još...", "date-range-from": "Od nadnevka:", "date-range-to": "Do nadnevka:", "randomrootpage": "Slučajna korijenska stranica", diff --git a/languages/i18n/hsb.json b/languages/i18n/hsb.json index 2ae1aa3190..3ebee1746e 100644 --- a/languages/i18n/hsb.json +++ b/languages/i18n/hsb.json @@ -157,13 +157,7 @@ "anontalk": "Diskusija", "navigation": "Nawigacija", "and": " a", - "qbfind": "Namakać", - "qbbrowse": "Přepytować", - "qbedit": "Wobdźěłać", - "qbpageoptions": "Tuta strona", - "qbmyoptions": "Moje strony", "faq": "Husto stajene prašenja (FAQ)", - "faqpage": "Project:Husto stajene prašenja (FAQ)", "actions": "Akcije", "namespaces": "Mjenowe rumy", "variants": "Warianty", @@ -190,30 +184,20 @@ "edit-local": "Lokalny wopis wobdźěłać .", "create": "Wutworić", "create-local": "Lokalny wopis přidać", - "editthispage": "Tutu stronu wobdźěłać", - "create-this-page": "Stronu wutworić", "delete": "wušmórnyć", - "deletethispage": "Stronu wušmórnyć", - "undeletethispage": "Tutu stronu wobnowić", "undelete_short": "{{PLURAL:$1|jednu wersiju|$1 wersiji|$1 wersije|$1 wersijow}} wobnowić", "viewdeleted_short": "{{PLURAL:$1|jednu wušmórnjenu změnu|$1 wušmórnjenej změnje|$1 wušmórnjene změny|$1 wušmórnjenych změnow}} sej wobhladać", "protect": "škitać", "protect_change": "změnić", - "protectthispage": "Stronu škitać", "unprotect": "Škit wotstronić", - "unprotectthispage": "Tutu stronu hižo nješkitać", "newpage": "Nowa strona", - "talkpage": "Tutu stronu diskutować", "talkpagelinktext": "diskusija", "specialpage": "Specialna strona", "personaltools": "Wosobinske nastroje", - "articlepage": "Nastawk", "talk": "diskusija", "views": "Zwobraznjenja", "toolbox": "Nastroje", "tool-link-emailuser": "{{GENDER:$1|Tutomu wužiwarjej|Tutej wužiwarce}} mejlku pósłać", - "userpage": "Wužiwarsku stronu pokazać", - "projectpage": "Projektowu stronu pokazać", "imagepage": "Datajowu stronu sej wobhladać", "mediawikipage": "Zdźělenku pokazać", "templatepage": "Předłohu pokazać", @@ -1173,7 +1157,6 @@ "rcfilters-invalid-filter": "Njepłaćiwy filter", "rcfilters-filterlist-whatsthis": "Što je to?", "rcfilters-highlightmenu-title": "Barbu wubrać", - "rcfilters-filtergroup-registration": "Registrowanje wužiwarja", "rcfilters-filter-user-experience-level-newcomer-label": "Nowački", "rcfilters-filter-user-experience-level-newcomer-description": "Mjenje hač 10 změnow a štyri aktiwne dny.", "rcfilters-filter-user-experience-level-learner-label": "Započatkarjo", @@ -1628,6 +1611,7 @@ "booksources-search": "Pytać", "booksources-text": "To je lisćina wotkazow k druhim sydłam, kotrež nowe a trjebane knihi předawaja. Tam móžeš tež dalše informacije wo knihach dóstać, kotrež pytaš:", "booksources-invalid-isbn": "Podate ISBN-čisło njezda so płaćiwe być; přepruwuj za zmylkami, z tym zo z orginialneho žórła kopěruješ.", + "magiclink-tracking-isbn": "Strony, kotrež wužiwaja magiske ISBN-wotkazy", "specialloguserlabel": "Wukonjer:", "speciallogtitlelabel": "Cil (titul abo {{ns:user}}:wužiwarske mjeno za wužiwarja):", "log": "Protokole", @@ -2940,7 +2924,6 @@ "fileduplicatesearch-noresults": "Žana dataja z mjenom \"$1\" namakana.", "specialpages": "Specialne strony", "specialpages-note-top": "Legenda", - "specialpages-note": "* Normalne specialne strony.\n* Specialne strony z wobmjezowanym přistupom.", "specialpages-group-maintenance": "Hladanske lisćiny", "specialpages-group-other": "Druhe specialne strony", "specialpages-group-login": "Přizjewić/Konto załožić", @@ -3011,6 +2994,7 @@ "compare-invalid-title": "Titul, kotryž sy podał, je njepłaćiwy.", "compare-title-not-exists": "Titul, kotryž sy podał, njeeksistuje.", "compare-revision-not-exists": "Wersija, kotruž sy podał, njeeksistuje.", + "diff-form": "'''formular'''", "dberr-problems": "Wodaj! Tute sydło ma techniske ćežkosće.", "dberr-again": "Počakń někotre mjeńšiny a zaktualizuj stronu.", "dberr-info": "(Njeje móžno na datowu banku přistup měć: $1)", diff --git a/languages/i18n/hu.json b/languages/i18n/hu.json index 37fa0a0569..6ab149af14 100644 --- a/languages/i18n/hu.json +++ b/languages/i18n/hu.json @@ -1318,7 +1318,9 @@ "recentchanges-legend-heading": "Jelmagyarázat:", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (lásd még: [[Special:NewPages|új lapok listája]])", "recentchanges-submit": "Megjelenítés", + "rcfilters-tag-remove": "$1 eltávolítása", "rcfilters-legend-heading": "Rövidítések listája:", + "rcfilters-grouping-title": "Csoportosítás", "rcfilters-activefilters": "Aktív szűrők", "rcfilters-advancedfilters": "Haladó szűrők", "rcfilters-limit-title": "Megjelenítendő változtatások", @@ -1327,6 +1329,7 @@ "rcfilters-hours-title": "Legutóbbi órák", "rcfilters-days-show-days": "$1 nap", "rcfilters-days-show-hours": "$1 óra", + "rcfilters-highlighted-filters-list": "Kiemelve: $1", "rcfilters-quickfilters": "Mentett szűrők", "rcfilters-quickfilters-placeholder-title": "Nincs mentett hivatkozás", "rcfilters-savedqueries-defaultlabel": "Mentett szűrők", @@ -1418,6 +1421,9 @@ "rcfilters-view-namespaces-tooltip": "Találatok szűrése névtér szerint", "rcfilters-view-tags-tooltip": "Találatok szűrése címkék használatával", "rcfilters-view-return-to-default-tooltip": "Vissza a főszűrőmenübe.", + "rcfilters-liveupdates-button": "Élő frissítések", + "rcfilters-liveupdates-button-title-on": "Élő frissítések kikapcsolása", + "rcfilters-watchlist-markseen-button": "Összes változtatás megjelölése olvasottként", "rcnotefrom": "Alább a $3 $4 óta történt változtatások láthatóak (legfeljebb $1 db).", "rclistfromreset": "Dátumválasztás visszaállítása", "rclistfrom": "$3, $2 után történt változtatások megtekintése", @@ -3359,7 +3365,7 @@ "version-libraries-license": "Licenc", "version-libraries-description": "Leírás", "version-libraries-authors": "Szerzők", - "redirect": "Átirányítás fájl, szerkesztő, olda, oldalváltozat vagy naplóazonosító alapján", + "redirect": "Átirányítás fájl, szerkesztő, oldal, oldalváltozat vagy naplóazonosító alapján", "redirect-summary": "Ez a speciális lap átirányít egy fájlra (megadott fájlnévvel), lapra (megadott lapváltozat- vagy lapazonosító számmal), felhasználóra (felhasználó azonosítószáma alapján) vagy naplóbejegyzésre (naplóazonosító alapján). Használat: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]] vagy [[{{#Special:Redirect}}/logid/186]].", "redirect-submit": "Mehet", "redirect-lookup": "Keresés:", diff --git a/languages/i18n/hy.json b/languages/i18n/hy.json index bd41893a9b..d5fce20f66 100644 --- a/languages/i18n/hy.json +++ b/languages/i18n/hy.json @@ -532,7 +532,7 @@ "changeemail-oldemail": "Ներկա էլ․ հասցե․", "changeemail-newemail": "Նոր էլ․ հասցե․", "changeemail-none": "(ոչ մի)", - "changeemail-password": "Քո {{SITENAME}} գաղտնաբառը՝", + "changeemail-password": "Ձեր {{SITENAME}} գաղտնաբառը՝", "changeemail-submit": "Փոխել էլ․ հասցեն", "changeemail-nochange": "Խնդրում ենք մուտքագրեք այլ նոր էլեկտրոնային փոստի հասցեն։", "resettokens-tokens": "Կտրոններ՝", @@ -1581,7 +1581,7 @@ "emaillink": "ուղարկել էլ. նամակ", "autoblocker": "Դուք ավտոմատիկ արգելափակվել եք «$1» մասնակցի հետ ձեր IP-հասցեի համընկնելու պատճառով։ Նրա արգելափակման պատճառն է՝ «$2»։", "blocklogpage": "Արգելափակման տեղեկամատյան", - "blocklogentry": "[[$1]] արգելափակվել է $2 տևողությամբ $3", + "blocklogentry": "արգելափակեց [[$1]] $2 $3 տևողությամբ", "reblock-logentry": "փոխեց [[$1]]ի արգելափակումը՝ դարձնելով $2 տևողությամբ $3", "blocklogtext": "Սա մասնակիցների արգելափակման և արգելափակումից հանման տեղեկամատյանն է։\nԱվտոմատ կերպով արգելափակված IP-հասցեներն այստեղ ընդգրկված չեն։\nՏես [[Special:BlockList|այս պահին ակտիվ արգելափակումների ցանկը]]։", "unblocklogentry": "արգելափակումից հանված է $1", diff --git a/languages/i18n/ia.json b/languages/i18n/ia.json index 5480a2eb57..9e4317b6a4 100644 --- a/languages/i18n/ia.json +++ b/languages/i18n/ia.json @@ -1288,6 +1288,7 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (vide etiam le [[Special:NewPages|lista de nove paginas]])", "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Monstrar", + "rcfilters-tag-remove": "Remover '$1'", "rcfilters-legend-heading": "Lista de abbreviationes:", "rcfilters-other-review-tools": "Altere instrumentos de revision", "rcfilters-group-results-by-page": "Gruppar resultatos per pagina", diff --git a/languages/i18n/id.json b/languages/i18n/id.json index cc4ca7e821..439edb69a5 100644 --- a/languages/i18n/id.json +++ b/languages/i18n/id.json @@ -54,7 +54,8 @@ "Hidayatsrf", "MF-Warburg", "Rachmat04", - "Arifpedia" + "Arifpedia", + "Uchup19" ] }, "tog-underline": "Garis bawahi pranala:", @@ -84,13 +85,14 @@ "tog-shownumberswatching": "Tunjukkan jumlah pemantau", "tog-oldsig": "Tanda tangan Anda yang sudah ada:", "tog-fancysig": "Perlakukan tanda tangan sebagai teks wiki (tanpa suatu pranala otomatis)", - "tog-uselivepreview": "Gunakan pratayang langsung", + "tog-uselivepreview": "Tampilkan pratayang tanpa memuat ulang halaman", "tog-forceeditsummary": "Ingatkan saya bila kotak ringkasan suntingan masih kosong", "tog-watchlisthideown": "Sembunyikan suntingan saya di daftar pantauan", "tog-watchlisthidebots": "Sembunyikan suntingan bot di daftar pantauan", "tog-watchlisthideminor": "Sembunyikan suntingan kecil di daftar pantauan", "tog-watchlisthideliu": "Sembunyikan suntingan pengguna masuk log di daftar pantauan", "tog-watchlistreloadautomatically": "Muat ulang daftar pantauan secara otomatis ketika sebuah tapis berubah (JavaScript diperlukan)", + "tog-watchlistunwatchlinks": "Tambahkan pranala pantau/hapus pantauan ke entri daftar pantauan (JavaScript diperlukan untuk mengganti fungsi ini)", "tog-watchlisthideanons": "Sembunyikan suntingan pengguna anonim di daftar pantauan", "tog-watchlisthidepatrolled": "Sembunyikan suntingan terpatroli di daftar pantauan", "tog-watchlisthidecategorization": "Sembunyikan pengategorian halaman", @@ -748,8 +750,8 @@ "permissionserrorstext-withaction": "Anda tidak memiliki hak akses untuk $2, karena {{PLURAL:$1|alasan|alasan}} berikut:", "contentmodelediterror": "Anda tidak dapat menyunting revisi ini karena isi kontennya adalah $1, yang berbeda dari model isi terkini dari halaman $2.", "recreate-moveddeleted-warn": "'''Peringatan: Anda membuat ulang suatu halaman yang sudah pernah dihapus.'''\n\nHarap pertimbangkan apakah layak untuk melanjutkan suntingan Anda.\nBerikut adalah log penghapusan dan pemindahan dari halaman ini:", - "moveddeleted-notice": "Halaman ini telah dihapus.\nSebagai referensi, berikut adalah log penghapusan dan pemindahan halaman ini.", - "moveddeleted-notice-recent": "Maaf, halaman ini telah dihapus (dalam 24 jam ini). Sebagai referensi, berikut adalah log penghapusan atau pemindahan halaman ini.", + "moveddeleted-notice": "Halaman ini telah dihapus.\nLog penghapusan, perlindungan, dan pemindahan dari halaman tersebut tersedia di bawah ini sebagai referensi.", + "moveddeleted-notice-recent": "Maaf, halaman ini baru saja dihapus (dalam rentang waktu 24 jam).\nLog penghapusan, perlindungan, dan pemindahan halaman tersebut tersedia di bawah sebagai referensi.", "log-fulllog": "Lihat seluruh log", "edit-hook-aborted": "Suntingan dibatalkan oleh kait parser\ntanpa ada keterangan.", "edit-gone-missing": "Tidak dapat memperbaharui halaman.\nHalaman kemungkinan telah dihapus.", @@ -1018,7 +1020,7 @@ "prefs-editwatchlist-clear": "Kosongkan daftar pantauan", "prefs-watchlist-days": "Jumlah hari maksimum yang ditampilkan di daftar pantauan:", "prefs-watchlist-days-max": "Maksimum $1 {{PLURAL:$1|hari}}", - "prefs-watchlist-edits": "Jumlah suntingan maksimum yang ditampilkan di daftar pantauan yang dikembangkan:", + "prefs-watchlist-edits": "Jumlah maksimum perubahan yang ditampilkan dalam daftar pantauan:", "prefs-watchlist-edits-max": "Nilai maksimum: 1000", "prefs-watchlist-token": "Token daftar pantauan:", "prefs-misc": "Lain-lain", @@ -1337,8 +1339,19 @@ "recentchanges-legend-heading": "Keterangan:", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (lihat pula [[Special:NewPages|daftar halaman baru]])", "recentchanges-submit": "Tampilkan", + "rcfilters-legend-heading": "Daftar singkatan:", + "rcfilters-other-review-tools": "Peralatan peninjauan lainnya", + "rcfilters-group-results-by-page": "Kelompokkan hasil menurut halaman", + "rcfilters-grouping-title": "Kelompokkan", "rcfilters-activefilters": "Filter aktif", - "rcfilters-quickfilters": "Pengaturan filter tersimpan", + "rcfilters-advancedfilters": "Penyaringan lebih lanjut", + "rcfilters-limit-title": "Perubahan untuk ditampilkan", + "rcfilters-limit-shownum": "Tampilkan {{PLURAL:$1|perubahan|$1 perubahan}} terakhir", + "rcfilters-days-title": "Hari-hari terakhir", + "rcfilters-hours-title": "Jam-jam terakhir", + "rcfilters-days-show-days": "$1 {{PLURAL:$1|hari|hari}}", + "rcfilters-days-show-hours": "$1 {{PLURAL:$1|jam|jam}}", + "rcfilters-quickfilters": "Saringan tersimpan", "rcfilters-quickfilters-placeholder-title": "Tidak ada pranala tersimpan sekarang", "rcfilters-quickfilters-placeholder-description": "Untuk menyimpan pengaturan saringan dan menggunakannya kembali, klik ikon penanda halaman di area Penyaringan Aktif, di bawah.", "rcfilters-savedqueries-defaultlabel": "Saringan tersimpan", @@ -1347,16 +1360,19 @@ "rcfilters-savedqueries-unsetdefault": "Hapus sebagai baku", "rcfilters-savedqueries-remove": "Hapus", "rcfilters-savedqueries-new-name-label": "Nama", - "rcfilters-savedqueries-apply-label": "Simpan pengaturan", + "rcfilters-savedqueries-new-name-placeholder": "Jelaskan tujuan penyaringan ini", + "rcfilters-savedqueries-apply-label": "Membuat penyaringan", + "rcfilters-savedqueries-apply-and-setdefault-label": "Buat penyaringan baku", "rcfilters-savedqueries-cancel-label": "Batalkan", "rcfilters-savedqueries-add-new-title": "Simpan pengaturan filter ini", "rcfilters-restore-default-filters": "Kembalikan filter bawaan", "rcfilters-clear-all-filters": "Hapus semua penyaringan", + "rcfilters-show-new-changes": "Tampilkan perubahan terbaru", "rcfilters-search-placeholder": "Filter perubahan terbaru (jelajahi atau masukan input)", "rcfilters-invalid-filter": "Penyqringan tidak sah", "rcfilters-empty-filter": "Tidak ada filter aktif. Semua kontribusi ditampilkan.", "rcfilters-filterlist-title": "Penyaringan", - "rcfilters-filterlist-whatsthis": "Apa ini?", + "rcfilters-filterlist-whatsthis": "Bagaimana hal ini bekerja?", "rcfilters-filterlist-feedbacklink": "Berikan umpan balik untuk filter uji coba baru", "rcfilters-highlightbutton-title": "Sorot hasil", "rcfilters-highlightmenu-title": "Pilih warna", @@ -1364,22 +1380,23 @@ "rcfilters-filterlist-noresults": "Tidak ada penyaring ditemukan", "rcfilters-noresults-conflict": "Hasil tidak ditemukan karena kriteria pencariannya bertentangan", "rcfilters-state-message-subset": "Filter ini tidak akan berpengaruh karena hasilnya disertakan oleh {{PLURAL:$2|filter}} berikut yang lebih luas (coba soroti untuk membedakannya): $1", + "rcfilters-state-message-fullcoverage": "Memilih semua penyaringan dalam kelompok ini sama dengan tidak memilih apapun, sehingga penyaringan ini tidak memberikan hasil. Kelompok termasuk: $1", "rcfilters-filtergroup-authorship": "Kontribusi pengarang", "rcfilters-filter-editsbyself-label": "Suntingan Anda", "rcfilters-filter-editsbyself-description": "Kontribusi saya", "rcfilters-filter-editsbyother-label": "Suntingan orang lain", "rcfilters-filter-editsbyother-description": "Semua perubahan kecuali perubahan milik sendiri.", - "rcfilters-filtergroup-userExpLevel": "Level pengalaman (hanya untuk pengguna terdaftar)", + "rcfilters-filtergroup-userExpLevel": "Pendaftaran dan pengalaman pengguna", "rcfilters-filter-user-experience-level-registered-label": "Terdaftar", "rcfilters-filter-user-experience-level-registered-description": "Penyunting masuk log", "rcfilters-filter-user-experience-level-unregistered-label": "Tidak terdaftar", "rcfilters-filter-user-experience-level-unregistered-description": "Penyunting yang tidak masuk log", "rcfilters-filter-user-experience-level-newcomer-label": "Pendatang baru", - "rcfilters-filter-user-experience-level-newcomer-description": "Kurang dari 10 suntingan dan aktivitas selama 4 hari.", + "rcfilters-filter-user-experience-level-newcomer-description": "Penyunting terdaftar yang memiliki suntingan kurang dari 10 suntingan dan aktivitas selama 4 hari.", "rcfilters-filter-user-experience-level-learner-label": "Pelajar", - "rcfilters-filter-user-experience-level-learner-description": "Lebih berpengalaman daripada \"Pendatang baru\" namun belum menjadi \"Pengguna berpengalaman\"", + "rcfilters-filter-user-experience-level-learner-description": "Penyunting terdaftar yang pengalamannya berada antara \"pengguna baru\" dan \"pengguna berpengalaman\".", "rcfilters-filter-user-experience-level-experienced-label": "Pengguna berpengalaman", - "rcfilters-filter-user-experience-level-experienced-description": "Lebih dari 30 hari dan 500 suntingan.", + "rcfilters-filter-user-experience-level-experienced-description": "Penyunting terdaftar dengan lebih dari 500 suntingan dan aktivitas selama 30 hari.", "rcfilters-filtergroup-automated": "Kontribusi otomatis", "rcfilters-filter-bots-label": "Bot", "rcfilters-filter-bots-description": "Suntingan yang dibuat dengan perkakas terotomatisasi.", @@ -1402,6 +1419,11 @@ "rcfilters-filter-watchlist-watchednew-description": "Perubahan halaman-halaman yang dipantau yang belum dikunjungi oleh Anda sejak perubahan terjadi.", "rcfilters-filter-watchlist-notwatched-label": "Tidak dalam daftar pantauan", "rcfilters-filter-watchlist-notwatched-description": "Semuanya kecuali perubahan pada halaman yang dipantau.", + "rcfilters-filtergroup-watchlistactivity": "Aktivitas daftar pantauan", + "rcfilters-filter-watchlistactivity-unseen-label": "Perubahan yang belum dilihat", + "rcfilters-filter-watchlistactivity-unseen-description": "Perubahan pada halaman-halaman yang belum Anda kunjungi sejak perubahan tersebut terjadi.", + "rcfilters-filter-watchlistactivity-seen-label": "Perubahan yang telah dilihat", + "rcfilters-filter-watchlistactivity-seen-description": "Perubahan pada halaman-halaman yang telah Anda kunjungi sejak perubahan terjadi.", "rcfilters-filtergroup-changetype": "Jenis perubahan", "rcfilters-filter-pageedits-label": "Suntingan halaman", "rcfilters-filter-pageedits-description": "Perubahan pada konten wiki, diskusi, deskripsi kategori...", @@ -1411,11 +1433,22 @@ "rcfilters-filter-categorization-description": "Rekam jejak halaman yang telah ditambahkan atau dihapus dari kategori.", "rcfilters-filter-logactions-label": "Tindakan tercatat", "rcfilters-filter-logactions-description": "Tindakan administratif, pembuatan akun, penghapusan halaman, pengunggahan...", - "rcfilters-filtergroup-lastRevision": "Revisi terkini", - "rcfilters-filter-lastrevision-label": "Revisi terkini", - "rcfilters-filter-lastrevision-description": "Perubahan terkini halaman ini", - "rcfilters-filter-previousrevision-label": "Revisi lebih awal", - "rcfilters-filter-previousrevision-description": "Semua perubahan yang bukan perubahan terbaru pada sebuah halaman.", + "rcfilters-filtergroup-lastRevision": "Revisi terbaru", + "rcfilters-filter-lastrevision-label": "Revisi terbaru", + "rcfilters-filter-lastrevision-description": "Hanya perubahan terbaru pada halaman ini.", + "rcfilters-filter-previousrevision-label": "Bukan revisi terbaru", + "rcfilters-filter-previousrevision-description": "Semua perubahan yang bukan merupakan \"revisi terbaru\".", + "rcfilters-filter-excluded": "Tidak termasuk", + "rcfilters-tag-prefix-namespace-inverted": ":bukan $1", + "rcfilters-view-advanced-filters-label": "Penyaringan lebih lanjut", + "rcfilters-view-tags": "Suntingan ditandai", + "rcfilters-view-namespaces-tooltip": "Saring hasil menurut ruangnama", + "rcfilters-view-tags-tooltip": "Saring hasil menggunakan tag penyuntingan", + "rcfilters-view-return-to-default-tooltip": "Kembali ke menu penyaringan utama", + "rcfilters-liveupdates-button": "Perubahan langsung", + "rcfilters-liveupdates-button-title-on": "Matikan perubahan langsung", + "rcfilters-liveupdates-button-title-off": "Tampilkan perubahan baru ketika perubahan tersebut terjadi", + "rcfilters-watchlist-markseen-button": "Tandai semua perubahan sebagai terlihat", "rcnotefrom": "Di bawah ini adalah {{PLURAL:$5|perubahan}} sejak $3, $4 (ditampilkan sampai $1 perubahan).", "rclistfromreset": "Atur ulang pilihan tanggal", "rclistfrom": "Perlihatkan perubahan terbaru sejak $3 $2", @@ -1948,8 +1981,11 @@ "booksources-text": "Di bawah ini adalah daftar pranala ke situs lain yang menjual buku baru dan bekas, dan mungkin juga mempunyai informasi lebih lanjut mengenai buku yang sedang Anda cari:", "booksources-invalid-isbn": "ISBN yang diberikan tampaknya tidak valid; periksa kesalahan penyalinan dari sumber asli.", "magiclink-tracking-rfc": "Halaman menggunakan pranala magis RFC", + "magiclink-tracking-rfc-desc": "Halaman ini menggunakan pranala magis RFC. Lihat [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] bagaimana melakukan migrasi.", "magiclink-tracking-pmid": "Halaman menggunakan pranala magis PMID", + "magiclink-tracking-pmid-desc": "Halaman ini menggunakan pranala magis PMID. Lihat [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] bagaimana melakukan migrasi.", "magiclink-tracking-isbn": "Halaman yang menggunakan pranala magis ISBN", + "magiclink-tracking-isbn-desc": "Halaman ini menggunakan pranala magis ISBN. Lihat [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] bagaimana melakukan migrasi.", "specialloguserlabel": "Pengguna:", "speciallogtitlelabel": "Target (judul atau{{ns:pengguna}}:nama pengguna untuk pengguna)", "log": "Catatan (Log)", @@ -2159,6 +2195,7 @@ "delete-warning-toobig": "Halaman ini memiliki sejarah penyuntingan yang panjang, melebihi {{PLURAL:$1|revisi|revisi}}.\nMenghapus halaman ini dapat menyebabkan masalah dalam operasional basis data {{SITENAME}}.", "deleteprotected": "Anda tidak dapat menghapus laman ini karena telah dilindungi.", "deleting-backlinks-warning": "Peringatan: [[Special:WhatLinksHere/{{FULLPAGENAME}}|Halaman lain]] mengarah atau memiliki transklusi ke halaman yang akan Anda hapus.", + "deleting-subpages-warning": "Peringatan: Halaman yang akan Anda hapus memiliki [[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|subhalaman|$1 subhalaman|51=lebih dari 50 subhalaman}}]].", "rollback": "Kembalikan suntingan", "rollbacklink": "kembalikan", "rollbacklinkcount": "kembalikan $1 {{PLURAL:$1|suntingan}}", @@ -2278,6 +2315,7 @@ "undelete-search-title": "Cari halaman yang dihapus", "undelete-search-box": "Cari halaman yang dihapus", "undelete-search-prefix": "Tampilkan halaman dimulai dari:", + "undelete-search-full": "Tampilkan judul halaman yang mengandung:", "undelete-search-submit": "Cari", "undelete-no-results": "Tidak ditemukan halaman yang sesuai di arsip penghapusan.", "undelete-filename-mismatch": "Tidak dapat membatalkan penghapusan revisi berkas dengan tanda waktu $1: nama berkas tak sesuai", @@ -2613,7 +2651,7 @@ "import-nonewrevisions": "Tidak ada revisi yang diimpor (semua revisi telah ada atau dilewatkan karena kesalahan).", "xml-error-string": "$1 pada baris $2, kolom $3 (bita $4): $5", "import-upload": "Memuat data XML", - "import-token-mismatch": "Kehilangan data sesi.\n\nAnda mungkin telah keluar log. '''Mohon periksa apakah Anda masih masuk log dan coba kembali.'''\nJika masih belum berhasil, coba [[Special:UserLogout|keluar log]] dan masuk log kembali, dan periksa apakah peramban web mengizinkan penyimpanan kuki dari situs ini.", + "import-token-mismatch": "Kehilangan data sesi.\n\nAnda mungkin telah keluar log. '''Mohon pastikan bahwa Anda masih masuk log dan cobalah kembali'''. Apabila masih belum berhasil, cobalah [[Special:UserLogout|keluar log]] dan masuk log kembali, dan periksalah apakah peramban web Anda mengizinkan kuki dari situs web ini.", "import-invalid-interwiki": "Tidak dapat mengimpor dari wiki tersebut.", "import-error-edit": "Halaman \"$1\" tidak diimpor karena Anda tidak diizinkan untuk menyuntingnya.", "import-error-create": "Halaman \"$1\" tidak diimpor karena Anda tidak diizinkan untuk membuatnya.", @@ -2841,8 +2879,10 @@ "newimages-legend": "Penyaring", "newimages-label": "Nama berkas (atau sebagian dari nama berkas):", "newimages-user": "Alamat IP atau nama pengguna", + "newimages-newbies": "Tampilkan kontribusi hanya dari akun baru", "newimages-showbots": "Tampilkan unggahan oleh bot", "newimages-hidepatrolled": "Sembunyikan unggahan yang telah dipatroli", + "newimages-mediatype": "Tipe media:", "noimages": "Tidak ada yang dilihat.", "gallery-slideshow-toggle": "Beralih ''thumbnails''", "ilsubmit": "Cari", @@ -3477,6 +3517,7 @@ "fileduplicatesearch-noresults": "Tidak ditemukan berkas dengan nama \"$1\".", "specialpages": "Halaman istimewa", "specialpages-note-top": "Keterangan", + "specialpages-note-restricted": "* Halaman istimewa biasa.\n* Halaman istimewa terbatas.", "specialpages-group-maintenance": "Laporan pemeliharaan", "specialpages-group-other": "Lain-lain", "specialpages-group-login": "Masuk log / mendaftar", @@ -3526,7 +3567,7 @@ "tags-create-reason": "Alasan:", "tags-create-submit": "Buat", "tags-create-no-name": "Anda harus memberikan nama tag.", - "tags-create-invalid-chars": "Nama tag tidak boleh mengandung koma (,) atau garis miring (/).", + "tags-create-invalid-chars": "Nama tag tidak boleh mengandung koma (,), pipa (|), atau garis miring (/).", "tags-create-invalid-title-chars": "Nama tag tidak boleh mengandung karakter yang tidak bisa digunakan dalam judul halaman.", "tags-create-already-exists": "Tag \"$1\" sudah ada.", "tags-create-warnings-above": "{{PLURAL:$2|Peringatan|Peringatan}} berikut ditemukan ketika mencoba membuat tag \"$1\":", @@ -3593,6 +3634,13 @@ "compare-invalid-title": "Judul yang Anda berikan tidak sah.", "compare-title-not-exists": "Judul yang Anda minta tidak ada.", "compare-revision-not-exists": "Revisi yang Anda minta tidak ada.", + "diff-form": "Perbedaan", + "diff-form-oldid": "ID revisi lama (opsional)", + "diff-form-revid": "ID revisi perbedaan", + "diff-form-submit": "Tampilkan perbedaan", + "permanentlink": "Pranala permanen", + "permanentlink-revid": "ID revisi", + "permanentlink-submit": "Tuju ke revisi", "dberr-problems": "Maaf! Situs ini mengalami masalah teknis.", "dberr-again": "Cobalah menunggu beberapa menit dan muat ulang.", "dberr-info": "(Tak dapat mengakses basis data: $1)", diff --git a/languages/i18n/ilo.json b/languages/i18n/ilo.json index 36a728043b..293138ffdd 100644 --- a/languages/i18n/ilo.json +++ b/languages/i18n/ilo.json @@ -39,7 +39,7 @@ "tog-shownumberswatching": "Ipakita ti bilang dagiti agbuybuya nga agar-aramat", "tog-oldsig": "Ti adda a pirmam:", "tog-fancysig": "Tratuen ti pirma a kas wikitext (awanan iti automatiko a silpo)", - "tog-uselivepreview": "Usaren ti agdama a panagipadas", + "tog-uselivepreview": "Ipakita dagiti panagipadas a saan nga agikarga manen iti panid", "tog-forceeditsummary": "Pakaammuannak no sumrek iti blanko a pakabuklan ti panagurnos", "tog-watchlisthideown": "Ilemmeng dagiti inurnosko manipud iti listaan ti bambantayan", "tog-watchlisthidebots": "Ilemmeng dagiti inurnos ti bot manipud iti listaan ti bambantayan", @@ -155,13 +155,7 @@ "anontalk": "Tungtungan", "navigation": "Pagdaliasatan", "and": " ken", - "qbfind": "Biruken", - "qbbrowse": "Agbasabasa", - "qbedit": "Urnosen", - "qbpageoptions": "Daytoy a panid", - "qbmyoptions": "Pampanidko", "faq": "MAS", - "faqpage": "Project:MAS", "actions": "Dagiti aramid", "namespaces": "Dagiti nagan ti espasio", "variants": "Sabsabali a pagsasao", @@ -188,32 +182,22 @@ "edit-local": "Urnosen ti lokal a deskripsion", "create": "Agpartuat", "create-local": "Agnayon iti lokal a deskripsion", - "editthispage": "Urnosen daytoy a panid", - "create-this-page": "Partuaten daytoy a panid", "delete": "Ikkaten", - "deletethispage": "Ikkaten daytoy a panid", - "undeletethispage": "Isubli ti pannakaikkat daytoy a panid", "undelete_short": "Isubli ti pannakaikkat {{PLURAL:$1|ti maysa a naurnos|dagiti $1 a naurnos}}", "viewdeleted_short": "Kitaen {{PLURAL:$1|ti maysa a naikkat a naurnos|dagiti $1 a naikkat a naurnos}}", "protect": "Salakniban", "protect_change": "baliwan", - "protectthispage": "Salakniban daytoy a panid", "unprotect": "Sukatan ti salaknib", - "unprotectthispage": "Sukatan ti salaknib daytoy a panid", "newpage": "Baro a panid", - "talkpage": "Pagtungtungan daytoy a panid", "talkpagelinktext": "Tungtungan", "specialpage": "Espesial a panid", "personaltools": "Bukod a ramramit", - "articlepage": "Kitaen ti naglaon a panid", "talk": "Pagtungtungan", "views": "Dagiti pangkitaan", "toolbox": "Ramramit", "tool-link-userrights": "Baliwan dagiti grupo ti {{GENDER:$1|agar-aramat}}", "tool-link-userrights-readonly": "Kitaen dagiti grupo ti {{GENDER:$1|agar-aramat}}", "tool-link-emailuser": "Esuratam daytoy nga {{GENDER:$1|agar-aramat}}", - "userpage": "Kitaen ti panid ti agar-aramat", - "projectpage": "Kitaen ti panid ti proyekto", "imagepage": "Kitaen ti panid ti papeles", "mediawikipage": "Kitaen ti panid ti mensahe", "templatepage": "Kitaen ti panid ti plantilia", @@ -687,7 +671,7 @@ "readonlywarning": "Ballaag: Narikepan ti database tapno mataripato, isu a saanmo a mabalin nga idulin dagita inurnosmo tattan.\nMabalinmo ti agkopia ken agipegket ti tekstom iti papeles ti teksto ken idulinmo daytoy intono madamdama.\n\nTi administrador ti sistema a nangrikep ket nangited iti daytoy a palawag: $1", "protectedpagewarning": "Ballaag: Daytoy a panid ket nasalakniban tapno dagiti laeng agar-aramat nga addaan iti gundaway nga administrador ti makaurnos ditoy.\nTi naudi a naikabil iti listaan ket naited dita baba para iti reperensia:", "semiprotectedpagewarning": "Nota: Nasalakniban daytoy a panid tapno dagiti laeng nakarehistro nga agar-aramat ti makaurnos ditoy.\nTi naudi a naikabil iti listaan ket naited dita baba para iti reperensia:", - "cascadeprotectedwarning": "Ballaag: Daytoy a panid ket nasalakniban tapno dagiti laeng agar-aramat nga addaan iti gundaway nga administrador ti makaurnos gapu ta nailak-am {{PLURAL:$1|iti sumaganad a panid|kadagiti sumaganad a panid}} a nasalakniban iti sariap:", + "cascadeprotectedwarning": "Ballaag: Daytoy a panid ket nasalakniban tapno dagiti laeng agar-aramat nga addaan kadagiti [[Special:ListGroupRights|naisangayan a karbengan]] ti makaurnos gapu ta nailak-am {{PLURAL:$1|iti sumaganad a panid|kadagiti sumaganad a panid}} a nasalakniban iti sariap:", "titleprotectedwarning": "Ballaag: Nasalakniban daytoy a panid tapno [[Special:ListGroupRights|dagiti naisangayan ti karbengan]] ket nasken a makapartuat iti daytoy.\nTi naudi a naikabil iti listaan ket naited dita baba para iti reperensia:", "templatesused": "{{PLURAL:$1|Ti plantilia|Dagiti plantilia}} a naaramat iti daytoy a panid:", "templatesusedpreview": "{{PLURAL:$1|Ti plantilia|Dagiti plantilia}} a naaramat iti daytoy a panagpadas:", @@ -704,8 +688,8 @@ "permissionserrorstext-withaction": "Awan ti pammalubosmo nga $2, gapu ti sumaganad a {{PLURAL:$1|rason|rasrason}}:", "contentmodelediterror": "Saanmo a maurnos daytoy a rebision gapu ta ti modelo ti linaon ket $1, a maigiddiat manipud iti agdama a modelo ti linaon ti panid ti $2.", "recreate-moveddeleted-warn": "Ballaag: Agparpartuatka manen ti dati a naikkat a panid.\n\nUsigem koma no maitutop ti agtuloy nga agurnos iti daytoy a panid.\nTi listaan ti pannakaikkat ken pannakaiyalis para iti daytoy a panid ket naited ditoy para iti pakainugotan:", - "moveddeleted-notice": "Naikkaten daytoy a panid.\nTi listaan ti pannakaikkat ken pannakaiyalis para iti panid ket naited dita baba para iti reperensia.", - "moveddeleted-notice-recent": "Pasensian, daytoy a panid ket kaik-ikkat idi (iti kaunegan dagiti 24 nga oras).\nTi listaan ti pannakaikkat ken pannakaiyalis para iti panid ket naited dita baba para iti reperensia.", + "moveddeleted-notice": "Naikkaten daytoy a panid.\nTi listaan ti pannakaikkat, pannakasalaknib, ken pannakaiyalis para iti panid ket naited dita baba para iti reperensia.", + "moveddeleted-notice-recent": "Pasensian, daytoy a panid ket kaik-ikkat idi (iti kaunegan dagiti 24 nga oras).\nTi listaan ti pannakaikkat, pannakasalaknib, ken pannakaiyalis para iti panid ket naited dita baba para iti reperensia.", "log-fulllog": "Kitaem ti napno a listaan", "edit-hook-aborted": "Ti panagurnos ket pinasardeng babaen ti kawit.\nAwan ti intedna a palawag.", "edit-gone-missing": "Saan a mapabaro daytoy a panid.\nKasla met naikkaten.", @@ -743,6 +727,7 @@ "post-expand-template-argument-category": "Pampanid a naglaon kadagiti saan a nairaman nga argumento ti plantilia", "parser-template-loop-warning": "Nakaduktal iti silo ti plantilia: [[$1]]", "template-loop-category": "Pampanid nga agraman kadagiti silo ti plantilia", + "template-loop-category-desc": "Ti panid ket aglaon iti silo ti plantilia, kas iti plantilia a rekursibo a mangawag iti bagina.", "parser-template-recursion-depth-warning": "Nalabsan ti patingga ti panagdullit ti kinauneg ti plantilia ($1)", "language-converter-depth-warning": "Nalabsan ti patingga ti pagbaliwen a kinauneg ti pagsasao ($1)", "node-count-exceeded-category": "Dagiti panid a nakasurokan ti bilang ti nodo", @@ -770,7 +755,7 @@ "revision-info": "Rebision manipud idi $1 babaen ni {{GENDER:$6|$2}}$7", "previousrevision": "← Nadadaan a rebision", "nextrevision": "Nabarbaro a rebision →", - "currentrevisionlink": "Kinaudi a rebision", + "currentrevisionlink": "Kaudian a rebision", "cur": "agdama", "next": "sumaruno", "last": "naudi", @@ -931,7 +916,7 @@ "search-file-match": "(maipada ti linaon a papeles)", "search-suggest": "Daytoy kadi: $1", "search-rewritten": "Agipakita para kadagiti resulta ti $1. Imbes ket nga agbiruk para iti $2.", - "search-interwiki-caption": "Dagiti kakabsat a proyekto", + "search-interwiki-caption": "Dagiti resulta manipud kadagiti kakabsat a proyekto", "search-interwiki-default": "Dagiti resulta manipud iti $1:", "search-interwiki-more": "(adu pay)", "search-interwiki-more-results": "adu pay a resresulta", @@ -972,7 +957,7 @@ "prefs-editwatchlist-clear": "Dalusan ti listaan ti bambantayan", "prefs-watchlist-days": "Al-aldaw nga iparang iti listaan ti bambantayan:", "prefs-watchlist-days-max": "Kapaut nga $1 {{PLURAL:$1|nga aldaw|nga al-aldaw}}", - "prefs-watchlist-edits": "Kaadu a bilang ti ipakita kadagiti sinukatan iti napadakkel a listaan ti bambantayan:", + "prefs-watchlist-edits": "Kaadu a bilang ti ipakita kadagiti sinukatan iti listaan ti bambantayan:", "prefs-watchlist-edits-max": "Kaadu a bilang: 1000", "prefs-watchlist-token": "Tandaan ti listaan ti bambantayan:", "prefs-misc": "Sabsabali", @@ -1067,13 +1052,14 @@ "userrights-lookup-user": "Agpili iti agar-aramat", "userrights-user-editname": "Mangiserrek iti nagan ti agar-aramat:", "editusergroup": "Ikarga dagiti grupo ti agar-aramat", - "editinguser": "Suksukatan ti karbengan ni {{GENDER:$1|agar-aramat}} [[User:$1|$1]] $2", + "editinguser": "Suksukatan ti karbengan ti agar-aramat ni {{GENDER:$1|agar-aramat}} [[User:$1|$1]] $2", + "viewinguserrights": "Kitkitaen ti karbengan ti agar-aramat ni {{GENDER:$1|agar-aramat}} [[User:$1|$1]] $2", "userrights-editusergroup": "Urnosen dagiti grupo ti {{GENDER:$1|agar-aramat}}", "userrights-viewusergroup": "Kitaen dagiti grupo ti {{GENDER:$1|agar-aramat}}", "saveusergroups": "Idulin dagiti grupo ti {{GENDER:$1|agar-aramat}}", "userrights-groupsmember": "Kameng ti:", "userrights-groupsmember-auto": "Napudno a kameng ti:", - "userrights-groups-help": "Mabaliwam dagiti ayan a grupo ti agar-aramat:\n* Ti nakur-it a kahon ket kayatna a sawen nga adda ti agar-aramat dita a grupo.\n* Ti saan a nakur-it a kahon ket kayatna a sawen nga awan ti agar-aramat dita a grupo.\n* A * mangipakita a saanmo a maikkat ti grupo no nainayonmon, wenno pagbalittaden.", + "userrights-groups-help": "Mabaliwam dagiti ayan a grupo ti agar-aramat:\n* Ti naikur-it a kahon ket kayatna a sawen nga adda ti agar-aramat dita a grupo.\n* Ti saan a naikur-it a kahon ket kayatna a sawen nga awan ti agar-aramat dita a grupo.\n* Ti A * ket mangipakita a saanmo a maikkat ti grupo no nainayonmon, wenno pagbalittaden.\n* Ti A # ket mangipakita a mabalinmo laeng a maisubli ti oras iti daytoy a pannakaikameng ti grupo; saanmo a maiyeg a maipauna.", "userrights-reason": "Rason:", "userrights-no-interwiki": "Awan ti pammalubosmo nga agurnos ti karbengan ti agar-aramat kadagiti sabali a wiki.", "userrights-nodatabase": "Awan ti database a $1 wenno saan a lokal.", @@ -1084,6 +1070,7 @@ "userrights-expiry": "Agpaso:", "userrights-expiry-existing": "Ti adda a panagpaso ti oras: $3, $2", "userrights-expiry-othertime": "Sabali nga oras:", + "userrights-expiry-options": "1 nga aldaw:1 day,1 a lawas:1 week,1 a bulan:1 month,3 a bulan:3 months,6 a bulan:6 months,1 a tawen:1 year", "userrights-invalid-expiry": "Imbalido ti oras a panagpaso para iti grupo \"$1\".", "userrights-expiry-in-past": "Napalabasen ti oras a panagpaso para iti grupo \"$1\".", "userrights-conflict": "Suppiat dagiti panagbaliw kadagiti karbengan ti agar-aramat! Pangngaasi nga irepasom ken pasingkedam dagiti sinuksukatam.", @@ -1212,6 +1199,7 @@ "grant-basic": "Batayan a karkarbengan", "grant-viewdeleted": "Kitaen dagiti naikkat a papeles ken pampanid", "grant-viewmywatchlist": "Kitaem ti listaan ti banbantayam", + "grant-viewrestrictedlogs": "Kitaen dagiti nagawidan a naikabil iti listaan", "newuserlogpage": "Listaan ti panagpartuat ti agar-aramat", "newuserlogpagetext": "Daytoy ket listaan dagiti pannakapartuat iti agar-aramat.", "rightslog": "Listaan dagiti karbengan ti agar-aramat", @@ -1236,6 +1224,7 @@ "action-writeapi": "agusar iti panagsurat ti API", "action-delete": "agikkat iti daytoy a panid", "action-deleterevision": "agikkat kadagiti rebision", + "action-deletelogentry": "ikkaten dagiti naikabil iti listaan", "action-deletedhistory": "agkita iti naikkat a pakasaritaan ti panid", "action-deletedtext": "agkita iti naikkat a rebision ti teksto", "action-browsearchive": "agbiruk kadagiti naikkat a panid", @@ -1282,30 +1271,60 @@ "recentchanges-legend-heading": "Leyenda:", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (kitaen pay ti [[Special:NewPages|listaan ti baro a pampanid]])", "recentchanges-submit": "Ipakita", + "rcfilters-legend-heading": "Listaan dagiti pangyababaan:", + "rcfilters-other-review-tools": "Dagiti sabali pay a pangrepaso a ramit", + "rcfilters-group-results-by-page": "Igrupo dagiti resulta babaen ti panid", + "rcfilters-grouping-title": "Pannakaigrupo", "rcfilters-activefilters": "Dagiti aktibo a sagat", + "rcfilters-advancedfilters": "Dagiti napasayaat a sagat", + "rcfilters-limit-title": "Dagiti ipakita a binaliwan", + "rcfilters-limit-shownum": "Ipakita {{PLURAL:$1|ti naudi a sinukatan|dagiti $1 a sinukatan}}", + "rcfilters-days-title": "Kaudian nga al-aldaw", + "rcfilters-hours-title": "Kaudian nga or-oras", + "rcfilters-days-show-days": "$1 nga {{PLURAL:$1|aldaw|al-aldaw}}", + "rcfilters-days-show-hours": "$1 nga {{PLURAL:$1|oras|or-oras}}", + "rcfilters-quickfilters": "Dagiti naidulin a sagat", + "rcfilters-quickfilters-placeholder-title": "Awan pay dagiti naidulin a silpo", + "rcfilters-savedqueries-defaultlabel": "Dagiti naidulin a sagat", + "rcfilters-savedqueries-rename": "Naganan manen", + "rcfilters-savedqueries-setdefault": "Isaad a kas kasisigud", + "rcfilters-savedqueries-unsetdefault": "Ikkaten a kas kasisigud", + "rcfilters-savedqueries-remove": "Ikkaten", + "rcfilters-savedqueries-new-name-label": "Nagan", + "rcfilters-savedqueries-new-name-placeholder": "Ipalawag ti panggep ti sagat", + "rcfilters-savedqueries-apply-label": "Agpartuat iti sagat", + "rcfilters-savedqueries-apply-and-setdefault-label": "Agpartuat iti kasisigud a sagat", + "rcfilters-savedqueries-cancel-label": "Ukasen", + "rcfilters-savedqueries-add-new-title": "Idulin dagiti agdama a pannakaisaad ti sagat", "rcfilters-restore-default-filters": "Isubli dagiti kasisigud a sagat", "rcfilters-clear-all-filters": "Dalusan amin dagiti sagat", + "rcfilters-show-new-changes": "Kitaen dagiti kabaruan a binaliwan", "rcfilters-search-placeholder": "Sagaten ti kaudian a balbaliw (agbasabasa wenno mangrugi nga agmakinilia)", "rcfilters-invalid-filter": "Imbalido a sagat", "rcfilters-empty-filter": "Awan dagiti aktibo a sagat. Naipakita amin dagiti kontribusion.", "rcfilters-filterlist-title": "Dagiti sagat", - "rcfilters-filterlist-whatsthis": "Ania daytoy?", + "rcfilters-filterlist-whatsthis": "Kasano dagitoy nga agobra?", + "rcfilters-filterlist-feedbacklink": "Mangited ti feedback kadagiti baro a (beta) sagat", + "rcfilters-highlightbutton-title": "Paraigidan dagiti resulta", "rcfilters-highlightmenu-title": "Agpili iti maris", + "rcfilters-highlightmenu-help": "Agpili iti maris a mangparaigid daytoy a tagikua", "rcfilters-filterlist-noresults": "Awan dagiti nabirukan a sagat", - "rcfilters-filter-registered-label": "Nakarehistro", - "rcfilters-filter-registered-description": "Dagiti nakastrek nga editor.", - "rcfilters-filter-unregistered-label": "Saan a nakarehistro", - "rcfilters-filter-unregistered-description": "Dagiti editor a saan a nakastrek.", - "rcfilters-filter-editsbyself-label": "Dagiti bukodmo nga inurnos", - "rcfilters-filter-editsbyself-description": "Dagiti inurnosmo.", - "rcfilters-filter-editsbyother-label": "Dagiti inurnos ti sabali", - "rcfilters-filter-editsbyother-description": "Dagiti inurnos a pinartuat babaen dagiti sabali nga agar-aramat (saan a sika).", + "rcfilters-noresults-conflict": "Awan dagiti nabirukan a resulta gapu ta ti kriteria ti panagbiruk ket agsuppiatda", + "rcfilters-filter-editsbyself-label": "Dagiti sinukatam", + "rcfilters-filter-editsbyself-description": "Dagiti bukodmo a kontribusion.", + "rcfilters-filter-editsbyother-label": "Dagiti sinukatan ti sabali", + "rcfilters-filter-editsbyother-description": "Amin a sinuksukatan malaksid ti bukodmo.", + "rcfilters-filtergroup-userExpLevel": "Rehistrasion ti agar-aramat ken sanay", + "rcfilters-filter-user-experience-level-registered-label": "Nakarehistro", + "rcfilters-filter-user-experience-level-registered-description": "Dagiti nakastrek nga editor.", + "rcfilters-filter-user-experience-level-unregistered-label": "Saan a nakarehistro", + "rcfilters-filter-user-experience-level-unregistered-description": "Dagiti editor a saan a nakastrek.", "rcfilters-filter-user-experience-level-newcomer-label": "Dagiti agdadamo", - "rcfilters-filter-user-experience-level-newcomer-description": "Basbassit ngem 10 nga inur-urnos ken 4 nga aldaw iti aktibidad.", + "rcfilters-filter-user-experience-level-newcomer-description": "Dagiti nakarehistro nga editor nga addaan iti basbassit ngem 10 nga inur-urnos ken 4 nga aldaw iti aktibidad.", "rcfilters-filter-user-experience-level-learner-label": "Dagiti agad-adal", - "rcfilters-filter-user-experience-level-learner-description": "Ad-adu nga al-aldaw iti aktibidad ken inur-urnos ngem \"Dagiti agdadamo\" ngem basbassit ngem \"Dagiti nasanay nga agar-aramat\".", + "rcfilters-filter-user-experience-level-learner-description": "Dagiti nakarehistro nga editor a ti panagsanayda ket maikabil iti pagbaetan ti \"Dagiti agdadamo\" ken \"Dagiti nasanay nga agar-aramat\".", "rcfilters-filter-user-experience-level-experienced-label": "Dagiti nasanay nga agar-aramat", - "rcfilters-filter-user-experience-level-experienced-description": "Ad-adu ngem 30 nga aldaw iti aktibidad ken 500 nga inur-urnos.", + "rcfilters-filter-user-experience-level-experienced-description": "Dagiti nakarehistro nga editor nga addaan iti ad-adu ngem 500 nga inur-urnos ken 30 nga aldaw iti aktibidad.", "rcfilters-filtergroup-automated": "Dagiti automado a kontribusion", "rcfilters-filter-bots-label": "Bot", "rcfilters-filter-bots-description": "Dagiti inurnos nga inaramid babaen ti automado a ramramit.", @@ -1316,20 +1335,49 @@ "rcfilters-filter-patrolled-description": "Dagiti inurnos a namarkaan a kas napatruliaan.", "rcfilters-filter-unpatrolled-label": "Di napatruliaan", "rcfilters-filter-unpatrolled-description": "Dagiti inurnos a saan a namarkaan a kas napatruliaan.", + "rcfilters-filtergroup-significance": "Kaimudingan", "rcfilters-filter-minor-label": "Dagiti bassit a panagurnos", "rcfilters-filter-minor-description": "Dagiti panagurnos a minarkaan ti mannurat a kas bassit.", "rcfilters-filter-major-label": "Dagiti saan a bassit a panagurnos", "rcfilters-filter-major-description": "Dagiti panagurnos a saan a namarkaan a kas bassit.", + "rcfilters-filtergroup-watchlist": "Pampanid a nailista a bambantayan", + "rcfilters-filter-watchlist-watched-label": "Adda iti Bambantayan", + "rcfilters-filter-watchlist-watched-description": "Sinuksukatan kadagiti panid ti Listaan ti Bambantayam.", + "rcfilters-filter-watchlist-watchednew-label": "Baro a sinuksukatan iti listaan ti bambantayan", + "rcfilters-filter-watchlist-notwatched-label": "Saan nga adda iti listaan ti bambantayan", + "rcfilters-filtergroup-watchlistactivity": "Aktibidad ti listaan ti bambantayan", + "rcfilters-filter-watchlistactivity-unseen-label": "Di nakitkita a sinusukatan", + "rcfilters-filter-watchlistactivity-unseen-description": "Sinuksukatan kadagiti panid a saanmo pay a nabisita manipud idi napasamak ti sinuksukatan.", + "rcfilters-filter-watchlistactivity-seen-label": "Nakitkita a sinuksukatan", + "rcfilters-filter-watchlistactivity-seen-description": "Sinuksukatan kadagiti panid a nabisitamon manipud idi napasamak ti sinuksukatan.", "rcfilters-filtergroup-changetype": "Kita ti panagbaliw", "rcfilters-filter-pageedits-label": "Dagiti panagurnos ti panid", - "rcfilters-filter-pageedits-description": "Dagiti panagurnos iti linaon ti wiki, tungtungan, dagiti deskripsion ti kategoria....", + "rcfilters-filter-pageedits-description": "Dagiti panagurnos iti linaon ti wiki, tungtungan, dagiti deskripsion ti kategoria…", "rcfilters-filter-newpages-label": "Dagiti panagpartuat ti panid", "rcfilters-filter-newpages-description": "Dagiti panagurnos a nakaaramid kadagiti baro a panid.", "rcfilters-filter-categorization-label": "Dagiti panagbaliw ti kategoria", "rcfilters-filter-categorization-description": "Dagiti rekord ti pampanid a mainaynayon wenno maik-ikkat manipud kadagiti kategoria.", "rcfilters-filter-logactions-label": "Dagiti aksion a nailista", - "rcfilters-filter-logactions-description": "Dagiti aksion nga administratibo, dagiti panagpartuat iti pakabilangan, dagiti panagikkat iti panid, dagiti panangikarga....", + "rcfilters-filter-logactions-description": "Dagiti aksion nga administratibo, dagiti panagpartuat iti pakabilangan, dagiti panagikkat iti panid, dagiti panangikarga…", + "rcfilters-filtergroup-lastRevision": "Dagiti kaudian a rebision", + "rcfilters-filter-lastrevision-label": "Kaudian a rebision", + "rcfilters-filter-previousrevision-label": "Saan a ti kaudian a rebision", + "rcfilters-filter-previousrevision-description": "Amin a sinuksukatan a saan a \"kaudian a rebision\".", + "rcfilters-filter-excluded": "Di mairaman", + "rcfilters-tag-prefix-namespace-inverted": ":saan $1", + "rcfilters-exclude-button-off": "Di iraman ti napili", + "rcfilters-exclude-button-on": "Di mairaman ti napili", + "rcfilters-view-advanced-filters-label": "Dagiti napasayaat a sagat", + "rcfilters-view-tags": "Dagiti naetiketaan a panagurnos", + "rcfilters-view-namespaces-tooltip": "Sagaten dagiti resulta babaen ti nagan ti espasio", + "rcfilters-view-tags-tooltip": "Sagaten dagiti resulta babaen ti panagusar kadagiti etiketa ti panagurnos", + "rcfilters-view-return-to-default-tooltip": "Agsubli iti nangruna a menu ti sagat", + "rcfilters-liveupdates-button": "Dagiti agdama a panagpabaro", + "rcfilters-liveupdates-button-title-on": "Iddepen dagiti agdama a panagpabaro", + "rcfilters-liveupdates-button-title-off": "Ipakita dgaiti baro a sinuksukatan bayatda a mapaspasamak", + "rcfilters-watchlist-markSeen-button": "Markaan amin a sinuksukatan a kas nakitan", "rcnotefrom": "Dita baba ket {{PLURAL:$5|ti sinukatan|dagiti sinukatan}} manipud idi $3, $4 (aginggana iti $1 a naipakita).", + "rclistfromreset": "Isaad manen ti panagpili ti petsa", "rclistfrom": "Ipakita dagiti kabarbaro a sinukatan a mangrugi manipud idi $2, $3", "rcshowhideminor": "$1 dagiti bassit a panagurnos", "rcshowhideminor-show": "Ipakita", @@ -1450,6 +1498,7 @@ "php-uploaddisabledtext": "Dagiti panangikarga ti papeles ket nabaldado iti PHP.\nPanngaasi a kitaem ti pannakaisaad ti panagikarga ti papeles.", "uploadscripted": "Daytoy a papeles ket naglaon ti HTML wenno eskritu ti kodigo a mabalin a kamali nga inpatarus babaen ti pagbasabasa ti web.", "upload-scripted-pi-callback": "Saan a maikarga ti papeles nga aglaon ti panagproseso ti instruksion iti estilo ti sabanas ti XML.", + "upload-scripted-dtd": "Saan a makaikarga kadagiti papeles ti SVG nga aglaon iti saan a pagalagadan a deklarasion ti DTD.", "uploaded-script-svg": "Nakabiruk ti maieskritu nga elemento ti \"$1\" iti naikarga a papeles ti SVG.", "uploaded-hostile-svg": "Nakabiruk ti saan a natalged a CSS iti elemento ti estilo ti naikarga a papeles ti SVG.", "uploaded-event-handler-on-svg": "Ti panangisaad kadagiti gupit ti panagtengngel ti pasamak ti $1=\"$2\" ket saan a maipalubos kadagiti papeles ti SVG.$1", @@ -1705,6 +1754,8 @@ "pageswithprop-legend": "Pampanid nga adda tagikua ti panid", "pageswithprop-text": "Daytoy a panid ket ilistana ti pampanid nga agus-usar ti naisangayan a tagikua ti panid.", "pageswithprop-prop": "Nagan ti tagikua:", + "pageswithprop-reverse": "Urnosen iti baliktad nga urnos", + "pageswithprop-sortbyvalue": "Urnosen babaen ti pateg ti tagikua", "pageswithprop-submit": "Inkan", "pageswithprop-prophidden-long": "atiddog a teksto ti pateg ti tagikua a nailemmeng ($1)", "pageswithprop-prophidden-binary": "binario a pateg ti tagikua a nailemmeng ($1)", @@ -1836,7 +1887,10 @@ "apisandbox-sending-request": "Agipatpatulod iti kiddaw ti API...", "apisandbox-loading-results": "Agaw-awat kadagiti resulta ti API...", "apisandbox-results-error": "Adda maysa a napasamak a biddut bayat nga agikarkarga iti sungbat ti usisa ti API: $1.", - "apisandbox-request-url-label": "Agkiddaw ti URL:", + "apisandbox-request-selectformat-label": "Ipakita ti kiddaw a datos a kas:", + "apisandbox-request-format-url-label": "Kuerdas ti panagusisa ti URL", + "apisandbox-request-url-label": "Agkiddaw iti URL:", + "apisandbox-request-json-label": "Agkiddaw iti JSON:", "apisandbox-request-time": "Oras ti kiddaw: {{PLURAL:$1|$1 ms}}", "apisandbox-results-fixtoken": "Simpaen ti tangdan ken ited manen", "apisandbox-results-fixtoken-fail": "Napaay ti panagala iti tangdan ti \"$1\".", @@ -1844,6 +1898,7 @@ "apisandbox-alert-field": "Saan nga umiso ti pateg iti daytoy a pagikabilan.", "apisandbox-continue": "Agtuloy", "apisandbox-continue-clear": "Dalusan", + "apisandbox-param-limit": "Ikabil ti max tapno makausar iti kaaduan a patingga.", "apisandbox-multivalue-all-namespaces": "$1 (Amin a nagan ti espasio)", "apisandbox-multivalue-all-values": "$1 (Amin a patpateg)", "booksources": "Dagiti taudan ti libro", @@ -2031,9 +2086,10 @@ "enotif_body_intro_restored": "Ti {{SITENAME}} a panid ti $1 ket naipulangen idi $PAGEEDITDATE babaen ni {{gender:$2|$2}}, kitaen ti $3 para iti agdama panagbaliw.", "enotif_body_intro_changed": "Ti {{SITENAME}} a panid ti $1 ket nasukatanen idi $PAGEEDITDATE babaen ni {{gender:$2|$2}}, kitaen ti $3 para iti agdama panagbaliw.", "enotif_lastvisited": "Kitaen ti $1 para iti amin a panagsukat sipud ti naudi nga isasarungkarmo.", - "enotif_lastdiff": "Kitaen ti $1 tapno mabuya daytoy a panagsukat.", + "enotif_lastdiff": "Tapno makita daytoy a sinukatan, kitaen ti $1", "enotif_anon_editor": "di am-ammo nga agar-aramat $1", "enotif_body": "Nadungngo a $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nPakabuklan ti mannurat: $PAGESUMMARY $PAGEMINOREDIT\n\nKontaken ti mannurat:\nsurat: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nAwanton dagiti sabali a pakaammo iti kaso ti adu pay a panagtigtignay malaksid no sarungkaram datoy a panid bayat a nakastrekka. Mabalinmo pay nga isaad manen dagiti wagayway ti pakaammo para kadagiti amin a bambantayam a panid idiay listaan ti bambantayam.\n\nTi mannakigayyem a sistema ti panagpaammo ti {{SITENAME}} \n\n--\nTi panagsukat ti kasasaad ti esurat a pagpa-ammom, sarungkaram ti\n{{canonicalurl:{{#special:Preferences}}}}\n\nTi panagsukat kadagiti kasasaad ti listaan ti bambantayam, sarungkaram ti\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nTi panagikkat ti panid kadagiti listaan ti bambantayam, sarungkaram ti\n$UNWATCHURL\n\nTi makunkunam ken no masapulmo pay ti tulong:\n$HELPPAGE", + "enotif_minoredit": "Daytoy ket bassit a panagurnos", "created": "naaramid", "changed": "nasukatan", "deletepage": "Ikkaten ti panid", @@ -2072,9 +2128,9 @@ "cantrollback": "Saan a maisubli ti panagurnos;\nti naudi a nakaaramid ket iti laeng nagsurat iti daytoy a panid.", "alreadyrolled": "Saan a maipasubli ti kinaudi a panagurnos iti [[:$1]] babaen ni [[User:$2|$2]] ([[User talk:$2|tungtungan]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);\nadda sabali a naurnos wenno nagipasubli ti panid.\n\nTi kinaudi a panagurnos ti daytoy a panid ket babaen ni [[User:$3|$3]] ([[User talk:$3|tungtungan]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).", "editcomment": "Ti pakabuklan idi ti panagurnos ket: $1.", - "revertpage": "Insubli ti panagurnos babaen ni [[Special:Contributions/$2|$2]] ([[User talk:$2|tungtungan]]), naisubli ti kinaudi a rebision babaen ni [[User:$1|$1]]", + "revertpage": "Insubli ti panagurnos babaen ni [[Special:Contributions/$2|$2]] ([[User talk:$2|tungtungan]]), naisubli iti naudi a rebision babaen ni [[User:$1|$1]]", "revertpage-nouser": "Naisubli dagiti inurnos babaen ti nailemmeng nga agar-aramat iti kinaudi a rebision babaen ni {{GENDER:$1|[[User:$1|$1]]}}", - "rollback-success": "Naibabawi dagiti panagurnos babaen ni $1;\nnaisubli manen ti naudi a rebision babaen ni $2.", + "rollback-success": "Naibabawi dagiti panagurnos babaen ni {{GENDER:$3|$1}};\nnaisubli manen ti naudi a rebision babaen ni {{GENDER:$4|$2}}.", "rollback-success-notify": "Naibabawi dagiti panagurnos babaen ni $1;\nisubli ti naudi a rebision babaen ni $2. [$3 Ipakita dagiti binaliwan]", "sessionfailure-title": "Napaay ti sesion", "sessionfailure": "Adda parikut ti sesion ti panagserrekmo;\ndaytoy nga aramid ket naibabawi a kas pagpawilan ti panaghijack ti sesion.\nAgsublika iti naggapuam a panid, ikargam manen ti panid ken padasen manen.", @@ -2102,6 +2158,9 @@ "modifiedarticleprotection": "nasukatan ti agpang ti salaknib para iti \"[[$1]]\"", "unprotectedarticle": "naikkat ti salaknib manipud iti \"[[$1]]\"", "movedarticleprotection": "iyalis ti kasasaad ti salaknib manipud iti \"[[$2]]\" iti \"[[$1]]\"", + "protectedarticle-comment": "{{GENDER:$2|Sinalakniban}} ti \"[[$1]]\"", + "modifiedarticleprotection-comment": "{{GENDER:$2|Binaliwan ti agpang ti salaknib}} para iti \"[[$1]]\"", + "unprotectedarticle-comment": "{{GENDER:$2|Inikkat ti salaknib}} manipud iti \"[[$1]]\"", "protect-title": "Sukatan ti agpang ti salaknib para iti \"$1\"", "protect-title-notallowed": "Kitaen ti agpang ti salaknib ti \"$1\"", "prot_1movedto2": "[[$1]] naiyalis iti [[$2]]", @@ -2177,6 +2236,7 @@ "undelete-search-title": "Agbiruk kadagiti naikkat a panid", "undelete-search-box": "Agbiruk kadagiti naikkat a panid", "undelete-search-prefix": "Ipakita dagiti panid a mangrugi iti:", + "undelete-search-full": "Ipakita dagiti titulo ti panid nga aglaon iti:", "undelete-search-submit": "Agbiruk", "undelete-no-results": "Awan dagiti kapada ti panid a nasarakan idiay arkibo ti panagikkat.", "undelete-filename-mismatch": "Saan maisubli ti panagikkat ti rebision ti papeles nga adda oras ket petsana a $1: Saan nga agpada ti nagan ti papeles.", @@ -2214,7 +2274,7 @@ "sp-contributions-uploads": "dagiti naikarga", "sp-contributions-logs": "dagiti listaan", "sp-contributions-talk": "tungtungan", - "sp-contributions-userrights": "panagtaripato kadagiti karbengan ti agar-aramat", + "sp-contributions-userrights": "panagtaripato kadagiti karbengan ti {{GENDER:$1|agar-aramat}}", "sp-contributions-blocked-notice": "Agdama a naserraan daytoy nga agar-aramat.\nTi naudi a naikabil iti listaan ti pannakaserra ket naited dita baba para iti reperensia:", "sp-contributions-blocked-notice-anon": "Daytoy nga adres ti IP ket agdama a naserraan.\nTi naudi a naikabil iti listaan ti pannakaserra ket adda dita baba para iti reperensia:", "sp-contributions-search": "Agbiruk para kadagiti kontribusion", @@ -2283,7 +2343,13 @@ "unblocked-id": "Naikkaten ti serra ti $1.", "unblocked-ip": "Naikkaten ti serra ni [[Special:Contributions/$1|$1]] .", "blocklist": "Dagiti naserraan nga agar-aramat", + "autoblocklist": "Dagiti automatiko a serra", "autoblocklist-submit": "Agbiruk", + "autoblocklist-legend": "Listaan dagiti automatiko a serra", + "autoblocklist-localblocks": "{{PLURAL:$1|Lokal nga automatiko a serra|Dagiti lokal nga automatiko a serra}}", + "autoblocklist-total-autoblocks": "Dagup a bilang dagiti automatiko a serra: $1", + "autoblocklist-empty": "Awan linaon ti listaan ti automatiko a serra.", + "autoblocklist-otherblocks": "{{PLURAL:$1|Dadduma nga automatiko a serra|Dagiti dadduma nga automatiko a serra}}", "ipblocklist": "Dagiti naserraan nga agar-aramat", "ipblocklist-legend": "Agbiruk ti naserraan nga agar-aramat", "blocklist-userblocks": "Ilemmeng dagiti serra ti pakabilangan", @@ -2345,6 +2411,7 @@ "proxyblockreason": "Ti IP a pagtaengam ket naserraan ngamin ket daytoy ket nakalukat a panakbagi.\nPangngaasi a kontakem ti agit-ited ti serbisio ti Internetmo wenno teknikal a suporta ti gunglom ken ibagam kaniada ti nakaro a parikut ti seguridad.", "sorbsreason": "Ti IP a pagtaengam ket nailista a kasla \"nalukatan a pannakbagi\" iti DNSBL nga inusar babaen ti {{SITNAME}}.", "sorbs_create_account_reason": "Ti IP a pagtaengam ket nailista a kasla \"nalukatan a pannakbagi\" iti DNSBL nga inusar babaen ti {{SITNAME}}.\nSaanka a makapartuat ti pakabilangan.", + "softblockrangesreason": "Dagiti kontribusion ti di ammo ket saan a maipalubos manipud iti IP nga adresmo ($1). Pagngaasi a sumrek.", "xffblockreason": "Ti maysa nga adres ti IP nga adda iti paulo ti X-Forwarded-For, mabalin a kukuam wenno ti pannakbagi a server nga us-usarem, ket naserraan. Ti kasisigud a rason ti pannakaserra idi ket: $1", "cant-see-hidden-user": "Ti agar-aramat a kayatmo a serraan ket naserraanen ken nailemmeng.\nGapu ta awan met ti karbengam nga agilemming ti agar-aramat, saanmo a makita wenno maurnos ti serra ti agar-aramat.", "ipbblocked": "Saanmo a mabalin ti agserra wenno agikkat ti serra ti sabali nga agar-aramat, ngamin ket naserraanka met.", @@ -2402,6 +2469,7 @@ "movelogpagetext": "Adda dita baba ti listaan dagiti amin a naiyalis a panid.", "movesubpage": "{{PLURAL:$1|Subpanid|Dagiti subpanid}}", "movesubpagetext": "Daytoy a panid ket addaan iti $1 {{PLURAL:$1|a subpanid|kadagiti subpanid}} a naipakita dita baba.", + "movesubpagetalktext": "Ti maitunos a tungtungan a panid ket addaan iti $1 {{PLURAL:$1|a subpanid|kadagiti subpanid}} a naipakita dita baba.", "movenosubpage": "Daytoy a panid ket awan ti subpanidna.", "movereason": "Rason:", "revertmove": "isubli", @@ -2503,7 +2571,7 @@ "import-nonewrevisions": "Awan dagiti naala a rebision (mabalin nga adda amin dagitoyen, wenno nalabsan gapu kadagiti biddut).", "xml-error-string": "$1 iti linia $2, tukol $3 (byte $4): $5", "import-upload": "Ikarga ti datos ti XML", - "import-token-mismatch": "Pannakapukaw ti sesion ti datos.\n\nMabalin a nakaruarka. Pangngaasi a pasingkedan a nakastrekka pay laeng ken padasem manen.\nNo saan pay a mabalin, padasem ti [[Special:UserLogout|rummuar]] ken sumrek manen, ken kitaen no ti pagpasabasam ket mangipalubos kadagiti galieta manipud iti daytoy a sitio.", + "import-token-mismatch": "Pannakapukaw ti sesion ti datos.\n\nMabalin a nakaruarka. '''Pangngaasi a pasingkedan a nakastrekka pay laeng ken padasem manen'''.\nNo saan pay a mabalin, padasem ti [[Special:UserLogout|rummuar]] ken sumrek manen, ken kitaen no ti pagpasabasam ket mangipalubos kadagiti galieta manipud iti daytoy a sitio.", "import-invalid-interwiki": "Saan a makaala manipud iti nainaganan a wiki.", "import-error-edit": "Ti panid ti \"$1\" ket saan idi a naala ngamin ket saanmo a mabalin nga urnosen.", "import-error-create": "Ti panid ti \"$1\" ket saan idi a naala ngamin ket saanmo a mabalin a partuaten.", @@ -2531,6 +2599,7 @@ "tooltip-pt-mycontris": "Ti listaan dagiti kontribusionmo", "tooltip-pt-anoncontribs": "Ti listaan dagiti panagurnos manipud iti daytoy nga adres ti IP", "tooltip-pt-login": "Maaw-awis a sumrekka; nupay kasta, daytoy ket saan a nasken", + "tooltip-pt-login-private": "Nasken a sumrekka tapno makausar iti daytoy a wiki", "tooltip-pt-logout": "Rummuar", "tooltip-pt-createaccount": "Maaw-awis nga agpartuatka iti pakabilangan ken sumrek; nupay kasta, daytoy ket saan a nasken", "tooltip-ca-talk": "Pagtungtungan a maipapan ti linaon ti panid", @@ -2595,7 +2664,7 @@ "anonymous": "Di ammo {{PLURAL:$1|nga agar-aramat|kadagiti agar-aramat}} iti {{SITENAME}}", "siteuser": "{{SITENAME}} nga agar-aramat $1", "anonuser": "{{SITENAME}} di ammo nga agar-aramat $1", - "lastmodifiedatby": "Daytoy a panid ket naudi a nabaliwan idi $2, $1 babaen ni $3.", + "lastmodifiedatby": "Daytoy a panid ket naudi a naurnos idi $2, $1 babaen ni $3.", "othercontribs": "Naibasar iti obra ni $1.", "others": "dadduma pay", "siteusers": "{{PLURAL:$2|{{GENDER:$1|ni agar-aramat}}|da agar-aramat}} $1 ti {{SITENAME}}", @@ -2715,8 +2784,11 @@ "newimages-summary": "Daytoy nga espesial a panid ket ipakitana ti naudi a panagikarga kadagiti papeles.", "newimages-legend": "Sagat", "newimages-label": "Nagan ti papeles (wenno pasetna) :", + "newimages-user": "Adres ti IP wenno nagan ti agar-aramat", + "newimages-newbies": "Iparang dagiti kontribusion dagiti kabarbaro a pakabilangan laeng", "newimages-showbots": "Ipakita dagiti naikarga babaen dagiti bot", "newimages-hidepatrolled": "Ilemmeng dagiti panangikarga a napatruliaan", + "newimages-mediatype": "Kita ti midia:", "noimages": "Awan ti makita.", "ilsubmit": "Agbiruk", "bydate": "babaen ti petsa", @@ -3246,7 +3318,6 @@ "fileduplicatesearch-noresults": "Awan ti nabirukan a papeles a nanaganan ti \"$1\".", "specialpages": "Espesial a pampanid", "specialpages-note-top": "Leyenda", - "specialpages-note": "* Kadawyan nga espesial a pampanid.\n* Nagawidan nga espesial a pampanid.", "specialpages-group-maintenance": "Dagiti reporta ti panagtaripato", "specialpages-group-other": "Sabali nga espesial a pampanid", "specialpages-group-login": "Sumrek / agpartuat ti pakabilangan", @@ -3289,14 +3360,14 @@ "tags-deactivate": "pasardengen", "tags-hitcount": "$1 {{PLURAL:$1|a sinukatan|a sinuksukatan}}", "tags-manage-no-permission": "Awan ti pammalubosmo a mangtaripato kadagiti etiketa ti panagbaliw.", - "tags-manage-blocked": "Saanmo a mataripato dagiti etiketa ti panagbaliw bayat a naserraan.", + "tags-manage-blocked": "Saanmo a mataripato dagiti etiketa ti panagbaliw bayat a {{GENDER:$1|naserraanka}}.", "tags-create-heading": "Agpartuat iti baro nga etiketa", "tags-create-explanation": "Babaen ti kasisigud, dagiti kabarbaro a napartuat nga etiketa ket mabalinto a magun-od a mausar babaen dagiti agar-aramat ken dagiti bot.", "tags-create-tag-name": "Nagan ti etiketa:", "tags-create-reason": "Rason:", "tags-create-submit": "Agpartuat", "tags-create-no-name": "Nasken nga inaganam ti nagan ti etiketa.", - "tags-create-invalid-chars": "Dagiti nagan ti etiketa ket nasken a saan nga aglaon kadagiti kaw-it (,) wenno dagiti agpasango a tagbat (/).", + "tags-create-invalid-chars": "Dagiti nagan ti etiketa ket nasken a saan nga aglaon kadagiti kaw-it (,), dagiti pipa (|), wenno dagiti agpasango a tagbat (/).", "tags-create-invalid-title-chars": "Dagiti nagan ti etiketa ket nasken a saan nga aglaon kadagiti karakter a saan a mabalin a mausar kadagiti titulo ti panid.", "tags-create-already-exists": "Addan ti etiketa ti \"$1\".", "tags-create-warnings-above": "Nakasarak {{PLURAL:$2|iti sumaganad a ballaag|kadagiti sumaganad a ballaag}} idi nagpadas a nagpartuat iti etiketa ti \"$1\":", @@ -3325,11 +3396,11 @@ "tags-deactivate-not-allowed": "Saan a mabalin a pasardengen ti etiketa ti \"$1\".", "tags-deactivate-submit": "Pasardengen", "tags-apply-no-permission": "Awan iti pammalubosmo a mangipakat kadagiti etiketa ti panagbaliw a mairaman kadagiti binaliwam.", - "tags-apply-blocked": "Saanmo a maipakat dagiti etiketa ti panagbaliw a mairaman kadagiti binaliwam bayat a naserraan.", + "tags-apply-blocked": "Saanmo a maipakat dagiti etiketa ti panagbaliw a mairaman kadagiti binaliwam bayat a {{GENDER:$1|naserraanka}}.", "tags-apply-not-allowed-one": "Saan a maipalubos a manual a maipakat ti tiketa ti \"$1\".", "tags-apply-not-allowed-multi": "Saan a maipalubos a manual a maipakat {{PLURAL:$2|ti sumaganad nga etiketa|dagiti sumagand nga etiketa}}: $1", "tags-update-no-permission": "Awan ti pammalubosmo a manginayon wenno mangikkat kadagiti etiketa ti panagbaliw manipud kadagiti agmaymaysa a rebision wenno dagiti naikabil iti listaan.", - "tags-update-blocked": "Saanmo a manayonan wenno maikkat dagiti etiketa ti panagbaliw bayat a naseraan.", + "tags-update-blocked": "Saanmo a manayonan wenno maikkat dagiti etiketa ti panagbaliw bayat a {{GENDER:$1|naseraanka}}.", "tags-update-add-not-allowed-one": "Saan a mabalin a manual a mainayon ti etiketa ti \"$1\".", "tags-update-add-not-allowed-multi": "Saan a mabalin a manual a mainayon {{PLURAL:$2|ti sumaganad nga etiketa|dagiti sumaganad nga etiketa}}: $1", "tags-update-remove-not-allowed-one": "Ti etiketa ti \"$1\" ket saan a maipalubos a maikkat.", @@ -3365,6 +3436,13 @@ "compare-invalid-title": "Ti titulo nga innaganam ket imbalido.", "compare-title-not-exists": "Awan ti innaganam a titulo.", "compare-revision-not-exists": "Awan ti innaganam a rebision.", + "diff-form": "Paggigiddiatan", + "diff-form-oldid": "ID ti daan a rebision (pagpilian)", + "diff-form-revid": "ID ti rebision ti paggiddiatan", + "diff-form-submit": "Ipakita dagiti paggiddiatan", + "permanentlink": "Agnanayon a silpo", + "permanentlink-revid": "ID ti rebision", + "permanentlink-submit": "Mapan iti rebision", "dberr-problems": "Pasensia! Daytoy a sitio ket agdadama nga agsansanay kadagiti teknikal a pagrigatan.", "dberr-again": "Padasem ti aguray kadagiti mano a minuto ken agikarga manen.", "dberr-info": "(Saan a maserrekan ti server ti database: $1)", @@ -3388,13 +3466,29 @@ "htmlform-cloner-create": "Agnayon pay ti adu", "htmlform-cloner-delete": "Ikkaten", "htmlform-cloner-required": "Saan a basbassit ngem maysa a pateg ti masapul.", + "htmlform-date-placeholder": "TTTT-BB-AA", + "htmlform-time-placeholder": "OO:MM:SS", + "htmlform-datetime-placeholder": "TTTT-BB-AA OO:MM:SS", + "htmlform-date-invalid": "Ti ninaganam a pateg ket saan a mabigbigan a petsa. Padasen ti agusar ti pormat ti TTTT-BB-AA.", + "htmlform-time-invalid": "Ti ninaganam a pateg ket saan a mabigbigan nga oras. Padasen ti agusar ti pormat ti OO:MM:SS.", + "htmlform-datetime-invalid": "Ti ninaganam a pateg ket saan a mabigbigan a petsa ken oras. Padasen ti agusar ti pormat ti TTTT-BB-AA OO:MM:SS.", + "htmlform-date-toolow": "Ti ninaganam a pateg ket sakbay ti kasapaan a maipalubos a petsa ti $1.", + "htmlform-date-toohigh": "Ti ninaganam a pateg ket kalpasan ti kaladawan a maipalubos a petsa ti $1.", + "htmlform-time-toolow": "Ti ninaganam a pateg ket sakbay ti kasapaan a maipalubos nga oras ti $1.", + "htmlform-time-toohigh": "Ti ninaganam a pateg ket kalpasan ti kaladawan a maipalubos nga oras ti $1.", + "htmlform-datetime-toolow": "Ti ninaganam a pateg ket sakbay ti kasapaan a maipalubos a petsa ken oras ti $1.", + "htmlform-datetime-toohigh": "Ti ninaganam a pateg ket kalpasan ti kaladawan a maipalubos a petsa ken oras ti $1.", "htmlform-title-badnamespace": "Ti [[:$1]] ket awan iti nagan ti espasio ti \"{{ns:$2}}\".", "htmlform-title-not-creatable": "Saan a mabalin a mapartuat a titulo ti panid ti \"$1\"", "htmlform-title-not-exists": "Awan ti $1.", "htmlform-user-not-exists": "Awan ti $1.", "htmlform-user-not-valid": "Saan nga umiso a nagan ti agar-aramat ti $1.", "logentry-delete-delete": "{{GENDER:$2|Inikkat}} ni $1 ti panid ti $3", - "logentry-delete-restore": "Ni $1 ket {{GENDER:$2|insublina}} ti panid ti $3", + "logentry-delete-delete_redir": "{{GENDER:$2|Inikkat}} ni $1 ti baw-ing ti $3 babaen ti panagsurat manen", + "logentry-delete-restore": "Ni $1 ket {{GENDER:$2|insublina}} ti panid $3 ($4)", + "logentry-delete-restore-nocount": "{{GENDER:$2|Insubli}} ni $1 ti panid ti $3", + "restore-count-revisions": "{{PLURAL:$1|ti 1 a rebision|dagiti $1 a rebision}}", + "restore-count-files": "{{PLURAL:$1|1 a papeles|$1 a pappapeles}}", "logentry-delete-event": "Ni $1 ket {{GENDER:$2|binaliwanna}} ti panagkita {{PLURAL:$5|iti listaan ti pasamak |dagiti $5 a listaan ti pasamak }} iti $3: $4", "logentry-delete-revision": "{{GENDER:$2|Binaliwan}} ni $1 ti panagkita {{PLURAL:$5|ti rebision|dagiti $5 a rebision}} iti panid ti $3: $4", "logentry-delete-event-legacy": "Ni $1 ket {{GENDER:$2|binaliwanna}} ti panagkita ti listaan dagiti pasamak iti $3", @@ -3447,6 +3541,7 @@ "logentry-managetags-create": "{{GENDER:$2|Nagpartuat}} ni $1 ti etiketa ti \"$4\"", "log-name-tag": "Listaan ti etiketa", "rightsnone": "(awan)", + "rightslogentry-temporary-group": "$1 (temporario, aginggana intono $2)", "feedback-adding": "Agnaynayon ti feedback iti panid...", "feedback-back": "Agsubli", "feedback-bugcheck": "Nasayaaten! Kitaem tapno saan a dagiti adda idin a [$1 nga ammo a parparikut].", @@ -3454,6 +3549,8 @@ "feedback-bugornote": "No sisasagakan nga agibaga ti teknikal a pakirut a naisalaysay pangngaasi nga [$1 ireporta ti parikut].\nNupay kasta, mausarmo ti nalaka a porma dita baba. Ti komentario nga itedmo ket mainayon iti panid \"[$3 $2], a mairaman ti naganmo nga agar-aramat ken no ania ti pagbasabasa nga us-sarem.", "feedback-cancel": "Ukasen", "feedback-close": "Nalpasen", + "feedback-external-bug-report-button": "Mangited iti teknikal nga obra", + "feedback-dialog-title": "Mangited iti feedback", "feedback-error1": "Biddut: Saan a malasin dagiti nagbanagan manipud iti API", "feedback-error2": "Biddut: Napaay ti panagurnos", "feedback-error3": "Biddut: Awan ti sungbat manipud iti API", @@ -3517,6 +3614,9 @@ "pagelang-reason": "Rason", "pagelang-submit": "Ited", "pagelang-nonexistent-page": "Awan ti panid ti $1.", + "pagelang-unchanged-language": "Ti panid ti $1 ket naisaaden iti pagsasao ti $2.", + "pagelang-unchanged-language-default": "Ti panid ti $1 ket naisaaden iti kasisigud a pagsasao ti linaon ti wiki.", + "pagelang-db-failed": "Napaay a nangbaliw ti database ti pagsasao ti panid.", "right-pagelang": "Baliwan ti pagsasao ti panid", "action-pagelang": "baliwan ti pagsasao ti panid", "log-name-pagelang": "Listaan ti panagbaliw ti pagsasao", @@ -3587,6 +3687,8 @@ "mw-widgets-titleinput-description-redirect": "ibaw-ing iti $1", "mw-widgets-categoryselector-add-category-placeholder": "Agnayon iti kategoria...", "mw-widgets-usersmultiselect-placeholder": "Agnayon pay iti adu...", + "date-range-from": "Pangrugian a petsa:", + "date-range-to": "Pagpatinggaan a petsa:", "sessionmanager-tie": "Saan a mabalin nga itipon dagiti nadumaduma kita ti kiddaw ti pammasingked: $1.", "sessionprovider-generic": "Dagiti sesion ti $1", "sessionprovider-mediawiki-session-cookiesessionprovider": "dagiti sesion a naibatay iti galieta", @@ -3611,6 +3713,7 @@ "log-action-filter-contentmodel-change": "Panagbaliw ti modelo ti linaon", "log-action-filter-contentmodel-new": "Panagpartuat ti panid iti saan a kasisigud a modelo ti linaon", "log-action-filter-delete-delete": "Panagikkat ti panid", + "log-action-filter-delete-delete_redir": "Sinuratan manen a baw-ing", "log-action-filter-delete-restore": "Panangisubli ti panagikkat ti panid", "log-action-filter-delete-event": "Panagikkat ti listaan", "log-action-filter-delete-revision": "Panagikkat ti rebision", @@ -3717,7 +3820,13 @@ "usercssispublic": "Pangngaasi a laglagipen: Dagiti subpanid ti CSS ket nasken a saan nga aglaon iti datos a nailemed gapu ta makita dagitoy babaen dagiti sabali nga agar-aramat.", "restrictionsfield-badip": "Imbalido nga adres ti IP wenno sakup: $1", "restrictionsfield-label": "Dagiti mapalubosan a sakup ti IP:", + "restrictionsfield-help": "Maysa nga adres ti IP wenno sakup ti CIDR kada linia. Tapno mapakabaelan amin, usaren ti:
0.0.0.0/0\n::/0
", "revid": "rebision $1", "pageid": "ID ti panid $1", - "gotointerwiki": "Pumanpanaw iti {{SITENAME}}" + "rawhtml-notallowed": "Saan a mabalin a mausar dagiti etiketa ti <html> iti ruar dagiti kadawyan a panid.", + "gotointerwiki": "Pumanpanaw iti {{SITENAME}}", + "gotointerwiki-invalid": "Ti nainaganan a titulo ket imbalido.", + "pagedata-title": "Datos ti panid", + "pagedata-not-acceptable": "Awan ti kapada a pormat ti nabirukan. Dagiti masuportaran a kita ti MIME: $1", + "pagedata-bad-title": "Imbalido ti titulo: $1." } diff --git a/languages/i18n/is.json b/languages/i18n/is.json index 3b852926fb..662971027b 100644 --- a/languages/i18n/is.json +++ b/languages/i18n/is.json @@ -56,7 +56,7 @@ "tog-shownumberswatching": "Sýna fjölda vaktandi notenda", "tog-oldsig": "Núverandi undirskriftin þín:", "tog-fancysig": "Meðhöndla undirskrift sem wikitexta (án sjálfvirks tengils)", - "tog-uselivepreview": "Nota beina forskoðun", + "tog-uselivepreview": "Nota beina forskoðun án þess að endurhlaða síðuna", "tog-forceeditsummary": "Birta áminningu þegar breytingarágripið er tómt", "tog-watchlisthideown": "Ekki sýna mínar breytingar á vaktlistanum", "tog-watchlisthidebots": "Ekki sýna breytingar vélmenna á vaktlistanum", @@ -173,13 +173,7 @@ "anontalk": "Spjall", "navigation": "Flakk", "and": " og", - "qbfind": "Finna", - "qbbrowse": "Flakka", - "qbedit": "Breyta", - "qbpageoptions": "Þessi síða", - "qbmyoptions": "Mínar síður", "faq": "Algengar spurningar", - "faqpage": "Project:Algengar spurningar", "actions": "Aðgerðir", "namespaces": "Nafnrými", "variants": "Útgáfur", @@ -205,32 +199,22 @@ "edit-local": "Breyta staðbundinni lýsingu", "create": "Skapa", "create-local": "Bæta við staðbundinni lýsingu", - "editthispage": "Breyta þessari síðu", - "create-this-page": "Skapa þessari síðu", "delete": "Eyða", - "deletethispage": "Eyða þessari síðu", - "undeletethispage": "Endurvekja þessa síðu", "undelete_short": "Endurvekja {{PLURAL:$1|$1 breytingu|$1 breytingar}}", "viewdeleted_short": "Skoða $1 {{PLURAL:$1|eydda breytingu|eyddar breytingar}}", "protect": "Vernda", "protect_change": "breyta", - "protectthispage": "Vernda þessa síðu", "unprotect": "Afvernda", - "unprotectthispage": "Afvernda þessa síðu", "newpage": "Ný síða", - "talkpage": "Ræða um þessa síðu", "talkpagelinktext": "Spjall", "specialpage": "Kerfissíða", "personaltools": "Tenglar", - "articlepage": "Sýna núverandi síðu", "talk": "Spjall", "views": "Sýn", "toolbox": "Verkfæri", "tool-link-userrights": "Breyta {{GENDER:$1|notanda}} hópum", "tool-link-userrights-readonly": "Skoða {{GENDER:$1|notanda}} hópa", "tool-link-emailuser": "Senda þessum {{GENDER:$1|notanda}} tölvupóst", - "userpage": "Skoða notandasíðu", - "projectpage": "Skoða verkefnissíðu", "imagepage": "Skoða skráarsíðu", "mediawikipage": "Skoða skilaboðasíðu", "templatepage": "Skoða sniðmátasíðu", @@ -397,7 +381,7 @@ "filereadonlyerror": "Ekki var hægt að breyta skránni \"$1\" því skráin í skráarsafninu \"$2\" er engöngu hægt að lesa.\n\nKerfisstjórinn sem læsti skránni gaf þessa ástæðu: \"$3\".", "invalidtitle-knownnamespace": "Ógildur titill í nafnrými \"$2\" og með textann \"$3\"", "invalidtitle-unknownnamespace": "Ógildur titill með óþekkt nafnrými númer $1 og texta \"$2\"", - "exception-nologin": "Óinnskráð(ur)", + "exception-nologin": "Ekki skráð/ur inn", "exception-nologin-text": "Skráðu þig inn til þess að fá aðgang að þessari síðu eða aðgerð.", "exception-nologin-text-manual": "$1 til þess að fá aðgang að þessari síðu eða aðgerð.", "virus-badscanner": "Slæm stilling: óþekktur veiruskannari: $1", @@ -410,37 +394,42 @@ "welcomecreation-msg": "Aðgangurinn þinn hefur verið búinn til.\nEkki gleyma að breyta [[Special:Preferences|{{SITENAME}} stillingunum]] þínum.", "yourname": "Notandanafn:", "userlogin-yourname": "Notandanafn", - "userlogin-yourname-ph": "Skrifaðu inn notandanafnið þitt", - "createacct-another-username-ph": "Skrifaðu inn notandanafnið", + "userlogin-yourname-ph": "Settu inn notandanafnið þitt", + "createacct-another-username-ph": "Settu inn notandanafnið", "yourpassword": "Lykilorð:", "userlogin-yourpassword": "Lykilorð", - "userlogin-yourpassword-ph": "Skrifaðu niður lykilorðið þitt", - "createacct-yourpassword-ph": "Skrifaðu niður lykilorð", + "userlogin-yourpassword-ph": "Settu inn lykilorðið þitt", + "createacct-yourpassword-ph": "Settu inn lykilorð", "yourpasswordagain": "Endurrita lykilorð:", "createacct-yourpasswordagain": "Staðfestu lykilorðið", "createacct-yourpasswordagain-ph": "Sláðu inn lykilorðið aftur", "userlogin-remembermypassword": "Muna innskráningu mína", "userlogin-signwithsecure": "Nota örugga tengingu", + "cannotlogin-title": "Get ekki skráð inn", + "cannotlogin-text": "Innskráning er ekki möguleg.", "cannotloginnow-title": "Get ekki skráð inn núna", "cannotloginnow-text": "Innskráning er ekki möguleg þegar verið er að nota $1.", + "cannotcreateaccount-title": "Ekki hægt að búa til aðganga", "yourdomainname": "Þitt lén:", "password-change-forbidden": "Þú getur ekki breytt lykilorðum á þessum wiki.", "externaldberror": "Uppfærsla mistókst. Annaðhvort varð villa í gagnasafninu eða að þér sé óheimilt að uppfæra aðra aðganga.", - "login": "Innskrá", - "nav-login-createaccount": "Innskrá / Búa til aðgang", + "login": "Skrá inn", + "login-security": "Sannreyndu auðkennin þín", + "nav-login-createaccount": "Skrá inn / Búa til aðgang", "logout": "Útskráning", "userlogout": "Útskrá", - "notloggedin": "Ekki innskráð(ur)", - "userlogin-noaccount": "Áttu ekki aðgang?", + "notloggedin": "Ekki skráð/ur inn", + "userlogin-noaccount": "Ertu ekki með aðgang?", "userlogin-joinproject": "Sameina {{SITENAME}}", "createaccount": "Nýskrá", - "userlogin-resetpassword-link": "Gleymdiru lykilorðinu þínu?", + "userlogin-resetpassword-link": "Gleymdirðu lykilorðinu þínu?", "userlogin-helplink2": "Hjálp við innskráningu", "userlogin-loggedin": "Þú ert búin(n) að skrá þig inn sem {{GENDER:$1|$1}}.\nNotaðu eyðablaðið fyrir neðan til að skrá þig inn sem annar notandi.", + "userlogin-reauth": "Þú verður að skrá þig aftur inn til að sannreyna að þú sért {{GENDER:$1|$1}}.", "userlogin-createanother": "Stofna annan aðgang", "createacct-emailrequired": "Netfang", "createacct-emailoptional": "Netfang (valfrjálst)", - "createacct-email-ph": "Skrifaðu niður netfangið þitt", + "createacct-email-ph": "Settu inn netfangið þitt", "createacct-another-email-ph": "Skrifaðu netfang", "createaccountmail": "Nota handahófsvalið bráðabirgðalykilorð og senda það á netfangið sem er tilgreint hér fyrir neðan", "createacct-realname": "Raunverulegt nafn (valfrjálst)", @@ -448,6 +437,8 @@ "createacct-reason-ph": "Afhverju ertu að búa til annan aðgang", "createacct-submit": "Búa til aðganginn", "createacct-another-submit": "Stofna aðgang", + "createacct-continue-submit": "Halda áfram við að búa til aðgang", + "createacct-another-continue-submit": "Halda áfram við að búa til aðgang", "createacct-benefit-heading": "{{SITENAME}} er skrifuð af fólki eins og þér.", "createacct-benefit-body1": "{{PLURAL:$1|breyting|breytingar}}", "createacct-benefit-body2": "{{PLURAL:$1|síða|síður}}", @@ -495,7 +486,7 @@ "emaildisabled": "Þessi síða getur ekki sent tölvupóst.", "accountcreated": "Aðgangur búinn til", "accountcreatedtext": "Notandaaðgangurinn fyrir [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|spjall]]) hefur verið búinn til.", - "createaccount-title": "Innskráningagerð á {{SITENAME}}", + "createaccount-title": "Gerð notandaaðgangs á {{SITENAME}}", "createaccount-text": "Einhver bjó til aðgang fyrir netfangið þitt á {{SITENAME}} ($4) undir nafninu „$2“, með lykilorðið „$3“.\nÞú ættir að skrá þig inn og breyta lykilorðinu núna.\n\nÞú getur hunsað þessi skilaboð, ef villa hefur átt sér stað.", "login-throttled": "Þér hefur of oft mistekist að skrá þig inn með þessu notandanafni.\nBíddu $1 áður en þú reynir aftur.", "login-abort-generic": "Innskráningin misheppnaðist - hætt var við hana.", @@ -503,8 +494,9 @@ "loginlanguagelabel": "Tungumál: $1", "suspicious-userlogout": "Beiðni um útskráningu hafnað því hún var líklegast send frá biluðum vafra eða vefseli sem hefur vistað vefsíðuna í flýtiminni.", "createacct-another-realname-tip": "Alvöru nafn er valfrjálst. Ef þú kýst að gefa það upp, verður það notað til að gefa þér heiður af verkum þínum.", - "pt-login": "Innskrá", - "pt-login-button": "Innskrá", + "pt-login": "Skrá inn", + "pt-login-button": "Skrá inn", + "pt-login-continue-button": "Halda áfram við að skrá þig inn", "pt-createaccount": "Stofna aðgang", "pt-userlogout": "Útskrá", "php-mail-error-unknown": "Óþekkt villa í PHP mail() aðgerð.", @@ -527,6 +519,7 @@ "botpasswords-label-delete": "Eyða", "botpasswords-label-resetpassword": "Endurstilla lykilorðið", "resetpass_forbidden": "Ekki er hægt að breyta lykilorðum", + "resetpass_forbidden-reason": "Ekki er hægt að breyta lykilorðum: $1", "resetpass-no-info": "Þú verður að vera skráð(ur) inn til að hafa aðgang að þessari síðu.", "resetpass-submit-loggedin": "Breyta lykilorði", "resetpass-submit-cancel": "Hætta við", @@ -548,6 +541,7 @@ "passwordreset-emailelement": "Notandanafn: \n$1\n\nBráðabirgðalykilorð: \n$2", "passwordreset-emailsentemail": "Ef þetta netfang er skráð fyrir aðganginum þínum þá hefur töluvpóstur verið sendur til að endursetja lykilorðið.", "passwordreset-emailsentusername": "Ef eitthvað netfang er skráð fyrir aðganginum þínum, þá mun verða sendur töluvpóstur til að endursetja lykilorðið.", + "passwordreset-invalidemail": "Ógilt tölvupóstfang", "changeemail": "Breyta eða fjarlægja netfang", "changeemail-header": "Fylltu út þetta eyðublað til að breyta netfanginu þínu. Ef þú vilt fjarlægja tengingu allra netfanga frá aðganginum þínum skildu þá netfangs reitinn eftir tóman.", "changeemail-no-info": "Þú verður að vera skráð(ur) inn til að hafa aðgang að þessari síðu.", @@ -596,12 +590,12 @@ "showdiff": "Sýna breytingar", "blankarticle": "Viðvörun: Síðan sem þú ert að búa til er tóm.\nEf þú smellir aftur á \"$1\", verður síðan búin til án innihalds.", "anoneditwarning": "Viðvörun: Þú ert ekki innskráð(ur). Vistfang þitt verður sýnt opinberlega ef þú gerir einhverjar breytingar. Ef þú [$1 skráir þig inn] eða [$2 stofnar aðgang] munu breytingarnar þínar vera tengdar við notandanafn þitt, ásamt öðrum kostum.", - "anonpreviewwarning": "Þú ert ekki innskráð(ur). Vistfang þitt skráist í breytingaskrá síðunnar.", + "anonpreviewwarning": "Þú ert ekki skráð(ur) inn. Vistfang þitt skráist í breytingaskrá síðunnar.", "missingsummary": "'''Áminning:''' Þú hefur ekki skrifað breytingarágrip.\nEf þú smellir á Vista aftur, verður breyting þín vistuð án þess.", "missingcommenttext": "Gerðu svo vel og skrifaðu athugasemd fyrir neðan.", "missingcommentheader": "Áminning: Þú hefur ekki gefið upp umræðuefni.\nEf þú smellir á \"$1\" aftur, verður breyting þín vistuð án þess.", "summary-preview": "Forskoða breytingarágrip:", - "subject-preview": "Forskoðun umræðuefnis:", + "subject-preview": "Forskoðun viðfangsefnis:", "blockedtitle": "Notandi er bannaður", "blockedtext": "'''Notandanafn þitt eða vistfang hefur verið bannað.'''\n\nBannið var sett af $1.\nÁstæðan er eftirfarandi: ''$2''.\n\n* Bannið hófst: $8\n* Banninu lýkur: $6\n* Sá sem banna átti: $7\n\nÞú getur haft samband við $1 eða annan [[{{MediaWiki:Grouppage-sysop}}|stjórnanda]] til að ræða bannið.\nÞú getur ekki notað „Senda þessum notanda tölvupóst“ aðgerðina nema gilt netfang sé skráð í [[Special:Preferences|kjörstillingum þínum]] og að þér hafi ekki verið óheimilað það.\nNúverandi vistfang þitt er $3, og bannnúmerið er #$5.\nHafðu með allar þessar upplýsingar hér fyrir ofan í fyrirspurnum þínum.", "autoblockedtext": "Vistfang þitt hefur verið sjálfvirkt bannað því það var notað af öðrum notanda, sem var bannaður af $1.\nÁstæðan er eftirfarandi:\n\n:''$2''\n\n* Bannið hófst: $8\n* Banninu lýkur: $6\n* Sá sem banna átti: $7\n\nÞú getur haft samband við $1 eða annan [[{{MediaWiki:Grouppage-sysop}}|stjórnanda]] til að ræða bannið.\n\nAthugaðu að þú getur ekki notað „Senda þessum notanda tölvupóst“ aðgerðina nema gilt netfang sé skráð í [[Special:Preferences|kjörstillingum þínum]] og að þér hafi ekki verið óheimilað það.\n\nNúverandi vistfang þitt er $3, og bannnúmerið er #$5.\nHafðu með allar þessar upplýsingar hér fyrir ofan í fyrirspurnum þínum.", @@ -611,7 +605,7 @@ "nosuchsectiontitle": "Hluti ekki til", "nosuchsectiontext": "Þú reyndir að breyta hluta sem er ekki til.\nHlutinn gæti hafa verið fluttur til eða hent á meðan þú varst að skoða síðuna.", "loginreqtitle": "Innskráningar krafist", - "loginreqlink": "innskrá", + "loginreqlink": "skrá inn", "loginreqpagetext": "Þú þarft að $1 þig til að geta séð aðrar síður.", "accmailtitle": "Lykilorð sent.", "accmailtext": "Lykilorðið fyrir [[User talk:$1|$1]] hefur verið sent á $2. Hægt er að breyta því á síðunni ''[[Special:ChangePassword|breyta lykilorði]]'' þegar notandinn hefur skráð sig inn.", @@ -658,7 +652,7 @@ "readonlywarning": "AÐVÖRUN: Gagnagrunninum hefur verið læst til að unnt sé að framkvæma viðhaldsaðgerðir, svo þú getur ekki vistað breytingar þínar núna.\nÞú ættir að klippa og líma textann yfir í textaskjal til þess að geyma hann til seinni tíma.\n\nKerfisstjórinn sem læsti honum gaf þessa skýringu: $1", "protectedpagewarning": "'''Viðvörun: Þessari síðu hefur verið læst svo aðeins notendur með möppudýraréttindi geti breytt henni.'''\nSíðasta færsla síðunnar úr verndunarskrá er sýnd til skýringar:", "semiprotectedpagewarning": "'''Athugið''': Þessari síðu hefur verið læst þannig að aðeins innskráðir notendur geti breytt henni.\nSíðasta færsla síðunnar úr verndunarskrá er sýnd til skýringar:", - "cascadeprotectedwarning": "Viðvörun: Þessari síðu hefur verið læst svo aðeins möppudýr geta breytt henni, því hún er ítengd keðjuvörn eftirfarandi {{PLURAL:$1|síðu|síðna}}:", + "cascadeprotectedwarning": "Viðvörun: Þessari síðu hefur verið læst þannig að aðeins notendur með [[Special:ListGroupRights|sérstök réttindi]] geta breytt henni, því hún er ítengd keðjuvörn eftirfarandi {{PLURAL:$1|síðu|síðna}}:", "titleprotectedwarning": "''VIÐVÖRUN: Þessari síðu hefur verið læst svo aðeins [[Special:ListGroupRights|sérstakir notendur]] geta breytt henni.'''\nVerndunarskrá síðunnar er gefin fyrir neðan til tilvísunar.", "templatesused": "Sniðmát {{PLURAL:$1|notað|notuð}} á þessari síðu:", "templatesusedpreview": "Sniðmát {{PLURAL:$1|notað|notuð}} í forskoðuninni:", @@ -676,8 +670,8 @@ "permissionserrorstext": "Þú hefur ekki leyfi til að gera þetta, af eftirfarandi {{PLURAL:$1|ástæðu|ástæðum}}:", "permissionserrorstext-withaction": "Þú hefur ekki réttindi til að $2, af eftirfarandi {{PLURAL:$1|ástæðu|ástæðum}}:", "recreate-moveddeleted-warn": "'''Viðvörun: Þú ert að endurskapa síðu sem áður hefur verið eytt.'''\n\nAthuga skal hvort viðeigandi sé að gera þessa síðu.\nEyðingarskrá og flutningaskrá fyrir þessa síðu eru útvegaðar hér til þæginda:", - "moveddeleted-notice": "Þessari síðu hefur verið eytt.\nEyðingaskrá og flutningaskrá síðunnar eru gefnar fyrir neðan til tilvísunar.", - "moveddeleted-notice-recent": "Því miður var þessari síðu eytt nýlega (innan síðustu 24 tímana).\nEyðingar og færsluskráin fyrir síðuna eru gefnar hér fyrir neðan til glöggvunar.", + "moveddeleted-notice": "Þessari síðu hefur verið eytt.\nEyðinga-, verndunar- og flutningaskrá síðunnar eru gefnar fyrir neðan til tilvísunar.", + "moveddeleted-notice-recent": "Því miður var þessari síðu eytt nýlega (innan síðustu 24 klst).\nEyðingar-, verndunar- og færsluskrár fyrir síðuna eru gefnar hér fyrir neðan til glöggvunar.", "log-fulllog": "Skoða alla aðgerðaskrána", "edit-hook-aborted": "Breyting síðu stöðvuð af viðbótarkrók (extension hook).\nEngin skýring gefin.", "edit-gone-missing": "Gat ekki uppfært síðu.\nSvo virðist sem henni hafi verið eytt.", @@ -883,9 +877,10 @@ "search-file-match": "(passar við innihald skráa)", "search-suggest": "Varstu að leita að: $1", "search-rewritten": "Sýni niðurstöður $1. Leita í staðinn að $2.", - "search-interwiki-caption": "Systurverkefni", + "search-interwiki-caption": "Niðurstöður úr systurverkefnum", "search-interwiki-default": "Útkomur frá $1:", "search-interwiki-more": "(fleiri)", + "search-interwiki-more-results": "fleiri niðurstöður", "search-relatedarticle": "Tengt", "searchrelated": "tengt", "searchall": "öllum", @@ -903,6 +898,7 @@ "search-external": "Ytri leit", "searchdisabled": "{{SITENAME}}-leit er óvirk.\nÞú getur leitað í genum Google á meðan.\nAthugaðu að skrár þeirra yfir {{SITENAME}}-efni kunna að vera úreltar.", "search-error": "Villa kom upp við leit að: $1", + "search-warning": "Aðvörun kom upp við leit: $1", "preferences": "Kjörstillingar", "mypreferences": "Kjörstillingar", "prefs-edits": "Fjöldi breytinga:", @@ -922,7 +918,7 @@ "prefs-editwatchlist-clear": "Hreinsa vaktlista", "prefs-watchlist-days": "Fjöldi daga sem vaktlistinn nær yfir:", "prefs-watchlist-days-max": "Hámark $1 {{PLURAL:$1|dagur|dagar}}", - "prefs-watchlist-edits": "Fjöldi breytinga sem vaktlistinn nær yfir:", + "prefs-watchlist-edits": "Hámarksfjöldi breytinga sem birta skal í vaktlista:", "prefs-watchlist-edits-max": "Hámarkstala: 1000", "prefs-watchlist-token": "Tóki vaktlistans:", "prefs-misc": "Aðrar stillingar", @@ -974,6 +970,7 @@ "username": "{{Gender:$1|Notandanafn}}:", "prefs-memberingroups": "{{GENDER:$2|Meðlimur}} {{PLURAL:$1|hóps|hópa}}:", "prefs-memberingroups-type": "$1", + "group-membership-link-with-expiry": "$1 (til $2)", "prefs-registration": "Skráningartími:", "prefs-registration-date-time": "$1", "yourrealname": "Fullt nafn:", @@ -1012,23 +1009,30 @@ "prefs-diffs": "Breytingar", "prefs-help-prefershttps": "Þessi stilling tekur gildi í næsta skiptið sem þú skráir þig inn.", "prefswarning-warning": "Þú hefur gert breytingar á kjörstillingum þínum sem ekki er búið að vista.\nEf þú ferð af þessari síðu án þess að smella á \"$1\" verða kjörstillingar þínar ekki uppfærðar.", - "userrights": "Breyta notandaréttindum", + "userrights": "Notandaréttindi", "userrights-lookup-user": "Velja notanda", "userrights-user-editname": "Skráðu notandanafn:", "editusergroup": "Hlaða inn notanda hópum", "editinguser": "Breyti réttindum {{GENDER:$1|notandans}} [[User:$1|$1]] $2", - "userrights-editusergroup": "Breyta notandahópum", + "userrights-editusergroup": "Breyta hópum {{GENDER:$1|notanda}}", + "userrights-viewusergroup": "Skoða hópa {{GENDER:$1|notanda}}", "saveusergroups": "Vista {{GENDER:$1|notanda}} hópa", "userrights-groupsmember": "Meðlimur:", "userrights-groupsmember-auto": "Sjálfvirkt bætt við sem meðlimur í:", "userrights-groupsmember-type": "$1", - "userrights-groups-help": "Þú getur breytt hópunum sem að þessi notandi er í.\n* Valinn reitur þýðir að notandinn er í hópnum.\n* Óvalinn reitur þýðir að notandinn er ekki í hópnum.\n* Stjarnan (*) þýðir að þú getur ekki fært hópinn eftir að þú hefur breytt honum, eða öfugt.", + "userrights-groups-help": "Þú getur breytt hópunum sem að þessi notandi er í.\n* Valinn reitur þýðir að notandinn er í hópnum.\n* Óvalinn reitur þýðir að notandinn er ekki í hópnum.\n* Stjarnan (*) þýðir að þú getur ekki fært hópinn eftir að þú hefur breytt honum, eða öfugt.\n* Myllumerki (#) þýðir að þú getur flutt til baka úreldingartíma á þátttöku í þessum hópi; þú getur ekki lengt hann.", "userrights-reason": "Ástæða:", "userrights-no-interwiki": "Þú hefur ekki leyfi til að breyta notandaréttindum á öðrum wiki-síðum.", "userrights-nodatabase": "Gagnagrunnurinn $1 er ekki til eða ekki staðbundinn.", "userrights-changeable-col": "Hópar sem þú getur breytt", "userrights-unchangeable-col": "Hópar sem þú getur ekki breytt", "userrights-irreversible-marker": "$1*", + "userrights-expiry-current": "Rennur út $1", + "userrights-expiry-none": "Rennur ekki út", + "userrights-expiry": "Rennur út:", + "userrights-expiry-existing": "Núverandi gildislok: $3, $2", + "userrights-expiry-othertime": "Annar tími:", + "userrights-expiry-options": "1 dagur:1 dagur,1 vika:1 vika,1 mánuður:1 mánuður,3 mánuðir:3 mánuðir,6 mánuðir:6 mánuðir,1 ár:1 ár", "userrights-conflict": "Árekstur í að breyta notandaréttindum! Skoðaðu þetta aftur og staðfestu breytingar þínar.", "group": "Hópur:", "group-user": "Notendur", @@ -1208,6 +1212,51 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (sjá einng [[Special:NewPages|lista yfir nýjar síður]])", "recentchanges-legend-plusminus": "(±123)", "recentchanges-submit": "Sýna", + "rcfilters-tag-remove": "Fjarlægja '$1'", + "rcfilters-legend-heading": "Listi yfir styttingar", + "rcfilters-grouping-title": "Hópun", + "rcfilters-activefilters": "Virkar síur", + "rcfilters-advancedfilters": "Ítarlegar síur", + "rcfilters-limit-title": "Breytingar sem á að sýna", + "rcfilters-limit-shownum": "Birta síðustu {{PLURAL:$1|breytingu|$1 breytingar}}", + "rcfilters-days-title": "Síðustu daga", + "rcfilters-hours-title": "Síðustu klukkutíma", + "rcfilters-days-show-days": "$1 {{PLURAL:$1|dag|daga}}", + "rcfilters-days-show-hours": "$1 {{PLURAL:$1|klukkustund|klukkustundir}}", + "rcfilters-highlighted-filters-list": "Áherslulitað: $1", + "rcfilters-quickfilters": "Vistaðar síur", + "rcfilters-savedqueries-defaultlabel": "Vistaðar síur", + "rcfilters-savedqueries-rename": "Endurnefna", + "rcfilters-savedqueries-setdefault": "Setja sem sjálfgefið", + "rcfilters-savedqueries-unsetdefault": "Fjarlægja sjálfgefið", + "rcfilters-savedqueries-remove": "Fjarlægja", + "rcfilters-savedqueries-new-name-label": "Heiti", + "rcfilters-savedqueries-new-name-placeholder": "Lýstu markmiði síunnar", + "rcfilters-savedqueries-apply-label": "Búa til síu", + "rcfilters-savedqueries-apply-and-setdefault-label": "Búa til sjálfgefna síu", + "rcfilters-savedqueries-cancel-label": "Hætta við", + "rcfilters-clear-all-filters": "Hreinsa allar síur", + "rcfilters-show-new-changes": "Skoða nýjustu breytingarnar", + "rcfilters-filterlist-title": "Síur", + "rcfilters-highlightbutton-title": "Áherslulita niðurstöður", + "rcfilters-highlightmenu-title": "Veldu lit", + "rcfilters-filter-editsbyself-label": "Breytingar eftir þig", + "rcfilters-filter-editsbyself-description": "Þín eigin framlög.", + "rcfilters-filter-editsbyother-label": "Breytingar eftir aðra", + "rcfilters-filter-editsbyother-description": "Allir breytingar nema þínar eigin.", + "rcfilters-filtergroup-userExpLevel": "Skráning notanda og reynsla", + "rcfilters-filter-user-experience-level-registered-label": "Skráð/ur", + "rcfilters-filter-user-experience-level-unregistered-label": "Óskráður", + "rcfilters-filter-user-experience-level-newcomer-label": "Byrjendur", + "rcfilters-filter-user-experience-level-learner-label": "Námshestar", + "rcfilters-filter-user-experience-level-experienced-label": "Vanir notendur", + "rcfilters-filtergroup-automated": "Sjálfvirk framlög", + "rcfilters-filter-bots-label": "Vélmenni", + "rcfilters-filter-humans-label": "Manneskja (ekki vélmenni)", + "rcfilters-filtergroup-reviewstatus": "Staða yfirferðar", + "rcfilters-filter-patrolled-label": "Vaktað", + "rcfilters-filter-minor-label": "Minniháttar breytingar", + "rcfilters-filter-watchlist-watched-label": "Á vaktlista", "rcnotefrom": "Að neðan {{PLURAL:$5|er breyting síðan|eru breytingar síðan}} $3, $4 (allt að $1 sýndar).", "rclistfrom": "Sýna breytingar frá og með $3 $2", "rcshowhideminor": "$1 minniháttar breytingar", @@ -1219,7 +1268,7 @@ "rcshowhideliu": "$1 skráða notendur", "rcshowhideliu-show": "Sýna", "rcshowhideliu-hide": "Fela", - "rcshowhideanons": "$1 óinnskráða notendur", + "rcshowhideanons": "$1 nafnlausa notendur", "rcshowhideanons-show": "Sýna", "rcshowhideanons-hide": "Fela", "rcshowhidepatr": "$1 vaktaðar breytingar", @@ -1265,7 +1314,7 @@ "uploadbtn": "Hlaða inn skrá", "reuploaddesc": "Hætta við og fara aftur á innhleðsluformið.", "upload-tryagain": "Sendu breytta myndlýsingu", - "uploadnologin": "Óinnskráð(ur)", + "uploadnologin": "Ekki skráð/ur inn", "uploadnologintext": "Þú verður $1 til að hlaða inn skrám.", "upload_directory_missing": "Innhleðslumappan ($1) er týnd og vefþjónninn gat ekki búið hana til.", "upload_directory_read_only": "Mistókst að skrifa í innhleðslumöppu ($1) á vefþjóninum.", @@ -1353,6 +1402,7 @@ "upload-copy-upload-invalid-domain": "Lokað er fyrir afritun skráa frá öðrum vefþjónum á þessu vefsvæði.", "upload-dialog-title": "Hlaða inn skrá", "upload-dialog-button-cancel": "Hætta við", + "upload-dialog-button-back": "Til baka", "upload-dialog-button-done": "Lokið", "upload-dialog-button-save": "Vista", "upload-dialog-button-upload": "Hlaða inn", @@ -1420,6 +1470,7 @@ "uploadstash-badtoken": "Þessi aðgerð misheppnaðist, kannski hafa réttindi þín til breytinga runnið út.\nReyndu aftur.", "uploadstash-errclear": "Tæming listans mistókst.", "uploadstash-refresh": "Endurhlaða listann", + "uploadstash-thumbnail": "skoða smámynd", "invalid-chunk-offset": "Ógild raðbreyting bunka", "img-auth-accessdenied": "Aðgangur óheimill", "img-auth-nopathinfo": "PATH_INFO vantar.\nBiðlarinn þínn er ekki stilltur til að gefa upp þessar upplýsingar.\nÞær mega vera CGI-byggðar og mega ekki styðja img_auth.\nhttps://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization", @@ -1687,6 +1738,8 @@ "apisandbox-submit-invalid-fields-title": "Sumir reitir eru ógildir", "apisandbox-results": "Niðurstöður", "apisandbox-alert-field": "Gildi þessa reits er ekki leyfilegt.", + "apisandbox-continue": "Halda áfram", + "apisandbox-continue-clear": "Hreinsa", "booksources": "Bókaleit", "booksources-search-legend": "Leita að bókaheimildum", "booksources-isbn": "ISBN:", @@ -1772,7 +1825,7 @@ "trackingcategories-nodesc": "Enginn lýsing tiltæk.", "trackingcategories-disabled": "Flokkurinn er óvirkur", "mailnologin": "Ekkert netfang til að senda á", - "mailnologintext": "Þú verður að vera [[Special:UserLogin|innskráð(ur)]] auk þess að hafa gilt netfang í [[Special:Preferences|stillingunum]] þínum til að senda tölvupóst til annara notenda.", + "mailnologintext": "Þú verður að vera [[Special:UserLogin|skráð(ur) inn]] auk þess að hafa gilt netfang í [[Special:Preferences|stillingunum]] þínum til að senda tölvupóst til annara notenda.", "emailuser": "Senda þessum notanda tölvupóst", "emailuser-title-target": "Sendu þessum {{GENDER:$1|notanda}} tölvupóst", "emailuser-title-notarget": "Senda tölvupóst", @@ -1797,7 +1850,7 @@ "emailccsubject": "Afrit af skilaboðinu þínu til $1: $2", "emailsent": "Sending tókst", "emailsenttext": "Skilaboðin þín hafa verið send.", - "emailuserfooter": "Þessi tölvupóstur var {{GENDER:$1|sendur}} af $1 til {{GENDER:$2|$2}} með möguleikanum \"{{int:emailuser}}\" á {{SITENAME}}. Netfangið {{GENDER:$2|þitt}} verður sent {{GENDER:$1|upphaflega sendandanum}}, sem uppljóstrar netfangi {{GENDER:$2|þínu}} til hans.", + "emailuserfooter": "Þessi tölvupóstur var {{GENDER:$1|sendur}} af $1 til {{GENDER:$2|$2}} með möguleikanum \"{{int:emailuser}}\" á {{SITENAME}}.Ef {{GENDER:$2|þú}} svarar þessum pósti, verður netfangið {{GENDER:$2|þitt}} sent {{GENDER:$1|upphaflega sendandanum}}, sem uppljóstrar netfangi {{GENDER:$2|þínu}} til {{GENDER:$1|þeirra}}.", "usermessage-summary": "Skil eftir kerfismeldingu.", "usermessage-editor": "Skilaboðakerfi", "watchlist": "Vaktlistinn", @@ -1805,7 +1858,7 @@ "watchlistfor2": "Eftir $1 $2", "nowatchlist": "Vaktlistinn er tómur.", "watchlistanontext": "Skráðu þig til að skoða eða breyta hlutum á vaktlistanum þínum.", - "watchnologin": "Óinnskráð(ur)", + "watchnologin": "Ekki skráð/ur inn", "addwatch": "Bæta á vaktlistann", "addedwatchtext": "Síðunni „[[:$1]]“ og spjallsíðu hennar hafa verið bætt á [[Special:Watchlist|vaktlistann]] þinn.", "addedwatchtext-short": "Síðunni \"$1\" hefur verið bætt við á vaktlistann þinn.", @@ -1818,7 +1871,7 @@ "unwatchthispage": "Hætta vöktun", "notanarticle": "Ekki efnisleg síða", "notvisiblerev": "Síðasta breyting eftir annan notanda hefur verið eytt.", - "watchlist-details": "{{PLURAL:$1|$1 síða|$1 síður}} á vaktlistanum þínum, fyrir utan spjallsíður.", + "watchlist-details": "{{PLURAL:$1|$1 síða|$1 síður}} á vaktlistanum þínum (fyrir utan spjallsíður).", "wlheader-enotif": "Tilkynning með tölvupósti er virk.", "wlheader-showupdated": "Síðum sem hefur verið breytt síðan þú skoðaðir þær síðast eru '''feitletraðar'''.", "wlnote": "Hér fyrir neðan {{PLURAL:$1|er síðasta $1 breyting|eru síðustu $1 breytingar}} {{PLURAL:$2|síðasta $2 klukkutímann|síðustu $2 klukkutímana}}, frá $3, $4.", @@ -1849,10 +1902,11 @@ "enotif_body_intro_moved": "Síðan „$1” sem þú hefur beðið um að fylgjast með á {{SITENAME}} hefur verið færð $PAGEEDITDATE af {{gender:$2|$2}}. Þetta er tengill á síðuna: $3.", "enotif_body_intro_restored": "Síðan „$1” sem þú hefur beðið um að fylgjast með á {{SITENAME}} hefur verið endurvakin $PAGEEDITDATE af {{gender:$2|$2}}. Þetta er tengill á síðuna: $3.", "enotif_body_intro_changed": "Síðan „$1” sem þú hefur beðið um að fylgjast með á {{SITENAME}} hefur verið breytt $PAGEEDITDATE af {{gender:$2|$2}}. Þetta er tengill á síðuna: $3.", - "enotif_lastvisited": "Heimsóttu eftirfarandi tengil til að sjá allar breytingar síðan \nþú heimsóttir síðuna síðast:\n $1", - "enotif_lastdiff": "Einnig getur þú heimsótt eftirfarandi tengil til að skoða þessa breytingu:\n $1", + "enotif_lastvisited": "Til að sjá allar breytingar síðan þú heimsóttir síðuna síðast, skoðaðu $1", + "enotif_lastdiff": "Til að sjá þessa breytingu, skoðaðu $1", "enotif_anon_editor": "ónefndum notanda $1", "enotif_body": "Kæri $WATCHINGUSERNAME,\n\n$PAGEINTRO\n$NEWPAGE\n\n$PAGEEDITOR skildi eftir eftirfarandi breytingarágrip: $PAGESUMMARY $PAGEMINOREDIT\n\nTil þess að hafa samband við $PAGEEDITOR, smelltu á $PAGEEDITOR_WIKI eða sentu tölvupóst á $PAGEEDITOR_EMAIL\n\nAthugaðu að frekari aðgerðir á $PAGETITLE leiða\nekki af sér fleiri tilkynningar fyrr en þú hefur heimsótt síðuna á meðan þú ert skráð/ur inn. Þú getur einnig endursett tilkynningar fyrir allar þær síður sem þú fylgist með.\n\nKveðja,\n{{SITENAME}}\n\n--\n\nTil þess að breyta stillingum um hvenær þú færð sendar tilkynningar, smelltu á:\n\n{{canonicalurl:{{#special:Preferences}}}}\n\n\nTil þess að hætta að fylgjast með „$PAGETITLE”, smelltu á:\n\n$UNWATCHURL\n\nFrekari hjálp er að finna á $HELPPAGE.", + "enotif_minoredit": "Þetta er minniháttar breyting", "created": "búin til", "changed": "breytt", "deletepage": "Eyða", @@ -1890,11 +1944,12 @@ "editcomment": "Beytingaágripið var: $1.", "revertpage": "Tók aftur breytingar [[Special:Contributions/$2|$2]] ([[User talk:$2|spjall]]), breytt til síðustu útgáfu [[User:$1|$1]]", "revertpage-nouser": "Tók aftur breytingar falins notanda til síðustu útgáfu {{GENDER:$1|[[User:$1|$1]]}}", - "rollback-success": "Tók til baka breytingar eftir $1; núverandi $2.", + "rollback-success": "Tók til baka breytingar eftir {{GENDER:$3|$1}};\nsetti yfir á síðustu útgáfu eftir {{GENDER:$4|$2}}.", "sessionfailure-title": "Mistök í setu", - "sessionfailure": "Líklega er vandamál með innskráningar setuna þína;\nhætt hefur verið við þessa aðgerð sem vörn gegn mögulegu samskiptaráni setunar.\nFarðu aftur á fyrri síðu, endurhladdu hana og reyndu aftur.", + "sessionfailure": "Líklega er vandamál með innskráningarsetuna þína;\nhætt hefur verið við þessa aðgerð sem vörn gegn mögulegu samskiptaráni setunar.\nFarðu aftur á fyrri síðu, endurhladdu hana og reyndu aftur.", "changecontentmodel-title-label": "Titill síðu", "changecontentmodel-reason-label": "Ástæða:", + "changecontentmodel-submit": "Breyta", "logentry-contentmodel-change-revertlink": "taka aftur", "logentry-contentmodel-change-revert": "taka aftur", "protectlogpage": "Verndunarskrá", @@ -2016,7 +2071,7 @@ "sp-contributions-uploads": "innsendingar", "sp-contributions-logs": "aðgerðaskrá", "sp-contributions-talk": "spjall", - "sp-contributions-userrights": "Breyta notandaréttindum", + "sp-contributions-userrights": "Breyta {{GENDER:$1|notandaréttindum}}", "sp-contributions-blocked-notice": "Þessi notandi er í banni.\nSíðasta færsla notandans úr bannskrá er sýnd hér fyrir neðan til skýringar:", "sp-contributions-blocked-notice-anon": "Þetta vistfang er í banni.\nSíðasta færsla vistfangsins úr bannskrá er sýnd hér fyrir neðan til skýringar:", "sp-contributions-search": "Leita að framlögum", @@ -2052,7 +2107,7 @@ "ipbexpiry": "Bannið rennur út:", "ipbreason": "Ástæða:", "ipbreason-dropdown": "* Algengar bannástæður\n** Setur inn rangar upplýsingar\n** Fjarlægir efni af síðum\n** Setur inn rusltengla á utanaðkomandi síður\n** Setur inn vitleysu/þvaður á síður\n** Yfirþyrmandi framkoma/áreitni\n** Misnotkun á fjölda notandanafna\n** Óásættanlegt notandanafn", - "ipb-hardblock": "Banna innskráðum notendum að breyta frá þessu vistfangi.", + "ipb-hardblock": "Banna innskráðum notendum að breyta frá þessu IP-vistfangi.", "ipbcreateaccount": "Banna nýskráningu notandanafns", "ipbemailban": "Banna notanda að senda tölvupóst", "ipbenableautoblock": "Banna síðasta vistfang notanda sjálfkrafa; og þau vistföng sem viðkomandi notar til að breyta síðum", @@ -2074,6 +2129,7 @@ "ipb-unblock": "Afbanna notanda eða vistfang", "ipb-blocklist": "Sjá núverandi bönn", "ipb-blocklist-contribs": "Framlög fyrir {{GENDER:$1|$1}}", + "ipb-blocklist-duration-left": "$1 eftir", "unblockip": "Afbanna notanda", "unblockiptext": "Endurvekja skrifréttindi bannaðra notenda eða vistfanga.", "ipusubmit": "Afbanna", @@ -2082,6 +2138,7 @@ "unblocked-id": "Bann $1 hefur verið fjarlægt", "unblocked-ip": "[[Special:Contributions/$1|$1]] hefur verið afbannaður.", "blocklist": "Bannaðir notendur og vistföng", + "autoblocklist-submit": "Leita", "ipblocklist": "Bannaðir notendur og vistföng", "ipblocklist-legend": "Finna bannaðan notanda", "blocklist-userblocks": "Fela notendabönn", @@ -2170,7 +2227,7 @@ "movepagetalktext": "Ef þú hakar við þennan reit mun viðeigandi spjallsíða vera færð sjálfkrafa á nýja titilinn, nema að spjallsíða sem er ekki tóm sé þegar til staðar.\n\nÍ því tilfelli þarft þú að færa eða sameina síðuna handvirkt ef þess er óskað.", "moveuserpage-warning": "Viðvörun: Þú ert í þann mund að færa notandasíðu. Athugaðu aðeins síðan verður færð og notandanafni hans verður ekki breytt.", "movecategorypage-warning": "Viðvörun: Þú ert í þann mund að færa flokkssíðu. Athugaðu aðeins síðan verður færð og allar síður í gamla flokknum verða ekki endurflokkaðar í nýja flokkinn.", - "movenologintext": "Þú verður að vera [[Special:UserLogin|innskráð(ur)]] til að geta fært síður.", + "movenologintext": "Þú verður að vera [[Special:UserLogin|skráð(ur) inn]] til að geta fært síður.", "movenotallowed": "Þú hefur ekki leyfi til að færa síður.", "movenotallowedfile": "Þú hefur ekki leyfi til að færa skrár.", "cant-move-user-page": "Þú hefur ekki leyfi til að færa notandasíðu (fyrir utan undirsíður).", @@ -2297,7 +2354,7 @@ "import-nonewrevisions": "Engar breytingar voru fluttar inn (þær voru allar annaðhvort þegar til eða sleppt vegna villna).", "xml-error-string": "$1 í línu $2, dálki $3 ($4 bæt): $5", "import-upload": "Hlaða inn XML-gögnum", - "import-token-mismatch": "Týnd setugögn.\n\nÞú hefur kannski verið skráð/ur út. Athugaðu hvort þú sért ennþá skráð/ur inn og reyndu aftur.\nEf það virkar ekki, reyndu að [[Special:UserLogout|skrá þig út]], skrá þig aftur inn og gakktu úr skugga um að vafrinn þinn leyfi vefkökur frá þessu vefsvæði.", + "import-token-mismatch": "Týnd setugögn.\n\nÞú hefur kannski verið skráð/ur út. '''Athugaðu hvort þú sért ennþá skráð/ur inn og reyndu aftur'''.\nEf það virkar ekki, reyndu að [[Special:UserLogout|skrá þig út]], skrá þig aftur inn og gakktu úr skugga um að vafrinn þinn leyfi vefkökur frá þessu vefsvæði.", "import-invalid-interwiki": "Get ekki flutt inn frá þessum wiki.", "import-error-edit": "Síðan \"$1\" var ekki flutt inn því þú hefur ekki réttindi til að breyta henni.", "import-error-create": "Síðan \"$1\" var ekki flutt inn því þú hefur ekki réttindi til að stofna hana.", @@ -2372,6 +2429,7 @@ "tooltip-ca-nstab-category": "Sýna efnisflokkasíðuna", "tooltip-minoredit": "Merkja þessa breytingu sem minniháttar", "tooltip-save": "Vista breytingarnar", + "tooltip-publish": "Gefa út breytingarnar þínar", "tooltip-preview": "Forskoða breytingarnar þínar. Gerðu þetta áður en þú vistar.", "tooltip-diff": "Sýna hvaða breytingar þú gerðir á textanum.", "tooltip-compareselectedversions": "Sjá breytingarnar á þessari grein á milli útgáfanna sem þú valdir.", @@ -2429,6 +2487,8 @@ "pageinfo-length": "Lengd síðunnar (í bætum)", "pageinfo-article-id": "Einkennisnúmer síðunnar", "pageinfo-language": "Tungumál síðunnar", + "pageinfo-language-change": "breyta", + "pageinfo-content-model-change": "breyta", "pageinfo-robot-policy": "Attriðaskráning af vélmennum", "pageinfo-robot-index": "Heimilað", "pageinfo-robot-noindex": "Ekki heimilað", @@ -2464,6 +2524,7 @@ "pageinfo-category-pages": "Fjöldi síðna", "pageinfo-category-subcats": "Fjöldi undirflokka", "pageinfo-category-files": "Fjöldi skráa", + "pageinfo-user-id": "Notandanúmer", "markaspatrolleddiff": "Merkja sem yfirfarið", "markaspatrolledtext": "Merkja þessa síðu sem yfirfarna", "markaspatrolledtext-file": "Merkja þessa útgáfu skrár sem yfirfarna", @@ -2480,6 +2541,7 @@ "patrol-log-header": "Þetta er skrá yfir yfirfarnar breytingar.", "log-show-hide-patrol": "$1 listi yfir yfirfarnar síður", "log-show-hide-tag": "$1 merkjaannáll", + "confirm-markpatrolled-button": "Í lagi", "deletedrevision": "Eyddi gamla útgáfu $1", "filedeleteerror-short": "Villa við eyðingu: $1", "filedeleteerror-long": "Það kom upp villa við eyðingu skrárinnar: $1", @@ -2957,6 +3019,7 @@ "confirm-watch-top": "Bæta þessari síðu á vaktlistann þinn?", "confirm-unwatch-button": "Í lagi", "confirm-unwatch-top": "Fjarlægja þessa síðu af vaktlistanum þínum?", + "confirm-rollback-button": "Í lagi", "semicolon-separator": "; ", "comma-separator": ", ", "colon-separator": ": ", @@ -3169,10 +3232,9 @@ "fileduplicatesearch-noresults": "Mistókst að finna skrána \"$1\"", "specialpages": "Kerfissíður", "specialpages-note-top": "Fyrirsögn", - "specialpages-note": "* Venjulegar kerfissíður.\n* Kerfissíður með takmörkuðum aðgangi.", "specialpages-group-maintenance": "Viðhaldsskýrslur", "specialpages-group-other": "Aðrar kerfissíður", - "specialpages-group-login": "Innskrá / Búa til aðgang", + "specialpages-group-login": "Skrá inn / Búa til aðgang", "specialpages-group-changes": "Nýlegar breytingar og skrár", "specialpages-group-media": "Skýrslur um gagnamiðla og innsendingar", "specialpages-group-users": "Notendur og réttindi", @@ -3217,7 +3279,7 @@ "tags-create-reason": "Ástæða:", "tags-create-submit": "Stofna", "tags-create-no-name": "Þú verður að gefa upp heiti merkisins.", - "tags-create-invalid-chars": "Heiti merkja mega ekki innihalda kommur (,) eða öfug skástrik (/).", + "tags-create-invalid-chars": "Heiti merkja mega ekki innihalda kommur (,), pípur (|), eða öfug skástrik (/).", "tags-create-invalid-title-chars": "Heiti merkja mega ekki innihalda stafi sem ekki má nota í síðutitlum.", "tags-create-already-exists": "Merkið \"$1\" er nú þegar til.", "tags-create-warnings-below": "Viltu halda áfram við að búa til merkið?", @@ -3248,6 +3310,7 @@ "tags-edit-chosen-placeholder": "Veldu einhver merki", "tags-edit-chosen-no-results": "Engin merki fundust sem samsvara", "tags-edit-reason": "Ástæða:", + "tags-edit-success": "Breytingarnar voru framkvæmdar.", "tags-edit-nooldid-title": "Ógild markútgáfa", "tags-edit-none-selected": "Vinsamlega veldu a.m.k. eitt merki til að bæta við eða fjarlægja.", "comparepages": "Bera saman síður", @@ -3259,6 +3322,7 @@ "compare-invalid-title": "Titillinn sem þú gafst upp er ógildur.", "compare-title-not-exists": "Umbeðinn titill er ekki til.", "compare-revision-not-exists": "Umbeðin útgáfa er ekki til.", + "diff-form": "Mismunur", "dberr-problems": "Því miður!Tæknilegir örðugleikar eru á þessari síðu.", "dberr-again": "Reyndu að bíða í nokkrar mínútur og endurhlaða síðan síðuna.", "dberr-info": "(Mistókst að fá aðgang að gagnaþjóni: $1)", @@ -3282,13 +3346,16 @@ "htmlform-cloner-create": "Bæta við meiru", "htmlform-cloner-delete": "Fjarlægja", "htmlform-cloner-required": "Það þarf allavega eitt gildi.", + "htmlform-date-placeholder": "ÁÁÁÁ-MM-DD", + "htmlform-time-placeholder": "KK:MM:SS", + "htmlform-datetime-placeholder": "ÁÁÁÁ-MM-DD KK:MM:SS", "htmlform-title-badnamespace": "[[:$1]] er ekki í \"{{ns:$2}}\" nafnrýminu.", "htmlform-title-not-creatable": "\"$1\" er ekki hægt að nota við að búa til titil á síðu", "htmlform-title-not-exists": "$1 er ekki til", "htmlform-user-not-exists": "$1 er ekki til.", "htmlform-user-not-valid": "$1 er ekki gilt notandanafn.", "logentry-delete-delete": "$1 {{GENDER:$2|eyddi}} síðunni $3", - "logentry-delete-restore": "$1 {{GENDER:$2|endurvakti}} $3", + "logentry-delete-restore": "$1 {{GENDER:$2|endurvakti}} síðu $3 ($4)", "logentry-delete-event": "$1 {{GENDER:$2|breytti}} sýnileika {{PLURAL:$5|færslu|$5 færslna}} á $3: $4", "logentry-delete-revision": "$1 {{GENDER:$2|breytti}} sýnileika {{PLURAL:$5|útgáfu|$5 útgáfna}} á $3: $4", "logentry-delete-event-legacy": "$1 {{GENDER:$2|breytti}} sýnileika færslna á $3", @@ -3366,7 +3433,7 @@ "api-error-emptypage": "Stofnun nýrra, tómra síðna er óheimil.", "api-error-publishfailed": "Innri villa: Vefþjónninn gat ekki gefið út bráðabirgðaskrá.", "api-error-stashfailed": "Innri villa: Vefþjónninn gat ekki geymt bráðabirgðaskrá.", - "api-error-unknown-warning": "Óþekkt viðvörun: $1", + "api-error-unknown-warning": "Óþekkt viðvörun: \"$1\".", "api-error-unknownerror": "Óþekkt villa: \"$1\".", "duration-seconds": "$1 {{PLURAL:$1|sekúnda|sekúndur}}", "duration-minutes": "$1 {{PLURAL:$1|mínúta|mínútur}}", diff --git a/languages/i18n/it.json b/languages/i18n/it.json index 58bcb4b444..6d7992b0e5 100644 --- a/languages/i18n/it.json +++ b/languages/i18n/it.json @@ -147,6 +147,7 @@ "tog-watchlisthideminor": "Nascondi le modifiche minori negli osservati speciali", "tog-watchlisthideliu": "Nascondi le modifiche degli utenti registrati negli osservati speciali", "tog-watchlistreloadautomatically": "Ricarica automaticamente l'elenco degli osservati speciali ogni volta che si modifica un filtro (richiede JavaScript)", + "tog-watchlistunwatchlinks": "Aggiungi collegamenti diretti per seguire/non seguire gli elementi negli osservati speciali (richiede JavaScript per utilizzare questa funzionalità)", "tog-watchlisthideanons": "Nascondi le modifiche degli utenti anonimi negli osservati speciali", "tog-watchlisthidepatrolled": "Nascondi le modifiche verificate negli osservati speciali", "tog-watchlisthidecategorization": "Nascondi la categorizzazione delle pagine", @@ -1381,8 +1382,10 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (vedi le [[Special:NewPages|nuove pagine]])", "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Mostra", + "rcfilters-tag-remove": "Rimuovi '$1'", "rcfilters-legend-heading": "Elenco di abbreviazioni:", "rcfilters-other-review-tools": "Altri strumenti di revisione", + "rcfilters-group-results-by-page": "Raggruppa risultati per pagina", "rcfilters-grouping-title": "Raggruppamento", "rcfilters-activefilters": "Filtri attivi", "rcfilters-advancedfilters": "Filtri avanzati", @@ -1392,6 +1395,7 @@ "rcfilters-hours-title": "Ore recenti", "rcfilters-days-show-days": "$1 {{PLURAL:$1|giorno|giorni}}", "rcfilters-days-show-hours": "$1 {{PLURAL:$1|ora|ore}}", + "rcfilters-highlighted-filters-list": "Evidenziato: $1", "rcfilters-quickfilters": "Filtri salvati", "rcfilters-quickfilters-placeholder-title": "Nessun collegamento salvato ancora", "rcfilters-quickfilters-placeholder-description": "Per salvare le impostazioni del tuo filtro e riutilizzarle dopo, clicca l'icona segnalibro nell'area \"Filtri attivi\" qui sotto", @@ -1403,6 +1407,7 @@ "rcfilters-savedqueries-new-name-label": "Nome", "rcfilters-savedqueries-new-name-placeholder": "Descrivi lo scopo del filtro", "rcfilters-savedqueries-apply-label": "Crea filtro", + "rcfilters-savedqueries-apply-and-setdefault-label": "Crea filtro predefinito", "rcfilters-savedqueries-cancel-label": "Annulla", "rcfilters-savedqueries-add-new-title": "Salva le impostazioni attuali del filtro", "rcfilters-restore-default-filters": "Ripristina i filtri predefiniti", @@ -1413,14 +1418,14 @@ "rcfilters-empty-filter": "Nessun filtro attivo. Sono mostrati tutti i contributi.", "rcfilters-filterlist-title": "Filtri", "rcfilters-filterlist-whatsthis": "Come funzionano?", - "rcfilters-filterlist-feedbacklink": "Lascia un commento sulla nuova funzionalità sperimentale", + "rcfilters-filterlist-feedbacklink": "Dicci cosa ne pensi su questi (nuovi) strumenti di filtraggio", "rcfilters-highlightbutton-title": "Evidenzia risultati", "rcfilters-highlightmenu-title": "Seleziona un colore", "rcfilters-highlightmenu-help": "Seleziona un colore per evidenziare questa proprietà", "rcfilters-filterlist-noresults": "Nessun filtro trovato", "rcfilters-noresults-conflict": "Nessun risultato trovato, perché i criteri di ricerca sono in conflitto", "rcfilters-state-message-subset": "Questo filtro non ha effetto perché i suoi risultati sono inclusi in quelli {{PLURAL:$2|del seguente filtro, più ampio|dei seguenti filtri, più ampi}} (prova ad evidenziarli per distinguerli): $1", - "rcfilters-state-message-fullcoverage": "La selezione di tutti i filtri in un gruppo è come non selezionarne alcuno, in questo modo questo filtro non ha effetto. Il gruppo include: $1", + "rcfilters-state-message-fullcoverage": "La selezione di tutti i filtri in questo gruppo è come non selezionarne alcuno, in questo modo questo filtro non ha effetto. Il gruppo include: $1", "rcfilters-filtergroup-authorship": "Autore del contributo", "rcfilters-filter-editsbyself-label": "Mie modifiche", "rcfilters-filter-editsbyself-description": "I tuoi contributi.", @@ -1478,10 +1483,14 @@ "rcfilters-filter-previousrevision-description": "Tutte le modifiche che non sono la \"versione attuale\".", "rcfilters-filter-excluded": "Escluso", "rcfilters-tag-prefix-namespace-inverted": ":non $1", - "rcfilters-exclude-button-off": "Escludi selezionato", - "rcfilters-exclude-button-on": "Escludendo selezionato", + "rcfilters-exclude-button-off": "Escludi selezionati", + "rcfilters-exclude-button-on": "Escludendo selezionati", "rcfilters-view-advanced-filters-label": "Filtri avanzati", "rcfilters-view-tags": "Modifiche etichettate", + "rcfilters-view-namespaces-tooltip": "Filtra risultati per namespace", + "rcfilters-view-tags-tooltip": "Filtra risultati per etichette di modifica", + "rcfilters-view-return-to-default-tooltip": "Torna al menu filtri principale", + "rcfilters-watchlist-edit-watchlist-button": "Modifica il tuo elenco di pagine osservate", "rcnotefrom": "Di seguito {{PLURAL:$5|è elencata la modifica apportata|sono elencate le modifiche apportate}} a partire da $3, $4 (mostrate fino a $1).", "rclistfromreset": "Reimposta la selezione della data", "rclistfrom": "Mostra le nuove modifiche a partire daː $2, $3", @@ -2195,6 +2204,7 @@ "enotif_lastdiff": "Per vedere questa modifica, vedi $1", "enotif_anon_editor": "utente anonimo $1", "enotif_body": "Gentile $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nOggetto dell'intervento, inserito dall'autore: $PAGESUMMARY $PAGEMINOREDIT\n\nContatta l'autore:\nvia posta elettronica: $PAGEEDITOR_EMAIL\nsul sito: $PAGEEDITOR_WIKI\n\nNon verranno inviate altre notifiche in caso di ulteriori attività, se non visiti la pagina dopo aver effettuato l'accesso. Inoltre, è possibile modificare le impostazioni di notifica per tutte le pagine nella lista degli osservati speciali.\n\nIl sistema di notifica di {{SITENAME}}, al tuo servizio\n\n--\nPer modificare le impostazioni delle notifiche via posta elettronica, visita \n{{canonicalurl:{{#special:Preferences}}}}\n\nPer modificare la lista degli osservati speciali, visita \n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nPer rimuovere la pagina dalla lista degli osservati speciali, visita\n$UNWATCHURL\n\nPer commentare e ricevere aiuto:\n$HELPPAGE", + "enotif_minoredit": "Questa è una modifica minore", "created": "creata", "changed": "modificata", "deletepage": "Cancella pagina", diff --git a/languages/i18n/ja.json b/languages/i18n/ja.json index 3189ef0dd6..7991e23622 100644 --- a/languages/i18n/ja.json +++ b/languages/i18n/ja.json @@ -83,7 +83,8 @@ "Ayame", "Omotecho", "Thibaut120094", - "Translatealcd" + "Translatealcd", + "Delim" ] }, "tog-underline": "リンクの下線:", @@ -113,7 +114,7 @@ "tog-shownumberswatching": "ページをウォッチしている利用者数を表示", "tog-oldsig": "既存の署名:", "tog-fancysig": "署名をウィキ文として扱う (自動リンクなし)", - "tog-uselivepreview": "ライブプレビューを使用", + "tog-uselivepreview": "ページを再読込せずにプレビューを表示", "tog-forceeditsummary": "要約欄が空欄の場合に確認を促す", "tog-watchlisthideown": "自分の編集をウォッチリストに表示しない", "tog-watchlisthidebots": "ボットによる編集をウォッチリストに表示しない", @@ -773,7 +774,7 @@ "contentmodelediterror": "コンテンツモデルが $1 であるため、この版を編集することができません。ページの現在のコンテンツモデルは $2 です。", "recreate-moveddeleted-warn": "警告: 以前削除されたページを再作成しようとしています。\n\nこのページの編集を続行するのが適切かどうかご確認ください。\n参考までに、このページの削除と移動の記録を以下に示します:", "moveddeleted-notice": "このページは削除されています。\n参考のため、このページの削除と移動の記録を以下に表示します。", - "moveddeleted-notice-recent": "申し訳ありません。このページは最近(24時間以内)に削除されました。参考のため、このページの削除と移動の記録を以下に表示します。", + "moveddeleted-notice-recent": "申し訳ありません。このページは最近(24時間以内)に削除されました。参考のため、このページの削除、保護、移動の記録を以下に表示します。", "log-fulllog": "完全な記録を閲覧", "edit-hook-aborted": "フックによって編集が破棄されました。\n理由は不明です。", "edit-gone-missing": "ページを更新できませんでした。\n既に削除されているようです。", @@ -1041,7 +1042,7 @@ "prefs-editwatchlist-clear": "ウォッチリストの全消去", "prefs-watchlist-days": "ウォッチリストの表示日数:", "prefs-watchlist-days-max": "最大 $1 {{PLURAL:$1|日間}}", - "prefs-watchlist-edits": "ウォッチリストの展開時の最大表示件数:", + "prefs-watchlist-edits": "ウォッチリストの最大表示件数:", "prefs-watchlist-edits-max": "最大数: 1000", "prefs-watchlist-token": "ウォッチリストのトークン:", "prefs-misc": "その他", @@ -1362,8 +1363,14 @@ "recentchanges-legend-plusminus": "(±123)", "recentchanges-submit": "表示", "rcfilters-legend-heading": "略語のリスト:", + "rcfilters-group-results-by-page": "ページごとにまとめて表示", + "rcfilters-grouping-title": "グループ化", "rcfilters-activefilters": "絞り込み", "rcfilters-advancedfilters": "詳細フィルター", + "rcfilters-limit-title": "表示件数の変更", + "rcfilters-limit-shownum": "表示:最新 $1 の更新", + "rcfilters-days-title": "日数", + "rcfilters-hours-title": "時間", "rcfilters-quickfilters": "フィルターを保存", "rcfilters-quickfilters-placeholder-title": "リンクはまだ保存されていません", "rcfilters-quickfilters-placeholder-description": "フィルターの設定を保存し、後で再び使用するためには、下のアクティブフィルター内のブックマークアイコンをクリックしてください。", @@ -2132,7 +2139,7 @@ "unwatchthispage": "ウォッチをやめる", "notanarticle": "記事ではありません", "notvisiblerev": "別の利用者による最終版は削除されました", - "watchlist-details": "ウォッチリストには {{PLURAL:$1|$1 ページ}}が登録されています (トークページを除く)。", + "watchlist-details": "ウォッチリストには {{PLURAL:$1|$1 ページ}}が登録されています (トークページも含む)。", "wlheader-enotif": "メール通知が有効になっています。", "wlheader-showupdated": "最終訪問以降に変更されたページは、太字で表示されます。", "wlnote": "$3 $4 までの{{PLURAL:$2|$2時間}}になされた{{PLURAL:$1|$1件の変更}}は以下の通りです。", @@ -3552,6 +3559,7 @@ "fileduplicatesearch-noresults": "「$1」という名前のファイルはありません。", "specialpages": "特別ページ", "specialpages-note-top": "凡例", + "specialpages-note-restricted": "* 標準の特別ページ\n* 制限された特別ページ", "specialpages-group-maintenance": "メンテナンス報告", "specialpages-group-other": "その他の特別ページ", "specialpages-group-login": "ログインまたはアカウント作成", @@ -3670,7 +3678,8 @@ "compare-invalid-title": "指定したページ名は無効です。", "compare-title-not-exists": "指定したページは存在しません。", "compare-revision-not-exists": "指定した版は存在しません。", - "diff-form": "'''フォーム'''", + "diff-form": "差分", + "permanentlink": "固定リンク", "dberr-problems": "申し訳ありません! このウェブサイトに技術的な障害が発生しています。", "dberr-again": "数分間待った後、もう一度読み込んでください。", "dberr-info": "(データベース $1 にアクセスできません)", @@ -3927,7 +3936,7 @@ "special-characters-title-endash": "en ダッシュ", "special-characters-title-emdash": "em ダッシュ", "special-characters-title-minus": "マイナス記号", - "mw-widgets-dateinput-no-date": "選択されたデータ無し", + "mw-widgets-dateinput-no-date": "日付未選択", "mw-widgets-mediasearch-input-placeholder": "メディアを検索", "mw-widgets-mediasearch-noresults": "見つかりませんでした。", "mw-widgets-titleinput-description-new-page": "ページは存在しません", diff --git a/languages/i18n/jv.json b/languages/i18n/jv.json index 57a7a61419..17b108355b 100644 --- a/languages/i18n/jv.json +++ b/languages/i18n/jv.json @@ -1874,7 +1874,7 @@ "emailtarget": "Lebokaké jeneng panganggo panampa", "emailusername": "Jeneng panganggo:", "emailusernamesubmit": "Kirim", - "email-legend": "KIrim layang-èl nyang panganggo {{SITENAME}} liyané", + "email-legend": "Kirim layang-èl menyang panganggo {{SITENAME}} liyané", "emailfrom": "Saka:", "emailto": "Kanggo:", "emailsubject": "Prekara:", @@ -1991,7 +1991,7 @@ "protectedarticle": "ngreksa \"[[$1]]\"", "modifiedarticleprotection": "ngowahi tataran rereksané \"[[$1]]\"", "unprotectedarticle": "nyingkiraké panjagan saka \"[[$1]]\"", - "movedarticleprotection": "ngalih setèlan rereksan saka \"[[$2]]\" nyang \"[[$1]]\"", + "movedarticleprotection": "ngalih setèlan rereksan saka \"[[$2]]\" menyang \"[[$1]]\"", "protectedarticle-comment": "{{GENDER:$2|Ngreksa}} \"[[$1]]\"", "modifiedarticleprotection-comment": "{{GENDER:$2|Ngowahi tataran rereksan}} tumrap \"[[$1]]\"", "unprotectedarticle-comment": "{{GENDER:$2|Nyopot rereksan}} saka \"[[$1]]\"", @@ -2114,7 +2114,7 @@ "whatlinkshere": "Sing nggayut mréné", "whatlinkshere-title": "Kaca mawa pranala nggayut \"$1\"", "whatlinkshere-page": "Kaca:", - "linkshere": "Kaca-kaca ing ngisor iki nggayut nyang '''[[:$1]]''':", + "linkshere": "Kaca-kaca ing ngisor iki nggayut menyang [[:$1]]:", "nolinkshere": "Ora ana kaca sing nduwé pranala menyang '''[[:$1]]'''.", "nolinkshere-ns": " Ora ana kaca sing nduwé pranala menyang '''[[:$1]]''' ing bilik jeneng sing kapilih.", "isredirect": "kaca lih-lihan", @@ -2324,7 +2324,7 @@ "export-addns": "Tambah", "export-download": "Simpen dadi barkas", "export-templates": "Lebokaké cithakan", - "export-pagelinks": "Lebokaké kaca sing kagayut nyang jeroning:", + "export-pagelinks": "Lebokaké kaca sing kagayut ing sajeroning:", "export-manual": "Tambah kaca kanthi manual:", "allmessages": "Layang sistem", "allmessagesname": "Jeneng", @@ -2363,8 +2363,8 @@ "import-interwiki-history": "Tuladen kabèh vèrsi lawas saka kaca iki", "import-interwiki-templates": "Katutna kabèh cithakan", "import-interwiki-submit": "Impor", - "import-mapping-default": "Impor nyang pernah gawan", - "import-mapping-namespace": "Impor nyang mandala aran:", + "import-mapping-default": "Impor menyang panggonan gawan", + "import-mapping-namespace": "Impor menyang mandala aran:", "import-mapping-subpage": "Impor minangka anak kaca iki:", "import-upload-filename": "Jeneng barkas:", "import-comment": "Komentar:", @@ -2428,7 +2428,7 @@ "tooltip-ca-delete": "Busak kaca iki", "tooltip-ca-undelete": "Balèkna suntingan ing kaca iki sadurungé kaca iki dibusak", "tooltip-ca-move": "Lih kaca iki", - "tooltip-ca-watch": "Tambahaké kaca iki nyang pawawangan sapéyan", + "tooltip-ca-watch": "Tambahaké kaca iki menyang pawawangané panjenengan", "tooltip-ca-unwatch": "Busak kaca iki saka pawawanganing sampéyan", "tooltip-search": "Golèk ing {{SITENAME}}", "tooltip-search-go": "Jujug kaca asesirah persis mangkéné yèn ana", @@ -2468,7 +2468,7 @@ "tooltip-preview": "Pratuduhing owah-owahaning sampéyan. Anggoa cara iki sadurungé nyimpen.", "tooltip-diff": "Tuduhaké owah-owahan endi sing sampéyan gawé tumrap tulisan iki", "tooltip-compareselectedversions": "Delengen prabédan antara rong vèrsi kaca iki sing dipilih.", - "tooltip-watch": "Wuwuh kaca iki nyang pawawanganing sampéyan", + "tooltip-watch": "Wuwuh kaca iki menyang pawawangané panjenengan", "tooltip-watchlistedit-normal-submit": "Busak sesirah", "tooltip-watchlistedit-raw-submit": "Anyari daptar pangawasan", "tooltip-recreate": "Gawéa kaca iki manèh senadyan tau dibusak", @@ -2998,7 +2998,7 @@ "confirm-unwatch-button": "Oké", "confirm-unwatch-top": "Singkiraké kaca iki saka daptar pangawasan Sampéyan?", "confirm-rollback-button": "YA", - "confirm-rollback-top": "Pulihaké besutan nyang kaca iki?", + "confirm-rollback-top": "Pulihaké besutan menyang kaca iki?", "quotation-marks": "\"$1\"", "imgmultipageprev": "← kaca sadurungé", "imgmultipagenext": "kaca sabanjuré →", @@ -3377,7 +3377,7 @@ "pagelang-reason": "Alesan", "pagelang-submit": "Kirim", "pagelang-nonexistent-page": "Kaca $1 ora ana.", - "pagelang-unchanged-language": "Kaca $1 wis disetèl nyang basa $2.", + "pagelang-unchanged-language": "Kaca $1 wis disetèl menyang basa $2.", "mediastatistics-table-mimetype": "Jinis MIME", "mediastatistics-table-extensions": "Èkstènsi sing mungkin", "mediastatistics-table-count": "Cacah barkas", diff --git a/languages/i18n/kab.json b/languages/i18n/kab.json index 0f948748b1..f4e291f2fd 100644 --- a/languages/i18n/kab.json +++ b/languages/i18n/kab.json @@ -52,6 +52,8 @@ "tog-watchlisthidebots": "Ffer ibeddlen n iboṭiyen seg wumuɣ n uɛessi inu", "tog-watchlisthideminor": "Ffer ibeddlen ifessasen seg wumuɣ n uɛessi inu", "tog-watchlisthideliu": "Ffer ibeddlen n iseqdacen yelan deg umuɣ n tiḍefri", + "tog-watchlistreloadautomatically": "Ales asali s wudem awurman n tebdart n uḍfaṛ ticki iɣewwaṛen n usizdeg ttwabeddlen (Ilaq JavaScript)", + "tog-watchlistunwatchlinks": "Rnu iseɣwan srid n uḍfaṛ/aseḥbes n uḍfaṛ i yinekcam n tebdart n uḍfaṛ(Ilaq JavaScript i usefrek n tmahilt-agi)", "tog-watchlisthideanons": "Ffer ibeddlen n iseqdacen udrigen deg umuɣ n tiḍefri", "tog-watchlisthidepatrolled": "Ffer ibeddlen iɛessan deg umuɣ n tiḍefri", "tog-watchlisthidecategorization": "Ffer taggayin n isebtar", @@ -69,14 +71,14 @@ "editfont-monospace": "Tasefsit s lqedd usbiḍ", "editfont-sansserif": "Tasefsit \"Sans-serif\"", "editfont-serif": "Tasefsit \"Serif\"", - "sunday": "Ačer", + "sunday": "Acer", "monday": "Arim", "tuesday": "Aram", "wednesday": "Ahad", "thursday": "Amhad", "friday": "Sem", "saturday": "Sed", - "sun": "Ače", + "sun": "Ace", "mon": "Ari", "tue": "Ara", "wed": "Aha", @@ -85,14 +87,14 @@ "sat": "Sed", "january": "Yennayer", "february": "Fuṛaṛ", - "march": "meɣres", - "april": "yebrir", + "march": "Meɣres", + "april": "Yebrir", "may_long": "Mayyu", - "june": "yunyu", + "june": "Yunyu", "july": "Yulyu", - "august": "ɣuct", - "september": "ctamber", - "october": "tuber", + "august": "Ɣuct", + "september": "Ctamber", + "october": "Tuber", "november": "wamber", "december": "Dujamber", "january-gen": "yennayer", @@ -107,7 +109,7 @@ "october-gen": "Tuber", "november-gen": "wamber", "december-gen": "dujamber", - "jan": "yen", + "jan": "Yen", "feb": "Fuṛ", "mar": "meɣ", "apr": "yeb", @@ -117,8 +119,8 @@ "aug": "ɣuc", "sep": "cta", "oct": "tub", - "nov": "wam", - "dec": "duj", + "nov": "Wam", + "dec": "Duj", "january-date": "$1 yennayer", "february-date": "$1 fuṛaṛ", "march-date": "$1 meɣres", @@ -140,9 +142,9 @@ "category-empty": "Taggayt agi ur tesɛa asebtar, adu-taggayt neɣ afaylu agetmedia.", "hidden-categories": "{{PLURAL:$1|Taggayt yeffren|Taggayin yeffren}}", "hidden-category-category": "Taggayin yeffren", - "category-subcat-count": "Taggayt agi tesɛa {{PLURAL:$2|adu-taggayt|$2 adu-taggayin, ɣef ayed {{PLURAL:$1|t-agi|t-igi $1}}}} ddaw agi.", - "category-subcat-count-limited": "Taggayt agi tesɛa {{PLURAL:$1|adu-taggayt agi|tid $1 adu-taggayin agi}} ddaw-agi.", - "category-article-count": "Taggayt agi tesɛa {{PLURAL:$2|asebter agi|$2 isebtaren, ɣef ayed {{PLURAL:$1|t-agi|t-igi $1}} ddaw-agi}}.", + "category-subcat-count": "Taggayt-agi {{PLURAL:$2|0=ur tegbir ula d yiwet n taggayt tasnawt|1=tegber kan taggayt tasnawant ddaw-a|tegber $2 n taggayin tisnawanin, gar-asent {{PLURAL:$1|0=ula d yiwet|1=tin|tigad $1}} ddaw-a}}.", + "category-subcat-count-limited": "Taggayt-agi tegber {{PLURAL:$1|n taggayt tasnawant|$1 n taggayin tisnawanin}} ddaw-a.", + "category-article-count": "Taggayt-agi{{PLURAL:$2|0=ur tegbur ula d yiwen n usebtert|1=tegber kan yiwen n usebterddaw-a|tegber $2 n isebtar, gar-asen {{PLURAL:$1|0=ula d yiwen|1=tin| $1}} n ddaw-a}}.", "category-article-count-limited": "{{PLURAL:$1|Asebter agi yella|$1 isebtar agi llan}} deg taggayt agi.", "category-file-count": "Taggayt agi tesɛa {{PLURAL:$2|afaylu agi|$2 ifuyla, ɣef ayed {{PLURAL:$1|t-agi|t-igi $1}} ddaw-agi}}.", "category-file-count-limited": "{{PLURAL:$1|Afaylu agi yella|$1 ifuyla agi llan}} deg taggayt agi.", @@ -156,12 +158,12 @@ "cancel": "Eǧǧ-it am yella", "moredotdotdot": "Ugar...", "morenotlisted": "Tabdart-agi ur temmid ara", - "mypage": "Asebtar", + "mypage": "Asebter", "mytalk": "Asqerdec", "anontalk": "Asqerdec", "navigation": "Assilel", - "and": " u", - "faq": "Isteqsiyen", + "and": " akked", + "faq": "Isteqsiyen FAQ", "actions": "Tigawtin", "namespaces": "Talluntin n isemawen", "variants": "Tineḍwa", @@ -171,6 +173,7 @@ "tagline": "Seg {{SITENAME}}", "help": "Tallalt", "search": "Nadi", + "search-ignored-headings": " #
\n# Izwal n tgezmiyin ad ttwazeglen deg unadi\n# Ibeddilen yettwagen dagi ad ddun ticki asebter s uzwel yettwarna ar umatar.\n# Tzemreḍ ad ḥettmeḍ tulsa n tmerna ar umatar n usebter s usnifel ilem\n# Taseddast d tagi :\n#   * Yal iziirig ibeddun s \"#\" d awennit\n#   * Yal izirig yeččuren d azwel ara tzegleḍ, ula d taṛuzi n usekkil\nTimsisɣal\nIseɣwan izɣarayen\nWali daɣen\n #
", "searchbutton": "Nadi", "go": "Ẓer", "searcharticle": "Ẓer", @@ -223,7 +226,7 @@ "generic-pool-error": "Suref-aɣ, iqeddacen ur stufan ara akka tura.\nDdeqs n iseqdacen ttnadin ad ẓṛen taɣbalut-agi.\nMa ulac aɣilif, rǧu cwiṭ send ad tεreḍeḍ ad tkecmeḍ tikkelt-nniḍen.", "pool-timeout": "Amenḍar iɛedda deg taganit n uzekṛun", "pool-queuefull": "Adras n umahil yečuṛ", - "pool-errorunknown": "Anezri warisem", + "pool-errorunknown": "Tuccḍa tarussint", "pool-servererror": "Amẓlu n uḥerri ur iheegi ara ($1).", "poolcounter-usage-error": "Tuccḍa n useqdec: $1", "aboutsite": "Ɣef {{SITENAME}}", @@ -234,7 +237,7 @@ "currentevents-url": "Project:Isallen", "disclaimers": "Ilɣa", "disclaimerpage": "Project:Ilɣa imuta", - "edithelp": "Tallalt deg ubeddel", + "edithelp": "Tallelt ɣef teẓrigt", "helppage-top-gethelp": "Tallelt", "mainpage": "Asebter agejdan", "mainpage-description": "Asebter agejdan", @@ -337,13 +340,13 @@ "viewsource": "Ẓer aɣbalu", "viewsource-title": "Ẓeṛ aɣbalu n $1", "actionthrottled": "Tigawt tesɛa talast", - "actionthrottledtext": "Iwakken an ewwet mgal tira yerkan (SPAM), tigawt agi tesɛa talast n amḍan n tikwalt deg akud awezzlan. talast agi t-ɛedda.\nƐred tikkelt nniḍen deg kra n dqiqa.", + "actionthrottledtext": "Akken ad nsiḥbiber mgal tuzna n ispamen, aseqdec n tigawt-agi tesɛa talast n umḍan n tikalt n wakud wezzilen kan ihi tɛeddaḍ talast.\nƐred tikelt-nniḍen di kra n tisdatin.", "protectedpagetext": "Asebter-agi yetwaḥrez i uqareɛ n ubeddel neɣ tigawin nniḍen.", "viewsourcetext": "Tzemreḍ ad twaliḍ u txedmeḍ alsaru n uɣbalu n usebter-agi:", "viewyourtext": "Tzemṛeḍ ad ẓṛeḍ dɣa ad nɣeleḍ agbur n \"ibeddlen inek/inem\" deg usebter agi :", "protectedinterface": "Asebter-agi d amsekker axaṭer yettuseqdac i weḍris n software.", - "editinginterface": "'''Aɣtal:''' Aqla-k tettbeddileḍ asebter i yettuseqdac i weḍris n software. Tagmett n software i tt-ẓren yimseqdacen wiyaḍ ad tbeddel akk d ibeddlen inek.", - "cascadeprotected": "Asebter-agi yegdel axaṭer yettusekcem deg {{PLURAL:$1|asebter yegdelen agi|isebtar yegdelen agi}} s Taxtiṛit « amesten s uceṛcuṛ » isermeden :\n$2", + "editinginterface": "Ɣuṛ-k: Aqla-k tettbeddileḍ asebter yettuseqdacen i tmerna n uḍris n ugrudem n useɣẓan. \nIbeddilen ɣef usebter-agi ad ḥazen udem n ugrudem n useqdac i yiseqdacen-nniḍen n uwiki.", + "cascadeprotected": "Asebter-agi yettwammesten mgal abeddel acku yedda deh {{PLURAL:$1|usebter d-iteddun yettwammestnen|isebtar-agi d-itedduun yettwammestnen}} s usefran \"ammesten s udabdar\" urmid:\n$2", "namespaceprotected": "Ur tesɛiḍ ara turagt iwakken ad beddeleḍ isebtar n tallunt n isemawen \"'''$1'''\".", "customcssprotected": "Ur tesɛiḍ ara turagt iwakken ad beddeleḍ asebter agi n CSS, acku tesɛa iɣewwaren n yiwen useqdac nniḍen.", "customjsprotected": "Ur tesɛiḍ ara turagt iwakken ad beddeleḍ asebter agi n Javascript, acku tesɛa iɣewwaren n yiwen useqdac nniḍen.", @@ -375,7 +378,7 @@ "userlogin-yourpassword-ph": "Sekcem awal-ik(im) n uɛeddi", "createacct-yourpassword-ph": "Sekcem awal n uɛeddi", "yourpasswordagain": "Ɛiwed ssekcem awal n tbaḍnit", - "createacct-yourpasswordagain": "Sergeg awal n uɛeddi", + "createacct-yourpasswordagain": "Sentem awal uffir", "createacct-yourpasswordagain-ph": "Sekcem awal n uɛeddi tikelt nniḍen", "userlogin-remembermypassword": "Eǧǧ taɣimit inu turmidt", "userlogin-signwithsecure": "Seqdec tuqqna yettwaḥerzen", @@ -408,8 +411,11 @@ "createacct-realname": "Isem n tidets (axetṛan)", "createacct-reason": "Taɣẓint", "createacct-reason-ph": "Ayɣer ad snulfuḍ amiḍan nniḍen", - "createacct-submit": "Snulfud amiḍan inek(m)", - "createacct-another-submit": "Snulfud amiḍan nniḍen", + "createacct-reason-help": "Izen yettwaseknen deg uɣmis n tmerna n umiḍan", + "createacct-submit": "Rnu amiḍan-ik(m)", + "createacct-another-submit": "Rnu amiḍan", + "createacct-continue-submit": "Kemmel timerna n umiḍan", + "createacct-another-continue-submit": "Kemmel timerna n umiḍan", "createacct-benefit-heading": "{{SITENAME}} yetwexdem sɣur medden am kečč/kem.", "createacct-benefit-body1": "{{PLURAL:$1|abeddel|ibeddilen}}", "createacct-benefit-body2": "{{PLURAL:$1|asebter|isebtar}}", @@ -444,7 +450,7 @@ "eauthentsent": "Yiwen email yetweceggeε ar tansa id efkeḍ.\nUqbel ad n-ceggeε email nniḍen, ilaq ad ḍfereḍ ayen yellan deg email dɣa ad sergegeḍ amiḍan agi d win inek(m).", "throttled-mailpassword": "Neceggɛed yakan tirawt n uwennez i awal-ik/im n uɛaddi deg {{PLURAL:$1|asrag agi aneggaru|$1 isragen agi ineggura}}. Awennez n uwal n uɛaddi yettwaceggaɛ tikelt kan deg {{PLURAL:$1|asrag|$1 isragen}}.", "mailerror": "Agul asmi yettwazen e-mail: $1", - "acct_creation_throttle_hit": "Amdan i seqdacen tansa IP inek/inem yesnulfud {{PLURAL:$1|yiwen amiḍan|$1 imiḍanen}} deg 24 izragen agi ineggura, negweḍ ar talast n turagt deg azilal agi n wakud.", + "acct_creation_throttle_hit": "Inebgawen iseqdacen tansa IP-ik rnan {{PLURAL:$1|n umiḍan|$1 n imiḍanen}} deg $2 n yisragen ineggura, d ayen yessawḍen ar talast tafellayt yettwasirgen deg uzilal-agi n wakud.\nIhi, timerna n imiḍanen i yinebgawen iseqdacen tansa-agi IP tewḥel akka tura.", "emailauthenticated": "Tansa e-mail inek/inem tesergeg ass n $2 af $3.", "emailnotauthenticated": "Tansa email inek mazal ur tettuɛqel. Ur d netceggaɛ ara email i yal tiseɣnin agi.", "noemailprefs": "Efk tansa e-mail iwakken ad leḥḥun iḍaɣaren-nni.", @@ -457,12 +463,13 @@ "createaccount-title": "Asnulfu n umiḍan i {{SITENAME}}", "createaccount-text": "Albeɛḍ yesnulfu-d amiḍan i tansa e-amil inek/inem ɣef {{SITENAME}} ($4) s-isem n-useqdac « $2 », s awal n uɛaddi « $3 ».\nIlaq tura ad lldiḍ taɣimit dɣa ad beddeleḍ awal ik/im n uɛaddi.", "login-throttled": "Tɛerdeḍ ad qqeneḍ aṭas tiqwal deg dqiqat agi iɛddan.\nIlaq ad rǧuḍ $1 uqbel ad ɛerdeḍ tikkelt nniḍen.", - "login-abort-generic": "Taremt ik/im n tuqqna tebrir", + "login-abort-generic": "Awraḍ-ik n tuqqna ur yeddi ara", "loginlanguagelabel": "Tutlayt: $1", "suspicious-userlogout": "Asuter n usenser yugwi acku yella ugur s iminig naɣ s tazarkatut n uqeddac proxy.", "createacct-another-realname-tip": "* Isem n ṣṣeḥ d-axeṭran.\nMa teɛzemeḍ a t-tefkeḍ, ad yettuseqdac iwakken ad snen medden anwa yuran tikkin inek.", "pt-login": "Qqen", "pt-login-button": "Qqen", + "pt-login-continue-button": "Kemmel tuqqna", "pt-createaccount": "Rnu amiḍan", "pt-userlogout": "Ffeɣ", "php-mail-error-unknown": "anezri warisem deg tawuri mail() n PHP", @@ -478,6 +485,11 @@ "resetpass_submit": "Eg awal n tbaḍnit u kcem", "changepassword-success": "Awal n uɛaddi yettubeddel s lerbaḥ !", "changepassword-throttled": "Tɛerdeḍ ad qqeneḍ aṭas tiqwal deg dqiqat agi iɛddan.\nIlaq ad rǧuḍ $1 uqbel ad ɛerdeḍ tikkelt nniḍen.", + "botpasswords": "Iwalen uffiren n iṛubuten", + "botpasswords-disabled": "Awalen uffiren n iṛubuten nsan.", + "botpasswords-existing": "Awalen uffiren n uṛubuten yellan", + "botpasswords-createnew": "Rnu awal uffir n iṛubuten amaynut", + "botpasswords-editexisting": "Ẓreg awal uffir n iṛubuten yellan", "botpasswords-label-appid": "Isem n uṛubut:", "botpasswords-label-create": "Rnu", "botpasswords-label-update": "Leqqem", @@ -487,6 +499,11 @@ "botpasswords-label-grants": "Izerfan yettwasnasen:", "botpasswords-label-grants-column": "Ttunefken izerfan", "botpasswords-bad-appid": "Isem n uṛubut \"$1\" mačči d ameɣtu.", + "botpasswords-created-title": "Awal uffir n iṛubuten yettwarna", + "botpasswords-updated-title": "Awal uffir n iṛbuten ibeddel", + "botpasswords-deleted-title": "Awal uffir n iṛubuten yettwakkes", + "botpasswords-deleted-body": "Awal uffir n uṛubut \"$1\" n useqdac \"$2\" yettwakkes.", + "botpasswords-no-provider": "Asaǧǧaw n tɣimit n wawal uffir n iṛubuten ulac-it.", "resetpass_forbidden": "Ur zemreḍ ara ad beddeleḍ awalen n uɛaddi", "resetpass-no-info": "Ilaq ad qqeneḍ iwakken ad ẓṛeḍ asebter agi.", "resetpass-submit-loggedin": "Beddel awal n uɛaddi", @@ -557,9 +574,9 @@ "anonpreviewwarning": "''Ur tesuluḍ ara. Aḥraz ad yekles tansa IP inek/inem deg umezruy n ibeddilen n usebter.''", "missingsummary": "'''Ur tettuḍ ara:''' Ur tefkiḍ ara azwel i ubeddel inek. Lukan twekkiḍ ''Smekti'' tikelt nniḍen, abeddel inek ad yettusmekti mebla azwel.", "missingcommenttext": "Ssekcem awennit deg ukessar.", - "missingcommentheader": "'''Ur tettuḍ ara:''' Ur tefkiḍ ara azwel-azellum i ubeddel inek. Lukan twekkiḍ ''Smekti'' tikelt nniḍen, abeddel inek ad yettusmekti mebla azwel-azellum.", - "summary-preview": "Pre-timeẓriwt n ugzul:", - "subject-preview": "Pre-timeẓriwt asentel/azwel azellum:", + "missingcommentheader": "Asmekti: ur d-muddeḍ ara asentel n uwennit-agi.\nMa tsenndeḍ tikelt-nniḍen ɣef \"{{int:Savearticle}} \", abeddel-ik ad yettwasekles s war asentel.", + "summary-preview": "Taskant n ugzul n ubeddel :", + "subject-preview": "Taskant n usentel :", "blockedtitle": "Amseqdac iɛekkel", "blockedtext": "'''Amiḍan-ik n useqdac neɣ tansa n IP weḥlen.'''\n\nAsewḥel yega-t $1.\nTaɣẓint d tagi : ''$2''.\n\n* Tazwara n usewḥel : $8\n* Tagara n usewḥel : $6\n* Amiḍan iweḥlen : $7.\n\n\nTzemreḍ ad tnermseḍ $1 neɣ [[{{MediaWiki:Grouppage-sysop}}|anedbal]]-nniḍen akken ad tsmelayem.\nUr tezmireḍ ara ad tesqedceḍ tawuri \"nemres aseqdac-agi\" ma yella tella tensa tameɣtut deg[[Special:Preferences|ismenyifen n useqdac]], udiɣ ma yella tawuri-agi ur tewḥil ara. Tansa-ik IP n tura d $3, ID n usewḥeld #$5.\nSuddu-d akk talɣut-agi deg tuttriwin ara d-azdneḍ.", "autoblockedtext": "'''Tansa-ik IP tewḥel s wudem awurman acku i tt-yesseqdacen yesweḥli-t $1.\n\n\nTaɣẓint d tagi :\n:$2\n\n* Tazwara n usewḥel : $8\n* Tagara n usewḥel : $6\n* Amiḍan iweḥlen : $7.\n\n\nTzemreḍ ad tnermseḍ $1 neɣ [[{{MediaWiki:Grouppage-sysop}}|anedbal]]-nniḍen akken ad tsmelayem.\nUr tezmireḍ ara ad tesqedceḍ tawuri \"nermres aseqdac-agi\" ma yella tella tensa tameɣtut deg[[Special:Preferences|ismenyifen n useqdac]], udiɣ ma yella tawuri-agi ur tewḥil ara. \n\nTansa-ik IP n tura d $3, ID n usewḥeld #$5.\nSuddu-d akk talɣut-agi deg tuttriwin ara d-azdneḍ.", @@ -575,14 +592,14 @@ "accmailtext": "Awal n uɛaddi id yuran s ugacur i [[User talk:$1|$1]] yetweceggaɛ i $2.\nYezmer ad yetbeddel ɣef usebtar [[Special:ChangePassword|Abeddel n awal uɛddi]] sakin tuqqna.", "newarticle": "(Amaynut)", "newarticletext": "Tḍefreḍ azday ɣer usebter mazal ur yettwaxleq ara.\nAkken ad txelqeḍ asebter-nni, aru deg tenkult i tella deg ukessar\n(ẓer [$1 asebter n tallalt] akken ad tessneḍ kter).\nMa tɣelṭeḍ, wekki kan ɣef tqeffalt \"Back/Précédent\" n browser/explorateur inek.", - "anontalkpagetext": "---- ''Wagi d asebter n umyennan n useqdac adrig, mazal ur d-yesnufa ara amiḍan. I taɣẓint agi, ilaq an seqdec tansa IP ines iwakken at-id n sulu. Yiwet tansa IP tezmer at tettuseqdac sɣur aṭṭas n iseqdacen. Lukan ula d kečč aqla-k amseqdac adrig dɣa ur tebɣiḍ ara ad tettwabcreḍ izen am wigini, ihi [[Special:CreateAccount|snulfud amiḍan]] naɣ [[Special:UserLogin|qqened]] iwakken sya d asawen ur t-illint ara uguren n usulu.''", + "anontalkpagetext": "----\nAqla-k deg usebter n usqerdec n useqdac udrig ur yernan ara yakan amiḍan neɣ ur t-yesseqdacen ara .\nƔef aya, yessefk ad nseqdec tansa-is IP akken ad t-nissin.\nTansa IP tezmer ad tettwabḍu sɣuṛ ddeqs n iseqdacen.\nMa telliḍ d {{GENDER:|||}} d {{GENDER:|aseqdac udrig|taseqdact tudrigt}} udiɣ twalaḍ d akken iwenniten ur k-neɛni ara ttwaznen-ak-d, tzemreḍ [[Special:CreateAccount|ad ternuḍ amiḍan]] neɣ [[Special:UserLogin|ad teqqneḍ]] akken ad tzegleḍ akk ar zdat anexluḍ akked imttekkiyen udrigen.", "noarticletext": "Ulac aḍris deg usebter-agi akka tura Tzemreḍ [[Special:Search/{{PAGENAME}}|ad tnadiḍ aswel n usebter-agi]] deg isebtar-nniḍen,[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} nadi ti temhalin icudden ɣur-s],\nneɣ [{{fullurl:{{FULLPAGENAME}}|action=edit}} rnu asebter-agi][{{fullurl:{{#Special:Log}}|asebter={{FULLPAGENAMEE}}}} ad nadiḍ deg iɣmisen iqqenen].", "missing-revision": "Tacaggart #$1 n usebter s isem « {{FULLPAGENAME}} » ulac-itt.\n\nAcku azday n umezruy, ɣef wayen tsennedeḍ, d-aqbur. Asebter yemḥa.\nTzemreḍ ad affeḍ tilɣa deg [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} uɣmis n isebtar yemḥan].", "userpage-userdoesnotexist": "Amiḍan n useqdac « $1 » ur yekles ara. Ilaq ad selkeneḍ ma tebɣiḍ ad snulfuḍ asebter agi.", "userpage-userdoesnotexist-view": "Amiḍan n useqdac « $1 » ur yekles ara.", "blocked-notice-logextract": "Aseqdac agi yekyef.\nAsekcem aneggaru n useklas n ikyafen yella ddaw agi :", - "clearyourcache": "'''Tamawt:''' Beɛd asmekti, ahat yessefk ad temḥuḍ lkac n browser/explorateur inek akken teẓriḍ ibeddlen. '''Mozilla / Firefox / Safari:''' qqim twekkiḍ ''Shift'' u wekki ɣef ''Reload/Recharger'', neɣ wekki ɣef ''Ctrl-Shift-R'' (''Cmd-Shift-R'' deg Apple Mac); '''IE:''' qqim twekkiḍ ɣef ''Ctrl'' u wekki ɣef ''Refresh/Actualiser'', neɣ wekki ɣef ''Ctrl-F5''; '''Konqueror:''': wekki kan ɣef taqeffalt ''Reload'', neɣ wekki ɣef ''F5''; '''Opera''' yessefk ad tesseqdceḍ ''Tools→Preferences/Outils→Préférences'' akken ad temḥud akk lkac.", + "clearyourcache": "Tamawt : deffir mi nsekles ibeddilen-ik, yessefk ad tḥettmeḍ asmiren ummid n tuffirt n yiminig-ikakken ad twaliḍ ibeddilen.\n* Firefox / Safari : eǧǧ afus-ik ɣef taqeffalt Maj (Shift) sakin senned ɣef tqeffalt Smiren neɣ senned Ctrl-F5 neɣ Ctrl-R (⌘-R di Mac) \n* Google Chrome : senned ɣef Ctrl-Maj-R (⌘-Shift-R di Mac) \n* Internet Explorer : senned ɣef tqeffalt Ctrl udiɣ ɣef tqeffalt Smiren neɣ senned ɣef Ctrl-F5 \n* Opera : ddu ar wumuɣ Umuɣ → Iɣewwaṛen (Opera → Ismenyifen ɣef Mac) sakin ɣef Tabaḍnit & taɣellit → Sfeḍ isefka n usnirem → Tugniwin akked d iful=yla n tuffirt.", "usercssyoucanpreview": "'''taxbalut :''' Sseqdec taqeffalt « {{int:showpreview}} » iwakken ad tɛerḍeḍ asebter CSS inek/inem amaynut uqbel ad aklasteḍ.", "userjsyoucanpreview": "'''taxbalut :''' Sseqdec taqeffalt « {{int:showpreview}} » iwakken ad tɛerḍeḍ asebter JavaScript inek/inem amaynut uqbel ad aklasteḍ.", "usercsspreview": "'''Cfu-d, wagi d-azaraskan n usebter ik/im n CSS.'''\n'''Mmazal ur yettusmekti ara!'''", @@ -646,7 +663,9 @@ "content-failed-to-parse": "Tasleṭ n ugbur n $2 i talɣa $1 texseṛ : $3", "invalid-content-data": "Isefka n ugbur ur ɣbelen ara", "content-not-allowed-here": "Agbur \"$1\" ur yesɛa ara turagt ɣef usebter [[$2]]", - "editwarning-warning": "Ma ad teffeɣeḍ deg usebtar agi, akkw ibeddilen id xeddemeḍ ad sṛuḥen.\n\nMa teqqeneḍ, tzemreḍ ad senseḍ alɣu agi deg tigezmi « Abeddel » n ismenyifen inek/inem.", + "editwarning-warning": "Ma ad teffeɣeḍ seg usebter-agi ad tesṛuḥeḍ akk ibeddilen i tegiḍ.\nMa teqqeneḍ, tzemreḍ ad tsenseḍ alɣu-agi deg tigezmi \"{{int:prefs-editing}}\" n ismenyifen-ik(im).", + "editpage-invalidcontentmodel-title": "Taneɣruft n ugbur ur tettwasefrak ara", + "editpage-invalidcontentmodel-text": "Taneɣruft n ugbur \"$1\" ur tettwasefrak ara.", "editpage-notsupportedcontentformat-title": "Amasal n ugbur ur d-yetwarfed ara", "editpage-notsupportedcontentformat-text": "Amasal n ugbur $1 ur d-yetwarfed ara sɣur talɣa n ugbur $2.", "content-model-wikitext": "wikiaḍris", @@ -655,6 +674,7 @@ "content-model-css": "CSS", "content-json-empty-object": "Asentel d ilem", "content-json-empty-array": "Talfelwit d tilemt", + "deprecated-self-close-category": "Asebter iseqdacen yir tiṛekkizin HTM tumdilin tiwurmanin", "expensive-parserfunction-warning": "'''Ɣur-wet :''' Asebter agi yesɛa aṭas n tiɣriwin ar tiseɣnin ɣlayen n umsisleḍ taseddast.\nIlaq ad i sɛu ddaw n $2 {{PLURAL:$2|tiɣri|tiɣriwin }}, wannag tura {{PLURAL:$1|tella $1 tiɣri|llant $1 tiɣriwin}}.", "expensive-parserfunction-category": "Isebtar yesɛan aṭas tiɣriwin ɣlayen n tiseeɣnin n umsisleḍ taseddast", "post-expand-template-inclusion-warning": "Ɣur-wet : Asebter agi yesɛa aṭas tilɣatin. Kra n tilɣatin ur zemrent ara ad seqdacent.", @@ -683,7 +703,7 @@ "currentrev": "Tasiwelt n tura", "currentrev-asof": "Azmez n lqem taneggarut d $1", "revisionasof": "Tasiwelt n wass $1", - "revision-info": "Tasiwelt n wass $1 sɣur $2", + "revision-info": "Aceggir-agi yettwag di $1 sɣuṛ {{GENDER:$6|$2}}$7", "previousrevision": "←Tasiwelt taqdimt", "nextrevision": "Tasiwelt tamaynut→", "currentrevisionlink": "Tasiwelt n tura", @@ -693,7 +713,7 @@ "page_first": "amezwaru", "page_last": "aneggaru", "histlegend": "Axtiri n umgerrad: rcem tankulin akken ad teẓreḍ imgerraden ger tisiwal u wekki ɣef enter/entrée neɣ ɣef taqeffalt deg ukessar.
\nTabadut: (tura) = amgirred akk d tasiwelt n tura,\n(amgirred) = amgirred akk d tasiwelt ssabeq, M = abeddel afessas.", - "history-fieldset-title": "Inig deg umazray", + "history-fieldset-title": "Nadi iceggiren", "history-show-deleted": "Ekkes kan", "histfirst": "tiqdimin", "histlast": "timaynutin", @@ -796,6 +816,8 @@ "showhideselectedversions": "Ssken/Ffer ileqman i xtiṛen", "editundo": "ssefsu", "diff-empty": "(Ulac amgerrad)", + "diff-multi-sameuser": "({{PLURAL:$1|Yiwen n uceggir askudan sɣuṛ aseqdac iman-is ur d-yettwasken ara|$1 N iceggiren iskudanen sɣuṛ aseqdac iman-is ur d-ttwaseknen ara}})", + "diff-multi-otherusers": "({{PLURAL:$1|Yiwen n uceggir agrawan|$1 n iceggiren igrawanen}} sɣur {{PLURAL:$2|yiwen n useqdac-nniḍen|$2 n iseqdacen}} ur {{PLURAL:$1|d-yettwasken ara|d-ttwaseknen ara}})", "diff-multi-manyusers": "({{PLURAL:$1|Yiwen lqem agrawan|$1 ileqman igrawanen}} af {{PLURAL:$2|aseqdac|$2 iseqdacen}} {{PLURAL:$1|yeffer|ffren}})", "difference-missing-revision": "{{PLURAL:$1|Yiwet tacaggart|$1 ticaggartin}} n tameẓla agi ($1) {{PLURAL:$2|ur tella ara (ulac)|ur llant ara (ulac)}}.\n\nAcku azday n tameẓla, ɣef wayen tsennedeḍ, d-aqbur. Asebter yemḥa.\nTzemreḍ ad affeḍ tilɣa deg [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} uɣmis n isebtar yekksen].", "searchresults": "Igmad n unadi", @@ -805,12 +827,14 @@ "notextmatches": "ulac ayen yecban azwel n usebter", "prevn": "{{PLURAL:$1|$1}} ssabeq", "nextn": "{{PLURAL:$1|$1}} ameḍfir", + "prev-page": "Asebter yezrin", + "next-page": "Asebter d-iteddun", "prevn-title": "$1 {{PLURAL:$1|agmud n uqbel|igmad n uqbel}}", "nextn-title": "$1 {{PLURAL:$1|agmud n sakin|igmad n sakin}}", "shown-title": "Beqqeḍ $1 {{PLURAL:$1|agmud|igmad}} s usebter", "viewprevnext": "Ẓer ($1 {{int:pipe-separator}} $2) ($3).", "searchmenu-exists": "'''Yella asebter s isem \"[[:$1]]\" deg wiki agi.'''", - "searchmenu-new": "'''Snulfud asebter « [[:$1|$1]] » deg wiki agi !'''", + "searchmenu-new": "Rnu asebter \"[[:$1]]\" ɣef uwiki-agi! {{PLURAL:$2|0=|Wali daɣen asebter yettwafen s unadi-ik.|Wali daɣen igmaḍ n unadi yettwafen.}}", "searchprofile-articles": "Isebtar n ugbur", "searchprofile-images": "Agetmedia", "searchprofile-everything": "Akk", @@ -823,11 +847,14 @@ "search-result-category-size": "$1 {{PLURAL:$1|amseqdac|imseqdacen}} $2 ({{PLURAL:$2|adu-taggayt|adu-tiggayin}}, $3 {{PLURAL:$3|afaylu|ifuyla}})", "search-redirect": "(awelleh seg $1)", "search-section": "(tigezmi $1)", + "search-category": "(taggayt $1)", "search-file-match": "(yzega i ugbur n ufaylu)", "search-suggest": "D awal $1 i tnadiḍ ?", - "search-interwiki-caption": "Isenfaren atmaten", - "search-interwiki-default": "Igemmaḍ ɣef $1 :", + "search-rewritten": "Igmaḍ yettwaseknen i $1. Anadi n $2 deg umḍiq-is.", + "search-interwiki-caption": "Igmaḍ n isenfaṛen atmaten", + "search-interwiki-default": "Igmaḍ si $1:", "search-interwiki-more": "(ugar)", + "search-interwiki-more-results": "ugar n igmaḍ", "search-relatedarticle": "Amassaɣ", "searchrelated": "ineqqes", "searchall": "akk", @@ -839,9 +866,11 @@ "powersearch-togglelabel": "Ɛellem :", "powersearch-toggleall": "Akkw", "powersearch-togglenone": "Ulac", + "powersearch-remember": "Cfu ɣef ufran n yinadiyen d-iteddun", "search-external": "Anadi yeffɣen", "searchdisabled": "Anadi deg {{SITENAME}} yettwakkes. Tzemreḍ ad tnadiḍ s Google. Meɛna ur tettuḍ ara, tasmult n google taqdimt.", "search-error": "Tella tuccḍa deg unadi n : $1", + "search-warning": "Alɣu yettwammel degu unadi n: $1", "preferences": "Ismenyifen", "mypreferences": "Ismenyifen", "prefs-edits": "Amḍan n ibeddlilen :", @@ -854,6 +883,11 @@ "prefs-personal": "Profile n wemseqdac", "prefs-rc": "Ibeddilen imaynuten", "prefs-watchlist": "Tabdart n uḍfaṛ", + "prefs-editwatchlist": "Ẓreg tabdart n uḍfaṛ", + "prefs-editwatchlist-label": "Ẓreg inekcam ɣef tedbart n uḍfaṛ:", + "prefs-editwatchlist-edit": "Wali sakin kkes izwal n tebdart-ik n uḍfaṛ", + "prefs-editwatchlist-raw": "Ẓreg tabdart n uḍfaṛ deg uskar arewway", + "prefs-editwatchlist-clear": "Sfeḍ tabdart-ik n uḍfaṛ", "prefs-watchlist-days": "Amḍan n ussan i ubeqqeḍ deg umuɣ n uɛassi :", "prefs-watchlist-days-max": "Afellay $1 {{PLURAL:$1|ass|ussan}}", "prefs-watchlist-edits": "Amḍan afellay n ubeddel ara d-ibabnen deg tebdart n uḍfaṛ:", @@ -861,7 +895,7 @@ "prefs-watchlist-token": "Tiddest umuɣ n uɛassi :", "prefs-misc": "Ismenyifien-nniḍen", "prefs-resetpass": "Beddel awal n uɛaddi", - "prefs-changeemail": "Beddel tansa n e-mail", + "prefs-changeemail": "Beddel neɣ kkes tansan n yimayl", "prefs-setemail": "Sbadu yiwet tansa e-mail", "prefs-email": "Tixtiṛiyin n tira", "prefs-rendering": "Tummant", @@ -869,7 +903,8 @@ "restoreprefs": "Err akkw iɣewwaren s lexṣas (deg akkw tigezmiwin)", "prefs-editing": "Abedddil", "searchresultshead": "Anadi", - "stub-threshold": "Talast timinegt i izdayen ɣer ibegzan (itamḍanen) :", + "stub-threshold": "Talast i umasal n iseɣwan n isumar ($1) :", + "stub-threshold-sample-link": "amedya", "stub-threshold-disabled": "Yensa", "recentchangesdays": "Amḍan n ussan an beqqeḍ deg ibeddilen ineggura.", "recentchangesdays-max": "Afellay $1 {{PLURAL:$1|ass|ussan}}", @@ -877,6 +912,7 @@ "prefs-help-recentchangescount": "Wagi yesɛa deg-es ibeddilen ineggura, isebtar n umezruy d iɣmisen.", "prefs-help-watchlist-token2": "Hattan tasarut tufurt n usuddem Web n umuɣ inek/inem n uḍfar.\nAkkw amḍan yesɛan tasarut agi, ad yezmer ad i ɣer umuɣ inek/inem n uḍfar, ur d-sselɣu ara tasarut agi ihi.\n[[Special:ResetTokens|Nqer d-agi ma tebɣiḍ ad wennezeḍ tasarut agi]].", "savedprefs": "Ismenyifen-ik ttwaskelsen.", + "savedrights": "Izerfan n useqdac n {{GENDER:$1|$1}} ttwaskelsen.", "timezonelegend": "Iẓḍi n ukud :", "localtime": "Asrag adigan :", "timezoneuseserverdefault": "Seqdec azal s lexṣas n wiki ($1)", @@ -906,6 +942,7 @@ "youremail": "E-mail *:", "username": "{{GENDER:$1|Isem n umseqdac|Isem n tamseqdact}} :", "prefs-memberingroups": "{{GENDER:$2|Aεeggal|Taɛggalt}} n {{PLURAL:$1|ugraw|igrawen}} :", + "group-membership-link-with-expiry": "$1 (arams d $2)", "prefs-registration": "Azmez n tiggezt :", "yourrealname": "Isem n ṣṣeḥ *:", "yourlanguage": "Tutlayt:", @@ -943,13 +980,15 @@ "prefs-diffs": "Timeẓliwin", "prefs-help-prefershttps": "Asmenyif agi, ad yelḥu ar tuqqna ay d-yetteddun.", "prefs-tabs-navigation-hint": "Taxbalut : Tzemreḍ ad seqdeceḍ tineccabin n uzelmaḍ d uyeffus iwakken ad ssileleḍ gar iccaren.", - "userrights": "Laɛej iserfan n wemseqdac", - "userrights-lookup-user": "Laɛej iderman n yimseqdacen", + "userrights": "Izerfan n useqdac", + "userrights-lookup-user": "Fren aseqdac", "userrights-user-editname": "Ssekcem isem n wemseqdac:", - "editusergroup": "Beddel iderman n yimseqdacen", - "editinguser": "Abeddel n izerfan n {{GENDER:$1|useqdac|taseqdact}} '''[[User:$1|$1]]''' $2", - "userrights-editusergroup": "Beddel iderman n wemseqdac", - "saveusergroups": "Smekti iderman n yimseqdacen", + "editusergroup": "Sali-d igrawen n iseqdacen", + "editinguser": "Abeddel n izerfan n {{GENDER:$1|useqdac|tseqdact}} [[User:$1|$1]] $2", + "viewinguserrights": "Askan n izefan iseqdacen n {{GENDER:$1|useqdac|tseqdact}} [[User:$1|$1]] $2", + "userrights-editusergroup": "Snifel izerfan n {{GENDER:$1|useqdsac|tseqdact}}", + "userrights-viewusergroup": "Sken igrawen n {{GENDER:$1|useqdac|tseqdact}}", + "saveusergroups": "Sekles igrawen n {{GENDER:$1|useqdac|tseqdact}}", "userrights-groupsmember": "Amaslad deg:", "userrights-groupsmember-auto": "Aεeggal udrig n :", "userrights-groups-help": "Tzemreḍ ad beddeleḍ igrawen anda yella aseqdac agi :\n* Taxxamt i tekkin : aseqdac yella deg ugraw agi.\n* Taxxamt ur tekkin ara : aseqdac ur yella ara deg ugraw agi\n* Titrit (*) : ur tzemreḍ ara ad ekkeseḍ agraw agi sakin i tid ernuḍ, naɣ bis-bersa.", @@ -958,6 +997,14 @@ "userrights-nodatabase": "Taffa n isefka « $1 » ulac itt naɣ mačči d tadigant.", "userrights-changeable-col": "Igrawen i tzemreḍ ad beddeleḍ", "userrights-unchangeable-col": "Igrawen ur tzemreḍ ara ad beddeleḍ", + "userrights-expiry-current": "Ad ifat di $1", + "userrights-expiry-none": "Ur yettfat ara", + "userrights-expiry": "Ad ifat di:", + "userrights-expiry-existing": "Azemz n ufati yellan: $3, $2", + "userrights-expiry-othertime": "Akud-nniḍen:", + "userrights-expiry-options": "1 ass:1 day,1 amalas:1 week,1 aggur:1 month,3 agguren:3 montghs,6 agguren:6 month,1 aseggas:1 year", + "userrights-invalid-expiry": "Azemz n tagara i ugraw \"$1\" mačči d ameɣtu.", + "userrights-expiry-in-past": "Azemz n tagara i ugraw \"$1\" yezri.", "userrights-conflict": "Ccwal n ubeddel n izerfan n umseqdac ! Ilaq ad ɛzemeḍ tikelt nniḍen dɣa ad sergegeḍ ibeddilen.", "group": "Adrum:", "group-user": "Iseqdacen", @@ -978,16 +1025,18 @@ "grouppage-bot": "{{ns:project}}:Iṛubuten", "grouppage-sysop": "{{ns:project}}:Inedbalen", "grouppage-bureaucrat": "{{ns:project}}:Imsfelluran", - "grouppage-suppress": "{{ns:project}}:Inemdayen", + "grouppage-suppress": "{{ns:project}}:Suppress", "right-read": "Ɣeṛ isebtar", "right-edit": "Beddel isebtar", "right-createpage": "Snulfud isebtar (mačči d-isebtar n umeslay)", "right-createtalk": "Snulfud isebtar n umeslay", "right-createaccount": "Snulfud imiḍanen n iseqdacen", + "right-autocreateaccount": "Tuqqna tawurmant s umiḍan n useqdac azɣaray", "right-minoredit": "Ffer ibeddilen yellan d-imectuḥen", "right-move": "Beddel isem n isebtar", "right-move-subpages": "Beddel isem n isebtar d adu-isebtar nsen", "right-move-rootuserpages": "Beddel isem n usebtar amenzawi n useqdac", + "right-move-categorypages": "Ugar n isebtar n taggayin", "right-movefile": "Beddel isem n ifuyla", "right-suppressredirect": "Ur snulfu ara asemmimeḍ seg azwel amezwaru s ubeddel n isem usebter", "right-upload": "Azen ifuyla", @@ -1009,7 +1058,7 @@ "right-deletedtext": "Ẓeṛ aḍris yemḥan d timeẓliwin gar ileqman yemḥan", "right-browsearchive": "Nadi ɣef isebtar yettumḥan", "right-undelete": "Erred asebter yemḥan", - "right-suppressrevision": "Ssekyed dɣa erred ileqman yefren i inedbalen", + "right-suppressrevision": "Sken, ffer, werri iceggiren n isebtar n yal aseqdac", "right-suppressionlog": "Ẓeṛ iɣmisen usligen", "right-block": "Kyef deg tira iseqdacen nniḍen", "right-blockemail": "Sḍiqqef aceggaɛ n tira (e-mail) i yiwen useqdac", @@ -1045,19 +1094,43 @@ "right-override-export-depth": "Sifeḍ isebtar akkw d isebtar iqqenen alama tadrut n 5 iswiren", "right-sendemail": "Ceggaɛ tirawt i iseqdacen nniḍen", "grant-group-email": "Azen imayl", + "grant-createeditmovepage": "Rnu, beddel, senkez isebtar", + "grant-delete": "Kkes isebtar, iceggiren akked inekcam n uɣmis", + "grant-editinterface": "Snifel tallunt n yismawen MediaWiki akked CSS/JavaScript n useqdac", + "grant-editmycssjs": "Ẓreg CSS/JavaScript n useqdac-ik", + "grant-editmyoptions": "Ẓreg ismenyifen-ik n useqdac", + "grant-editmywatchlist": "Ẓreg tabdart-ik n uḍfaṛ", + "grant-editpage": "Ẓreg isebtar yellan", + "grant-editprotected": "Ẓreg isebtar immestnen", + "grant-highvolume": "Taẓrigt n yiblaɣ meqqren", + "grant-oversight": "Ffer iseqdacen sakin kkes iceggiren", + "grant-patrol": "Senqed ibeddilen n isebtar", + "grant-privateinfo": "Kcem ar telɣut tusligt", + "grant-protect": "Mmesten sakin kkes ammesten n isebtar", + "grant-rollback": "Ḥwi ibeddilen ɣef isebtar", + "grant-sendemail": "Azen imayl i yiseqdacen-nniḍen", + "grant-uploadeditmovefile": "Sali, semselsi, udiɣ kkes ifuyla", + "grant-uploadfile": "Sali ifuyla imaynuten", + "grant-basic": "Izerfan izaduren", + "grant-viewdeleted": "Sken ifuyla akked isebtar yettwakksen", + "grant-viewmywatchlist": "Sken tabdart-ik n uḍfaṛ", + "grant-viewrestrictedlogs": "Sken inekcam ibaḍniyen n uɣmis", "newuserlogpage": "Aɣmis n isnulfan n imiḍanen n imseqdacen", "newuserlogpagetext": "Asebter agi yebeqqeḍ amezruy n usnulfu n imiḍanen n iseqdacen.", "rightslog": "Aɣmis n yizerfan n wemseqdac", "rightslogtext": "Wagi d aɣmis n yibeddlen n yizerfan n wemseqdac", "action-read": "ɣaṛ asebter agi", "action-edit": "beddel asebter agi", - "action-createpage": "Snulfud isebtar", - "action-createtalk": "snulfud isebtar n umeslay", + "action-createpage": "rnu asebter-agi", + "action-createtalk": "rnu asebter-agi n useqerdec", "action-createaccount": "snulfud amiḍan agi n useqdac", + "action-autocreateaccount": "rnu s wudem awurman amiḍan n useqdac azɣaray", + "action-history": "sken amazray n usebter-agi", "action-minoredit": "cṛeḍ abeddel agi am umectuḥ", "action-move": "beddel isem n usebter agi", "action-move-subpages": "beddel isem n usebter agi d adu-isebtar is", "action-move-rootuserpages": "beddel isem n usebtar amenzawi n useqdac", + "action-move-categorypages": "snifel isem n isebtar n taggayt", "action-movefile": "beddel isem n ufaylu agi", "action-upload": "Azen afaylu agi", "action-reupload": "Sefxes afaylu yellan", @@ -1065,11 +1138,13 @@ "action-upload_by_url": "Azen afaylu agi seg tansa URL", "action-writeapi": "seqdec API n tira", "action-delete": "mḥu asebter-agi", - "action-deleterevision": "mḥu lqem agi", - "action-deletedhistory": "ẓeṛ amezruy yemḥan n usebter agi", + "action-deleterevision": "kkes iceggiren", + "action-deletelogentry": "kkes inekcam n uɣmis", + "action-deletedhistory": "wali amazray yettwakksen n usebter", + "action-deletedtext": "Sken aḍris n uceggir yettwakksen", "action-browsearchive": "nadi ɣef isebtar yettumḥan", - "action-undelete": "erred asebter agi", - "action-suppressrevision": "sekyed dɣa uɣaled ar lqem agi yetwekkesen", + "action-undelete": "err-d asebter", + "action-suppressrevision": "wali sakin err-d iceggiren yettwakksen", "action-suppressionlog": "ẓeṛ aɣmis agi uslig", "action-block": "Kyef deg tira aseqdac agi", "action-protect": "beddel iswiren n umesten i usebter agi", @@ -1084,10 +1159,17 @@ "action-userrights-interwiki": "Ẓreg izerfan n umseqdac deg wikis wiyaḍ", "action-siteadmin": "sekkweṛ naɣ kkes aseḍru i taffa n isefka", "action-sendemail": "Ceggaɛ tira", + "action-editmyoptions": "ẓreg ismenyifen-ik", "action-editmywatchlist": "beddel umuɣ inek uḍfar", "action-viewmywatchlist": "zeṛ umuɣ inek/inem n uḍfar", "action-viewmyprivateinfo": "zeṛ tilɣa inek tusligin", "action-editmyprivateinfo": "beddel tilɣa inek tusligin", + "action-editcontentmodel": "ẓreg taneɣruft n ugbur n usebter", + "action-managechangetags": "rnu sakin rmed/sens tiṛekkizin", + "action-applychangetags": "snes tiṛekkizin s ibeddilen-ik", + "action-changetags": "rnu sakin kkes kkes tiṛekkizin tebɣiḍ ɣef iceggiren akked inecam n uɣmis", + "action-deletechangetags": "kkes tiṛekkizin n taffa n isefka", + "action-purge": "silem asebter-agi", "nchanges": "$1 {{PLURAL:$1|Abeddel|Ibeddlen}}", "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|seg tarzaft taneggarut}}", "enhancedrc-history": "amezruy", @@ -1105,15 +1187,29 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (zeṛ daɣen [[Special:NewPages|umuɣ n isebtar imaynuten]]).", "recentchanges-legend-plusminus": "(''± 123'')", "recentchanges-submit": "Sken", + "rcfilters-tag-remove": "Kkes '$1'", + "rcfilters-legend-heading": "Tabdart n isegzilen:", "rcfilters-other-review-tools": "Ifecka-nniḍen n ucegger", + "rcfilters-group-results-by-page": "Sdukkel igmaḍ s usebter", + "rcfilters-grouping-title": "Asdukkel", + "rcfilters-activefilters": "Imzizdigen urmiden", + "rcfilters-advancedfilters": "Imzizdigen leqqayen", + "rcfilters-limit-title": "Ibeddilen ara d-yettwaseknen", + "rcfilters-limit-shownum": "Sken {{PLURAL:$1|n ubeddil aneggaru|$1 n ibeddilen ineggura}}", + "rcfilters-days-title": "Ussan ineggura", + "rcfilters-hours-title": "Isragen ineggura", "rcfilters-days-show-days": "$1 {{PLURAL:$1|n wass|n wussan}}", "rcfilters-days-show-hours": "$1 {{PLURAL:$1|n usrag|n yisragen}}", + "rcfilters-highlighted-filters-list": "Asebṛuṛeq: $1", "rcfilters-quickfilters": "Imzizdigen yettwaskelsen", + "rcfilters-quickfilters-placeholder-title": "Ulac aseɣwen yettwaskelsen", + "rcfilters-savedqueries-defaultlabel": "Imzizdigen yettwaskelsen", "rcfilters-savedqueries-rename": "Snifel isem", "rcfilters-savedqueries-setdefault": "Sbadu d amezwer", "rcfilters-savedqueries-unsetdefault": "Kkes-it d amezwer", "rcfilters-savedqueries-remove": "Kkes", "rcfilters-savedqueries-new-name-label": "Isem", + "rcfilters-savedqueries-new-name-placeholder": "Seglesm asentel n imzizdig", "rcfilters-savedqueries-apply-label": "Rnu imzizdig", "rcfilters-savedqueries-apply-and-setdefault-label": "Rnu imzizdig amezwer", "rcfilters-savedqueries-cancel-label": "Sefsex", @@ -1121,15 +1217,28 @@ "rcfilters-restore-default-filters": "Err-f imzizdigen imezwar", "rcfilters-clear-all-filters": "Sfeḍ akk imzizdigen", "rcfilters-show-new-changes": "Skev asnifel aneggaru", + "rcfilters-invalid-filter": "Yir imzizdig", "rcfilters-filterlist-title": "Imzizdigen", "rcfilters-filterlist-whatsthis": "Amek iteddu?", + "rcfilters-filterlist-feedbacklink": "Ini-yaɣ-d tiktiwin-ik ɣef ifecka n uzizdeg (imaynuten)", "rcfilters-highlightbutton-title": "Sebṛureq igmaḍ", "rcfilters-highlightmenu-title": "Fren ini", + "rcfilters-highlightmenu-help": "Fren ini n usebṛuṛeq n tmeẓlit-agi", "rcfilters-filterlist-noresults": "Ukac imzizdigen yettwafen", "rcfilters-filter-editsbyself-label": "Asnifel-ik", "rcfilters-filter-editsbyself-description": "Ittekkiyen-ik", "rcfilters-filter-editsbyother-label": "Asnifel n wiyaḍ", - "rcnotefrom": "Deg ukessar llan ibeddlen seg wasmi '''$2''' (ar '''$1''').", + "rcfilters-filter-user-experience-level-registered-label": "Yeqqen", + "rcfilters-filter-user-experience-level-registered-description": "Imaẓragen uqqinen.", + "rcfilters-filter-user-experience-level-unregistered-label": "Ur yeqqin ara", + "rcfilters-filter-user-experience-level-unregistered-description": "Imaẓragen ur yeqqinen ara.", + "rcfilters-filter-user-experience-level-newcomer-label": "Inebgawen imaynuten", + "rcfilters-filter-user-experience-level-learner-label": "Inelmaden", + "rcfilters-filter-user-experience-level-experienced-label": "Iseqdacen s tirmitin", + "rcfilters-filtergroup-automated": "Ittekkiyen iwurmanen", + "rcfilters-filter-bots-label": "Aṛubut", + "rcfilters-filter-humans-label": "Amdan (mačči d aṛubut)", + "rcnotefrom": "Ddaw-a{{PLURAL:$5|d abeddel|d ibeddilen}} si $3, $4 (arama $1 ad d-yettwaseknen).", "rclistfrom": "Ssken ibeddlen imaynuten seg $3 $2", "rcshowhideminor": "$1 ibeddlen ifessasen", "rcshowhideminor-show": "Sken", @@ -1160,7 +1269,7 @@ "boteditletter": "b", "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|aɛessas|iɛessasen}}]", "rc_categories": "Ḥedded i taggayin (ferreq s \"|\")", - "rc_categories_any": "Ulayɣer", + "rc_categories_any": "Yiwet seg tid yettwafernen", "rc-change-size-new": "$1 {{PLURAL:$1|atamḍan|itamḍanen}} seld abeddel", "newsectionsummary": "/* $1 */ tigezmi tamaynut", "rc-enhanced-expand": "Ẓeṛ ttfaṣil", @@ -1184,9 +1293,9 @@ "uploaderror": "Agul deg usekcam", "upload-recreate-warning": "'''Ɣur-wet : Afaylu s isem agi yetwekkes naɣ yetembiwel.'''\nAɣmis n tukksiwin d win n ittembiwilen n usebter agi beqqeḍen d-agi i tilɣa :", "uploadtext": "Sseqdec tiferkit agi iwakken ad ktereḍ ifuyla ɣef uqeddac.\nIwakken ad ẓṛeḍ naɣ ad nadiḍ tugniwin i ktren uqbel, ẓeṛ [[Special:FileList|umuɣ n tugniwin]]. Taktert tella daɣen deg [[Special:Log/upload|aɣmis n taktert n ifuyla]], dɣa inuzal deg [[Special:Log/delete|aɣmis n inuzal]].\n\nAkken ad tessekcmeḍ afaylu deg usebter, seqdec azay am wagi\n* '''[[{{ns:file}}:afaylu.jpg]]''', iwakken ad beqqeḍeḍ afaylu deg tabadut tačurant (lukan d-tugna) ;\n* '''[[{{ns:file}}:afaylu.png|200px|thumb|left|aḍris n uglam]]''' i useqdac n uqmamaḍ n 200px s tehri deg tanaka af uzelmeḍ s « aḍris n uglam » am aglam ;\n* '''[[{{ns:media}}:afaylu.ogg]]''' iwakken ad qqeneḍ ɣer ufaylu war ubeqqeḍ.", - "upload-permitted": "Amasal n ifuyla i siregen : $1.", - "upload-preferred": "Amasal n ifuyla i smenyifen : $1.", - "upload-prohibited": "Amasal n ifuyla igdelen : $1.", + "upload-permitted": "{{PLURAL:$2|Amasal|Imasalen}} n ifuyla {{PLURAL:$2|yettwasireg|ttwasirgen}} : $1.", + "upload-preferred": "{{PLURAL:$2|Amasal|Imasalen}} n ifuyla {{PLURAL:$2|anurif|inurifen}} : $1.", + "upload-prohibited": "‎{{PLURAL:$2|Amasal|Imasalen}} n ifuyla {{PLURAL:$2|ugdil|ugdilen}} : $1.", "uploadlogpage": "Amezruy n usekcam", "uploadlogpagetext": "Hat-an umuɣ n ifuyla ineggura i kteren ɣef uqeddac.\nẒeṛ [[Special:NewFiles|tihawt n tugniwin timaynutin]].", "filename": "Isem n ufaylu", @@ -1568,10 +1677,11 @@ "apisandbox-deprecated-parameters": "Iɣewwaṛen iqbuṛen", "booksources": "Iɣbula n yidlisen", "booksources-search-legend": "Nadi ɣef iɣbula n yidlisen", + "booksources-search": "Nadi", "booksources-text": "Deg ukessar, yella wumuɣ n yizdayen iberraniyen izzenzen idlisen (imaynuten akk d weqdimen), yernu ahat sɛan kter talɣut ɣef idlisen i tettnadiḍ fell-asen:", "booksources-invalid-isbn": "ISBN agi ur yeɣbel ara ; selken ma ulac anezri deg-es.", "specialloguserlabel": "Ameskar :", - "speciallogtitlelabel": "Asaḍas (azwel naɣ aseqdac) :", + "speciallogtitlelabel": "Asaḍas (azwel neɣ {{ns:user}}:isem n useqdac) :", "log": "Aɣmis", "logeventslist-submit": "Sken", "all-logs-page": "Akk iɣmisen izayezen", @@ -1579,6 +1689,7 @@ "logempty": "Ur yufi ara deg uɣmis.", "log-title-wildcard": "Nadi ɣef izwal i yebdan s uḍris-agi", "showhideselectedlogentries": "Beqqeḍ/ffer isekcam n uɣmis agi", + "checkbox-none": "Ulac", "allpages": "Akk isebtar", "nextpage": "Asebter ameḍfir ($1)", "prevpage": "Asebter ssabeq ($1)", @@ -1631,6 +1742,7 @@ "listgrouprights-removegroup-self": "Yezmer ad yekkes {{PLURAL:$2|agraw|igrawen}} ar umiḍan-is : $1", "listgrouprights-addgroup-self-all": "Yezmer ad yernu akkw igrawen ar umiḍan-is", "listgrouprights-removegroup-self-all": "Yezmer ad yekkes akkw igrawen ar umiḍan-is", + "trackingcategories-name": "Isem n yizen", "mailnologin": "Ur yufi ḥedd (tansa)", "mailnologintext": "Yessefk ad tiliḍ[[Special:UserLogin|tkecmeḍ]] udiɣ ad tesɛuḍ tansa n yimayl tameɣtut deg [[Special:Preferences|isemyifen-ik]] akken ad tazneḍ imayl i yiseqdacen-nniḍen.", "emailuser": "Azen e-mail i wemseqdac-agi", @@ -1678,11 +1790,11 @@ "unwatchthispage": "Fakk aɛassi", "notanarticle": "Mačči d amagrad", "notvisiblerev": "Lqem tetwemḥa", - "watchlist-details": "ttɛassaɣ {{PLURAL:$1|$1 usebter|$1 n isebtaren}} mebla isebtaren \"amyannan\".", + "watchlist-details": "{{PLURAL:$1|$1 n usebter|$1 n isebtar}} di tebdart-ik n uḍfaṛ, war ma tseddaḍ isebtar n usqerdec.", "wlheader-enotif": "Talɣut s email yessermed.", "wlheader-showupdated": "Isebtar ttubeddlen segwasmi tkecmeḍ tikelt taneggarut ttbanen-d s uḍris '''aberbuz'''.", - "wlnote": "Ddaw agi {{PLURAL:$1|yella abeddel aneggaru|llan '''$1''' ibeddilen ineggura}} n {{PLURAL:$2|usrag aneggaru|'''$2''' isragen ineggura}}, seg $3 af $4.", - "wlshowlast": "Ssken $1 n swayeɛ $2 n wussan neɣ ineggura", + "wlnote": "Ddaw-a{{PLURAL:$1|ad twaliḍ abeddel aneggaru yettwagen|ad twaliḍ $1 n ibeddilen ineggura yettwagen}} deg {{PLURAL:$2| usrag aneggaru|di $2 n yisragen ineggura}}, arama d $3, $4.", + "wlshowlast": "Sken wid n $1 n isragen ineggura, wid n $2 n wussan ineggura", "watchlist-hide": "Ffer", "watchlist-submit": "Sken", "watchlist-options": "Iɣewwaṛen n tebdart n uḍfaṛ", @@ -1866,6 +1978,7 @@ "sp-contributions-search": "Nadi i tikkin", "sp-contributions-username": "Tansa IP neɣ isem n wemseqdac:", "sp-contributions-toponly": "Sekned kan imagraden i beddeleɣ nekk d-aneggaru", + "sp-contributions-newonly": "Seken kan tiẓrigin n tmerna n isebtar.", "sp-contributions-submit": "Nadi", "whatlinkshere": "Ayen i d-yettawi ɣer da", "whatlinkshere-title": "Isebtaren i sɛan azday ɣer « $1 »", @@ -1882,7 +1995,7 @@ "whatlinkshere-hideredirs": "$1 iwellihen", "whatlinkshere-hidetrans": "$1 tiguriyin", "whatlinkshere-hidelinks": "$1 iseɣwan", - "whatlinkshere-hideimages": "$1 ifuyla iqqenen", + "whatlinkshere-hideimages": "$1 iseɣwan ar ufaylu", "whatlinkshere-filters": "Tistaytin", "autoblockid": "Asewḥel awurman #$1", "block": "Ɛekkel aseqdac", @@ -2015,7 +2128,7 @@ "movenotallowedfile": "Ur tesɛiḍ ara turagt ad beddeleḍ isem n ifuyla.", "cant-move-user-page": "Ur tesɛiḍ ara turagt ad beddeleḍ isem n isebtar igejdanen n imseqdacen", "cant-move-to-user-page": "Ur tesɛid ara assireg iwakken ad beddeleḍ isem n usebtar ɣer asebtar n umseqdac (haca ma d-adu-asebtar).", - "newtitle": "Ar azwel amaynut", + "newtitle": "Azwel amaynut:", "move-watch": "Ɛass asebter-agi", "movepagebtn": "Smimeḍ asebter", "pagemovedsub": "Asemmimeḍ yekfa", @@ -2101,7 +2214,7 @@ "thumbnail_gd-library": "Tawila tagermazt n tamkarḍit GD : ulac tasɣent $1", "thumbnail_image-missing": "Afaylu agi ulac-it : $1", "import": "Ssekcem isebtar", - "importinterwiki": "Assekcem n transwiki", + "importinterwiki": "kter seg uwiki-nniḍen", "import-interwiki-text": "Fren yiwen wiki d yiwen azwel n usebtar ad ketreḍ.\nIzemzen n ileqman d isemawen n ittekkiyen ad qqimen.\nAkkw tigawin n taktert ager-wiki ad illint deg [[Special:Log/import|umezruy n tiketrin]].", "import-interwiki-history": "Xdem alsaru n akk tisiwal umezruy n usebter-agi", "import-interwiki-templates": "Sekcem akkw talɣiwin", @@ -2142,8 +2255,8 @@ "import-rootpage-nosubpage": "Tallunt n isemawen « $1 » n usebtar aẓar ur yeqbel ara adu-isebtar.", "importlogpage": "Aɣmis n usekcam", "importlogpagetext": "Adeblan n usekcam n isebtar i yesɛan amezruy ubeddel seg wiki tiyaḍ.", - "import-logentry-upload-detail": "$1 {{PLURAL:$1|lqem|ileqman}}", - "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|lqem|ileqman}} seg $2", + "import-logentry-upload-detail": "$1 {{PLURAL:$1|n uceggir yettwakter|n iceggiren ttwaketren}} imported", + "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|n uceggir yettwakter|n iceggiren ttwaketren}} si $2", "javascripttest": "Tarmit n JavaScript", "javascripttest-qunit-intro": "Zeṛ [$1 tumlin n tarmit] ɣef mediawiki.org.", "tooltip-pt-userpage": "Asebter n {{GENDER:|useqdac-ik|tseqdact-im}}", @@ -2326,6 +2439,7 @@ "newimages-summary": "Asebtar agi uslig yebeqqeḍ ifuyla ineggura i kteren.", "newimages-legend": "Tastayt", "newimages-label": "Isem n ufaylu (naɣ aḥric ines) :", + "newimages-newbies": "Sken kan ittekkiyen n imiḍanen imaynuten", "noimages": "Tugna ulac-itt.", "ilsubmit": "Nadi", "bydate": "s uzemz", @@ -2719,8 +2833,8 @@ "scarytranscludefailed-httpstatus": "[Abrir n tiririt n talɣa i $1 : HTTP $2]", "scarytranscludetoolong": "[URL agi uffay aṭas]", "deletedwhileediting": "Aɣtal: Asebter-agi yettumḥa qbel ad tebdiḍ a t-tbeddleḍ!", - "confirmrecreate": "Amseqdac [[User:$1|$1]] ([[User talk:$1|Meslay]]) yemḥu asebter-agi beɛd ad tebdiḍ abeddel axaṭer:\n: ''$2''\nG leɛnaya-k sentem belli ṣaḥḥ tebɣiḍ ad tɛiwedeḍ axlaq n usebter-agi.", - "confirmrecreate-noreason": "Amseqdac [[User:$1|$1]] ([[User talk:$1|Meslay]]) yemḥu asebter-agi wannag tebedduḍ att beddeleḍ. Ilaq ad sergegeḍ tebɣiḍ ad snulfuḍ tikkelt nniḍen asebtar agi.", + "confirmrecreate": "Aseqdac [[User:$1|$1]] ([[User talk:$1|Asqerdec]]) yekkes asebter-agi makken tebdiḍ abeddel deg-s, ɣef sebba n :\n: $2\nMa ulac aɣilif, sentem d akken tebɣiḍ ad talseḍ timerna n usebter-agi.", + "confirmrecreate-noreason": "{{GENDER:$1|Aseqdac|Taseqdact}} [[User:$1|$1]] ([[User talk:$1|Asqerdec]]) {{GENDER:$1|yekkes|tekkes}} asebter-agi, makken tebdiḍ tettbeddileḍ-t. Sentem ma ulac aɣilif me tebɣiḍ ad talsseḍ timerna n usebter-agi.", "recreate": "Ɛiwed xleq", "confirm_purge_button": "Seɣbel", "confirm-purge-top": "Mḥu lkac n usebter-agi?", @@ -2769,6 +2883,7 @@ "watchlistedit-raw-done": "Umuɣ n uɛessi inek yettubeddel.", "watchlistedit-raw-added": "{{PLURAL:$1|1 wezwel |$1 yizwal}} nnernan:", "watchlistedit-raw-removed": "{{PLURAL:$1|1 wezwel yettwakkes|$1 yizwal ttwakksen}}:", + "watchlisttools-clear": "Sfeḍ tabdart n uḍfaṛ", "watchlisttools-view": "Umuɣ n uɛessi", "watchlisttools-edit": "Ẓer u beddel umuɣ n uɛessi", "watchlisttools-raw": "Beddel umuɣ n uɛessi (raw)", @@ -2811,8 +2926,8 @@ "version-entrypoints": "Tansa URL n irden n wekcam", "version-entrypoints-header-entrypoint": "Ired n wekcam", "version-entrypoints-header-url": "Tansa URL", - "redirect": "Alssniled s ufaylu, amseqdac, asebtar neɣ ID n tacaggart", - "redirect-summary": "Asebtar agi uslig yetalssnil ɣeṛ ufaylu (isem n ufaylu yetwefked), asebtar (ID n tacaggart neɣ n usebtar id yetwafken) neɣ asebtar n umseqdac (ID umḍin n umseqdac yetwefked). Asseqdec : [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], neɣ [[{{#Special:Redirect}}/user/101]].", + "redirect": "Welleh s usulay n ufaylu, aseqdac, asebter, aceggir neɣ aɣmis", + "redirect-summary": "Asebter-agi uslig yettuwelleh ɣeṛ ufaylu (isem n ufaylu yettunefk-d), asebter (Asulay n uceggir neɣ n usebter yettunefk-d), asebter n useqdac (asulay umḍin n useqdac yettunefk-d), neɣ anekcam n uɣmis (Asulay n uɣmis yettunefk-d). Asseqdec:\n[[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]], neɣ [[{{#Special:Redirect}}/logid/186]].", "redirect-submit": "Ruḥ", "redirect-lookup": "Anadi :", "redirect-value": "Azal :", @@ -2861,6 +2976,9 @@ "tags-active-no": "Ala", "tags-edit": "beddel", "tags-hitcount": "$1 {{PLURAL:$1|abeddel|ibeddlen}}", + "tags-create-heading": "Rnu taṛekkizt tamaynut", + "tags-edit-existing-tags-none": "Ulac", + "tags-edit-new-tags": "Tiṛekkizin timaynutin:", "comparepages": "Qaren isebtar", "compare-page1": "Asebtar 1", "compare-page2": "Asebtar 2", @@ -2872,8 +2990,8 @@ "compare-revision-not-exists": "Lqem id efkiḍ ulac-it.", "dberr-problems": "Ssurfet-aɣ ! Asmel agi yemliled ilɣiten itikniten.", "dberr-again": "Ɛreḍ ad arǧuḍ kra n tisdidin dɣa sismeḍ.", - "dberr-info": "(Ulamek an qqen ar uqeddac n taffa n isefka : $1)", - "dberr-info-hidden": "(Ulamek an qqen ar uqeddac n taffa n isefka)", + "dberr-info": "(Ur izmir ara ad yeqqen ar taffa n isefka: $1)", + "dberr-info-hidden": "(Ur izmir ara ad yeqqen ara taffa n isefka)", "dberr-usegoogle": "Tzemreḍ ad ɛreḍeḍ anadi s Google deg ukud agi.", "dberr-outofdate": "Ani i imataren nsen n ugbur nneɣ zemren ad yetwagaren", "dberr-cachederror": "Wagi d anɣel yeffren n usebtar i tebɣiḍ, yezmer ad yetwagar.", @@ -2891,7 +3009,7 @@ "htmlform-yes": "Ih", "htmlform-chosen-placeholder": "Fren taxtiṛit", "logentry-delete-delete": "$1 {{GENDER:$2|yemḥa}} asebtar $3", - "logentry-delete-restore": "$1 {{GENDER:$2|yerred|terred}} asebtar $3", + "logentry-delete-restore": "$1 {{GENDER:$2|yerra-d|terra-d}} asebter $3 ($4)", "logentry-delete-event": "$1 {{GENDER:$2|yebeddel|tebeddel}} tabanit {{PLURAL:$5|n tadyant n uɣmis|n $5 tidyanin n uɣmis}} ɣef $3: $4", "logentry-delete-revision": "$1 {{GENDER:$2|yebeddel|tebeddel}} tabani {{PLURAL:$5|n lqem|n $5 ileqman}} ɣef usebtar $3: $4", "logentry-delete-event-legacy": "$1 {{GENDER:$2|yebeddel|tebeddel}} tabanit n tidyanin n uɣmis ɣef $3", @@ -2923,6 +3041,7 @@ "logentry-rights-rights": "$1 yesnifel attekki ar ugraw i {{GENDER:$6|$3}} si $4 ar $5", "logentry-rights-rights-legacy": "$1 {{GENDER:$2|yebeddel|tebeddel}} amyili ar ugraw i $3", "logentry-rights-autopromote": "$1 {{GENDER:$2|yettwasmel|tettwasmel}} s uwurman seg $4 ar $5", + "logentry-upload-upload": "$1 {{GENDER:$2|yessuli|tessuli}} $3", "logentry-upload-overwrite": "$1 {{GENDER:$2|yessuli-d|tessuli-d}} lqem amaynut n $3", "rightsnone": "(ulaḥedd)", "feedback-adding": "Rnud iwenniten inek/inem ar usebter...", @@ -2998,5 +3117,8 @@ "special-characters-group-greek": "Tagrigit", "special-characters-group-greekextended": "Tagrigit taɣezfant", "special-characters-group-cyrillic": "Tasirilikt", - "special-characters-group-arabic": "Taɛṛabt" + "special-characters-group-arabic": "Taɛṛabt", + "randomrootpage": "Asebter aẓaṛ agacuran", + "log-action-filter-upload-upload": "Asali amaynut", + "authprovider-confirmlink-ok-help": "Kemmel deffir n uskan n yiznan n usdukkel ur yeddin ara." } diff --git a/languages/i18n/khw.json b/languages/i18n/khw.json index 5674812901..416b090ab7 100644 --- a/languages/i18n/khw.json +++ b/languages/i18n/khw.json @@ -4,7 +4,8 @@ "Rachitrali", "아라", "Obaid Raza", - "Macofe" + "Macofe", + "Saraiki" ] }, "tog-underline": "ربطو خط کشیدگی", @@ -145,13 +146,7 @@ "anontalk": "بچے لو IP ھیہ", "navigation": "رہنمائی", "and": " وا", - "qbfind": "تلاش کورے", - "qbbrowse": "Browse/تصفّح", - "qbedit": "ترمیم", - "qbpageoptions": "ھیہ صفحہ", - "qbmyoptions": "مہ صفحات", "faq": "عام معلومات", - "faqpage": "Project:معلوماتِ عامہ", "actions": "ایکشنز", "namespaces": "نامان ژاغہ", "variants": "الگ", @@ -176,29 +171,19 @@ "edit-local": "ترمیم مقامی وضاحت", "create": "ساوزاوے", "create-local": "مقامی وضاحتو داخل کورے", - "editthispage": "ھی صفحہا ترمیم کورے", - "create-this-page": "ھیہ صفحو ساوزاوے", "delete": "بوغاوے", - "deletethispage": "ھیہ صفحہو بوغاوے", - "undeletethispage": "ھیہ صفحو بحال کورے", "undelete_short": "بحال {{PLURAL:$1|ای ترمیم|$1 ترامیم}}", "viewdeleted_short": "{{PLURAL:$1|ای ترمیم حذف ہوئے|$1 ترامیم حذف ہونی}}", "protect": "محفوظ", "protect_change": "تبدیل کورے", - "protectthispage": "ھیہ صفحو محفوظ کورے", "unprotect": "غیر محفوظ", - "unprotectthispage": "ھیہ صفحہو غیر محفوظ کورے", "newpage": "نوغ صفحہ", - "talkpage": "ھیہ صفحہا تبادلۂ خیال کورے", "talkpagelinktext": "مشقولگی", "specialpage": "خصوصی صفحہ", "personaltools": "ذاتی سماند", - "articlepage": "مندرجاتی صفحہو لوڑے", "talk": "تبادلہٴ خیال", "views": "خیالات", "toolbox": "ٹول بکس", - "userpage": "یوزرو صفحو لوڑے", - "projectpage": "کھوار منصوبو صفحہو لوڑے", "imagepage": "ھوٹوو صفحو لوڑے", "mediawikipage": "پیغامو صفحہو لوڑے", "templatepage": "سانچو صفحہو لوڑے", @@ -428,12 +413,15 @@ "pt-login-button": "داخل بوس", "pt-createaccount": "کھاتہ ساوزاوے", "pt-userlogout": "لاگ آوٹ", + "changepassword": "پاسورڈو بدیل کورے", "resetpass_announce": "تو ای برقی ارسال کردہ عارضی کوڈ ورڈو سوم جستہ داخل بیتی آسوس.\nداخلِ نوشتہ بیکو عملو مکمل کوریکو بچے تہ ھیارا نوغ پاسورڈ متعین کوریلک بوئے جما:", "resetpass_header": "کھاتو پاسورڈو تبدیل کورے", "oldpassword": "پرانو کلمۂ شناخت:", "newpassword": "نوغ کلمۂ شناخت", "retypenew": "نوغ کلمۂ شناخت دوبارہ درج کورے:", "resetpass_submit": "پاسورڈ ساوزاوے وا داخل بوس", + "botpasswords-label-delete": "بوغاوے", + "botpasswords-label-resetpassword": "پاسورڈو ری سیٹ کورے", "resetpass_forbidden": "تتے پاسورڈو چینج کوریکو اجازت نیکی", "resetpass-no-info": "ھیہ صفحا براہِ راست رسائیو بچے تہ داخلِ نوشتہ بیک ضروری شیر.", "resetpass-submit-loggedin": "پاسورڈو تبدیلی", @@ -443,6 +431,7 @@ "passwordreset": "پاسورڈو ری سیٹ کورے", "passwordreset-username": "ممبارو نم", "passwordreset-domain": "ڈومین:", + "passwordreset-email": "ای میل پتہ:", "changeemail-none": "(نو)", "bold_sample": "بوسک متن", "bold_tip": "بولڈ ٹیکسٹ", @@ -531,9 +520,12 @@ "history-feed-item-nocomment": "$1 تا $2", "rev-delundel": "پشاوے/کھوشتاوے", "rev-showdeleted": "پشاوے", + "revdelete-show-file-submit": "دی", "revdelete-radio-set": "کھوشت", "revdelete-radio-unset": "ظاہر", + "revdelete-log": "وجہ:", "revdel-restore": "ظاہریتو تبدیل کورے", + "mergehistory-reason": "وجہ:", "mergehistory-revisionrow": "$1 ($2) $3 . . $4 $5 $6", "revertmerge": "غیر ضم", "history-title": "تاریخچہ \"$1\"", @@ -547,6 +539,7 @@ "notextmatches": "ھیہ عنوانو سورا کیہ دی صفحہ موجود نیکی", "prevn": "آچھو{{PLURAL:$1|$1}}", "nextn": "پروشٹیو{{PLURAL:$1|$1}}", + "next-page": "نوغ صفحہ", "prevn-title": "سابقہ $1 {{PLURAL:$1|نتیچہ|نتیجہ}}", "nextn-title": "سابقہ $1 {{PLURAL:$1|نتیچہ|نتیجہ}}", "shown-title": "فی صفحہ $1 {{PLURAL:$1|نتیجہ|نتائج}} پشاوے", diff --git a/languages/i18n/km.json b/languages/i18n/km.json index e8ffe2ddee..6c0ddb098d 100644 --- a/languages/i18n/km.json +++ b/languages/i18n/km.json @@ -531,7 +531,7 @@ "anoneditwarning": "'''ប្រយ័ត្ន ៖''' អ្នកមិនបានកត់ឈ្មោះចូល​ទេ។ អាសយដ្ឋានIPរបស់អ្នក​នឹងត្រូវបាន​កត់ត្រាទុក​ក្នុងប្រវត្តិកែប្រែ​នៃទំព័រ​នេះ។ បើសិនជាអ្នក [$1 កត់ឈ្មោះចូល] ឬ [$2 បង្កើតគណនី] នោះការកែប្រែរបស់អ្នកនឹងត្រូវភ្ចាប់ជាមួយអត្តនាមរបស់អ្នកផង នឹងមានផលប្រយោជន៍ផ្សេងទៀតផង។", "anonpreviewwarning": "អ្នកមិនបានកត់ឈ្មោះចូល​ទេ។ ប្រសិនបើអ្នកធ្វើការរក្សាទុក នោះអាសយដ្ឋានIPរបស់អ្នក​នឹងត្រូវបាន​កត់ត្រាទុក​ក្នុងប្រវត្តិកែប្រែ​នៃទំព័រ​នេះ។", "missingsummary": "'''រំលឹក៖''' អ្នកមិនទាន់បានផ្ដល់ចំណារពន្យល់អំពីកំណែប្រែនេះទេ។\n\nបើសិនជាអ្នកចុច '''រក្សាទុក''' ម្ដងទៀតនោះកំណែប្រែរបស់អ្នកនឹងត្រូវរក្សាទុកដោយគ្មានចំណារពន្យល់។", - "selfredirect": "ប្រយ័ត្ន៖ អ្នកកំពុងតែបញ្ជូនបន្តទំព័រនេះទៅកាន់ទំព័រខ្លួនឯង។\n\nប្រហែលជាអ្នកបានផ្ដល់ទំព័រគោលដៅសម្រាប់បញ្ជូនបន្តខុខ ឬប្រហែលជាអ្នកកំពុងកែប្រែទំព័រខុស។\nបើសិនជាអ្នកចុច \"$1\" ម្ដងទៀត តំណភ្ជាប់បញ្ជូនបន្តនឹងត្រូវបង្កើតឡើងបែបនេះ។", + "selfredirect": "ប្រយ័ត្ន ៖ អ្នកកំពុងតែបញ្ជូនបន្តទំព័រនេះទៅកាន់ទំព័រខ្លួនឯង ។\nប្រហែលជាអ្នកបានផ្ដល់ទំព័រគោលដៅសម្រាប់បញ្ជូនបន្តខុខ ឬប្រហែលជាអ្នកកំពុងកែប្រែទំព័រខុស ។\nបើសិនជាអ្នកចុច \"$1\" ម្ដងទៀត តំណភ្ជាប់បញ្ជូនបន្តនឹងត្រូវបង្កើតឡើងបែបនេះ ។", "missingcommenttext": "សូមវាយបញ្ចូលយោបល់មួយនៅខាងក្រោម។", "missingcommentheader": "'''រំលឹក៖''' អ្នកមិនទាន់បានផ្ដល់ប្រធានបទរបស់មតិយោបល់នេះទេ។\nបើសិនជាអ្នកចុច \"$1\" ម្ដងទៀត នោះកំណែប្រែរបស់អ្នកនឹងត្រូវរក្សាទុកដោយគ្មានវា។", "summary-preview": "ការមើលជាមុនរបស់ចំណារពន្យល់៖", @@ -553,7 +553,7 @@ "newarticle": "(ថ្មី)", "newarticletext": "អ្នកបានតាម​តំណភ្ជាប់​ទៅ​ទំព័រដែលមិនទាន់មាននៅឡើយ។\nដើម្បីបង្កើតទំព័រនេះ សូមចាប់ផ្ដើមវាយ​ក្នុងប្រអប់ខាងក្រោម (សូមមើល [$1 ទំព័រ​ជំនួយ] សម្រាប់​ព័ត៌មានបន្ថែម)។\nបើ​អ្នក​មក​ទីនេះដោយអចេតនា សូមចុចប៊ូតុង '''ត្រឡប់ក្រោយ''' របស់ឧបករណ៍រាវរករបស់អ្នក។", "anontalkpagetext": "----''ទំព័រពិភាក្សានេះគឺសម្រាប់តែអ្នកប្រើប្រាស់អនាមិកដែលមិនទាន់បានបង្កើតគណនីតែប៉ុណ្ណោះ។ ដូច្នេះអាសយដ្ឋានលេខIPរបស់កុំព្យូទ័ររបស់លោកអ្នក​នឹងត្រូវបានបង្ហាញ ដើមី្បសម្គាល់លោកអ្នក។\n\nអាសយដ្ឋានIPទាំងនោះអាចនឹងត្រូវប្រើដោយមនុស្សច្រើននាក់។\n\nប្រសិនបើអ្នកជាអ្នកប្រើប្រាស់អនាមិក​ហើយ​ប្រសិនបើអ្នកឃើញមានការបញ្ចេញយោបល់មកអ្នកពីអ្វី​ដែល​មិន​ទាក់ទងទៅនឹងអ្វីដែល​អ្នកបាន​ធ្វើ​ សូម[[Special:CreateAccount|បង្កើតគណនី]] ឬ [[Special:UserLogin|កត់ឈ្មោះចូល]] ដើម្បីចៀសវាង​ការភ័ន្តច្រឡំ​ណាមួយជាយថាហេតុជាមួយនិងអ្នកប្រើប្រាស់អនាមិកដទៃទៀត។''", - "noarticletext": "បច្ចុប្បន្នគ្មានអត្ថបទក្នុងទំព័រនេះទេ។\n\nអ្នកអាច [[Special:Search/{{PAGENAME}}|ស្វែងរក​ចំណងជើង​នៃទំព័រនេះ]]ក្នុងទំព័រដទៃទៀត​​ ឬ [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ស្វែង​រក​កំណត់​ហេតុ​ដែល​ពាក់ព័ន្ធ] ឬ [{{fullurl:{{FULLPAGENAME}}|action=edit}} បង្កើត​ទំព័រនេះ]។", + "noarticletext": "បច្ចុប្បន្នគ្មានអត្ថបទក្នុងទំព័រនេះទេ។\nអ្នកអាច [[Special:Search/{{PAGENAME}}|ស្វែងរក​ចំណងជើង​នៃទំព័រនេះ]]ក្នុងទំព័រដទៃទៀត​​ ឬ [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ស្វែង​រក​កំណត់​ហេតុ​ដែល​ពាក់ព័ន្ធ] ឬ [{{fullurl:{{FULLPAGENAME}}|action=edit}} បង្កើត​ទំព័រនេះ] ។", "noarticletext-nopermission": "បច្ចុប្បន្ន គ្មានអត្ថបទណាមួយក្នុងទំព័រនេះទេ។\n\nអ្នកអាច [[Special:Search/{{PAGENAME}}|ស្វែងរក​ចំណងជើង​នៃទំព័រនេះ]] ក្នុងទំព័រ​ផ្សេងៗ ឬ[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ស្វែង​រក​កំណត់​ហេតុ​ដែល​ពាក់ព័ន្ធ]។ ប៉ុន្តែអ្នកគ្មានសិទ្ធិក្នុងការបង្កើតទំព័រនេះទេ។", "userpage-userdoesnotexist": "គណនីអ្នកប្រើឈ្មោះ\"$1\" មិនទាន់បានចុះបញ្ជី។\n\nចូរគិតម្ដងទៀតថាអ្នកចង់ បង្កើត / កែប្រែ ទំព័រនេះឬទេ។", "userpage-userdoesnotexist-view": "គណនីអ្នកប្រើប្រាស់ដែលមានឈ្មោះ \"$1\"មិនទាន់បានចុះឈ្មោះទេ។", @@ -2526,7 +2526,6 @@ "fileduplicatesearch-noresults": "រកមិនឃើញឯកសារដែលមានឈ្មោះ \"$1\" ទេ។", "specialpages": "ទំព័រ​ពិសេស​ៗ", "specialpages-note-top": "កំណត់សម្គាល់", - "specialpages-note": "* ទំព័រពិសេសៗធម្មតា។\n* ទំព័រពិសេសៗដែលមានការដាក់កំហិត។", "specialpages-group-maintenance": "របាយការណ៍នានាអំពីតំហែទាំ", "specialpages-group-other": "ទំព័រពិសេសៗផ្សេងៗទៀត", "specialpages-group-login": "កត់ឈ្មោះចូល / បង្កើតគណនី", @@ -2570,6 +2569,7 @@ "compare-submit": "ប្រៀបធៀប", "compare-invalid-title": "ចំណងជើងដែលអ្នកបានផ្ដល់អោយមិនត្រឹមត្រូវទេ", "compare-title-not-exists": "ចំណងជើងដែលអ្នកផ្ដល់អោយមិនមានទេ។", + "diff-form": "'''សំនុំ​បែប​បទ'''មួយ​", "dberr-problems": "សូមអភ័យទោស! វិបសាយនេះកំពុងជួបបញ្ហាបច្ចេកទេស។", "dberr-again": "សូមរង់ចាំប៉ុន្មាននាទីសិនហើយផ្ទុកឡើងវិញម្ដងទៀត។", "dberr-info": "(មិនអាចទាក់ទងទៅប្រភពទិន្នន័យបានទេ៖ $1)", diff --git a/languages/i18n/ko.json b/languages/i18n/ko.json index 3da04a1caf..3a29febeda 100644 --- a/languages/i18n/ko.json +++ b/languages/i18n/ko.json @@ -225,7 +225,7 @@ "tagline": "{{SITENAME}}", "help": "도움말", "search": "검색", - "search-ignored-headings": " #
\n# 검색에서 무시되는 문단 제목입니다.\n# 이 문서에 대한 바뀜은 즉시 문단 제목으로 된 문서가 다시 색인됩니다.\n# null 편집을 하여 문서 다시 색인을 강제할 수 있습니다.\n# 문법은 다음과 같습니다:\n#   * \"#\" 문자에서 줄의 끝까지는 주석입니다\n#   * 빈 줄이 아닌 줄은 무시할 정확한 제목이며, 대소문자를 무시합니다\n각주\n참조\n참고\n출처\n바깥 링크\n바깥 고리\n같이 보기\n함께 보기\n #
", + "search-ignored-headings": " #
\n# 검색에서 무시되는 문단 제목입니다.\n# 이 문서에 대한 바뀜은 즉시 문단 제목으로 된 문서가 다시 색인됩니다.\n# null 편집을 하여 문서 다시 색인을 강제할 수 있습니다.\n# 문법은 다음과 같습니다:\n#   * \"#\" 문자에서 줄의 끝까지는 주석입니다\n#   * 빈 줄이 아닌 줄은 무시할 정확한 제목이며, 대소문자를 무시합니다\n각주\n참조\n참고\n출처\n외부 링크\n같이 보기\n함께 보기\n #
", "searchbutton": "검색", "go": "보기", "searcharticle": "보기", @@ -647,7 +647,7 @@ "link_sample": "링크 제목", "link_tip": "안쪽 링크", "extlink_sample": "http://www.example.com 사이트 이름", - "extlink_tip": "바깥 링크 (http://를 앞에 붙여야 합니다)", + "extlink_tip": "외부 링크 (http://를 앞에 붙여야 합니다)", "headline_sample": "제목", "headline_tip": "2단계 문단 제목", "nowiki_sample": "여기에 위키 문법을 사용하지 않을 글을 적어 주세요", @@ -1338,6 +1338,7 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|새 문서 목록]]도 보세요)", "recentchanges-legend-plusminus": "(±123)", "recentchanges-submit": "보기", + "rcfilters-tag-remove": "'$1' 제거", "rcfilters-legend-heading": "약어 목록:", "rcfilters-other-review-tools": "다른 검토 도구", "rcfilters-group-results-by-page": "문서별로 묶음", @@ -1350,6 +1351,7 @@ "rcfilters-hours-title": "최근 시간", "rcfilters-days-show-days": "$1{{PLURAL:$1|일}}", "rcfilters-days-show-hours": "$1{{PLURAL:$1|시간}}", + "rcfilters-highlighted-filters-list": "강조됨: $1", "rcfilters-quickfilters": "저장된 필터", "rcfilters-quickfilters-placeholder-title": "저장된 링크가 아직 없습니다", "rcfilters-quickfilters-placeholder-description": "필터 설정을 저장하고 나중에 다시 사용하려면 아래의 사용 중인 필터 영역의 북마크 아이콘을 클릭하십시오.", @@ -1372,15 +1374,15 @@ "rcfilters-empty-filter": "활성화된 필터가 없습니다. 모든 기여가 표시됩니다.", "rcfilters-filterlist-title": "필터", "rcfilters-filterlist-whatsthis": "이것들이 어떻게 동작합니까?", - "rcfilters-filterlist-feedbacklink": "새로운 (베타) 필터에 대한 의견을 주세요", + "rcfilters-filterlist-feedbacklink": "이 (새로운) 필터 도구에 대한 의견을 주세요", "rcfilters-highlightbutton-title": "결과 강조", "rcfilters-highlightmenu-title": "색 선택", "rcfilters-highlightmenu-help": "이 속성을 강조할 색을 선택하십시오", "rcfilters-filterlist-noresults": "필터를 찾을 수 없습니다", "rcfilters-noresults-conflict": "검색 조건이 충돌하기 때문에 결과를 찾을 수 없습니다", "rcfilters-state-message-subset": "필터의 결과가 다음의 범위가 더 넓은 {{PLURAL:$2|필터}}의 결과에 포함되기 때문에 이 필터는 효력이 없습니다 (구별을 위해 강조해 보십시오): $1", - "rcfilters-state-message-fullcoverage": "한 그룹의 모든 필터를 선택하는 것은 아무 것도 선택하지 않는 것과 동일하므로 이 필터는 효력이 없습니다. 그룹은 다음을 포함합니다: $1", - "rcfilters-filtergroup-authorship": "원작자 기여", + "rcfilters-state-message-fullcoverage": "이 그룹의 모든 필터를 선택하는 것은 아무 것도 선택하지 않는 것과 동일하므로 이 필터는 효력이 없습니다. 그룹은 다음을 포함합니다: $1", + "rcfilters-filtergroup-authorship": "기여의 저자", "rcfilters-filter-editsbyself-label": "당신의 변경사항", "rcfilters-filter-editsbyself-description": "당신의 기여.", "rcfilters-filter-editsbyother-label": "다른 사용자의 변경사항", @@ -1418,6 +1420,11 @@ "rcfilters-filter-watchlist-watchednew-description": "변경사항이 발생한 이후로 방문한 적이 없는 주시 중인 문서의 변경사항입니다.", "rcfilters-filter-watchlist-notwatched-label": "주시문서 목록에서가 아닌", "rcfilters-filter-watchlist-notwatched-description": "주시 중인 문서의 변경사항을 제외한 모든 사항입니다.", + "rcfilters-filtergroup-watchlistactivity": "주시문서 목록 활동", + "rcfilters-filter-watchlistactivity-unseen-label": "미확인한 변경사항", + "rcfilters-filter-watchlistactivity-unseen-description": "변경사항이 발생한 이후로 방문한 적이 없는 문서의 변경사항입니다.", + "rcfilters-filter-watchlistactivity-seen-label": "확인한 변경사항", + "rcfilters-filter-watchlistactivity-seen-description": "변경사항이 발생한 이후로 방문한 적이 있는 문서의 변경사항입니다.", "rcfilters-filtergroup-changetype": "차이 종류", "rcfilters-filter-pageedits-label": "문서 편집", "rcfilters-filter-pageedits-description": "위키 내용, 토론, 분류 설명에 대한 편집....", @@ -1447,6 +1454,9 @@ "rcfilters-liveupdates-button": "실시간 업데이트", "rcfilters-liveupdates-button-title-on": "실시간 업데이트 끄기", "rcfilters-liveupdates-button-title-off": "새로운 변경사항이 발생하면 표시", + "rcfilters-watchlist-markseen-button": "모든 변경사항을 본 것으로 표시", + "rcfilters-watchlist-edit-watchlist-button": "내 주시문서 목록 편집", + "rcfilters-watchlist-showupdated": "변경이 발생한 이후로 방문한 적이 없는 문서의 변경사항은 굵게 표시됩니다.", "rcnotefrom": "아래는 $3, $4부터 시작하는 {{PLURAL:$5|바뀜이 있습니다}}. (최대 $1개가 표시됨)", "rclistfromreset": "날짜 선택 초기화", "rclistfrom": "$3 $2부터 시작하는 새로 바뀐 문서 보기", @@ -1962,7 +1972,7 @@ "apisandbox-sending-request": "API 요청을 보내는 중...", "apisandbox-loading-results": "API 결과를 받는 중...", "apisandbox-results-error": "API 질의 응답을 불러오는 도중 오류 발생: $1.", - "apisandbox-results-login-suppressed": "해당 요청은 로그인을 하지 않은 사용자가 동일 출처 보안을 우회하기 위해 진행되었습니다. API 샌드박스의 자동 토큰 조정이 해당 요청에 대해 제대로 작동하지 않는지 확인하고, 수동으로 채워주세요.", + "apisandbox-results-login-suppressed": "해당 요청은 브라우저의 동일 출처 보안을 우회하기 위해 사용될 수 있기 때문에 로그아웃된 사용자 자격으로 처리되었습니다. API 샌드박스의 자동 토큰 조정이 해당 요청에 대해 제대로 작동하지 않으니, 수동으로 채워주세요.", "apisandbox-request-selectformat-label": "요청한 데이터를 보여주기:", "apisandbox-request-format-url-label": "URL 쿼리 문자열", "apisandbox-request-url-label": "요청 URL:", @@ -2026,7 +2036,7 @@ "deletedcontributions": "삭제된 사용자 기여", "deletedcontributions-title": "삭제된 사용자 기여", "sp-deletedcontributions-contribs": "기여", - "linksearch": "바깥 링크 검색", + "linksearch": "외부 링크 검색", "linksearch-pat": "검색 패턴:", "linksearch-ns": "이름공간:", "linksearch-ok": "검색", @@ -2133,7 +2143,7 @@ "unwatchthispage": "주시 해제하기", "notanarticle": "문서가 아님", "notvisiblerev": "이 판은 삭제되었습니다.", - "watchlist-details": "토론 문서의 수는 제외하고, 주시문서 목록에 {{PLURAL:$1|문서 $1개}}가 있습니다.", + "watchlist-details": "{{PLURAL:$1|문서 $1개}}가 주시문서 목록에 있습니다. (토론 문서 포함)", "wlheader-enotif": "이메일 알림 기능이 활성화되었습니다.", "wlheader-showupdated": "마지막으로 방문한 이후에 바뀐 문서는 '''굵은 글씨'''로 보입니다.", "wlnote": "$3 $4 기준으로, 아래에 최근 {{PLURAL:$2|한 시간|$2시간}} 동안 {{PLURAL:$1|마지막 바뀜이|마지막 바뀜 $1개가}} 있습니다.", @@ -2656,7 +2666,7 @@ "import-invalid-interwiki": "해당 위키에서 문서를 가져올 수 없습니다.", "import-error-edit": "문서를 편집할 수 없기 때문에 \"$1\" 문서를 가져올 수 없었습니다.", "import-error-create": "문서를 만들 수 없기 때문에 \"$1\" 문서를 가져올 수 없었습니다.", - "import-error-interwiki": "\"$1\" 문서는 제목이 바깥 링크(인터위키)용으로 할당되어 있기 때문에 가져오지 않았습니다.", + "import-error-interwiki": "\"$1\" 문서는 제목이 외부 링크(인터위키)용으로 할당되어 있기 때문에 가져오지 않았습니다.", "import-error-special": "\"$1\" 문서는 문서가 허용하지 않는 특수 이름공간에 속해 있기 때문에 가져오지 않았습니다.", "import-error-invalid": "\"$1\" 문서는 이 위키에서 가져오려고 하는 문서의 이름이 올바르지 않기 때문에 가져오지 않았습니다.", "import-error-unserialize": "\"$1\" 문서의 $2 판이 일렬적이지 않습니다. $3 내용 모델을 사용하여 $4 형식으로 일렬화되도록 판을 보고했습니다.", diff --git a/languages/i18n/ku-latn.json b/languages/i18n/ku-latn.json index dab6deda62..7a1c129fb3 100644 --- a/languages/i18n/ku-latn.json +++ b/languages/i18n/ku-latn.json @@ -19,7 +19,8 @@ "MikaelF", "Macofe", "Matma Rex", - "Stryn" + "Stryn", + "Cûndûllah el-Kurdî" ] }, "tog-underline": "Xetekê di bin girêdanê de çêke:", @@ -126,6 +127,8 @@ "october-date": "Kewçêr $1", "november-date": "Sermawez $1", "december-date": "Berfanbar $1", + "period-am": "Berî Nîvro", + "period-pm": "PN", "pagecategories": "{{PLURAL:$1|Kategorî|Kategorî}}", "category_header": "Gotarên di kategoriya \"$1\" de", "subcategories": "Binkategorî", @@ -169,6 +172,7 @@ "searcharticle": "Here", "history": "Dîroka rûpelê", "history_short": "Dîrok", + "history_small": "dîrok", "updatedmarker": "ji serdana min a dawî ve hate rojanekirin", "printableversion": "Guhertoya çapkirinê", "permalink": "Girêdana daîmî", @@ -1209,7 +1213,7 @@ "unwatch": "Êdî neşopîne", "unwatchthispage": "Êdî neşopîne", "notanarticle": "Ne gotar e", - "watchlist-details": "{{PLURAL:$1|Rûpeleka|$1 rûpel}} li ser lîsteya te ya şopandinê, rûpelên gotûbêjê nayên jimartin.", + "watchlist-details": "{{PLURAL:$1|Rûpelekî|$1 rûpel}} li ser lîsteya te ya şopandinê ye (xeynî rûpelên gotûbêjê).", "wlheader-enotif": "Agahdariya e-nameyan hate çalakkirin", "wlheader-showupdated": "Ev rûpela hatî guhertin dema te lê meyzand bi '''nivîsa stûr''' tê xuyakirin.", "wlnote": "Niha {{PLURAL:$1|xeyrandinê|'''$1''' xeyrandinên}} dawî yê {{PLURAL:$2|seetê|'''$2''' seetên}} dawî {{PLURAL:$1|tê|tên}} dîtin.", @@ -1772,10 +1776,12 @@ "version-libraries-license": "Destûr", "version-libraries-description": "Danasîn", "version-libraries-authors": "Xwedî", + "redirect-submit": "Here", + "redirect-user": "ID'ya Bikarhêner", + "redirect-page": "ID'ya Rûpelê", "fileduplicatesearch-filename": "Navê dosyeyê:", "fileduplicatesearch-submit": "Lê bigere", "specialpages": "Rûpelên taybet", - "specialpages-note": "* Rûpelên taybetî ji her kesan ra\n* Rûpelên taybetî ji bikarhêneran bi mafên zêdetir ra", "specialpages-group-other": "Rûpelên taybetî yên din", "specialpages-group-login": "Têkeve / hesabekî nû çêke", "specialpages-group-changes": "Guherandinên dawî û têketin", diff --git a/languages/i18n/lb.json b/languages/i18n/lb.json index 98a44cf15d..7b138614fe 100644 --- a/languages/i18n/lb.json +++ b/languages/i18n/lb.json @@ -731,6 +731,7 @@ "post-expand-template-argument-category": "Säiten, op dene mindestens e Parameter vun enger Schabloun vergiess ginn ass", "parser-template-loop-warning": "Endlos Schleef an der Schabloun: [[$1]] entdeckt", "template-loop-category": "Säite mat Endlos-Schleefe vu Schablounen", + "template-loop-category-desc": "An der Säit ass eng Endlos-Schabloun, z. Bsp. eng Schabloun déi sech selwer rekursiv oprifft.", "parser-template-recursion-depth-warning": "D'Limit vun der Zuel vun de Verschachtelunge vu Schabloune gouf iwwerschratt ($1)", "language-converter-depth-warning": "D'Limite vun der déift vun der Sproochëmwandlung gouf iwwerschratt ($1)", "node-count-exceeded-category-desc": "D'Säit huet méi wéi déi maximal Zuel vu Kniet (Node-count).", @@ -931,6 +932,7 @@ "search-external": "Extern sichen", "searchdisabled": "D'Sichfunktioun op {{SITENAME}} ass ausgeschalt. Dir kënnt iwwerdeems mat Hëllef vu Google sichen. Bedenkt awer, datt deenen hire Sichindex fir {{SITENAME}} eventuell net dem aktuellste Stand entsprecht.", "search-error": "Beim Sichen ass e Feeler geschitt: $1", + "search-warning": "Beim Sichen gouf eng Warnung gewisen: $1", "preferences": "Astellungen", "mypreferences": "Astellungen", "prefs-edits": "Zuel vun den Ännerungen:", @@ -1046,6 +1048,7 @@ "userrights-user-editname": "Benotzernumm uginn:", "editusergroup": "Benotzergruppe lueden", "editinguser": "Ännere vun de Rechter vum {{GENDER:$1|Benotzer}} [[User:$1|$1]] $2", + "viewinguserrights": "Weise vun de Rechter vum {{GENDER:$1|Benotzer}} [[User:$1|$1]] $2", "userrights-editusergroup": "{{GENDER:$1|Benotzer}}gruppen änneren", "userrights-viewusergroup": "{{GENDER:$1|Benotzer}}gruppe weisen", "saveusergroups": "{{GENDER:$1|Benotzer}}gruppe späicheren", @@ -1250,7 +1253,9 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (kuckt och [[Special:NewPages|Lëscht vun den neie Säiten]])", "recentchanges-legend-plusminus": "''(±123)''", "recentchanges-submit": "Weisen", + "rcfilters-tag-remove": "'$1' ewechhuelen", "rcfilters-legend-heading": "Lëscht vun Ofkierzungen:", + "rcfilters-grouping-title": "Gruppéieren", "rcfilters-activefilters": "Aktiv Filteren", "rcfilters-advancedfilters": "Erweidert Filteren", "rcfilters-limit-title": "Ännerunge fir ze weisen", @@ -1259,6 +1264,7 @@ "rcfilters-hours-title": "Rezent Stonnen", "rcfilters-days-show-days": "$1 {{PLURAL:$1|Dag|Deeg}}", "rcfilters-days-show-hours": "$1 {{PLURAL:$1|Stonn|Stonnen}}", + "rcfilters-highlighted-filters-list": "Ervirgehuewen: $1", "rcfilters-quickfilters": "Gespäichert Filteren", "rcfilters-quickfilters-placeholder-title": "Nach keng Linke gespäichert", "rcfilters-quickfilters-placeholder-description": "Fir Är Filterastellungen z'änneren a méi spéit nees ze benotzen, klickt op d'Zeeche fir Lieszeechen (bookmark) am Beräich vun den Aktive Filteren hei drënner.", @@ -1268,6 +1274,7 @@ "rcfilters-savedqueries-unsetdefault": "Als Standard ewechhuelen", "rcfilters-savedqueries-remove": "Ewechhuelen", "rcfilters-savedqueries-new-name-label": "Numm", + "rcfilters-savedqueries-new-name-placeholder": "Den Zweck vum Filter beschreiwen", "rcfilters-savedqueries-apply-label": "Filter uleeën", "rcfilters-savedqueries-cancel-label": "Ofbriechen", "rcfilters-savedqueries-add-new-title": "Aktuell Filter-Astellunge späicheren", @@ -1300,20 +1307,30 @@ "rcfilters-filter-bots-label": "Bot", "rcfilters-filter-bots-description": "Ännerungen déi automatiséiert gemaacht goufen.", "rcfilters-filter-humans-label": "Mënsch (kee Bot)", + "rcfilters-filter-humans-description": "Ännerungen, déi vu mënschlechen Auteure gemaach goufen.", "rcfilters-filtergroup-reviewstatus": "Status nokucken", "rcfilters-filter-patrolled-label": "Nogekuckt", "rcfilters-filter-patrolled-description": "Ännerungen déi als nogekuckt markéiert sinn.", "rcfilters-filter-unpatrolled-label": "Net nogekuckt", "rcfilters-filter-unpatrolled-description": "Ännerungen déi net als nogekuckt markéiert sinn.", + "rcfilters-filtergroup-significance": "Bedeitung", "rcfilters-filter-minor-label": "Kleng Ännerungen", + "rcfilters-filter-minor-description": "Ännerungen déi den Auteur als kleng markéiert huet.", "rcfilters-filter-major-label": "Keng kleng Ännerungen", + "rcfilters-filter-major-description": "Ännerungen déi net als kleng markéiert sinn.", "rcfilters-filtergroup-watchlist": "Iwwerwaacht Säiten", "rcfilters-filter-watchlist-watched-label": "Op der Iwwerwaachungslëscht", "rcfilters-filter-watchlist-watched-description": "Ännerungen op Säiten op Ärer Iwwrwaachungslëscht", "rcfilters-filter-watchlist-watchednew-label": "Nei Ännerunge vu Säiten op der Iwwerwaachungslëscht", - "rcfilters-filter-watchlist-watchednew-description": "Ännerungen op Säite vun Ärer Iwwerwaachungslëscht déi Dir net besicht hutt säit D'Ännerunge gemaach goufen.", + "rcfilters-filter-watchlist-watchednew-description": "Ännerungen op Säite vun Ärer Iwwerwaachungslëscht déi Dir net besicht hutt säit d'Ännerunge gemaach goufen.", "rcfilters-filter-watchlist-notwatched-label": "Net op der Iwwerwaachungslëscht", "rcfilters-filter-watchlist-notwatched-description": "Alles ausser Ännerungen op de Säite vun Ärer Iwwerwaachungslëscht.", + "rcfilters-filtergroup-watchlistactivity": "Aktivitéit op der Iwwerwaachunglëscht", + "rcfilters-filter-watchlistactivity-unseen-label": "Ännerungen net gesinn", + "rcfilters-filter-watchlistactivity-unseen-description": "Ännerungen op Säite déi Dir net besicht hutt säit d'Ännerunge gemaach goufen.", + "rcfilters-filter-watchlistactivity-seen-label": "Ännerunge gesinn", + "rcfilters-filter-watchlistactivity-seen-description": "Ännerungen op Säite déi Dir besicht hutt säit d'Ännerunge gemaach goufen.", + "rcfilters-filtergroup-changetype": "Typ vun der Ännerung", "rcfilters-filter-pageedits-label": "Säitenännerungen", "rcfilters-filter-pageedits-description": "Ännerungen um Wikiinhalt, an Diskussiounen, a Beschreiwunge vu Kategorien, ...", "rcfilters-filter-newpages-label": "Ugeluechte Säiten", @@ -1332,8 +1349,12 @@ "rcfilters-view-advanced-filters-label": "Erweidert Filteren", "rcfilters-view-tags": "Markéiert Ännerungen", "rcfilters-view-namespaces-tooltip": "Resultater no Nummraum filteren", + "rcfilters-view-return-to-default-tooltip": "Zréck op den Haaptmenü vum Filteren", "rcfilters-liveupdates-button": "Live-Aktualiséierungen", + "rcfilters-liveupdates-button-title-on": "Live-Aktualiséierungen ausschalten", "rcfilters-liveupdates-button-title-off": "Nei Ännerunge weisen esoubal wéi se gemaach ginn", + "rcfilters-watchlist-markseen-button": "All Ännerungen als gesi markéieren", + "rcfilters-watchlist-edit-watchlist-button": "Ännert Är Lëscht vun iwwerwaachte säiten", "rcnotefrom": "Hei drënner {{PLURAL:$5|gëtt d'Ännerung|ginn d'Ännerungen}} zanter $3, $4 (maximal $1 Ännerunge gi gewisen).", "rclistfrom": "Nei Ännerunge vum $3 $2 u weisen", "rcshowhideminor": "Kleng Ännerunge $1", @@ -1973,7 +1994,7 @@ "unwatchthispage": "Net méi iwwerwaachen", "notanarticle": "Keng Säit", "notvisiblerev": "Versioun gouf geläscht", - "watchlist-details": "{{PLURAL:$1|1 Säit|$1 Säite}} sinn op Ärer Iwwerwaachungslëscht, d'Diskussiounssäiten net matgezielt.", + "watchlist-details": "{{PLURAL:$1|1 Säit|$1 Säite}} sinn op Ärer Iwwerwaachungslëscht, (plus Diskussiounssäiten).", "wlheader-enotif": "E-Mail-Notifikatioun ass ageschalt.", "wlheader-showupdated": "Säiten déi zanter Ärer leschter Visite geännert goufen, si '''fett''' geschriwwen", "wlnote": "Hei {{PLURAL:$1|ass déi lescht Ännerung|sinn déi lescht $1 Ännerunge}} vun {{PLURAL:$2|der leschter Stonn|de leschte(n) $2 Stonnen}}, Stand: $3 ëm $4 Auer.", @@ -3314,6 +3335,8 @@ "compare-revision-not-exists": "D'Versioun déi Dir uginn hutt gëtt et net.", "diff-form": "Ënnerscheeder", "diff-form-submit": "Ënnerscheeder weisen.", + "permanentlink-revid": "Nummer (ID) vun der Versioun", + "permanentlink-submit": "Op d'Versioun goen", "dberr-problems": "Pardon! Dëse Site huet technesch Schwieregkeeten.", "dberr-again": "Versicht e puer Minutten ze waarden an dann nei ze lueden.", "dberr-info": "(D'Datebank kann net erreecht ginn: $1)", diff --git a/languages/i18n/lt.json b/languages/i18n/lt.json index 0b5e4697f1..f61d7979c8 100644 --- a/languages/i18n/lt.json +++ b/languages/i18n/lt.json @@ -790,7 +790,7 @@ "page_first": "pirm", "page_last": "pask", "histlegend": "Skirtumai tarp versijų: pažymėkite lyginamas versijas ir spustelkite ''Enter'' klavišą arba mygtuką apačioje.
\nŽymėjimai: (dab) = palyginimas su naujausia versija,\n(pask) = palyginimas su prieš tai buvusia versija, S = smulkus keitimas.", - "history-fieldset-title": "Ieškoti istorijoje", + "history-fieldset-title": "Ieškoti versijų", "history-show-deleted": "Tik ištrinti", "histfirst": "seniausi", "histlast": "paskutiniai", @@ -1321,16 +1321,15 @@ "rcfilters-highlightmenu-help": "Pasirinkite spalvą šio elemento paryškinimui", "rcfilters-filterlist-noresults": "Nerastas toks filtras", "rcfilters-noresults-conflict": "Nerasta jokių rezultatų, nes paieškos kriterijai konfliktuoja", - "rcfilters-filtergroup-registration": "Vartotojo registracija", - "rcfilters-filter-registered-label": "Registruoti", - "rcfilters-filter-registered-description": "Prisijungę redaktoriai.", - "rcfilters-filter-unregistered-label": "Neregistruoti", - "rcfilters-filter-unregistered-description": "Redaktoriai, kurie nėra prisijungę.", "rcfilters-filter-editsbyself-label": "Jūsų keitimai", "rcfilters-filter-editsbyself-description": "Jūsų keitimai.", "rcfilters-filter-editsbyother-label": "Kitų keitimai", "rcfilters-filter-editsbyother-description": "Visi keitimai, išskyrus jūsų.", "rcfilters-filtergroup-userExpLevel": "Patirties lygis (tik registruotiems vartotojams)", + "rcfilters-filter-user-experience-level-registered-label": "Registruoti", + "rcfilters-filter-user-experience-level-registered-description": "Prisijungę redaktoriai.", + "rcfilters-filter-user-experience-level-unregistered-label": "Neregistruoti", + "rcfilters-filter-user-experience-level-unregistered-description": "Redaktoriai, kurie nėra prisijungę.", "rcfilters-filter-user-experience-level-newcomer-label": "Naujokai", "rcfilters-filter-user-experience-level-newcomer-description": "Mažiau nei 10 keitimų ir 4 dienų aktyvumo.", "rcfilters-filter-user-experience-level-learner-label": "Mokiniai", @@ -3278,7 +3277,6 @@ "fileduplicatesearch-noresults": "Nėra failo pavadinimu \"$1\".", "specialpages": "Specialieji puslapiai", "specialpages-note-top": "Paaiškinimai", - "specialpages-note": "* Įprasti specialieji puslapiai.\n* Apriboto pasiekiamumo specialieji puslapiai.", "specialpages-group-maintenance": "Sistemos palaikymo pranešimai", "specialpages-group-other": "Kiti specialieji puslapiai", "specialpages-group-login": "Prisijungti / sukurti paskyrą", @@ -3396,6 +3394,7 @@ "compare-invalid-title": "Jūsų nurodytas pavadinimas neleistinas.", "compare-title-not-exists": "Pavadinimas, kurį nurodėte, neegzistuoja.", "compare-revision-not-exists": "Keitimas, kurį nurodėte, neegzistuoja.", + "diff-form": "'''forma'''", "dberr-problems": "Atsiprašome! Svetainei iškilo techninių problemų.", "dberr-again": "Palaukite kelias minutes ir perkraukite puslapį.", "dberr-info": "(Nepavyksta pasiekti duomenų bazės: $1)", @@ -3431,6 +3430,7 @@ "logentry-delete-delete_redir": "$1 pervadindamas {{GENDER:$2|ištrynė}} buvusį nukreipimą $3", "logentry-delete-restore": "$1 atkūrė puslapį $3 ($4)", "logentry-delete-restore-nocount": "$1 atkūrė puslapį $3", + "restore-count-revisions": "{{PLURAL:$1|1 versija|versijų: $1}}", "restore-count-files": "{{PLURAL:$1|1 failas|$1 failai}}", "logentry-delete-event": "$1 {{GENDER:$2|pakeitė}} matomumą {{PLURAL:$5|žurnalo įvykio|$5 žurnalo įvykių}} $3: $4", "logentry-delete-revision": "$1 {{GENDER:$2|pakeitė}} matomumą {{PLURAL:$5|versijos|$5 versijų}} puslapyje $3: $4", diff --git a/languages/i18n/lv.json b/languages/i18n/lv.json index 0cb08f3a44..52370623ee 100644 --- a/languages/i18n/lv.json +++ b/languages/i18n/lv.json @@ -608,6 +608,7 @@ "yourdiff": "Atšķirības", "copyrightwarning": "Lūdzu, ņem vērā, ka viss ieguldījums, kas veikts {{grammar:lokatīvs|{{SITENAME}}}}, ir uzskatāms par publiskotu saskaņā ar $2 (vairāk info skatīt $1).\nJa nevēlies, lai Tevis rakstīto kāds labo un izplata tālāk, tad, lūdzu, nepievieno to šeit!
\n\nIzvēloties \"Saglabāt lapu\", Tu apliecini, ka šo rakstu esi rakstījis vai papildinājis pats vai izmantojis informāciju no darba, ko neaizsargā autortiesības, vai tamlīdzīga brīvi pieejama resursa.\n'''BEZ ATĻAUJAS NEPIEVIENO DARBU, KO AIZSARGĀ AUTORTIESĪBAS!'''", "copyrightwarning2": "Lūdz ņem vērā, ka visu ieguldījumu {{grammar:lokatīvs|{{SITENAME}}}} var rediģēt, mainīt vai izdzēst citi lietotāji. Ja negribi lai ar tavu rakstīto tā izrīkojas, nepievieno to šeit.\n\nTu apliecini, ka šo rakstu esi rakstījis vai papildinājis pats vai izmantojis informāciju no darba, ko neaizsargā autortiesības, vai tamlīdzīga brīvi pieejama resursa (sīkāk skatīt $1).\n\n'''BEZ ATĻAUJAS NEPIEVIENO DARBU, KO AIZSARGĀ AUTORTIESĪBAS!'''", + "editpage-cannot-use-custom-model": "Šīs lapas satura modeli nevar mainīt.", "longpageerror": "'''Kļūda: Teksts, kuru tu mēģināji saglabāt, ir $1 kilobaitus garš, kas ir vairāk nekā pieļaujamie $2 kilobaiti.\nTas nevar tikt saglabāts.'''", "readonlywarning": "'''Brīdinājums: Datubāze ir slēgta apkopei, tāpēc tu tagad nevarēsi saglabāt veiktās izmaiņas.\nTu vari nokopēt tekstu un saglabāt kā teksta failu vēlākam laikam.'''\n\nAdmins, kas slēdza datubāzi, norādīja šādu paskaidrojumu: $1", "protectedpagewarning": "'''BRĪDINĀJUMS: Šī lapa ir aizsargāta, tikai lietotāji ar administratora privilēģijām var to izmainīt.'''\n\nPēdējais aizsargāšanas reģistra ieraksts ir apskatāms zemāk:", @@ -841,7 +842,7 @@ "prefs-email": "E-pasta iestatījumi", "prefs-rendering": "Izskats", "saveprefs": "Saglabāt", - "restoreprefs": "Atjaunot noklusētos uzstādījumus (visās sadaļās)", + "restoreprefs": "Atiestatīt noklusētos iestatījumus (visās sadaļās)", "prefs-editing": "Labošana", "searchresultshead": "Meklēšana", "stub-threshold": "Slieksnis aizmetņa saites formatēšanai (baiti):", @@ -908,10 +909,10 @@ "prefs-advancedediting": "Vispārīgi uzstādījumi", "prefs-editor": "Redaktors", "prefs-preview": "Priekšskatījums", - "prefs-advancedrc": "Papildu uzstādījumi", - "prefs-advancedrendering": "Papildu uzstādījumi", - "prefs-advancedsearchoptions": "Papildu uzstādījumi", - "prefs-advancedwatchlist": "Papildu uzstādījumi", + "prefs-advancedrc": "Papildu iespējas", + "prefs-advancedrendering": "Papildu iespējas", + "prefs-advancedsearchoptions": "Papildu iespējas", + "prefs-advancedwatchlist": "Papildu iespējas", "prefs-displayrc": "Pamatuzstādījumi", "prefs-displaywatchlist": "Pamatuzstādījumi", "prefs-tokenwatchlist": "Marķieris", @@ -1016,6 +1017,7 @@ "right-deletechangetags": "Dzēst [[Special:Tags|iezīmes]] no datubāzes", "grant-generic": "\"$1\" tiesību paka", "grant-group-page-interaction": "Darboties ar lapām", + "grant-group-file-interaction": "Darboties ar multimediju failiem", "grant-group-email": "Sūtīt e-pastu", "grant-group-high-volume": "Veikt liela apjoma aktivitātes", "grant-group-administration": "Veikt administratīvās darbības", @@ -1033,6 +1035,8 @@ "grant-highvolume": "Liela apjoma labošana", "grant-patrol": "Patrulēt lapu izmaiņas", "grant-privateinfo": "Piekļūt privātai informācijai", + "grant-sendemail": "Sūtīt e-pastu citiem dalībniekiem", + "grant-uploadeditmovefile": "Augšupielādēt, aizvietot un pārvietot failus", "grant-uploadfile": "Augšupielādēt jaunus failus", "grant-basic": "Pamattiesības", "grant-viewdeleted": "Skatīt dzēstos failus un lapas", @@ -1060,6 +1064,7 @@ "action-deleterevision": "dzēst versijas", "action-deletelogentry": "dzēst žurnāla ierakstus", "action-deletedhistory": "skatīt šīs lapas dzēsto vēsturi", + "action-deletedtext": "skatīt dzēsto versiju tekstu", "action-browsearchive": "meklēt dzēstās lapas", "action-undelete": "atcelt lapu dzēšanu", "action-suppressrevision": "pārskatīt un atjaunot slēptās versijas", @@ -1092,6 +1097,8 @@ "recentchanges-legend-heading": "Apzīmējumi:", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (skatīt arī [[Special:NewPages|jaunās lapas]])", "recentchanges-submit": "Rādīt", + "rcfilters-tag-remove": "Noņemt \"$1\"", + "rcfilters-legend-heading": "Saīsinājumu saraksts:", "rcfilters-other-review-tools": "Citi pārskatīšanas rīki", "rcfilters-group-results-by-page": "Grupēt rezultātus pēc lapas", "rcfilters-grouping-title": "Grupēšana", @@ -1103,6 +1110,7 @@ "rcfilters-hours-title": "Pēdējās stundas", "rcfilters-days-show-days": "$1 {{PLURAL:$1|dienas|diena|dienas}}", "rcfilters-days-show-hours": "$1 {{PLURAL:$1|stundas|stunda|stundas}}", + "rcfilters-highlighted-filters-list": "Izcelts: $1", "rcfilters-quickfilters": "Saglabātie filtri", "rcfilters-quickfilters-placeholder-title": "Vēl nav saglabāto saišu", "rcfilters-savedqueries-defaultlabel": "Saglabātie filtri", @@ -1161,6 +1169,8 @@ "rcfilters-filter-minor-description": "Labojumi, kas atzīmēti kā maznozīmīgi.", "rcfilters-filter-major-label": "Nozīmīgi labojumi", "rcfilters-filter-major-description": "Labojumi, kas nav atzīmēti kā maznozīmīgi.", + "rcfilters-filter-watchlistactivity-unseen-label": "Neapskatītas izmaiņas", + "rcfilters-filter-watchlistactivity-seen-label": "Apskatītas izmaiņas", "rcfilters-filtergroup-changetype": "Izmaiņu veids", "rcfilters-filter-pageedits-label": "Lapu labojumi", "rcfilters-filter-pageedits-description": "Labojumi vikivietnes saturā, diskusijā, kategoriju aprakstos...", @@ -1177,6 +1187,7 @@ "rcfilters-filter-previousrevision-description": "Visas izmaiņas, kuras nav pēdējā lapas izmaiņa.", "rcfilters-view-advanced-filters-label": "Paplašinātie filtri", "rcfilters-view-tags": "Iezīmētie labojumi", + "rcfilters-view-namespaces-tooltip": "Filtrēt rezultātus pēc vārdtelpas", "rcnotefrom": "Šobrīd redzamas izmaiņas kopš '''$2''' (parādītas ne vairāk par '''$1''').", "rclistfromreset": "Atiestatīt datuma izvēli", "rclistfrom": "Parādīt jaunas izmaiņas kopš $3 $2", @@ -1516,9 +1527,10 @@ "protectedpages-unknown-performer": "Nezināms lietotājs", "protectedtitles": "Aizsargātie nosaukumi", "protectedtitlesempty": "Pagaidām nevienas lapas nosaukums nav aizsargāts ar šiem paraametriem.", - "listusers": "dalībnieku uzskaitījums", + "listusers": "Dalībnieku saraksts", "listusers-editsonly": "Rādīt tikai dalībniekus, kas ir izdarījuši kādas izmaiņas", "listusers-creationsort": "Kārtot pēc izveidošanas datuma", + "listusers-desc": "Kārtot dilstošā secībā", "usereditcount": "$1 {{PLURAL:$1|izmaiņas|izmaiņa|izmaiņas}}", "usercreated": "{{GENDER:$3|Izveidoja}} $1 plkst. $2", "newpages": "Jaunas lapas", @@ -1562,7 +1574,7 @@ "booksources-search-legend": "Meklēt grāmatu avotus", "booksources-search": "Meklēt", "specialloguserlabel": "Izpildītājs:", - "speciallogtitlelabel": "Mērķis (nosaukums vai lietotājs):", + "speciallogtitlelabel": "Mērķis (nosaukums vai {{ns:user}}:lietotājvārds dalībniekam):", "log": "Reģistri", "logeventslist-submit": "Rādīt", "all-logs-page": "Visi publiski pieejamie reģistri", @@ -2462,6 +2474,8 @@ "exif-sensingmethod-2": "Vienas mikroshēmas krāsu zonas sensors", "exif-sensingmethod-3": "Divu mikroshēmu krāsu zonas sensors", "exif-sensingmethod-4": "Trīs mikroshēmu krāsu zonas sensors", + "exif-filesource-3": "Digitālā kamera", + "exif-scenetype-1": "Tieši fotografēts attēls", "exif-customrendered-0": "Normāls process", "exif-customrendered-1": "Dažādots process", "exif-exposuremode-0": "Automātiskā ekspozīcija", @@ -2810,6 +2824,7 @@ "limitreport-postexpandincludesize-value": "$1/$2 {{PLURAL:$2|baiti|baits|baiti}}", "limitreport-templateargumentsize": "Veidnes argumenta izmērs", "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|baiti|baits|baiti}}", + "limitreport-expensivefunctioncount": "Dārgo parsētāja funkciju skaits", "expand_templates_output": "Rezultāts", "expand_templates_ok": "Labi", "expand_templates_remove_nowiki": "Cenzēt iezīmes rezultātā", diff --git a/languages/i18n/lzh.json b/languages/i18n/lzh.json index 3b8e6d084a..c95f930e98 100644 --- a/languages/i18n/lzh.json +++ b/languages/i18n/lzh.json @@ -157,7 +157,7 @@ "index-category": "已索之頁", "noindex-category": "未索之頁", "broken-file-category": "帶壞檔之頁", - "about": "述", + "about": "有關", "article": "文", "newwindow": "啟窗", "cancel": "捨", @@ -229,14 +229,14 @@ "pool-errorunknown": "未知之誤", "pool-servererror": "計數伺服器無效($1)", "poolcounter-usage-error": "用誤:$1", - "aboutsite": "述{{SITENAME}}", + "aboutsite": "{{SITENAME}}自序", "aboutpage": "Project:述", - "copyright": "若無他述,諸文皆奉$1以行。", + "copyright": "若無側註,諸文皆奉$1以行。", "copyrightpage": "{{ns:project}}:版權", "currentevents": "世事", "currentevents-url": "Wikipedia:世事", - "disclaimers": "免責宣", - "disclaimerpage": "Project:免責宣", + "disclaimers": "免責告示", + "disclaimerpage": "Project:免責告示", "edithelp": "助纂塾", "helppage-top-gethelp": "助", "mainpage": "卷首", @@ -283,6 +283,7 @@ "site-atom-feed": "$1之Atom源", "page-rss-feed": "「$1」之RSS源", "page-atom-feed": "「$1」之Atom源", + "feed-atom": "訂閱", "red-link-title": "$1(查無此頁)", "sort-descending": "倒列", "sort-ascending": "升排", @@ -1006,10 +1007,11 @@ "recentchanges-summary": "共筆揮新,悉列於此。", "recentchanges-noresult": "無易。", "recentchanges-feed-description": "跟wiki源之近易。", - "recentchanges-label-newpage": "此纂開新頁", + "recentchanges-label-newpage": "立新文", "recentchanges-label-minor": "此乃細纂", "recentchanges-label-bot": "此乃機纂", "recentchanges-label-unpatrolled": "是纂未巡", + "recentchanges-label-plusminus": "所改字節量", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}}([[Special:NewPages|新灶]])", "recentchanges-submit": "示", "rcnotefrom": "下為自'''$2'''至'''$1'''之易也。", @@ -1861,8 +1863,8 @@ "tooltip-n-help": "解疑惑、點明燈、掛病號", "tooltip-t-whatlinkshere": "何美餚,佐此料", "tooltip-t-recentchangeslinked": "足義友,借鏡照", - "tooltip-feed-rss": "本卷之RSS源", - "tooltip-feed-atom": "本卷之Atom源", + "tooltip-feed-rss": "RSS本", + "tooltip-feed-atom": "Atom本", "tooltip-t-contributions": "同肩戰,苦功高", "tooltip-t-emailuser": "言未猶,書信捎", "tooltip-t-upload": "貢彩件、獻樂謠", @@ -2116,7 +2118,7 @@ "specialpages-group-wiki": "Wiki訊與器", "specialpages-group-redirects": "轉之特查", "specialpages-group-spam": "反垃圾之器", - "specialpages-group-developer": "造紙者之器", + "specialpages-group-developer": "司空器具", "blankpage": "白頁", "intentionallyblankpage": "此頁為白也,試速之用", "external_image_whitelist": " #同留
\n#下(中之//)乃正表式\n#乃外(連)圖配之\n#配乃成像,非配則成連\n#有 # 之為注\n#無為大小之異也\n\n#入正表式。同留
", diff --git a/languages/i18n/mk.json b/languages/i18n/mk.json index 35da0cb99c..6815b8efc0 100644 --- a/languages/i18n/mk.json +++ b/languages/i18n/mk.json @@ -1300,6 +1300,7 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (погл. и [[Special:NewPages|списокот на нови страници]])", "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Прикажи", + "rcfilters-tag-remove": "Отстрани го „$1“", "rcfilters-legend-heading": "Список на кратенки:", "rcfilters-other-review-tools": "Други алатки за проверка", "rcfilters-group-results-by-page": "Групен исход по страница", @@ -1312,6 +1313,7 @@ "rcfilters-hours-title": "Последниве часови", "rcfilters-days-show-days": "{{PLURAL:$1|еден ден|$1 дена}}", "rcfilters-days-show-hours": "{{PLURAL:$1|еден час|$1 часа}}", + "rcfilters-highlighted-filters-list": "Истакнато: $1", "rcfilters-quickfilters": "Зачувани филтри", "rcfilters-quickfilters-placeholder-title": "Засега нема зачувани врски", "rcfilters-quickfilters-placeholder-description": "За да ги зачувате вашите филтерски псотавки за да ги употребите другпат, стиснете на иконката за бележник во подрачјето „Активен филтер“ подолу.", @@ -1334,14 +1336,14 @@ "rcfilters-empty-filter": "Нема активни филтри. Прикажани се сите придонеси.", "rcfilters-filterlist-title": "Филтри", "rcfilters-filterlist-whatsthis": "Како работи ова?", - "rcfilters-filterlist-feedbacklink": "Дајте мислење за новите (бета) филтри", + "rcfilters-filterlist-feedbacklink": "Дајте ни ваше мислење за овие (нови) филтерски алатки", "rcfilters-highlightbutton-title": "Истакнување на исход", "rcfilters-highlightmenu-title": "Изберете боја", "rcfilters-highlightmenu-help": "Изберете боја за да го истакнете ова својство", "rcfilters-filterlist-noresults": "Не пронајдов ниеден филтер", "rcfilters-noresults-conflict": "Не пронајдов ништо бидејќи критериумите на барање се спротиставени.", "rcfilters-state-message-subset": "Филтерот не делува бидејќи неговиот исход веќе се содржи во {{PLURAL:$2|следниов поопфатен филтер|следниве поопфатни филтри}} (истакнете го за да го издвоите): $1", - "rcfilters-state-message-fullcoverage": "Избирањето на сите филтри во групата е исто како да не сте избрале ниеден, така што овој филтер не делува. Во групата се опфатени: $1", + "rcfilters-state-message-fullcoverage": "Избирањето на сите филтри во групава е исто како да не сте избрале ниеден, така што овој филтер не делува. Во групата се опфатени: $1", "rcfilters-filtergroup-authorship": "Авторство на придонесот", "rcfilters-filter-editsbyself-label": "Ваши промени", "rcfilters-filter-editsbyself-description": "Ваши сопствени придонеси.", @@ -1380,6 +1382,11 @@ "rcfilters-filter-watchlist-watchednew-description": "Промени во набљудуваните страници кои не ги имате посетено откога се случиле промените.", "rcfilters-filter-watchlist-notwatched-label": "Вон набљудуваните", "rcfilters-filter-watchlist-notwatched-description": "Сите освен промените во набљудуваните страници.", + "rcfilters-filtergroup-watchlistactivity": "Активности во набљудуваните", + "rcfilters-filter-watchlistactivity-unseen-label": "Невидени промени", + "rcfilters-filter-watchlistactivity-unseen-description": "Промени во страници што ги немате посетено откако се направени.", + "rcfilters-filter-watchlistactivity-seen-label": "Видени промени", + "rcfilters-filter-watchlistactivity-seen-description": "Промени во страници што ги имате посетено откако се направени.", "rcfilters-filtergroup-changetype": "Вид на промена", "rcfilters-filter-pageedits-label": "Уредувања на страници", "rcfilters-filter-pageedits-description": "Уредувања во содржината, разговорите, описите на категориите...", @@ -1409,6 +1416,9 @@ "rcfilters-liveupdates-button": "Поднови во живо", "rcfilters-liveupdates-button-title-on": "Исклучи поднови во живо", "rcfilters-liveupdates-button-title-off": "Прикажува нови промени во живо", + "rcfilters-watchlist-markseen-button": "Означи ги сите промени како видени", + "rcfilters-watchlist-edit-watchlist-button": "Уреди набљудувани", + "rcfilters-watchlist-showupdated": "Промени во страниците што ги немате посетено откако се случиле се задебелени.", "rcnotefrom": "Подолу {{PLURAL:$5|е прикажана промената|се прикажани промените}} почнувајќи од $3, $4 (се прикажуваат до $1).", "rclistfromreset": "Нов избор на датуми", "rclistfrom": "Прикажи нови промени почнувајќи од $3 $2", @@ -2096,7 +2106,7 @@ "unwatchthispage": "Престани набљудување", "notanarticle": "Не е статија", "notvisiblerev": "Преработката била избришана", - "watchlist-details": "{{PLURAL:$1|$1 страница|$1 страници}} во вашиот список на набљудувања, не броејќи ги посебно страниците за разговор.", + "watchlist-details": "Во вашите набљудувани имате {{PLURAL:$1|$1 страница|$1 страници}} (не броејќи ги страниците за разговор).", "wlheader-enotif": "Известувањето по е-пошта е вклучено.", "wlheader-showupdated": "Страниците што се изменети од вашата последна посета се прикажани со '''задебелени''' букви", "wlnote": "Подолу {{PLURAL:$1|е прикажана последната промена|се прикажани последните $1 промени}} во {{PLURAL:$2|последниов час|последниве $2 часа}}, заклучно со $3, $4 ч.", diff --git a/languages/i18n/ml.json b/languages/i18n/ml.json index da0df70a10..5e835fa28a 100644 --- a/languages/i18n/ml.json +++ b/languages/i18n/ml.json @@ -49,6 +49,7 @@ "tog-watchdefault": "ഞാൻ തിരുത്തുന്ന താളുകളും പ്രമാണങ്ങളും ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽ ചേർക്കുക", "tog-watchmoves": "ഞാൻ തലക്കെട്ടു മാറ്റുന്ന താളുകളും പ്രമാണങ്ങളും ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽ ചേർക്കുക", "tog-watchdeletion": "ഞാൻ നീക്കം ചെയ്യുന്ന താളുകളും പ്രമാണങ്ങളും ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽ ചേർക്കുക", + "tog-watchuploads": "ഞാൻ അപ്‌ലോഡ് ചെയ്യുന്ന പുതിയ പ്രമാണങ്ങൾ ഞാൻ ശ്രദ്ധിക്കുവയുടെ പട്ടികയിൽ ചേർക്കുക", "tog-watchrollback": "ഞാൻ മുൻപ്രാപനം ചെയ്ത താളുകളും ഞാൻ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽ ചേർക്കുക", "tog-minordefault": "എല്ലാ തിരുത്തുകളും സ്വതേ ചെറുതിരുത്തുകളായി അടയാളപ്പെടുത്തുക", "tog-previewontop": "തിരുത്തൽ പെട്ടിക്കു മുകളിൽ പ്രിവ്യൂ കാണിക്കുക", @@ -67,6 +68,7 @@ "tog-watchlisthideminor": "ഞാൻ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽനിന്ന് ചെറുതിരുത്തുകൾ മറയ്ക്കുക", "tog-watchlisthideliu": "ഞാൻ ശ്രദ്ധിക്കുന്ന താളുകളിലെ മാറ്റങ്ങളിൽ നിന്നും ലോഗിൻ ചെയ്തിട്ടുള്ളവരുടെ തിരുത്തുകൾ മറയ്ക്കുക", "tog-watchlistreloadautomatically": "ഒരു അരിപ്പയിൽ മാറ്റമുണ്ടായാൽ ശ്രദ്ധിക്കുന്നവയുടെ പട്ടിക സ്വയം വീണ്ടുമെടുക്കുക (ജാവാസ്ക്രിപ്റ്റ് ആവശ്യമാണ്)", + "tog-watchlistunwatchlinks": "ശ്രദ്ധിക്കുന്നവയിലെ ഉൾപ്പെടുത്തലുകൾക്ക് നേരിട്ടുള്ള ശ്രദ്ധിക്കാതിരിക്കുക/ശ്രദ്ധിക്കുക കണ്ണികൾ ചേർക്കുക (മാറ്റൽ സൗകര്യത്തിന് ജാവാസ്ക്രിപ്റ്റ് ആവശ്യമാണ്)", "tog-watchlisthideanons": "ഞാൻ ശ്രദ്ധിക്കുന്ന താളുകളിലെ മാറ്റങ്ങളിൽ നിന്നും അജ്ഞാത ഉപയോക്താക്കളുടെ തിരുത്തുകൾ മറയ്ക്കുക", "tog-watchlisthidepatrolled": "ഞാൻ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽനിന്ന് റോന്തുചുറ്റിയ തിരുത്തുകൾ മറയ്ക്കുക", "tog-watchlisthidecategorization": "താളുകളുടെ വർഗ്ഗീകരണം മറയ്ക്കുക", @@ -1218,6 +1220,7 @@ "recentchanges-legend-heading": "സൂചന:", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|പുതിയ താളുകളുടെ പട്ടികയും]] കാണുക)", "recentchanges-submit": "പ്രദർശിപ്പിക്കുക", + "rcfilters-legend-heading": "ചുരുക്കെഴുത്തുകളുടെ പട്ടിക:", "rcfilters-filterlist-title": "അരിപ്പകൾ", "rcfilters-filter-user-experience-level-newcomer-label": "പുതിയ അംഗങ്ങളുടെ തിരുത്തലുകൾ", "rcfilters-filter-bots-label": "യന്ത്രം", diff --git a/languages/i18n/mwl.json b/languages/i18n/mwl.json index 7c9a8bf976..53f0e54500 100644 --- a/languages/i18n/mwl.json +++ b/languages/i18n/mwl.json @@ -15,47 +15,58 @@ "tog-hideminor": "Scunder eidiçones mais pequeinhas nas redadeiras altaraçones", "tog-hidepatrolled": "Scunder eidiçones patrulhadas nas redadeiras altaraçones", "tog-newpageshidepatrolled": "Scunder páiginas patrulhadas na lhista de páiginas nuobas", + "tog-hidecategorization": "Scunder la catadorizaçon de las páiginas", "tog-extendwatchlist": "Lhistaige spandida de todas las altaraçones a las páiginas begiadas, nun solo de las redadeiras", - "tog-usenewrc": "Ousar la berson melhorada de las mudanças recentes (requer JavaScrit)", + "tog-usenewrc": "Agrupar altaraçones por páigina nas altaraçones recentes i páiginas begiadas", "tog-numberheadings": "Outo-numerar cabeçalhos", - "tog-showtoolbar": "Amostrar barra d'eidiçon (JavaScrit)", - "tog-editondblclick": "Eiditar páiginas quando houbir un clique duplo (JavaScrit)", - "tog-editsectiononrightclick": "Posseblitar l'eidiçon de cachos por clique cul boton dreito ne l títalo de la seçon (JavaScrit)", - "tog-watchcreations": "Ajuntar las páiginas que you criar a las minhas páiginas begiadas", - "tog-watchdefault": "Ajuntar las páiginas que you eiditar a las minhas páiginas begiadas", - "tog-watchmoves": " Ajuntar las páiginas que you mober a las minhas páiginas begiadas", - "tog-watchdeletion": " Ajuntar las páiginas que you eileminar a las minhas páiginas begiadas", + "tog-showtoolbar": "Amostrar la barra d'eidiçon", + "tog-editondblclick": "Eiditar páiginas quando houbir un clique duplo", + "tog-editsectiononrightclick": "Posseblitar l'eidiçon de cachos por clique cul boton dreito ne l títalo de la seçon", + "tog-watchcreations": "Ajuntar las páiginas que you criar a las mies páiginas begiadas", + "tog-watchdefault": "Ajuntar las páiginas que you eiditar a las mies páiginas begiadas", + "tog-watchmoves": "Ajuntar las páiginas que you mober a las mies páiginas begiadas", + "tog-watchdeletion": "Ajuntar las páiginas que you eileminar a las mies páiginas begiadas", "tog-minordefault": "Por oumisson, marcar todas las eidiçones cumo menores", "tog-previewontop": "Amostrar l'antebison antes de la caixa d'eidiçon", "tog-previewonfirst": "Amostrar l'antebison na purmeira eidiçon", - "tog-enotifwatchlistpages": "Notificar-me por correio eiletrónico quando ua páigina begiada ye altarada", - "tog-enotifusertalkpages": "Abisar -me por correio eiletrónico quando la mie páigina de çcusson ye eiditada", + "tog-enotifwatchlistpages": "Abisar-me por correio eiletrónico quando ua páigina begiada fur altarada", + "tog-enotifusertalkpages": "Abisar-me por correio eiletrónico quando la mie páigina de cumbersa ye eiditada", "tog-enotifminoredits": "Abisar-me por correio eiletrónico tamien quando las eidiçones fúren pequeinhas", "tog-enotifrevealaddr": "Rebelar l miu andereço de correio eiletrónico nas noteficaçones", "tog-shownumberswatching": "Amostrar l númaro d'outelizadores a begiar", - "tog-fancysig": "Tratar assinatura cumo wikitesto (sin lhigaçon outomática)", - "tog-uselivepreview": "Ousar l'antebison an tiempo rial (JavaScrit) (Spurmental)", + "tog-oldsig": "La sue assinatura atual:", + "tog-fancysig": "Tratar assinatura cumo testo wiki (sin lhigaçon outomática)", + "tog-uselivepreview": "Amostrar antebisones sin recargar la páigina", "tog-forceeditsummary": "Abisar-me al antroduzir un sumairo bazio", "tog-watchlisthideown": "Scunder las mies eidiçones al lhistar mudanças a las páiginas begiadas", "tog-watchlisthidebots": "Scunder eidiçones de robós al lhistar mudanças a las páiginas begiadas", "tog-watchlisthideminor": "Scunder eidiçones menores al lhistar mudanças a las páiginas begiadas", "tog-watchlisthideliu": "Scunder eidiçones d'outelizadores outenticados al lhistar mudanças a las páiginas begiadas", - "tog-watchlisthideanons": "Scunder eidiçones d'outelizadores anónimos al lhistar mudanças a las páiginas begiadas", + "tog-watchlistreloadautomatically": "Recargar la lhista de páiginas begiadas outomaticamente siempre que un filtro ye altarado (ye neçairo l JavaScript)", + "tog-watchlistunwatchlinks": "Adicionar lhigaçones diretas pa begiar ó deixar de begiar, a las antradas de la lhista de páiginas begiadas (ye neçairo l JavaScript para altarnar antre ambas)", + "tog-watchlisthideanons": "Scunder eidiçones d'outelizadores anónimos al lhistar mudanças a las páiginas begiadas", "tog-watchlisthidepatrolled": "Scunder eidiçones patrulhadas al lhistar mudanças a las páiginas begiadas", + "tog-watchlisthidecategorization": "Scunder la catadorizaçon de las páiginas", "tog-ccmeonemails": "Ambiar-me cópias de l correio eiletrónico que you ambiar a outros outelizadores", "tog-diffonly": "Nun amostrar l cuntenido de la páigina al acumparar dues eidiçones", - "tog-showhiddencats": "Amostrar catadories oucultas", + "tog-showhiddencats": "Amostrar las catadories scundidas", "tog-norollbackdiff": "Scunder defrenças depuis de reberter eidiçones an bloco", + "tog-useeditwarning": "Abisar-me al abandonar ua páigina eiditada sin grabar las altaraçones.", "underline-always": "Siempre", "underline-never": "Nunca", - "underline-default": "Ousar la cunfiguraçon de l nabegador", - "sunday": "Demingo", - "monday": "Segunda-feira", - "tuesday": "Terça", - "wednesday": "Quarta", - "thursday": "Quinta", - "friday": "Sesta", - "saturday": "Sábado", + "underline-default": "Outelizar la oupçon padron de la maçcarilha ó de l nabegador", + "editfont-style": "Fuonte d'eidiçon:", + "editfont-default": "Fuonte por omisson, de l nabegador", + "editfont-monospace": "Fuonte monospaçada", + "editfont-sansserif": "Fuonte sin serifa", + "editfont-serif": "Fuonte serifada", + "sunday": "demingo", + "monday": "segunda-feira", + "tuesday": "terça-feira", + "wednesday": "quarta-feira", + "thursday": "quinta-feira", + "friday": "sesta-feira", + "saturday": "sábado", "sun": "dem", "mon": "seg", "tue": "ter", @@ -63,42 +74,56 @@ "thu": "qui", "fri": "ses", "sat": "sáb", - "january": "Janeiro", - "february": "Febreiro", - "march": "Março", - "april": "Abril", - "may_long": "Maio", - "june": "Junho", - "july": "Júlio", - "august": "Agosto", - "september": "Setembre", - "october": "Outubro", - "november": "Nobembre", - "december": "Dezembro", - "january-gen": "Janeiro", - "february-gen": "Fevereiro", - "march-gen": "Márcio", - "april-gen": "Abril", - "may-gen": "Maio", - "june-gen": "Júnio", - "july-gen": "Júlio", - "august-gen": "Agosto", - "september-gen": "Setembre", - "october-gen": "Outubre", - "november-gen": "Nobembre", - "december-gen": "Dezembre", - "jan": "Jan.", - "feb": "Feb.", - "mar": "Mar.", - "apr": "Abr.", - "may": "Mai.", - "jun": "Jún.", - "jul": "Júl.", - "aug": "Ago.", - "sep": "Set.", - "oct": "Out.", - "nov": "Nob.", - "dec": "Dez.", + "january": "janeiro", + "february": "febreiro", + "march": "márcio", + "april": "abril", + "may_long": "maio", + "june": "júnio", + "july": "júlio", + "august": "agosto", + "september": "setembre", + "october": "outubre", + "november": "nobembre", + "december": "dezembre", + "january-gen": "janeiro", + "february-gen": "febreiro", + "march-gen": "márcio", + "april-gen": "abril", + "may-gen": "maio", + "june-gen": "júnio", + "july-gen": "júlio", + "august-gen": "agosto", + "september-gen": "setembre", + "october-gen": "outubre", + "november-gen": "nobembre", + "december-gen": "dezembre", + "jan": "jan.", + "feb": "feb.", + "mar": "már.", + "apr": "abr.", + "may": "mai.", + "jun": "jún.", + "jul": "júl.", + "aug": "ago.", + "sep": "set.", + "oct": "out.", + "nov": "nob.", + "dec": "dez.", + "january-date": "$1 de janeiro", + "february-date": "$1 de febreiro", + "march-date": "$1 de márcio", + "april-date": "$1 de abril", + "may-date": "$1 de maio", + "june-date": "$1 de júnio", + "july-date": "$1 de júlio", + "august-date": "$1 de agosto", + "september-date": "$1 de setembre", + "october-date": "$1 de outubre", + "november-date": "$1 de nobembre", + "december-date": "$1 de dezembre", + "period-am": "AM", + "period-pm": "PM", "pagecategories": "{{PLURAL:$1|Catadorie|Catadories}}", "category_header": "Páiginas na catadorie \"$1\"", "subcategories": "Subcatadories", @@ -118,9 +143,9 @@ "newwindow": "(abre nua nuoba jinela)", "cancel": "Çfazer", "moredotdotdot": "Mais...", - "mypage": "Mie páigina", + "mypage": "Páigina", "mytalk": "Mie cumbersa", - "anontalk": "Çcusson pa este IP", + "anontalk": "Cumbersa", "navigation": "Nabegaçon", "and": " i", "faq": "FAQ", @@ -132,9 +157,9 @@ "searchbutton": "Percurar", "go": "Bota", "searcharticle": "Bota", - "history": "Stórico de la Páigina", + "history": "Stórico de la páigina", "history_short": "Stórico", - "printableversion": "Berson pa Ampremir", + "printableversion": "Berson pa ampremir", "permalink": "Lhigaçon pa siempre", "print": "Ampremir", "edit": "Eiditar", @@ -142,40 +167,40 @@ "delete": "Botar fuora", "protect": "Porteger", "protect_change": "demudar", - "unprotect": "Çporteger", - "newpage": "Nuoba páigina", + "unprotect": "Altarar la proteçon", + "newpage": "Páigina nuoba", "talkpagelinktext": "Cumbersar", "specialpage": "Páigina special", "personaltools": "Ferramientas pessonales", - "talk": "Çcusson", + "talk": "Cumbersa", "views": "Besitas", "toolbox": "Ferramientas", "imagepage": "Ber páigina de fexeiro", "mediawikipage": "Ber páigina de mensaiges", "templatepage": "Ber páigina de modelos", "viewhelppage": "Ber páigina de ajuda", - "viewtalkpage": "Ber çcusson", - "otherlanguages": "Outras lhénguas", - "redirectedfrom": "(Ancaminamiento de $1)", + "viewtalkpage": "Ber cumbersa", + "otherlanguages": "Noutras lhénguas", + "redirectedfrom": "(Ancaminamiento de $1)", "redirectpagesub": "Páigina de ancaminamiento", - "lastmodifiedat": "Esta páigina fui demudada pula redadeira beç a las $2 de $1.", + "lastmodifiedat": "Esta páigina fui eiditada pula redadeira beç a la(s) $2 de $1.", "protectedpage": "Páigina portegida", "jumpto": "Saltar pa:", "jumptonavigation": "nabegaçon", "jumptosearch": "percura", "aboutsite": "Subre {{SITENAME}}", "aboutpage": "Project:Subre", - "copyright": "Cuntenido çponible subre la lhicença $1.", + "copyright": "Cuntenido çponible subre la lhicença $1, salbo andicaçon an cuntrairo.", "copyrightpage": "{{ns:project}}:Dreitos de outor", "currentevents": "Amboras atuales", "currentevents-url": "Project:Amboras atuales", - "disclaimers": "Abiso de Cuntenido", + "disclaimers": "Abiso de cuntenido", "disclaimerpage": "Project:Abiso giral", "edithelp": "Ajuda de eidiçon", - "mainpage": "Páigina Percipal", - "mainpage-description": "Páigina Percipal", + "mainpage": "Páigina percipal", + "mainpage-description": "Páigina percipal", "policy-url": "Project:Políticas", - "portal": "Portal da quemunidade", + "portal": "Portal de la quemunidade", "portal-url": "Project:Portal de la quemunidade", "privacy": "Política de pribacidade", "privacypage": "Project:Política de pribacidade", @@ -183,7 +208,8 @@ "versionrequired": "Ye percisa la beson $1 de l MediaWiki", "ok": "OK", "retrievedfrom": "Sacado an \"$1\"", - "youhavenewmessages": "Tu tenes $1 ($2).", + "youhavenewmessages": "{{PLURAL:$3|Tu tenes}} $1 ($2).", + "youhavenewmessagesmanyusers": "Tu tenes $1 de muitos outelizadores ($2).", "youhavenewmessagesmulti": "Tenes nuobas mensaiges an $1", "editsection": "eiditar", "editold": "eiditar", @@ -198,21 +224,22 @@ "viewdeleted": "Ber $1?", "restorelink": "{{PLURAL:$1|ua eidiçon apagada|$1 eidiçones apagadas}}", "feedlinks": "Feed:", - "site-rss-feed": "Feed RSS $1", - "site-atom-feed": "Feed Atom $1", - "page-rss-feed": "Feed RSS de \"$1\"", + "site-rss-feed": "''Feed'' RSS $1", + "site-atom-feed": "''Feed'' Atom $1", + "page-rss-feed": "''Feed'' RSS de \"$1\"", "page-atom-feed": "Feed Atom de \"$1\"", "red-link-title": "$1 (la páigina nun eisiste)", "nstab-main": "Páigina", - "nstab-user": "Páigina de l outelizador", + "nstab-user": "Páigina d{{GENDER:{{BASEPAGENAME}}|e l outelizador|e la outelizadora|e outelizador(a)}}", "nstab-media": "Páigina de média", "nstab-special": "Páigina special", - "nstab-project": "Páigina de porjeto", + "nstab-project": "Páigina de l porjeto", "nstab-image": "Fexeiro", "nstab-mediawiki": "Mensaige", "nstab-template": "Modelo", "nstab-help": "Páigina d'ajuda", "nstab-category": "Catadorie", + "mainpage-nstab": "Páigina percipal", "nosuchaction": "Acion nun eisiste", "nosuchspecialpage": "Nun eisiste la páigina special que pediste", "error": "Erro", @@ -234,13 +261,13 @@ "badarticleerror": "Esta acion nun puode ser feita nesta páigina.", "badtitle": "Títalo ambálido", "badtitletext": "La páigina que pediste ye ambálida, bazia, ó ua lhigaçon mal feita dun títalo antre-lhéngua ó antre-biqui.\nPuode tener un ó mais carateres que nun puoden ser outelizados an títalos.", - "viewsource": "Ber código", + "viewsource": "Ber código-fuonte", "actionthrottled": "Acion lhemitada", - "viewsourcetext": "Tu puodes ber i copiar l código desta páigina:", + "viewsourcetext": "Tu puodes ber i copiar l código desta páigina.", "virus-scanfailed": "la berificaçon falhou (código $1)", "virus-unknownscanner": "antibírus çcoincido:", - "yourname": "Nome de Outelizador", - "yourpassword": "Palabra chabe", + "yourname": "Nome de outelizador(a):", + "yourpassword": "Palabra-chabe:", "yourpasswordagain": "Repite la tue palabra-chabe", "yourdomainname": "L tou domínio", "login": "Antrar", @@ -249,36 +276,46 @@ "userlogout": "Salir", "notloggedin": "Por outenticar", "createaccount": "Criar nuoba cuonta", - "createaccountmail": "por morada eiletrónica", + "createaccountmail": "Outelizar ua palabra-chabe aleatória i temporária i ambiar eilha pa l'andereço de correio eiletrónico specificado", "loginerror": "Erro de outenticaçon", - "loginsuccesstitle": "Antreste cumo debe de ser", + "loginsuccesstitle": "Outenticado", "loginsuccess": "'''Stás agora lhigado a {{SITENAME}} cumo \"$1\"'''.", "nosuchuser": "Num eisiste nanhun outelizador cul nome \"$1\".\nLs nomes de outelizador son defrentes an lhetra grande ó pequeinha.\nBei cumo screbiste, ó [[Special:CreateAccount|cria ua nuoba cuonta]].", "nosuchusershort": "Nun eisiste nanhun outelizador cul nome \"$1\".\nBei se l screbiste bien.", "nouserspecified": "Tenes que dezir un nome de outelizador.", "wrongpassword": "La palabra chabe ye ambálida.\nPor fabor, spurmenta outra beç.", "wrongpasswordempty": "Tenes que poner la palabra chabe.\nPor fabor, spurmenta outra beç.", - "passwordtooshort": "La tue palabra chabe ye ambálida ó mui pequeinha.\nDebe de tener pul menos {{PLURAL:$1|1 caracter|$1 caracteres}}.", + "passwordtooshort": "La tue palabra-chabe debe de tener pul menos $1 {{PLURAL:$1|carátele|caráteles}}.", "password-name-match": "La tue palabra-chabe ten que ser defrente de l tou nome de outelizador.", - "mailmypassword": "Ambiar nuoba palabra chabe por carta eiletrónica", + "mailmypassword": "Ambiar nuoba palabra-chabe por carta eiletrónica", "passwordremindertitle": "Nuoba palabra chabe temporária an {{SITENAME}}", "passwordremindertext": "Alguém (l mais cierto tu, a partir de la morada de IP $1) pediu que le fusse ambiada ua nouba palabra-chabe pa {{SITENAME}} ($4).\nFui criada ua palabra-chabe temporária pa l outelizador \"$2\", i fui puosta outra beç cumo \"$3\". Causo tengas feito cun este perpósito, entra na tue cuonta i scolhe ua nouba palabra-chabe agora.\nLa tue palabra-chabe temporária queda fuora de balidade {{PLURAL:$5|nun die|an $5 dies}}.\n\nCauso tenga sido outra pessona a fazer este pedido, ó causo tu yá te tengas lhembrado de la palabra-chabe i nun queiras demudar-la, squece esta mensaige i cuntina a outelizar la palabra-chabe antiga.", "noemail": "Nun eisiste morada eiletrónica pa l outelizador \"$1\".", "passwordsent": "Ua nuoba palabra chabe stá a ambiada pa la morada de correio eiletrónico de l outelizador \"$1\".\nPor fabor, bolta a fazer la outenticaçon al recebir-la.", "eauthentsent": "Ua carta eiletrónica de cunfirmaçon fui ambiada pa la morada de correio eiletrónico nomeada.\nAntes de qualquier outra carta eiletrónica seia ambiada pa la cuonta, terás de seguir las anstruçones na carta eiletrónica,\nde modo a cunfirmar que la cuonta ye mesmo la tue.", "mailerror": "Erro al ambiar la carta eiletrónica: $1", + "emailauthenticated": "L sou andereço de correio eiletrónico fui cunfirmado la $2, a las $3.", "emailconfirmlink": "Cunfirma la tue morada de correio eiletrónico", "loginlanguagelabel": "Lhéngua: $1", + "pt-userlogout": "Salir", + "changepassword": "Demudar palabra-chabe", + "resetpass_header": "Demudar palabra-chabe de la cuonta", "retypenew": "Pon outra beç la nuoba palabra chabe:", - "bold_sample": "Testo carregado", + "botpasswords": "Palabras-chabe de robós", + "botpasswords-label-resetpassword": "Redefenir palabra-chabe", + "resetpass-submit-loggedin": "Demudar palabra-chabe", + "passwordreset": "Redefenir palabra-chabe", + "changeemail": "Altarar ó remober l'andereço de correio eiletrónico", + "resettokens": "Redefenir chabes", + "bold_sample": "Testo a negrito", "bold_tip": "Testo a negrito", - "italic_sample": "Testo eitálico", + "italic_sample": "Testo an eitálico", "italic_tip": "Testo an eitálico", "link_sample": "Títalo de la lhigaçon", "link_tip": "Lhigaçon anterna", "extlink_sample": "http://www.example.com títalo de la lhigaçon", "extlink_tip": "Lhigaçon sterna (lembra-te de l perfixo http://)", - "headline_sample": "Testo de cabeçailho", + "headline_sample": "Testo de l cabeçailho", "headline_tip": "Cacho de nible 2", "nowiki_sample": "Poner testo nun-formatado eiqui", "nowiki_tip": "Nun fazer causo de la formataçon biqui", @@ -286,46 +323,50 @@ "media_tip": "Lhigaçon pa fexeiro", "sig_tip": "La tue assinatura, cun hora i data", "hr_tip": "Lhinha hourizontal (outeliza cun regra)", - "summary": "Sumário:", + "summary": "Resumo:", "subject": "Assunto/cabeçailho:", "minoredit": "Marcar cumo eidiçon pequerrixa", - "watchthis": "Ber esta páigina", + "watchthis": "Begiar esta páigina", "savearticle": "Grabar páigina", + "publishchanges": "Publicar altaraçones", "preview": "Ber cumo queda", "showpreview": "Ber cumo queda", "showdiff": "Amostrar altaraçones", - "anoneditwarning": "'''Abiso''': Tu nun stás outenticado. L tou IP será registrado ne l stórico de las eidiçones desta páigina.", + "anoneditwarning": "Abiso: Tu nun stás outenticado(a). L tou IP será registrado ne l stórico de las eidiçones desta páigina. Se [$1 ampeçar sesson] ó [$2 criar ua cuonta], las sues eidiçones seran registradas cul sou nome d'outelizador(a), an cunjunto cun outros benefícios.", "summary-preview": "Amostra de l sumário:", - "blockedtext": "L tou nome d'outelizador ó morada de IP foi bloquiada\n\nL bloqueio fui feito por $1. La rezon fui ''$2''.\n\n* Ampeço de l bloqueio: $8\n* Balidade de l bloqueio: $6\n* Çtino de l bloqueio: $7\n\nTu puodes cuntatar $1 ó outro [[{{MediaWiki:Grouppage-sysop}}|admenistrador]] pa çcutir subre l bloqueio.\n\nBei que nun poderás outelizar la funcionalidade \"Cuntatar outelizador\" se nun tubires ua counta neste wiki ({{SITENAME}}) cun ua morada eiletrónica bálida andicada an las tues [[Special:Preferences|preferéncias d'outelizador]] i se tubires sido bloquiado de outelizar essa ferramienta.\n\nLa tue morada de IP atual ye $3 i l ID de l bloqueio ye $5. Por fabor, anclui un deilhes (ó dambos ls dous) dados an qualquier tentatibas de sclarecimentos.", + "blockedtext": "L tou nome d'outelizador ó morada de IP foi bloquiado.\n\nL bloqueio fui feito por $1.\nLa rezon fui $2.\n\n* Ampeço de l bloqueio: $8\n* Balidade de l bloqueio: $6\n* Çtino de l bloqueio: $7\n\nTu puodes cuntatar $1 ó outro [[{{MediaWiki:Grouppage-sysop}}|admenistrador]] pa çcutir subre l bloqueio.\nBei que nun poderás outelizar la funcionalidade \"Cuntatar outelizador\" se nun tubires ua counta cun ua morada eiletrónica bálida andicada an las tues [[Special:Preferences|preferéncias d'outelizador]] i se tubires sido bloquiado de outelizar essa ferramienta.\nLa tue morada de IP atual ye $3 i la eidantificaçon (ID) de l bloqueio ye #$5.\nPor fabor, anclui un deilhes (ó dambos ls dous) dados an qualquier tentatibas de sclarecimentos.", + "autoblockedtext": "La sue morada de IP foi bloquiada de forma outomática porque fui outelizado recentemente por outro outelizador, l qual fui bloquiado por $1.\nLa rezon fui:\n\n:$2\n\n* Ampeço de l bloqueio: $8\n* Balidade de l bloqueio: $6\n* Çtino de l bloqueio: $7\n\nTu puodes cuntatar $1 ó outro [[{{MediaWiki:Grouppage-sysop}}|admenistrador]] pa çcutir subre l bloqueio.\n\nBei que nun poderás outelizar la funcionalidade \"Cuntatar outelizador\" se nun tubires ua counta cun ua morada eiletrónica bálida andicada an las tues [[Special:Preferences|preferéncias d'outelizador]] i se tubires sido bloquiado de outelizar essa ferramienta.\n\nLa tue morada de IP atual ye $3 i la eidantificaçon (ID) de l bloqueio ye #$5.\nPor fabor, anclui un deilhes (ó dambos ls dous) dados an qualquier tentatibas de sclarecimentos.", + "systemblockedtext": "L sou nome d'outelizador ó morada de IP fúrun bloquiados outomaticamente pul MediaWiki.\nLa rezon fui:\n\n:$2\n\n* Ampeço de l bloqueio: $8\n* Balidade de l bloqueio: $6\n* Çtino de l bloqueio: $7\n\nLa tue morada de IP atual ye $3.\nPor fabor, anclui un deilhes (ó dambos ls dous) dados an qualquier tentatibas de sclarecimentos.", "loginreqtitle": "Outenticaçon oubrigatória", "loginreqlink": "antrar", "loginreqpagetext": "Percisas de $1 pa poder ber outras páiginas.", "accmailtitle": "Palabra-chabe ambiada.", - "accmailtext": "Ua palabra-chabe criada al calhas pa [[User talk:$1|$1]] fui ambiada pa $2.\n\nLa palabra-chabe para esta nuoba cuonta puode ser demudada na páigina pa ''[[Special:ChangePassword|demudar palabra-chabe]]'' apuis de la outenticaçon.", + "accmailtext": "Ua palabra-chabe criada al calhas pa [[User talk:$1|$1]] fui ambiada pa $2.\n\nLa palabra-chabe puode ser demudada na páigina pa [[Special:ChangePassword|demudar la palabra-chabe]], apuis de la outenticaçon.", "newarticle": "(Nuoba)", - "newarticletext": "Tu bejiteste ua lhigaçon para ua páigina que inda nun eisiste.\nPara criar la páigina, ampeça a screbir an la caixa ambaixo (bei la [$1 páigina de ajuda] pa mais detailhes).\nSe stás eiqui por anganho, carrega ne l boton '''retornar''' de l tou nabegador de la Anternete.", - "noarticletext": "Nun hai neste sfergante testo nesta páigina.\nTu puodes [[Special:Search/{{PAGENAME}}|percurar pul títalo desta páigina]] noutras páiginas,\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} percurar ls registros que téngan a ber],\nó [{{fullurl:{{FULLPAGENAME}}|action=edit}} eiditar esta páigina].", + "newarticletext": "Tu bejiteste ua lhigaçon para ua páigina que inda nun eisiste.\nPara criar la páigina, ampeça a screbir an la caixa ambaixo (bei la [$1 páigina de ajuda] pa mais detailhes).\nSe stás eiqui por anganho, carrega ne l boton retornar de l tou nabegador de la Anternete.", + "noarticletext": "Inda nun eisiste testo nesta páigina.\nTu puodes [[Special:Search/{{PAGENAME}}|percurar pul títalo desta páigina]] noutras páiginas,\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} percurar ls registros que téngan a ber]\nó [{{fullurl:{{FULLPAGENAME}}|action=edit}} criar esta páigina].", "note": "'''Abiso:'''", - "previewnote": "'''Lhembra-te qu'esto ye solo ua amostra.'''\nLas altaraçones inda nun fúrun grabadas!", + "previewnote": "Lhembra-te qu'esto ye solo ua amostra.\nLas altaraçones inda nun fúrun grabadas!", "editing": "A eiditar $1", "editingsection": "A eiditar $1 (cacho)", "yourtext": "L tou testo", "storedversion": "berson guardada", - "copyrightwarning": "Por fabor, bei que todas las tues cuntribuiçones an {{SITENAME}} son cunsideradas cumo feitas ne ls termos de la lhicença $2 (bei $1 pa detailhes). Se nun quieres que l tou testo seia eiditado sin piedade i reçtribuído cunsante la gana, nun l ambies.
\nTu stás, al mesmo tiempo, a garantir-mos qu'esto ye algo screbido por ti, ó algo copiado d'ua fuonte de testos an domínio público ó parecido de teor lhibre.\n'''NUN AMBIES TRABALHO PORTEGIDO POR DREITOS D'OUTOR SIEN L DEBIDO PERMISSO!'''", + "yourdiff": "Defréncias", + "copyrightwarning": "Por fabor, bei que todas las tues cuntribuiçones an {{SITENAME}} son cunsideradas cumo feitas ne ls termos de la lhicença $2 (bei $1 pa detailhes).\nSe nun quieres que l tou testo seia eiditado sin piedade i reçtribuído cunsante la gana, nun l ambies.
\nTu stás, al mesmo tiempo, a garantir-mos qu'esto ye algo screbido por ti, ó algo copiado d'ua fuonte de testos an domínio público ó parecido de teor lhibre.\nNun ambies trabalho portegido por dreitos d'outor sien l debido permisso!", "templatesused": "{{PLURAL:$1|Modelo ousado|Modelos ousados}} nesta páigina:", "templatesusedpreview": "{{PLURAL:$1|Modelo outelizado|Modelos outelizados}} neste amostra:", "template-protected": "(portegida)", "template-semiprotected": "(semi-protegida)", "hiddencategories": "Esta páigina faç parte {{PLURAL:$1|dua catadorie scundida|$1 duas catadories scundidas}}:", - "nocreatetext": "{{SITENAME}} tem restringida la possibilidade de criar nuobas páginas.\nPode boltar atrás i editar unha página yá eisistente, o [[Special:UserLogin|autenticar-se o criar unha cuonta]].", + "nocreatetext": "{{SITENAME}} restringe la possibilidade de criar nuobas páiginas.\nPuode buoltar atrás i eiditar ua páigina yá eisistente, ó [[Special:UserLogin|outenticar-se ó criar ua cuonta]].", "permissionserrorstext-withaction": "Tu nun tenes premisson pa $2, {{PLURAL:$1|pula seguinte rezon|pulas seguintes rezones}}:", - "recreate-moveddeleted-warn": "Abiso: Tu stás a criar ua páigina que yá fui d'atrás botada fuora.'''\n\nBei bien se ye própio cuntinar a eiditar esta páigina.\nL registro de la eileminaçon i de l arrastrar ye amostrado eiqui por cumbeniéncia:", - "moveddeleted-notice": "Esta páigina fui apagada.\nL registro de la eileminaçon i de l arrastrar stá ambaixo pa refréncia.", + "recreate-moveddeleted-warn": "Abiso: Tu stás a criar ua páigina que yá fui d'atrás botada fuora.\n\nBei bien se ye própio cuntinar a eiditar esta páigina.\nL registro de la eileminaçon i de l arrastrar ye amostrado eiqui por cumbeniéncia:", + "moveddeleted-notice": "Esta páigina fui apagada.\nL registro de la eileminaçon, proteçon i arrastrar desta páigina stá ambaixo pa refréncia.", "viewpagelogs": "Ber registros pa esta páigina", "currentrev": "Rebison atual", "currentrev-asof": "Eidiçon atual cumo $1", "revisionasof": "Eidiçon cumo la de $1", - "revision-info": "Rebison de $1 por $2", + "revision-info": "Rebison de $1 por {{GENDER:$6|$2}}$7", "previousrevision": "← Berson d'atrás", "nextrevision": "Berson mais nuoba→", "currentrevisionlink": "Ber berson atual", @@ -333,8 +374,8 @@ "last": "redadeiro", "page_first": "purmeira", "page_last": "redadeira", - "histlegend": "Scuolhe de defrénça: marca las caixas an ua de las bersones que queiras cumparar i carrega ne l boton.
\nLegenda: (atu) = defrénças de la berson atual,\n(red) = defrénça de la redadeira berson, m = eidiçon pequerrixa", - "history-fieldset-title": "Nabegar pul stórico", + "histlegend": "Scuolhe de defrénça: marca las caixas an ua de las bersones que queiras cumparar i carrega ne l boton.
\nLhegenda: ({{int:cur}}) = defrénças de la berson atual, ({{int:last}}) = defrénça de la redadeira berson, {{int:minoreditletter}} = eidiçon pequerrixa.", + "history-fieldset-title": "Percurar rebisones", "histfirst": "Mais antigas", "histlast": "Redadeiras", "history-feed-item-nocomment": "$1 a $2", @@ -343,95 +384,166 @@ "mergehistory-submit": "Misturar eidiçones", "revertmerge": "Çfazer ounion", "history-title": "Stórico de eidiçones de \"$1\"", + "difference-title": "Defréncias antre las eidiçones de \"$1\"", "lineno": "Lhinha $1:", "compareselectedversions": "Cumparar las bersones marcadas", - "showhideselectedversions": "Amostrar/ocultar bersones selecionadas", + "showhideselectedversions": "Amostrar/scunder bersones selecionadas", "editundo": "çfazer", "searchresults": "Resultados de la percura", "searchresults-title": "Resultados de la percura por \"$1\"", "notextmatches": "Nun fui possible achar, ne l cuntenido de las páiginas, la palabra percurada", - "prevn": "anteriores {{PLURAL:$1|$1}}", - "nextn": "próssimos {{PLURAL:$1|$1}}", + "prevn": "{{PLURAL:$1|anterior|$1 anteriores}}", + "nextn": "{{PLURAL:$1|próssimo|próssimos $1}}", "viewprevnext": "Ber ($1 {{int:pipe-separator}} $2) ($3)", + "searchmenu-new": "Criar la páigina \"[[:$1]]\" nesta berson! {{PLURAL:$2|0=|Beija tamien la páigina ancontrada na percura.|Beija tamien ls resultados de la percura.}}", + "searchprofile-articles": "Páiginas de cuntenido", "searchprofile-images": "Multimédia", "searchprofile-everything": "Todo", "searchprofile-advanced": "Abançado", + "searchprofile-images-tooltip": "Percurar fexeiros", + "searchprofile-advanced-tooltip": "Personalizar ls domínios adonde percurar", "search-result-size": "$1 ({{PLURAL:$2|1 palabra|$2 palabras}})", "search-redirect": "(ancaminamiento pa $1)", "search-section": "(cacho $1)", "search-suggest": "Será que queries dezir: $1", - "search-interwiki-caption": "Porjetos armanos", + "search-interwiki-caption": "Resultados de porjetos armanos", "search-interwiki-default": "Resultados de $1:", "search-interwiki-more": "(mais)", "searchall": "todos", + "showingresultsinrange": "Apersenta-se ambaixo {{PLURAL:$1|1 resultado|anté $1 resultados}} ne l'anterbalo #$2 a #$3.", + "search-nonefound": "La percura nun porduziu resultados.", "powersearch-legend": "Percura abançada", "powersearch-ns": "Percurar ne ls spácios nominales:", + "powersearch-remember": "Lhembrar seleçon pa las percuras feturas", "preferences": "Perfréncias", "mypreferences": "Las mies perfréncias", + "prefs-edits": "Númaro d'eidiçones:", "prefs-skin": "Maçcarilha", - "skin-preview": "Amostrar", + "skin-preview": "amostrar", + "datedefault": "Sin perfréncia", "prefs-personal": "Calantriç", - "prefs-rc": "Redadeiras alteraçones", + "prefs-rc": "Redadeiras altaraçones", + "prefs-watchlist": "Páiginas begiadas", + "prefs-editwatchlist": "Eiditar la lhista de páiginas begiadas", + "prefs-editwatchlist-label": "Eiditar antradas na sue lhista de páiginas begiadas:", + "prefs-editwatchlist-edit": "Ber i remober títalos de la sue lhista de páiginas begiadas", + "prefs-editwatchlist-raw": "Eiditar lhista de páiginas begiadas an forma de testo", + "prefs-editwatchlist-clear": "Lhimpar la sue lhista de páiginas begiadas", + "prefs-watchlist-days": "Dies a amostrar nas altaraçones a las páiginas begiadas:", + "prefs-watchlist-days-max": "Mássimo: $1 {{PLURAL:$1|die|dies}}", + "prefs-watchlist-edits": "Númaro mássimo d'eidiçones a amostrar na lhista de begiadas:", + "prefs-watchlist-edits-max": "Númaro mássimo: 1000", + "prefs-watchlist-token": "Chabe secreta de la lhista de páiginas begiadas:", + "prefs-resetpass": "Altarar palabra-chabe", + "prefs-changeemail": "Altarar ó remober correio eiletrónico", + "prefs-email": "Oupçones de l correio eiletrónico", + "prefs-rendering": "Aparéncia", "saveprefs": "Grabar", + "restoreprefs": "Restourar todas las cunfiguraçones padron (an todas las seçones)", "prefs-editing": "Oupçones de eidiçon", + "stub-threshold": "Lhemite pa la formataçon de lhigaçones pa rabiscos ($1):", + "stub-threshold-sample-link": "eisemplo", + "stub-threshold-disabled": "Zatibado", + "recentchangesdays": "Dies a apersentar nas mudanças recentes:", + "recentchangesdays-max": "Mássimo: $1 {{PLURAL:$1|die|dies}}", + "recentchangescount": "Númaro d'eidiçones a apersentar por omisson:", + "prefs-help-recentchangescount": "Anclui mudanças recentes, stórico de páiginas i registros.", + "prefs-help-watchlist-token2": "Esta ye la chabe secreta pa l ''feed'' RSS de la sue lhista de páiginas begiadas.\nQualquiera pessona que coinça la chabe será capaç de lher la sue lhista de páiginas begiadas, por esso nun la dibulgue.\n[[Special:ResetTokens|Clique eiqui pa redefenir eilha]].", + "timezonelegend": "Fuso hourário:", + "localtime": "Hora lhocal:", + "timezoneuseoffset": "Outro (specificar defréncia)", "servertime": "Hora de l serbidor:", + "guesstimezone": "Prencher a partir de l nabegador", "timezoneregion-africa": "África", "timezoneregion-america": "América", "timezoneregion-antarctica": "Antártida", "timezoneregion-arctic": "Ártico", "timezoneregion-asia": "Ásia", - "timezoneregion-atlantic": "Ouceano Atlântico", + "timezoneregion-atlantic": "Ouceano Atlántico", "timezoneregion-australia": "Oustrália", "timezoneregion-europe": "Ouropa", "timezoneregion-indian": "Ouceano Índico", "timezoneregion-pacific": "Ouceano Pacífico", - "default": "defeito", + "allowemail": "Aceitar correio eiletrónico d'outros outelizadores", + "prefs-searchoptions": "Percura", + "default": "padron", "prefs-files": "Fexeiros", + "prefs-custom-css": "CSS personalizada", + "prefs-custom-js": "JS personalizado", + "prefs-common-css-js": "CSS/JS partilhado por todas las maçcarilhas:", "prefs-emailconfirm-label": "Cunfirmaçon de l correio eiletrónico:", "youremail": "Morada de correio eiletrónico:", - "username": "Nome de outelizador:", - "prefs-memberingroups": "Nembro {{PLURAL:$1|de l grupo|de ls grupos}}:", + "username": "Nome de {{GENDER:$1|outelizador|outelizadora|outelizador(a)}}:", + "prefs-memberingroups": "{{GENDER:$2|Nembro}} {{PLURAL:$1|de l grupo|de ls grupos}}:", + "prefs-registration": "Data i hora de registro:", "yourrealname": "Nome berdadeiro:", "yourlanguage": "Lhéngua:", "yournick": "Assinatura:", - "yourgender": "Sexo:", - "gender-unknown": "Nun specificado", - "gender-male": "Home", - "gender-female": "Mulhier", - "email": "Morada Eiletrónica", + "prefs-help-signature": "Al anserir comentairos nas páiginas de cumbersa, assine eilhes poniendo quatro tiles \"~~~~\" ne l fin de ls comentairos. Al grabar, estes seran cumbertidos na sue assinatura cula data i la hora de la eidiçon.", + "yourgender": "Cumo prefire ser çcrito(a)?", + "gender-unknown": "Al fazer mençon a la sue pessona, l software eirá outelizar palabras de l género neutro siempre que possible", + "gender-male": "El ye un outelizador", + "gender-female": "Eilha ye ua outelizadora", + "prefs-help-gender": "Esta perfréncia ye oupcional.\nL software outeliza l sou balor pa l'andereçar i pa l mencionar a outros outelizando l género gramatical apropiado.\nEsta anformaçon será pública.", + "email": "Morada eiletrónica", "prefs-help-realname": "L nome berdadeiro ye oupcional.\nCauso l çponiblizes, este será outelizado pa te dar crédito pul tou trabalho.", + "prefs-help-email": "Oupcional: l'andereço de correio eiletrónico ye oupcional, mas será necessairo pa redefenir la palabra-chabe causo squeça l'antiga.", + "prefs-help-email-others": "Tamien puode ouptar por permitir que outros antren an cuntato cunsigo por correio eiletrónico, atrabeç dua lhigaçon nas sues páiginas de outelizador ó de cumbersa, sin rebelar l sou andereço de correio eiletrónico.", + "prefs-info": "Anformaçones básicas", + "prefs-i18n": "Anternacionalizaçon", "prefs-signature": "Assinatura", "prefs-dateformat": "Formato de la data", - "editusergroup": "Eiditar grupos de outelizadores", + "prefs-timeoffset": "Zbio hourário", + "prefs-advancedediting": "Oupçones girales", + "prefs-editor": "Eiditor", + "prefs-preview": "Ber cumo queda", + "prefs-advancedrc": "Oupçones abançadas", + "prefs-advancedrendering": "Oupçones abançadas", + "prefs-advancedsearchoptions": "Oupçones abançadas", + "prefs-advancedwatchlist": "Oupçones abançadas", + "prefs-displayrc": "Oupçones de bisualizaçon", + "prefs-displaywatchlist": "Oupçones de bisualizaçon", + "prefs-tokenwatchlist": "Chabe", + "prefs-diffs": "Defréncias", + "userrights": "Prebilégios {{GENDER:{{BASEPAGENAME}}|de l outelizador|de la outelizadora|de outelizador(a)}}", + "editusergroup": "Cargar grupos de outelizadores", "userrights-groupsmember": "Nembro de:", "group": "Grupo:", "group-user": "Outelizadores", + "group-autoconfirmed": "Outelizadores outocunfirmados", "group-bot": "Rubós", "group-sysop": "Admenistradores", "group-bureaucrat": "Burocratas", - "group-bot-member": "Rubó", - "group-sysop-member": "Admenistrador", - "group-bureaucrat-member": "Burocrata", + "group-bot-member": "{{GENDER:$1|rubó}}", + "group-sysop-member": "{{GENDER:$1|admenistrador|admenistradora|admenistrador(a)}}", + "group-bureaucrat-member": "{{GENDER:$1|burocrata}}", + "grouppage-user": "{{ns:project}}:Outelizadores", + "grouppage-autoconfirmed": "{{ns:project}}:Outocunfirmados", "grouppage-bot": "{{ns:project}}:Rubós", "grouppage-sysop": "{{ns:project}}:Admenistradores", + "grouppage-bureaucrat": "{{ns:project}}:Burocratas", + "grouppage-suppress": "{{ns:project}}:Suprimir", "right-edit": "Eiditar páiginas", "right-move": "Arrastrar páiginas", "right-movefile": "Arrastrar fexeiros", + "grant-editmycssjs": "Eiditar l sou CSS/JavaScript personalizado", "newuserlogpage": "Registro de criaçon de outelizadores", "rightslog": "Registro de dreitos de l outelizador", "action-read": "lher esta páigina", "action-edit": "eiditar esta páigina", - "action-createpage": "criar páiginas", + "action-createpage": "criar esta páigina", "action-move": "arrastrar esta páigina", "action-movefile": "arrastrar este fexeiro", "action-delete": "apagar esta páigina", + "action-purge": "recargar esta páigina", "nchanges": "$1 {{PLURAL:$1|altaraçon|altaraçones}}", "recentchanges": "Redadeiras altaraçones", "recentchanges-legend": "Oupçones de las redadeiras altaraçones", "recentchanges-feed-description": "Acumpanha las redadeiras altaraçones de l biqui por esta semiente.", - "recentchanges-legend-newpage": "$1 - nuoba páigina", - "rcnotefrom": "Alteraçones feitas zde $2 (amostradas até $1).", - "rclistfrom": "Amostrar las noubas altaraçones a partir de $3 $2", + "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (ber tamien la [[Special:NewPages|lhista de páiginas nuobas]])", + "rcfilters-filtergroup-watchlist": "Páiginas begiadas", + "rcnotefrom": "Ambaixo {{PLURAL:$5|stá la altaraçon feita|stan las alteraçones feitas}} zde $2 (amostradas até $1).", + "rclistfrom": "Amostrar las noubas altaraçones a partir de $2 de $3", "rcshowhideminor": "$1 eidiçones pequerrixas", "rcshowhidebots": "$1 robós", "rcshowhideliu": "$1 outelizadores registrados", @@ -446,20 +558,20 @@ "minoreditletter": "m", "newpageletter": "N", "boteditletter": "b", - "rc_categories_any": "Qualquiera", + "rc_categories_any": "Qualquiera de ls scolhidos", "newsectionsummary": "/* $1 */ nuobo cacho", - "rc-enhanced-expand": "Amostrar detailhes (ye perciso JavaScript)", + "rc-enhanced-expand": "Amostrar detailhes", "rc-enhanced-hide": "Scunder detailhes", "recentchangeslinked": "Altaraçones relacionadas", - "recentchangeslinked-feed": "Alterações relacionadas", - "recentchangeslinked-toolbox": "Alterações relacionadas", + "recentchangeslinked-feed": "Altaraçones relacionadas", + "recentchangeslinked-toolbox": "Altaraçones relacionadas", "recentchangeslinked-title": "Altaraçones que ténen a ber cun \"$1\"", - "recentchangeslinked-summary": "Esta páigina special amostra las redadeiras altaraçones de páiginas que téngan ua lhigaçon a outra (ó de nembros dua catadorie speceficada).\nPáiginas que steian ne ls [[Special:Watchlist|tous begiados]] son amostradas an '''negrito'''.", + "recentchangeslinked-summary": "Esta páigina special amostra las redadeiras altaraçones de páiginas que téngan ua lhigaçon a outra (ó de nembros dua catadorie speceficada).\nLas páiginas que steian ne ls [[Special:Watchlist|tous begiados]] son amostradas an negrito.", "recentchangeslinked-page": "Nome de la páigina:", "recentchangeslinked-to": "Amostrar antes altaraçones a páiginas que téngan a ber cula páigina dada", "upload": "Cargar fexeiro", "uploadbtn": "Cargar fexeiro", - "uploadlogpage": "Registro de carregamiento", + "uploadlogpage": "Registro de carregamientos", "filename": "Nome de l fexeiro", "filesource": "Fuonte:", "ignorewarnings": "Eignorar qualquiera abiso", @@ -467,7 +579,7 @@ "watchthisupload": "Begiar este fexeiro", "upload-curl-error28": "Ultrapassado l tiempo lhemite pa l ambio de l fexeiro", "license": "Lhicença:", - "license-header": "Lhicença:", + "license-header": "Lhicença", "nolicense": "Nanhua scolhida", "imgfile": "fexeiro", "listfiles": "Fexeiros", @@ -480,20 +592,20 @@ "filehist": "Stórico de l fexeiro", "filehist-help": "Clique an ua data/hora para ber l fexeiro tal cumo el staba naquel sfergante.", "filehist-current": "atual", - "filehist-datetime": "Data/Hora", + "filehist-datetime": "Data i hora", "filehist-thumb": "Amostra", "filehist-thumbtext": "Amostra de la berson de las $1", "filehist-user": "Outelizador", "filehist-dimensions": "Tamanho", "filehist-filesize": "Tamanho de l fexeiro", "filehist-comment": "Comentairo", - "imagelinks": "Lhigaçones de Fexeiros", - "linkstoimage": "{{PLURAL:$1|Esta páigina lhigan|Estas $1 páiginas lhigan}} este fexeiro:", + "imagelinks": "Lhigaçones de l fexeiro", + "linkstoimage": "{{PLURAL:$1|Esta páigina lhiga|Estas $1 páiginas lhigan}} este fexeiro:", "nolinkstoimage": "Nanhua páigina apunta pa este fexeiro.", "sharedupload": "Este fexeiro ye de $1 i puode ser outelizado por outros porjetos.", "uploadnewversion-linktext": "Cargar ua nuoba berson deste fexeiro", "shared-repo-from": "de $1", - "filerevert-comment": "Comentairo:", + "filerevert-comment": "Motibo:", "filedelete": "Apagar $1", "filedelete-legend": "Apagar fexeiro", "filedelete-submit": "Apagar", @@ -505,8 +617,11 @@ "randompage": "Páigina al calhas", "randomredirect": "Ancaminamiento al calhas", "statistics": "Statísticas", + "statistics-articles": "Páiginas de cuntenido", "statistics-pages": "Páiginas", "statistics-users-active": "Outelizadores atibos", + "pageswithprop": "Páiginas que outelizan ua propiadade", + "pageswithprop-legend": "Páiginas que outelizan ua propiadade", "doubleredirects": "Ancaminamientos duplos", "brokenredirects": "Ancaminamientos scachados", "brokenredirects-edit": "eiditar", @@ -526,9 +641,11 @@ "unusedimages": "Fexeiros nun outelizados", "wantedcategories": "Catadories pedidas", "wantedpages": "Páiginas pedidas", + "wantedfiles": "Fexeiros zeiados", + "wantedtemplates": "Modelos zeiados", "mostlinked": "Páiginas mais lhigadas", "mostlinkedcategories": "Catadories cun mais nembros", - "mostlinkedtemplates": "Modelos mais populares de lhigaçones", + "mostlinkedtemplates": "Páiginas mais transcluídas", "mostcategories": "Páiginas de cuntenido cun mais catadories", "mostimages": "Eimaiges cun mais refréncias", "mostrevisions": "Páiginas de cuntenido cun mais rebisones", @@ -536,29 +653,31 @@ "shortpages": "Páiginas pequeinhas", "longpages": "Páiginas cumpridas", "deadendpages": "Páiginas sin salida", - "protectedpages": "Páginas protegidas", + "protectedpages": "Páiginas protegidas", + "protectedtitles": "Títalos portegidos", "listusers": "Lhista de outelizadores", - "newpages": "Nuobas páiginas", + "newpages": "Páiginas nuobas", "ancientpages": "Páiginas mais antigas", "move": "Arrastrar", "movethispage": "Arrastrar esta páigina", "pager-newer-n": "{{PLURAL:$1|1 nuoba|$1 nuobas}}", "pager-older-n": "{{PLURAL:$1|1 atrasada|$1 atrasadas}}", "booksources": "Fuontes de lhibros", - "booksources-search-legend": "Percurar por fuontes de libros", + "booksources-search-legend": "Percurar por fuontes de lhibros", "booksources-search": "Percurar", "booksources-text": "Ye apersentada ambaixo ua lhista de lhigaçones para outros sítios na Anternete que benden lhibros nuobos i ousados i talbeç possuan anformaçones adicionales subre ls lhibros que percura:", - "booksources-invalid-isbn": "L númaro ISBN apersentado nun parece ser bálido; berifique l'eisisténcia de ls erros al copiar de la fuonte ouriginal.", - "magiclink-tracking-rfc": "Páiginas qu'outelizan lhigaçones mágicas RFC", + "booksources-invalid-isbn": "L númaro ISBN apersentado nun parece ser bálido; berifique la eisisténcia de ls erros al copiar de la fuonte oureginal.", + "magiclink-tracking-rfc": "Páiginas que outelizan lhigaçones mágicas RFC", "magiclink-tracking-rfc-desc": "Esta páigina outeliza lhigaçones mágicas RFC. Cunsulte la [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] para saber cumo migrar.", - "magiclink-tracking-pmid": "Páiginas qu'outelizan lhigaçones mágicas PMID", + "magiclink-tracking-pmid": "Páiginas que outelizan lhigaçones mágicas PMID", "magiclink-tracking-pmid-desc": "Esta páigina outeliza lhigaçones mágicas PMID. Cunsulte la [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] para saber cumo migrar.", - "magiclink-tracking-isbn": "Páiginas qu'outelizan lhigaçones mágicas ISBN", + "magiclink-tracking-isbn": "Páiginas que outelizan lhigaçones mágicas ISBN", "magiclink-tracking-isbn-desc": "Esta páigina outeliza lhigaçones mágicas ISBN. Cunsulte la [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] para saber cumo migrar.", - "specialloguserlabel": "Outelizador:", - "speciallogtitlelabel": "Títalo:", + "specialloguserlabel": "Outelizador(a):", + "speciallogtitlelabel": "Albo (títalo ó páigina ó {{ns:user}}:nome d'outelizador):", "log": "Registros", "all-logs-page": "Todos ls registros públicos", + "logempty": "Nun eisiste nanhue antrada correspondente ne l registro.", "allpages": "Todas las páiginas", "nextpage": "Próssima páigina ($1)", "prevpage": "Páigina d'atrás ($1)", @@ -568,32 +687,39 @@ "allpagessubmit": "Bota", "allpagesprefix": "Amostrar páiginas cul perfixo:", "categories": "Catadories", - "linksearch": "Lhigaçones sternas", + "linksearch": "Percura de lhigaçones sternas", "linksearch-ok": "Percurar", "listusers-submit": "Amostrar", + "activeusers": "Lhista de outelizadores atibos", + "listgrouprights": "Prebilégios de ls grupos de outelizadores", "listgrouprights-rights": "Dreitos", "listgrouprights-members": "(lista de nembros)", - "emailuser": "Ambiar carta eiletrónica a este outelizador", + "listgrants": "Cuncessones de permissones a las aplicaçones lhigadas", + "trackingcategories": "Catadories de monitorizaçon", + "emailuser": "Ambiar carta eiletrónica a {{GENDER:{{BASEPAGENAME}}|este outelizador|esta outelizadora|este(a) outelizador(a)}}", "emailfrom": "De:", "emailto": "Para:", - "watchlist": "Ls mius begiados", + "watchlist": "Páiginas begiadas", "mywatchlist": "Las mies páiginas begiadas", - "addedwatchtext": "La páigina \"[[:$1]]\" fui ajuntada a la tue [[Special:Watchlist|lista de páiginas begiadas]].\nAltaraçones feturas na tal páigina i páiginas de çcusson a eilha associadas seran listadas alhá, cun la páigina aparecendo a '''negrito''' na [[Special:RecentChanges|lista de redadeiras altaraçones]], para que se pouda ancuntrar cun maior facelidade.", - "removedwatchtext": "La páigina \"[[:$1]]\" fui botada fuora de la [[Special:Watchlist|tue lista de páiginas begiadas]].", + "addedwatchtext": "\"[[:$1]]\" i la sue páigina de cumbersa fúrun ajuntadas a la tue [[Special:Watchlist|lhista de páiginas begiadas]].", + "removedwatchtext": "La páigina \"[[:$1]]\" i la sue páigina de cumbersa fúrun botadas fuora de la [[Special:Watchlist|tue lista de páiginas begiadas]].", "watch": "Begiar", "watchthispage": "Begiar esta páigina", "unwatch": "Zantressar-se", - "watchlist-details": "{{PLURAL:$1|$1 páigina begiada|$1 páiginas begiadas}}, fuora las páiginas de çcuçon.", + "watchlist-details": "{{PLURAL:$1|Eisiste $1 páigina|Eisisten $1 páiginas}} na sue lhista de páiginas begiadas, scluindo las páiginas de cumbersa.", + "wlheader-enotif": "La notificaçon por correio eiletrónico stá atiba.", + "wlheader-showupdated": "Las páiginas altaradas zde la redadeira beç que las besitou aparecen çtacadas an negrito.", "wlshowlast": "Ber redadeiras $1 horas $2 dies", - "watchlist-options": "Oupçones de la lista de begiados", + "watchlist-options": "Oupçones de la lhista de páiginas begiadas", "watching": "A begiar...", "unwatching": "A deixar de begiar...", + "enotif_reset": "Marcar todas las páiginas cumo bejitadas", "created": "criada", "changed": "demudada", "deletepage": "Botar fuora páigina", "delete-confirm": "Botar fuora \"$1\"", "delete-legend": "Botar fuora", - "historywarning": "Abiso: La páigina que stás quaije a botar fuora ten un stórico:", + "historywarning": "Abiso: La páigina que stás quaije a botar fuora ten un stórico cun aprossimadamente $1 {{PLURAL:$1|rebison|rebisones}}:", "confirmdeletetext": "Stás quaije a botar fuora para siempre ua páigina ó ua eimaige i todos ls sous stóricos.\nPor fabor, bei se ye esso que quieres fazer, que antendes las cunsequéncias i se esso stá d'acordo culas [[{{MediaWiki:Policy-url}}|políticas]].", "actioncomplete": "Acion acabada", "deletedtext": "\"$1\" fue elhiminada.\nConsulte $2 para um registo de eliminações recentes.", @@ -605,7 +731,7 @@ "protectlogpage": "Registro de porteçon", "protectedarticle": "porteger \"[[$1]]\"", "modifiedarticleprotection": "demudeste l nible de porteçon pa \"[[$1]]\"", - "prot_1movedto2": "[[$1]] foi movido para [[$2]]", + "prot_1movedto2": "arrastrou [[$1]] pa [[$2]]", "protect-legend": "Confirmar protecçon", "protectcomment": "Rezon:", "protectexpiry": "Data de balidade:", @@ -613,12 +739,12 @@ "protect_expiry_old": "La data de balidade stá ne l passado.", "protect-text": "Tu eiqui puodes ber i demudar ls nibles de porteçon pa esta páigina '''$1'''.", "protect-locked-access": "La tue cuonta nun ten permissones pa demudar ls nibles de porteçon dua páigina.\nEsta ye la cunfiguraçon atual pa la páigina '''$1''':", - "protect-cascadeon": "Esta páigina ancontra-se portegida, ua beç que se ancontra ancluída {{PLURAL:$1|na páigina listada a seguir, portegida|nas páiginas listadas a seguir, portegidas}} cun la \"porteçon porgressiba\" atibada. Tu puodes demudar l nible de porteçon desta páigina, mas esso nun terá eifeito na \"porteçon an cachon\".", + "protect-cascadeon": "Esta páigina ancontra-se portegida, ua beç que se ancontra ancluída {{PLURAL:$1|na páigina listada a seguir, portegida|nas páiginas listadas a seguir, portegidas}} cun la porteçon porgressiba atibada.\nAltaraçones feitas al nible de proteçon desta páigina nun afetaran la proteçon porgressiba.", "protect-default": "Premitir todos ls outelizadores", - "protect-fallback": "Ye perciso la outorizaçon \"$1\"", - "protect-level-autoconfirmed": "Bloquiar outelizadores nuobos i por registrar", - "protect-level-sysop": "Solo admenistradores", - "protect-summary-cascade": "\"an cachon\"", + "protect-fallback": "Permitir solo outelizadores cul prebilégio de \"$1\"", + "protect-level-autoconfirmed": "Permitir solo als outelizadores outocunfirmados", + "protect-level-sysop": "Permitir solo als admenistradores", + "protect-summary-cascade": "an cachon", "protect-expiring": "termina an $1 (UTC)", "protect-cascade": "Portege qualquiera páigina que steia ancluída nesta (porteçon an cachon)", "protect-cantedit": "Tu nun puodes demudar l nible de porteçon desta páigina, porque tu nun tener outorizaçon pa la eiditar.", @@ -632,24 +758,24 @@ "namespace": "Spácio de nomes:", "invert": "Amberter scuolha", "blanknamespace": "(Percipal)", - "contributions": "Cuntribuiçones de l outelizador", + "contributions": "Cuntribuiçones {{GENDER:$1|de l outelizador|de la outelizadora|de l(a) outelizador(a)}}", "contributions-title": "Upas {{GENDER:$1|de l outelizador|de la outelizadora}} $1", "mycontris": "Las mies upas", - "contribsub2": "Pa $1 ($2)", + "contribsub2": "Pa {{GENDER:$3|$1}} ($2)", "uctop": "(rebison atual)", "month": "De l més (i atrasados):", "year": "De l anho (i atrasados):", "sp-contributions-newbies": "Percurar solo an las cuntribuiçones de nuobas cuontas", - "sp-contributions-newbies-sub": "Pa nuobas cuontas", + "sp-contributions-newbies-sub": "Pa cuontas nuobas", "sp-contributions-blocklog": "Registro de bloqueios", - "sp-contributions-talk": "Cumbersa", + "sp-contributions-talk": "cumbersa", "sp-contributions-search": "Percurar cuntribuiçones", "sp-contributions-username": "Morada de IP ó outelizador:", "sp-contributions-submit": "Percurar", "whatlinkshere": "L que lhiga eiqui", "whatlinkshere-title": "Páiginas que lhígan a \"$1\"", "whatlinkshere-page": "Páigina:", - "linkshere": "Estas páiginas ténen lhigaçones pa '''[[:$1]]''':", + "linkshere": "Estas páiginas ténen lhigaçones pa [[:$1]]:", "nolinkshere": "Nun eisisten lhigaçones pa '''[[:$1]]'''.", "isredirect": "páigina de ancaminamiento", "istemplate": "ancluson", @@ -661,80 +787,87 @@ "whatlinkshere-hidetrans": "$1 anclusones", "whatlinkshere-hidelinks": "$1 lhigaçones", "whatlinkshere-filters": "Filtros", - "blockip": "Bloquiar outelizador", + "blockip": "Bloquiar {{GENDER:$1|outelizador|outelizadora|outelizador(a)}}", "ipboptions": "2 horas:2 hours,1 die:1 day,3 dias:3 days,1 sumana:1 week,2 sumanas:2 weeks,1 més:1 month,3 meses:3 months,6 meses:6 months,1 anho:1 year,anfenito:infinite", - "ipblocklist": "IPs i outelizadores bloquiados", + "blocklist": "Outelizadores bloquiados", + "autoblocklist": "Bloqueios outomáticos", + "ipblocklist": "Outelizadores bloquiados", "blocklink": "bloquiar", "unblocklink": "zbloquiar", "change-blocklink": "altarar bloqueio", - "contribslink": "contribs", + "contribslink": "cuntribs", "blocklogpage": "Registro de l bloqueio", "blocklogentry": "\"[[$1]]\" fui bloquiado cun un tiempo de balidade de $2 $3", "unblocklogentry": "zbloqueste $1", "block-log-flags-nocreate": "criaçon de cuontas zatibada", "move-page": "Arrastrar $1", - "move-page-legend": "Mover página", - "movepagetext": "Outelizando este formulário tu puodes renomear ua páigina, arrastrando to l stórico para l nuobo títalo. L títalo anterior será transformado nun ancaminamiento para l nuobo.\nYe possible amanhar de forma outomática ancaminamientos que lhigen un títalo oureginal.\nCauso scuolhas para que esso nun seia feito, bei se nun hai ancaminamientos [[Special:DoubleRedirects|dues bezes]] ó [[Special:BrokenRedirects|scachados]].\nYe de la tue respunsablidade tener la certeza de que las lhigaçones cuntinan a apuntar pa adonde dében.\n\nArrepara que la páigina '''nun''' será arrastrada se yá eisistir ua páigina cul nuobo títalo, a nun ser que steia bazio ó seia un ancaminamiento i nun tenga stórico de eidiçones. Esto quier dezir que puodes renomear outra beç ua páigina pa l nome que tenie antes de l anganho i que nun puodes subrescrebir ua páigina.\n\nCUIDADO!\nEsto puode ser ua altaraçon drástica i einesperada pa ua páigina popular; por fabor, ten la certeza de que antendes las cunsequéncias desto antes de cuntinar.", - "movepagetalktext": "La páigina de \"çcusson\" associada, se eistir, será outomaticamente arrastrada, '''a nun ser que:'''\n*Ua páigina de çcusson cun contenido yá eisista subre l nuobo títalo, ou\n*Tu marques la caixa ambaixo.\n\nNestes causos, tu terás que arrastrar ou ajuntar la páigina a la mano, se assi quejires.", - "newtitle": "Pa nuobo títalo:", + "move-page-legend": "Arrastrar páigina", + "movepagetext": "Outelizando este formulário tu puodes renomear ua páigina, arrastrando to l stórico para l nuobo títalo.\nL títalo anterior será transformado nun ancaminamiento para l nuobo.\nYe possible amanhar de forma outomática ancaminamientos que lhigen un títalo oureginal.\nCauso scuolhas para que esso nun seia feito, bei se nun hai ancaminamientos [[Special:DoubleRedirects|dues bezes]] ó [[Special:BrokenRedirects|scachados]].\nYe de la tue respunsablidade tener la certeza de que las lhigaçones cuntinan a apuntar pa adonde dében.\n\nArrepara que la páigina nun será arrastrada se yá eisistir ua páigina cul nuobo títalo, a nun ser que steia bazio ó seia un ancaminamiento i nun tenga stórico de eidiçones.\nEsto quier dezir que puodes renomear outra beç ua páigina pa l nome que tenie antes de l anganho i que nun puodes subrescrebir ua páigina.\n\nCuidado:\nEsto puode ser ua altaraçon drástica i einesperada pa ua páigina popular;\npor fabor, ten la certeza de que antendes las cunsequéncias desto antes de cuntinar.", + "movepagetalktext": "Se assinalar esta oupçon, i eisistir ua páigina de cumbersa associada, eilha será outomaticamente mobida, la nun ser que yá eisista ua páigina de cumbersa cul nuobo títalo que nó steia bazie.\n\nNeste causo, tu terás de arrastrar la páigina de cumbersa a la mano, ó la ajuntar cula eisistente, se assi quejires.", + "newtitle": "Nuobo títalo:", "move-watch": "Begiar esta páigina", "movepagebtn": "Arrastrar páigina", "pagemovedsub": "Páigina arrastrada cumo debe de ser", "movepage-moved": "'''\"$1\" fui arrastrado pa \"$2\"'''", "articleexists": "Yá eisiste ua páigina cun este títalo, ou l títalo que scolhiste ye ambálido.\nPor fabor, scuolhe outro nome.", - "movetalk": "Arrastrar tamien la páigina de çcusson associada.", + "movetalk": "Arrastrar tamien la páigina de cumbersa associada", + "move-subpages": "Arrastrar subpáiginas (anté $1)", + "move-talk-subpages": "Arrastrar subpáiginas de la páigina de cumbersa (anté $1)", "movelogpage": "Registro d'arrastros", "movereason": "Rezon:", "revertmove": "poner al robés", + "move-leave-redirect": "Criar un ancaminamiento", "export": "Sportar páiginas", "export-download": "Grabar cumo fexeiro", "allmessages": "Todas las mensaiges de l sistema", "allmessagesname": "Nome", "allmessagesdefault": "Testo por oumisson", "allmessages-filter-all": "Todas", + "allmessages-language": "Lhéngua:", "thumbnail-more": "Oumentar", "thumbnail_error": "Erro al criar eimaige pequeinha: $1", "importlogpage": "Registro de amportaçones", - "tooltip-pt-userpage": "Páigina d'outelizador", - "tooltip-pt-mytalk": "Mie cumbersa", - "tooltip-pt-preferences": "Las mies perfréncias", - "tooltip-pt-watchlist": "Lhista de páiginas subre las quales stás a begiar las altaraçones.", - "tooltip-pt-mycontris": "Mies upas", + "tooltip-pt-userpage": "Páigina d'{{GENDER:|outelizador|outelizadora|outelizador(a)}}", + "tooltip-pt-mytalk": "{{GENDER:|Mie}} cumbersa", + "tooltip-pt-preferences": "Las {{GENDER:|mies}} perfréncias", + "tooltip-pt-watchlist": "Lhista de páiginas subre las quales stás a begiar las altaraçones", + "tooltip-pt-mycontris": "{{GENDER:|Mies}} upas", "tooltip-pt-login": "Tu sós animado pa que te outentiques, inda que esso nun seia oubrigatório.", "tooltip-pt-logout": "Salir", - "tooltip-ca-talk": "Çcusson subre l cuntenido de la páigina", - "tooltip-ca-edit": "Tu puodes eiditar esta páigina. Por fabor, outeliza l boton \"Ber cumo queda\" antes de grabar.", + "tooltip-ca-talk": "Cumbersa subre l cuntenido de la páigina", + "tooltip-ca-edit": "Eiditar esta páigina", "tooltip-ca-addsection": "Ampeçar un cacho nuobo", - "tooltip-ca-viewsource": "Esta páigina stá portegida. Inda assi, tu puodes ber l sou código.", - "tooltip-ca-history": "Eidiçones mais antigas deste páigina.", + "tooltip-ca-viewsource": "Esta páigina stá portegida.\nInda assi, tu puodes ber l sou código.", + "tooltip-ca-history": "Eidiçones mais antigas desta páigina.", "tooltip-ca-protect": "Porteger esta páigina", "tooltip-ca-delete": "Botar fuora esta páigina", "tooltip-ca-move": "Arrastrar esta páigina", "tooltip-ca-watch": "Ajuntar esta páigina als mius begiados", "tooltip-ca-unwatch": "Botar pa la rue esta páigina de ls mius begiados", - "tooltip-search": "Pesquisa {{SITENAME}}", + "tooltip-search": "Percurar an {{SITENAME}}", "tooltip-search-go": "Ir pa ua páigina cun este nome, causo eisista", "tooltip-search-fulltext": "Percurar por páiginas cun este testo", - "tooltip-n-mainpage": "Besitar la Páigina Percipal", - "tooltip-n-mainpage-description": "Besitar la Páigina Percipal", - "tooltip-n-portal": "Subre l porjeto, l que puodes fazer, adonde ancuntrar cousas", + "tooltip-p-logo": "Bejitar la páigina percipal", + "tooltip-n-mainpage": "Besitar la páigina percipal", + "tooltip-n-mainpage-description": "Besitar la páigina percipal", + "tooltip-n-portal": "Subre l porjeto, l que puodes fazer, i adonde ancuntrar las cousas", "tooltip-n-currentevents": "Ancuntrar anformaçon de fondo subre amboras atuales", - "tooltip-n-recentchanges": "Lhista de redadeiras altaraçones nesta biqui.", + "tooltip-n-recentchanges": "Ua lhista de redadeiras altaraçones nesta biqui.", "tooltip-n-randompage": "Ber páigina al calhas", - "tooltip-n-help": "Lhugar cun anformaçon pa ajuda.", + "tooltip-n-help": "L lhugar cun anformaçon pa ajuda.", "tooltip-t-whatlinkshere": "Todas las páiginas que se lhigan eiqui", "tooltip-t-recentchangeslinked": "Redadeiras altaraçones an páiginas que ténen a ber cun esta", "tooltip-feed-rss": "Feed RSS pa esta páigina", "tooltip-feed-atom": "Feed Atom pa esta páigina", - "tooltip-t-contributions": "Ber las cuntribuiçones d'este outelizador", - "tooltip-t-emailuser": "Ambiar ua carta eiletrónica a este outelizador", + "tooltip-t-contributions": "Ber las cuntribuiçones {{GENDER:$1|deste outelizador|desta outelizadora|deste(a) outelizador(a)}}", + "tooltip-t-emailuser": "Ambiar ua carta eiletrónica a {{GENDER:$1|este outelizador|esta outelizadora|este(a) outelizador(a)}}", "tooltip-t-upload": "Cargar eimaiges ó fexeiros", "tooltip-t-specialpages": "Todas las páiginas speciales", "tooltip-t-print": "Berson pa ampremir desta páigina", "tooltip-t-permalink": "Lhigaçon pa siempre desta berson desta páigina", "tooltip-ca-nstab-main": "Ber la páigina de l cuntenido", - "tooltip-ca-nstab-user": "Ber la páigina de l outelizador", - "tooltip-ca-nstab-special": "Esta ye ua páigina special, nun puode ser eiditada.", + "tooltip-ca-nstab-user": "Ber la páigina de outelizador", + "tooltip-ca-nstab-special": "Esta ye ua páigina special, i nun puode ser eiditada.", "tooltip-ca-nstab-project": "Ber la páigina de l porjeto", "tooltip-ca-nstab-image": "Ber la páigina de l fexeiro", "tooltip-ca-nstab-template": "Ber l modelo", @@ -742,27 +875,32 @@ "tooltip-ca-nstab-category": "Ber la páigina de la catadorie", "tooltip-minoredit": "Marcar cumo eidiçon pequerrixa", "tooltip-save": "Grabar las tues altaraçones", + "tooltip-publish": "Publicar las sues altaraçones", "tooltip-preview": "Bei purmeiro las altaraçones, por fabor outeliza esto antes de grabar!", "tooltip-diff": "Amostrar altaraçones que faziste neste testo.", "tooltip-compareselectedversions": "Ber las defréncias antre las dues bersones marcadas desta páigina.", "tooltip-watch": "Ajuntar esta páigina als tous begiados", "tooltip-rollback": "\"{{int:rollbacklink}}\" çfazer, cun un solo clique, las eidiçones de l redadeiro eiditor desta páigina.", "tooltip-undo": "\"Çfazer\" çfaç esta eidiçoni abre ls campos de eidiçon ne l modo \"ber cumo queda\".\nPremite ajuntar la rezon de la eidiçon ne l sumário.", + "lastmodifiedatby": "Esta páigina fui eiditada pula redadeira beç a la(s) $2 de $1 por $3.", + "pageinfo-toolboxlink": "Anformaçones de la páigina", "previousdiff": "← Eidiçon d'atrás", "nextdiff": "Redadeira eidiçon →", - "file-info-size": "$1 × $2 pixel, tamanho: $3, tipo MIME: $4", + "imagemaxsize": "Tamanho lhemite de la eimaige:
(pa páiginas de çcriçon de fexeiros)", + "thumbsize": "Tamanho de la meniatura:", + "file-info-size": "$1 × $2 píxeles, tamanho: $3, tipo MIME: $4", "file-nohires": "Sin resoluçon maior çponible.", - "svg-long-desc": "fexeiro SVG, de $1 × $2 pixeles, tamanho: $3", - "show-big-image": "Resoluçon cumpleta", + "svg-long-desc": "fexeiro SVG, de $1 × $2 píxeles, tamanho: $3", + "show-big-image": "Fexeiro oureginal", "newimages": "Galerie de nuobos fexeiros", "noimages": "Nun hai nada pa ber.", "ilsubmit": "Percurar", - "bad_image_list": "L formato ye l seguinte:\n\nSolo son cunsiderados cousas de la lista (lhinhas ampeçadas por *). La purmeira lhigaçon nua lhinha debe ser ua lhigaçon pa ua \"bad image\".\nLhigaçones a seguir na mesma lhinha son cunsideradas eicepçones, i.e. artigos adonde la eimaige puode acuntecer \"inline\".", + "bad_image_list": "L formato ye l seguinte:\n\nSolo son cunsiderados eilemientos de la lista (lhinhas ampeçadas por *).\nLa purmeira lhigaçon nua lhinha debe ser ua lhigaçon pa l fexeiro que se pretende bloquiar.\nLhigaçones a seguir na mesma lhinha son cunsideradas eicepçones, ó seia, páiginas adonde se puode aceder al fexeiro.", "metadata": "Metadados", "metadata-help": "Este fexeiro ten mais anformaçon, l mais cierto ajuntada a partir de la máquina de retratos ó de l ''scanner'' outelizada para l criar.\nCauso l fexeiro tenga sido demudado a partir de l sou stado oureginal, alguns detailhes poderán nun amostrar por cumpleto las altaraçones feitas.", "metadata-expand": "Amostrar mais detailhes", "metadata-collapse": "Scunder mais detailhes", - "metadata-fields": "Ls campos de metadados EXIF amostrados nesta mensaige poderán star persentes an la eisebiçon de la páigina de la eimaige quando la tabela de metadados stubir ne l modo \"spandida\". Outros poderán star scundidos por oumisson.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude", + "metadata-fields": "Ls campos de metadados de eimaiges amostrados nesta mensaige seran ancluídos na páigina de çcriçon de la eimaige quando la tabela de metadados stubir ne l modo scundida. Outros campos staran scundidos por oumisson.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude", "exif-imagewidth": "Ancho", "exif-imagelength": "Altura", "exif-imagedescription": "Títalo de la eimaige", @@ -780,9 +918,12 @@ "exif-sharpness-1": "Suabe", "exif-sharpness-2": "Duro", "exif-subjectdistancerange-0": "Çcoincido", - "namespacesall": "todas", + "namespacesall": "todos", "monthsall": "todos", + "confirm-purge-title": "Purgar esta páigina", "confirm_purge_button": "Stá bien", + "confirm-purge-top": "Lhimpar a mimória cache desta páigina?", + "confirm-purge-bottom": "Recargar ua páigina lhimpa la mimória cache i fuorça la sue berson mais reciente a aparecer.", "imgmultipageprev": "← páigina atrasada", "imgmultipagenext": "páigina seguinte →", "imgmultigo": "Bota!", @@ -795,24 +936,56 @@ "table_pager_last": "Redadeira páigina", "table_pager_limit": "Amostrar $1 antradas por páigina", "table_pager_empty": "Sien resultados", + "autoredircomment": "Ancaminamiento pa [[$1]]", + "watchlistedit-normal-title": "Eiditar la lhista de páiginas begiadas", "watchlistedit-raw-titles": "Títalos", + "watchlistedit-clear-title": "Lhimpar la lhista de páiginas begiadas", + "watchlistedit-clear-legend": "Lhimpar la lhista de páiginas begiadas", + "watchlisttools-clear": "Lhimpar la lhista de páiginas begiadas", "watchlisttools-view": "Ber altaraçones amportantes", - "watchlisttools-edit": "Ber i eiditar ls mius begiados", - "watchlisttools-raw": "Ediçon bruta da lhista de ls bigiados", + "watchlisttools-edit": "Ber i eiditar la mie lhista de páiginas begiadas", + "watchlisttools-raw": "Eiditar la lhista de páiginas begiadas an forma de testo", + "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|cumbersa]])", "version": "Berson", - "version-specialpages": "Páiginas Speciales", + "version-specialpages": "Páiginas speciales", "version-variables": "Bariables", "version-other": "Outro", - "version-license": "Licença", + "version-license": "Lhicença de l MediaWiki", + "version-ext-colheader-description": "Çcriçon", "version-software-product": "Perduto", "version-software-version": "Berson", + "redirect-lookup": "Percurar:", "fileduplicatesearch-filename": "Nome de l fexeiro", "fileduplicatesearch-submit": "Percurar", "specialpages": "Páiginas speciales", - "specialpages-group-login": "Antrar / anscrebir", + "specialpages-note-top": "Lhegenda", + "specialpages-note-restricted": "* Páiginas speciales normales.\n* Páiginas speciales restritas.", + "specialpages-group-maintenance": "Relatórios de manutençon", + "specialpages-group-other": "Outras páiginas speciales", + "specialpages-group-login": "Antrar / criar ua cuonta", + "specialpages-group-changes": "Altaraçones i registros recentes", + "specialpages-group-media": "Lhistas i cargadura de fexeiros", + "specialpages-group-users": "Outelizadores i prebilégios", + "specialpages-group-highuse": "Páiginas mui outelizadas", "specialpages-group-pages": "Lhistas de páiginas", "specialpages-group-pagetools": "Ferramienta de páiginas", + "specialpages-group-wiki": "Dados i ferramientas", + "specialpages-group-redirects": "Páiginas speciales de ancaminamientos", "tags-title": "Eitiquetas", "tags-edit": "eiditar", - "rightsnone": "(nanhun)" + "tags-activate": "atibar", + "tags-deactivate": "zatibar", + "tags-activate-submit": "Atibar", + "diff-form": "Defréncias", + "logentry-move-move": "$1 {{GENDER:$2|arrastrou}} $3 pa $4", + "logentry-move-move-noredirect": "$1 {{GENDER:$2|arrastrou}} $3 pa $4 sin deixar un ancaminamiento", + "logentry-move-move_redir": "$1 {{GENDER:$2|arrastrou}} $3 pa l sou ancaminamiento $4", + "rightsnone": "(nanhun)", + "mediastatistics-header-multimedia": "Média anriquecida", + "authmanager-email-label": "Correio eiletrónico", + "changecredentials": "Altarar credenciales", + "changecredentials-submit": "Altarar credenciales", + "removecredentials": "Remober credenciales", + "removecredentials-submit": "Remober credenciales", + "gotointerwiki": "Salindo de {{SITENAME}}" } diff --git a/languages/i18n/my.json b/languages/i18n/my.json index 1a0dc9408b..8c67a7c786 100644 --- a/languages/i18n/my.json +++ b/languages/i18n/my.json @@ -1153,6 +1153,7 @@ "all-logs-page": "အများနှင့်ဆိုင်သောမှတ်တမ်းအားလုံး", "alllogstext": "{{SITENAME}}၏ ရရှိနိုင်သော မှတ်တမ်းများအားလုံး ပေါင်းစည်းပြသခြင်း ဖြစ်သည်။\nမှတ်တမ်းအမျိုးအစား၊ အသုံးပြုသူအမည် (စာလုံးအကြီးအသေး)၊ သို့မဟုတ် သက်ဆိုင်ရာ စာမျက်နှာ (စာလုံးအကြီးအသေး) ကို ရွေးချယ်ခြင်းဖြင့် ကြည့်ရှုမှုကို အကျဉ်းချုံးနိုင်ပါသည်။", "logempty": "မှတ်တမ်းထဲတွင် ကိုက်ညီသော အရာများ မရှိပါ။", + "showhideselectedlogentries": "ရွေးချယ်ထားသော မှတ်တမ်းများ၏ မြင်နိုင်မှုကို ပြောင်းလဲရန်", "checkbox-all": "အားလုံး", "allpages": "စာမျက်နှာအားလုံး", "nextpage": "နောက်ထပ်စာမျက်နှာ ($1)", @@ -1583,6 +1584,7 @@ "markedaspatrolledtext": "[[:$1]] ၏ ရွေးချယ်ထားသော တည်းဖြတ်မူကို စောင့်ကြပ်စစ်ဆေးပြီးကြောင်း မှတ်သားပြီးပါပြီ။", "markedaspatrollednotify": "$1 သို့ ဤပြောင်းလဲမှုအား စောင့်ကြပ်စစ်ဆေးပြီးကြောင်း မှတ်သားပြီးပါပြီ။", "patrol-log-page": "စောင့်ကြပ်စစ်ဆေးမှု မှတ်တမ်း", + "log-show-hide-patrol": "စောင့်ကြပ်စစ်ဆေးမှု မှတ်တမ်း $1", "filedeleteerror-short": "ဖိုင်ဖျက်ရာတွင် အမှားအယွင်း - $1", "previousdiff": "← တည်းဖြတ်မူ အဟောင်း", "nextdiff": "ပိုသစ်သော တည်းဖြတ်မှု", @@ -1772,6 +1774,7 @@ "logentry-patrol-patrol-auto": "စာမျက်နှာ $3 ၏ တည်းဖြတ်မူ $4 အား $1 က စောင့်ကြပ်စစ်ဆေးပြီးကြောင်း အလိုအလျောက် {{GENDER:$2|မှတ်သားခဲ့သည်}}", "logentry-newusers-create": "အသုံးပြုသူအကောင့် $1 ကို {{GENDER:$2|ဖန်တီးခဲ့သည်}}", "logentry-newusers-autocreate": "အသုံးပြုသူအကောင့် $1 ကို အလိုအလျောက် {{GENDER:$2|ဖန်တီးခဲ့သည်}}", + "logentry-protect-protect": "$1 က $3 ကို {{GENDER:$2|ကာကွယ်ခဲ့သည်}} $4", "logentry-protect-modify": "$3 အတွက် ကာကွယ်မှုအဆင့်ကို $1 {{GENDER:$2|က ပြောင်းလဲခဲ့သည်}} $4", "logentry-upload-upload": "$1 သည် $3 ကို {{GENDER:$2|upload တင်ခဲ့သည်}}", "logentry-upload-overwrite": "$3 ၏ ဗားရှင်းအသစ်ကို $1 {{GENDER:$2|upload တင်ခဲ့သည်}}", diff --git a/languages/i18n/nan.json b/languages/i18n/nan.json index f98e7f6aca..3f350c27a0 100644 --- a/languages/i18n/nan.json +++ b/languages/i18n/nan.json @@ -510,6 +510,7 @@ "showpreview": "Seng khoàⁿ-māi", "showdiff": "Khòaⁿ kái-piàn ê pō·-hūn", "anoneditwarning": "'''thê-chhíⁿ:''' Lí bô teng-ji̍p. Lí nā ū kái mi̍h-kiāⁿ, lí ê IP ē hô͘ lâng khoàⁿ tio̍h. Lí nā [$1 teng-ji̍p] iah-sī [$2 khui chi̍t-ê kháu-chō]; lí kái ê mi̍h-kiāⁿ ē kái kì lí ê kháu-chō-miâ. Mā ū kî-thaⁿ ê hó-chhù.", + "anonpreviewwarning": "Lí bô teng-ji̍p. Nā-sī lí beh pó-chûn, lí--ê IP ūi-chí ē kì-lo̍k tī i--ê siu-kái le̍k-sú lāi-bīn.", "summary-preview": "Khài-iàu ê preview:", "subject-preview": "Ū-lám tê-bo̍k/piau-tê:", "blockednoreason": "無寫理由", @@ -531,6 +532,7 @@ "userjspreview": "'''Sè-jī! Lí hiān-chú-sî chhì khoàⁿ--ê sī lí ka-kī ê javascript; che iáu-bōe pó-chûn--khí-lâi!'''", "note": "'''Chù-ì:'''", "previewnote": "'''Thê-chhéⁿ lí che sī 1 bīn kiám-cha chho͘-phe ēng--ê \"seng-khoàⁿ-ia̍h\", iáu-bōe pó-chûn--khí-lâi!'''", + "continue-editing": "Kè-sio̍k siu-kái", "session_fail_preview": "'''Pháiⁿ-sè! Gún chiām-sî bô hoat-tō͘ chhú-lí lí ê pian-chi̍p (goân-in: \"phàng-kiàn sú-iōng kî-kan ê chu-liāu\"). Lô-hoân têng chhì khoàⁿ-māi. Ká-sú iû-goân bô-hāu, ē-sái teng-chhut koh-chài teng-ji̍p hoān-sè tō ē-tit kái-koat.'''", "editing": "Siu-kái $1", "creating": "Chhòng-kiàn $1", diff --git a/languages/i18n/nb.json b/languages/i18n/nb.json index adcbb80a34..7c609948ab 100644 --- a/languages/i18n/nb.json +++ b/languages/i18n/nb.json @@ -1324,6 +1324,7 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (se også [[Special:NewPages|liste over nye sider]])", "recentchanges-legend-plusminus": "«(±123)»", "recentchanges-submit": "Vis", + "rcfilters-tag-remove": "Fjern «$1»", "rcfilters-legend-heading": "Liste over forkortelser:", "rcfilters-other-review-tools": "Andre gjennomgangsverktøy", "rcfilters-group-results-by-page": "Grupper resultater etter side", @@ -1336,6 +1337,7 @@ "rcfilters-hours-title": "De siste timene", "rcfilters-days-show-days": "{{PLURAL:$1|Én dag|$1 dager}}", "rcfilters-days-show-hours": "{{PLURAL:$1|Én time|$1 timer}}", + "rcfilters-highlighted-filters-list": "Fremhevet: $1", "rcfilters-quickfilters": "Lagrede filtre", "rcfilters-quickfilters-placeholder-title": "Ingen lenker lagret enda", "rcfilters-quickfilters-placeholder-description": "For å lagre filterinnstillingene og gjenbruk dem senere, klikk på bokmerkeikonet i området Aktive Filtre under.", @@ -1365,7 +1367,7 @@ "rcfilters-filterlist-noresults": "Ingen filtre funnet", "rcfilters-noresults-conflict": "Ingen resultater funnet fordi søkekriteriene konflikterer", "rcfilters-state-message-subset": "Dette filteret har ingen effekt fordi resultatene dens inkluderes i følgende, bredere {{PLURAL:$2|filter|filtre}} (prøv å merke for å skille det ut): $1", - "rcfilters-state-message-fullcoverage": "Å velge alle filtre i en gruppe er det samme som å velge ingen, så dette filteret har ingen effekt. Gruppa inkluderer: $1", + "rcfilters-state-message-fullcoverage": "Å velge alle filtre i en gruppe er det samme som ikke å velge noen, så dette filteret har ingen effekt. Gruppen inkluderer: $1", "rcfilters-filtergroup-authorship": "Bidragets forfatter", "rcfilters-filter-editsbyself-label": "Dine redigeringer", "rcfilters-filter-editsbyself-description": "Dine egne bidrag.", @@ -1404,6 +1406,11 @@ "rcfilters-filter-watchlist-watchednew-description": "Endringer i overvåkede sider du ikke har besøkt siden endringen(e) ble gjort.", "rcfilters-filter-watchlist-notwatched-label": "Ikke på overvåkningslista.", "rcfilters-filter-watchlist-notwatched-description": "Alt utenom endringer på sider på overvåkningslista di.", + "rcfilters-filtergroup-watchlistactivity": "Overvåkningsliste", + "rcfilters-filter-watchlistactivity-unseen-label": "Usette endringer", + "rcfilters-filter-watchlistactivity-unseen-description": "Endringer av sider som du ikke ha besøkt siden endringene ble utført.", + "rcfilters-filter-watchlistactivity-seen-label": "Sette endringer", + "rcfilters-filter-watchlistactivity-seen-description": "Endringer av sider du har besøkt siden endringene ble utført.", "rcfilters-filtergroup-changetype": "Type endring", "rcfilters-filter-pageedits-label": "Sideredigeringer", "rcfilters-filter-pageedits-description": "Redigeringer til wikiinnhold, diskusjoner, kategoribeskrivelser ...", @@ -1433,6 +1440,7 @@ "rcfilters-liveupdates-button": "Live-oppdateringer", "rcfilters-liveupdates-button-title-on": "Slå av live-oppdateringer", "rcfilters-liveupdates-button-title-off": "Vis nye endringer når de skjer", + "rcfilters-watchlist-markseen-button": "Merk alle endringer som sett.", "rcnotefrom": "Nedenfor er vist {{PLURAL:$5|endringen|endringene}} som er gjort siden $3, $4 (frem til $1).", "rclistfromreset": "Nullstill datovalg", "rclistfrom": "Vis nye endringer fra og med $3 $2", diff --git a/languages/i18n/ne.json b/languages/i18n/ne.json index db3fc464dd..cf25286416 100644 --- a/languages/i18n/ne.json +++ b/languages/i18n/ne.json @@ -231,7 +231,7 @@ "jumptonavigation": "अन्वेषण", "jumptosearch": "खोज्नुहोस्", "view-pool-error": "माफ गर्नुहोस् , यस समयमा सर्भरहरूमा कार्यभार उच्च रहेको छ ।\nअति धेरै प्रयोगकर्ताहरू यो पृष्ट हेर्ने प्रयास गरी रहनु भएको छ।\nकृपया यो पृष्ठ पुन: हेर्नु अगाडि केही समय पर्खिदिनुहोस् ।\n\n$1", - "generic-pool-error": "माफ गर्नुहोस् , यस समयमा सर्भरहरुमा कार्यभार उच्च रहेको छ।\nअति धेरै प्रयोगकर्ताहरू यो पृष्ट हेर्ने प्रयास गरी रहनु भएको छ।\nकृपया यो सामग्री हेर्नु अगाडि केही समय पर्खिदिनुहोस् ।", + "generic-pool-error": "माफ गर्नुहोस् , यस समयमा सर्भरहरूमा कार्यभार उच्च रहेको छ।\nअति धेरै प्रयोगकर्ताहरू यो पृष्ट हेर्ने प्रयास गरी रहनु भएको छ।\nकृपया यो सामग्री हेर्नु अगाडि केही समय पर्खिदिनुहोस् ।", "pool-timeout": "समय सकियो बन्द गर्ने प्रतीक्षामा", "pool-queuefull": "प्रतीक्षा पङ्क्ति भरियो", "pool-errorunknown": "अज्ञात त्रुटि", @@ -472,7 +472,7 @@ "passwordremindertext": "कसैले (सायद तपाईं, IP ठेगाना $1 बाट), {{SITENAME}}($4) को लागि नयाँ प्रवेशशब्द अनुरोध गर्नुभएको छ । प्रयोगकर्ता \"$2\" को लागि नयाँ अस्थायी प्रवेशशब्द \"$3\"तयार पारिएको छ । यदि यो तपाईंको इच्छामा भएको भए अहिले तपाईँले प्रवेशगरी नयाँ प्रवेशशब्द छान्नु पर्ने हुन्छ ।\nतपाईंको अस्थायी प्रवेशशब्द {{PLURAL:$5|एक दिन|$5 दिनहरू पछि}} अमान्य हुनेछ ।\n\nयदि कोही अरुले नै अनुरोध गरेको हो भने , या तपाईंले आफ्नो प्रवेशशब्द सम्झिनु भयो भने, अथवा\nत्यसलाई परिवर्तन गर्न चाहनुहुन्न भने, तपाईंले यो सन्देशको वेवास्ता गर्नसक्नुहुन्छ र पुरानै प्रवेशशब्द प्रयोग गरिरहन सक्नुहुन्छ ।", "noemail": "प्रयोगकर्ता \"$1\"को लागि कुनै पनि इ-मेल दर्ता गरिएको छैन ।", "noemailcreate": "तपाईंले सही ई-मेल ठेगाना दिनुपर्छ", - "passwordsent": "\"$1\" को लागि दर्ता गरिएको ई-मेल ठेगानामा एक प्रवेशशव्द पठाइएको छ।\nकृपया त्यसलाई प्राप्त गरेपछि प्रवेश गर्नुहोला ।", + "passwordsent": "\"$1\" को लागि दर्ता गरिएको ई-मेल ठेगानामा एक प्रवेश शब्द पठाइएको छ।\nकृपया त्यसलाई प्राप्त गरेपछि प्रवेश गर्नुहोला ।", "blocked-mailpassword": "तपाईंको IP ठेगानालाई सम्पादनगर्नबाट रोक लगाइएको छ, र त्यसैले दुरुपयोग रोक्नको लागि प्रवेसशब्द पुनर्लाभ प्रक्रिया प्रयोग गर्न अनुमति छैन ।", "eauthentsent": "दिइएको इमेल ठेगानामा इमेल पठाइएको छ ।\nतपाईंको खातामा अरु इमेल पठउनु अघि , इमेलमा लेखिएको मार्गदर्शन अनुसार , त्यो खाता तपाईंकै हो भनेर निश्चित गर्नु पर्नेछ ।", "throttled-mailpassword": "बितेको {{PLURAL:$1|घण्टा|$1 घण्टाहरु}} भित्र एउटा पासवर्ड अनुस्मारक पठाई सकिएको छ।\nदुरुपयोगबाट बचाउकोलागि प्रत्येक {{PLURAL:$1|घण्टा|$1 घण्टाहरु}}मा केवल एउटा पासवर्ड अनुस्मारक पठाइन्छ।", @@ -542,7 +542,7 @@ "passwordreset-domain": "डोमेन", "passwordreset-email": "इमेल ठेगाना:", "passwordreset-emailtitle": "{{SITENAME}}मा खाता विवरण", - "passwordreset-emailtext-ip": "कसैले (सायद तपाईंले, $1 आईपि ठेगानाबाट) {{SITENAME}} ($4)मा तपाईंको खाता विवरणको निम्ति एउटा अनुस्मारकको अनुरोध गरेको छ। निम्न प्रयोगकर्ता {{PLURAL:$3|खाता यस इमेल ठेगानासित सम्बन्धित छ|खाताहरू यस इमेल ठेगानासित सम्बन्धित छन्}}:\n\n$2\n\n{{PLURAL:$3|यो अस्थाई पासवर्डको|यी अस्थाई पासवर्डहरुको}} समय {{PLURAL:$5|एक दिन|$5 दिन}}मा सकिनेछ।\nतपाईंले प्रवेश गरेर अहिले नैं नयाँ पासवर्ड छान्नुहोस्। यदि अरु कसैले अनुरोध गरेको भए अथवा यदि तपाईंलाई मूल पासवर्ड याद भए अनि यसलाई परिवर्तन गर्न चाहनुहुन्न भने, तपाईंले यस सन्देशलाई अनदेखा गर्नुहोस् र पुरानै पासवर्डलाई चालू राख्नुहोस्।", + "passwordreset-emailtext-ip": "कसैले (सायद तपाईंले, $1 आईपि ठेगानाबाट) {{SITENAME}} ($4)मा तपाईंको खाता विवरणको निम्ति एउटा अनुस्मारकको अनुरोध गरेको छ। निम्न प्रयोगकर्ता {{PLURAL:$3|खाता यस इमेल ठेगानासित सम्बन्धित छ|खाताहरू यस इमेल ठेगानासित सम्बन्धित छन्}}:\n\n$2\n\n{{PLURAL:$3|यो अस्थाई पासवर्डको|यी अस्थाई पासवर्डहरूको}} समय {{PLURAL:$5|एक दिन|$5 दिन}}मा सकिनेछ।\nतपाईंले प्रवेश गरेर अहिले नैं नयाँ पासवर्ड छान्नुहोस्। यदि अरु कसैले अनुरोध गरेको भए अथवा यदि तपाईंलाई मूल पासवर्ड याद भए अनि यसलाई परिवर्तन गर्न चाहनुहुन्न भने, तपाईंले यस सन्देशलाई अनदेखा गर्नुहोस् र पुरानै पासवर्डलाई चालू राख्नुहोस्।", "passwordreset-emailtext-user": "{{SITENAME}} को $1 प्रयोगकर्ताले {{SITENAME}} ($4)को लागि खाता विवरणको निम्ति एउटा अनुस्मारकको अनुरोध गरेको छ । निम्न प्रयोगकर्ता {{PLURAL:$3|खाता यस इमेल ठेगानासित सम्बन्धित छ|खाताहरू यस इमेल ठेगानासित सम्बन्धित छन् ।}}:\n\n$2\n\n{{PLURAL:$3|यो अस्थाई पासवर्डको|यी अस्थाई पासवर्डहरूको}} समय {{PLURAL:$5|एक दिन|$5 दिन}}मा सकिनेछ ।\nतपाईंले प्रवेश गरेर अहिले नैं नयाँ पासवर्ड छान्नुहोस्। यदि अरु कसैले अनुरोध गरेको भए अथवा यदि तपाईंलाई मूल पासवर्ड याद भए अनि यसलाई परिवर्तन गर्न चाहनुहुन्न भने, तपाईंले यस सन्देशलाई अनदेखा गर्नुहोस् र पुरानै पासवर्डलाई चालू राख्नुहोस् ।", "passwordreset-emailelement": "प्रयोगकर्ताको नाम: \n$1\n\nअस्थाई पासवर्ड: \n$2", "passwordreset-emailsentemail": "पासवर्ड परिवर्तनको लागि इमेल पठाइएको छ।", @@ -556,7 +556,7 @@ "changeemail-submit": "इमेल परिवर्तन गर्ने", "changeemail-throttled": "तपाईंले भर्खरै धेरै पल्ट प्रवेशको निम्ति प्रयास गर्नुभएको छ।\nकृपया $1 पर्खेर मात्र प्रयास गर्नुहोस्।", "resettokens": "टोकन पूर्वरुपमा फर्काउने", - "resettokens-text": "जुन टोकन तपाईंको खातासँग सम्बद्ध केहि विशिष्ट व्यक्तिगत जानकारी प्रदान गर्छन, तपाईं त्यसलाई यहाँ रिसेट गर्न सक्नुहुन्छ।\n\nयदि तपाईंले तिनलाई भुलवस कसैलाई देखाईदिनु भएको छ वा तपाईंको खाता ह्याक भइसकेको छ भने तपाईं यसलाई रिसेट गर्नुहोला।", + "resettokens-text": "जुन टोकनले तपाईंको खातासँग सम्बद्ध केहि विशिष्ट व्यक्तिगत जानकारी प्रदान गर्छन्, तपाईं त्यसलाई यहाँ रिसेट गर्न सक्नुहुन्छ।\n\nयदि तपाईंले तिनलाई भुलवस कसैलाई देखाउनु भएको छ वा तपाईंको खाता ह्याक भइसकेको छ भने तपाईं यसलाई रिसेट गर्नुहोला।", "resettokens-no-tokens": "पूर्वरुपमा फर्काउन कुनै पनि टोकन छैन ।", "resettokens-tokens": "टोकनहरू:", "resettokens-token-label": "$1 (वर्तमान मूल्यः $2)", @@ -638,7 +638,7 @@ "continue-editing": "सम्पादन क्षेत्रमा जानुहोस", "previewconflict": "यस पूर्वावलोकनले सम्पादन क्षेत्र को माथिल्लो भागको पाठ परिवर्तन गर्ने ठाउँको पाठलाइ देखाउँछ अनि तपाईंले यसलाई सेभ गरेपछि देखापर्छ।", "session_fail_preview": "'''माफ गर्नुहोस्! सत्र-आँकड़ा (session data) हराउनाले हामीले तपाईंको सम्पादन प्रक्रिया अघि बढाउन सकेनौं।.'''\nकृपया पुनः प्रयास गर्नुहोस्।\nयदि फेरि पनि काम भएन भनें, [[Special:UserLogout|बाहिर गई(लग आउट गरी)]] फेरि प्रवेश गर्नुहोस्।", - "session_fail_preview_html": "माफ गर्नुहोला ! सेशन डाटा नष्ट भएको कारण तपाईंको परिवर्तन शुरक्षित गर्न सकिएन ।\n\nकिनकी {{SITENAME}}मा raw HTML सक्षम छ, जावास्क्रिप्ट हमहरूबाट बचाउनको लागि झलक नहीं देखाइएको छैन ।\n\nयदी यो तपाईंको वैध सम्पादन यत्न थियो भने कृपया पुनः प्रयास गर्नुहोस् ।\nयदी यस पनि यस्तै भयो भने कृपया [[Special:UserLogout|लग आउट]] गरेर पुनः लग इन गर्नुहोस् तथा तपाईंको ब्राउजरले यस साइटसँग कुकीजको अनुमति दिन्छ दिन्न जाँच गर्नुहोस् ।", + "session_fail_preview_html": "माफ गर्नुहोला ! सेशन डाटा नष्ट भएको कारण तपाईंको परिवर्तन शुरक्षित गर्न सकिएन ।\n\nकिनकी {{SITENAME}}मा raw HTML सक्षम छ, जावास्क्रिप्ट हमलाहरूबाट बचाउनको लागि झलक देखाइएको छैन ।\n\nयदी यो तपाईंको वैध सम्पादन यत्न थियो भने कृपया पुनः प्रयास गर्नुहोस् ।\nयदी फेरी पनि यस्तै भयो भने कृपया [[Special:UserLogout|लग आउट]] गरेर पुनः लग इन गर्नुहोस् तथा तपाईंको ब्राउजरले यस साइटसँग कुकीजको अनुमति दिन्छ दिन्न जाँच गर्नुहोस् ।", "token_suffix_mismatch": "'''सम्पादन टोकनमा विराम चिह्न र वर्ण सम्बन्धित गड़बड़ीको कारण तपाईंको सम्पादन अस्वीकार गरिएको छ'''\nपृष्ठको पाठ बचाउन सम्पादन अस्वीकार गरिएको हो।\nयस्तो त्यसबेला हुन्छ जब तपाईंले बगी वेवमा आधारित अज्ञात प्रोक्सी सेवा प्रयोग गर्नुहुन्छ।", "edit_form_incomplete": "'''सम्पादनको केहि भाग सर्वरसम्म पुग्न सकेन, दुइपल्ट जाँच गर्नुहोस्, तपाईंको सम्पादन यथावत रहे पुनः प्रयास गर्नुहोस्'''", "editing": "$1 सम्पादन गरिदै", @@ -646,7 +646,7 @@ "editingsection": "$1 (खण्ड) सम्पादन गरिदै", "editingcomment": "$1 सम्पादन गर्दै(नयाँ खण्ड)", "editconflict": "सम्पादन बाँझियो: $1", - "explainconflict": "तपाईंले सम्पादन कार्य सुरु गरेपछि कसैले यस पृष्टलाई परिवर्तन गरेकोछ।\nमाथिल्लो पाठक्षेत्रमा पृष्ठको वर्तमान पाठ छ।\nतपाईंको परिवर्तन तल्लो भागमा दर्शाइएकोछ। \nतपाईंले गर्नुभएको परिवर्तनलाई वर्तमान पाठसित मिसाउनु पर्नेछ, यदि तपाईंले \"$1\" थिच्नु भयो भनें पाठको माथिल्लो भाग '''मात्र''' संग्रह गरिनेछ।", + "explainconflict": "तपाईंले सम्पादन कार्य सुरु गरेपछि कसैले यस पृष्टलाई परिवर्तन गरेकोछ।\nमाथिल्लो पाठक्षेत्रमा पृष्ठको वर्तमान पाठ छ।\nतपाईंको परिवर्तन तल्लो भागमा दर्शाइएकोछ। \nतपाईंले गर्नुभएको परिवर्तनलाई वर्तमान पाठसित मिसाउनु पर्नेछ, यदि तपाईंले \"$1\" थिच्नु भयो भने पाठको माथिल्लो भाग '''मात्र''' सङ्ग्रह गरिनेछ।", "yourtext": "तपाईंका पाठहरु", "storedversion": "संग्रहित पुनरावलोकन", "nonunicodebrowser": "चेतावनी: तपाईंको ब्राउजर युनिकोडलाई स्वीकार गर्दैन। \nतपाईंद्वारा सहि रुपले पृष्ठ सम्पादनको लागि: गैर-एयससिआइआइ क्यारेक्टर हेक्जाडेसिमल कोड (hexadecimal) मा देखाइनेछ।", @@ -676,7 +676,7 @@ "permissionserrorstext": "तपाईँलाई यसको लागि अनुमति छैन ,निम्न {{PLURAL:$1|कारण|कारणहरू}}ले गर्दा:", "permissionserrorstext-withaction": "$2 को लागि तपाईलाई अनुमति छैन , निम्न {{PLURAL:$1|कारणले|कारणहरूले}} गर्दा :", "recreate-moveddeleted-warn": "'''चेतावनी: तपाईं अघिबाट मेटिएको पृष्ठ पुनर्निर्माण गर्नुहुँदैछ'''\n\nतपाईंको विचारमा के यो उचित छ कि यसको सम्पादन जारी राखियोस्, \nयस पृष्ठको मेटिएको र सारिएको लग सुविधाको निम्ति यहाँ दिइएकोछ :", - "moveddeleted-notice": "पृष्ठ मेटिएको छ ।\nमेटिएका तथा सारिएका पृष्ठहरूको सूची तल सन्दर्भको लागि दिइएको छ ।", + "moveddeleted-notice": "यस पृष्ठलाई मेटाइएको छ।\nमेटाइएका, संरक्षित तथा सारिएका पृष्ठहरूको इतिहास सूची सन्दर्भको लागि तल दिइएको छ।", "log-fulllog": "पूरा लग हेर्नुहोस्", "edit-hook-aborted": "हुकले सम्पादन बन्द गरिदियो ।\nयसले कुनै कारण दिएन ।", "edit-gone-missing": "पृष्ठ अद्यतन गर्न सकिएन\nयो मेटिएको जस्तो देखिन्छ ।", @@ -741,7 +741,7 @@ "page_first": "पहिलो", "page_last": "अन्तिम", "histlegend": "अन्तर चयन:संशोधनहरूको तुलनाको लागि रेडियो बाकसमा क्लिक गरेर इण्टर गर्नुहोस् अथवा तल दिएको बटनमा थिच्नुहोस्
\nलिजेंड: (चालू): '''({{int:cur}})''' = अवतरणको बीचमा अन्तर, '''({{int:last}})''' = पहिलाका अवतरणको बीचमा अन्तर, '''{{int:minoreditletter}}''' = सानो परिवर्तन।", - "history-fieldset-title": "इतिहासको विचरण गर्ने", + "history-fieldset-title": "संशोधनका लागि खोजी गर्नुहोस्", "history-show-deleted": "मेटिएका मात्र", "histfirst": "पुरानो", "histlast": "नयाँ", @@ -758,7 +758,7 @@ "rev-deleted-user-contribs": "[प्रयोगकर्ताको नाम अथवा IP ठेगाना हटाइयो - योगदानहरुबाट सम्पादन लुकाइयो]", "rev-deleted-text-permission": "यस पृष्ठको पुनरावलोकन '''मेटिएकोछ'''।\nयसको पूर्ण विवरण [{{fullurl:{{#Special:Log}}/delete|पृष्ठ={{FULLPAGENAMEE}}}}को मेटिएको लगमा पाउन सकिन्छ]।", "rev-suppressed-text-permission": "यो पृष्ठ संशोधनलाई दमन गरिएको छ । \nविस्तृत जानकारी [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} दमन लग]मा पाउन सकिन्छ ।", - "rev-deleted-text-unhide": "यस पृष्ठको संशोधन '''मेटिएकोछ'''।\nयसको पूर्ण विवरण [{{fullurl:{{#Special:Log}}/delete|पृष्ठ={{FULLPAGENAMEE}}}} को मेटिएको लगमा पाउन सकिन्छ].\nयदि चाहनु भयो भनें [$1 संशोधन हेर्न] सक्नुहुन्छ।", + "rev-deleted-text-unhide": "यस पृष्ठको संशोधन '''मेटिएकोछ'''।\nयसको पूर्ण विवरण [{{fullurl:{{#Special:Log}}/delete|पृष्ठ={{FULLPAGENAMEE}}}} को मेटिएको लगमा पाउन सकिन्छ].\nयदि चाहनु भयो भने [$1 संशोधन हेर्न] सक्नुहुन्छ।", "rev-suppressed-text-unhide": "यस पृष्ठको पुनरावलोकन '''दमन''' गरिएको छ ।\nविस्तृत जानकारी [{{fullurl:{{#Special:Log}}/delete|पृष्ठ={{FULLPAGENAMEE}}}} दमन लग] पाउन सकिन्छ ।\nयदि तपाईं अगाडि बढ्न चाहनु हुन्छ भने पनि तपाईंले [$1 यि संशोधनहरू हेर्न] पाउनु हुनेछ ।", "rev-deleted-text-view": "यस पृष्ठको संशोधन '''मेटिएकोछ'''।\nतपाईंले हेर्न सक्नुहुन्छ; [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} मेटिएको लगमा विवरण पाउन सकिन्छ]।", "rev-suppressed-text-view": "यस पृष्ठको पुनरावलोकन थिचिएको छ।\nप्रबन्धकको हैसियतले हेर्न सक्नुहुन्छ; [{{fullurl:{{#Special:Log}}/delete|पृष्ठ={{FULLPAGENAMEE}}}}को थिचिएको लगमा विवरण पाउन सकिन्छ]", @@ -766,8 +766,8 @@ "rev-suppressed-no-diff": "तपाईं यसको भिन्नता हेर्न सक्नुहुन्न किनभने यसको एउटा संशोधन मेटाइएकोछ।", "rev-deleted-unhide-diff": "यस पृष्ठका पुनरावलोकनहरू मध्ये एउटा भिन्नता मेटाइएकोछ।\nयसको पूर्ण विवरण [{{fullurl:{{#Special:Log}}/delete|पृष्ठ={{FULLPAGENAMEE}}}}को मेटाइएको लगमा पाउन सकिन्छ]।\nयदि चाहनु भयो भने प्रवन्धकको हैसियतले [यो भिन्नता $1] हेर्न सक्नुहुन्छ।", "rev-suppressed-unhide-diff": "यस पृष्ठको पुनरावलोकनहरू मध्ये एउटा भिन्नता थिचिएको छ।\nयसको पूर्ण विवरण [{{fullurl:{{#Special:Log}}/suppress|पृष्ठ={{FULLPAGENAMEE}}}}को थिचिएको लगमा पाउन सकिन्छ]।\nयदि चाहनु भयो भने प्रबन्धकको हैसियतमा [यो भिन्नता $1] हेर्न सक्नुहुन्छ।", - "rev-deleted-diff-view": "यस भिन्नताका संशोधनहरुमध्येको एउटा चाहिं मेटियो। \nतपाईंले यस भिन्नतालाई हेर्न सक्नुहुन्छ; सबै विवरण [{{fullurl:{{#Special:Log}}/delete|पृष्ठ={{FULLPAGENAMEE}}}} मेटाइएको लग]मा पाउन सकिनेछ।", - "rev-suppressed-diff-view": "यस भिन्नताका संशोधनहरुमध्येको एउटा चाहिं दबाइयो। \nतपाईंले यस भिन्नतालाई हेर्न सक्नुहुन्छ; सबै विवरण [{{fullurl:{{#Special:Log}}/delete|पृष्ठ={{FULLPAGENAMEE}}}} दबाइएको लग]मा पाउन सकिनेछ।", + "rev-deleted-diff-view": "यस भिन्नताका संशोधनहरू मध्येको एउटा चाहिं मेटियो। \nतपाईंले यस भिन्नतालाई हेर्न सक्नुहुन्छ; सबै विवरण [{{fullurl:{{#Special:Log}}/delete|पृष्ठ={{FULLPAGENAMEE}}}} मेटाइएको लग]मा पाउन सकिनेछ।", + "rev-suppressed-diff-view": "यस भिन्नताका संशोधनहरू मध्येको एउटा चाहिं दबाइयो। \nतपाईंले यस भिन्नतालाई हेर्न सक्नुहुन्छ; सबै विवरण [{{fullurl:{{#Special:Log}}/delete|पृष्ठ={{FULLPAGENAMEE}}}} दबाइएको लग]मा पाउन सकिनेछ।", "rev-delundel": "दृश्यता परिवर्तन गर्ने", "rev-showdeleted": "देखाउनुहोस्", "revisiondelete": "मेटाउने/मेटाएको रद्दगर्ने पुनरावलोकनहरू", @@ -819,7 +819,7 @@ "revdelete-edit-reasonlist": "मेट्ने कार्यहरु सम्पादन गर्ने", "revdelete-offender": "संशोधन कर्ता:", "suppressionlog": "कमगरेको लग", - "suppressionlogtext": "मेट्न र रोक्नका निमित्त निम्न सुची रहेको छ जसमा प्रवन्धकबाट लुकाइएका सामग्री समेत रहेका छन।\nकृपया हाल प्रयोगमा रहेका रोक र रोकावटको सुचीका लागि [[Special:BlockList|रोक सुची]] हेर्नुहोला।", + "suppressionlogtext": "मेट्न र रोक्नका निमित्त निम्न सूची रहेको छ जसमा प्रवन्धकबाट लुकाइएका सामग्री समेत रहेका छन्।\nकृपया हाल प्रयोगमा रहेका रोक र रोकावटको सूचीका लागि [[Special:BlockList|रोक सूची]] हेर्नुहोला।", "mergehistory": "पृष्ठ इतिहासहरु मिसाउने", "mergehistory-header": "यो पृष्ठ एक स्रोत पृष्ठको इतिहास कुनै अन्य पृष्ठमा मिलाउनको लागि हो।\nसुनिश्चित गर्नुस कि यो परिवर्तन पृष्ठ इतिहासमा निरन्तरता प्रदान गर्न सकोस।", "mergehistory-box": "दुई पृष्ठहरूको पुनरावलोकन जोड्नुहोस् :", @@ -928,7 +928,7 @@ "prefs-editwatchlist-clear": "तपाईंको अवलोकनसूची मेट्नुहोस", "prefs-watchlist-days": "निगरानी सूचीमा देखाउन दिनहरू:", "prefs-watchlist-days-max": "धेरैमा $1 {{PLURAL:$1|दिन|दिन}}", - "prefs-watchlist-edits": "उच्चतम परिवर्तन संख्या बढाइएको निगरानी सूचीमा देखाउनको लागि :", + "prefs-watchlist-edits": "निगरानी सूचीमा देखाउनको लागि उच्चतम परिवर्तन संख्या:", "prefs-watchlist-edits-max": "उच्चतम संख्या : १०००", "prefs-watchlist-token": "अवलोकन सूची टोकन:", "prefs-misc": "साधारण", @@ -1172,10 +1172,10 @@ "action-userrights-interwiki": "अरु विकिका प्रयोगकर्ताहरूको प्रयोगकर्ता अधिकारलाई सम्पादन गर्ने", "action-siteadmin": "डेटाबेस बन्दगर्ने वा खोल्ने", "action-sendemail": "इमेलहरु पठाउने", - "action-editmywatchlist": "तपाईंको निगरानी सूची सम्पादन गर्नुहोस", + "action-editmywatchlist": "तपाईंको निगरानी सूची सम्पादन गर्नुहोस्", "action-viewmywatchlist": "तपाईंको निगरानी सूची हेर्नुहोस्", "action-viewmyprivateinfo": "तपाईंको व्यक्तिगत जानकारी हेर्नुहोस", - "action-editmyprivateinfo": "तपाईंको व्यक्तिगत जानकारी सम्पादन गर्नुहोस", + "action-editmyprivateinfo": "तपाईंको व्यक्तिगत जानकारी सम्पादन गर्नुहोस्", "action-editcontentmodel": "पृष्ठको सामग्री नमुना सम्पादन", "action-managechangetags": "डाटाबेसबाट ट्यागहरू बनाउने र मेटाउने", "action-applychangetags": "तपाईंको परिवर्तनसँगै ट्यागहरू लागु गर्ने", @@ -1197,7 +1197,10 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|नयाँ पृष्ठहरूको सूची]] यो पनि हेर्नुहोस्)", "recentchanges-legend-plusminus": "(''±१२३'')", "recentchanges-submit": "देखाउनुहोस्", + "rcfilters-tag-remove": "'$1' हटाउनुहोस्", "rcfilters-show-new-changes": "नवीनतम परिवर्तनहरू हेर्नुहोस्", + "rcfilters-filter-watchlistactivity-unseen-label": "नहेरिएका परिवर्तनहरू", + "rcfilters-filter-watchlistactivity-seen-label": "हेरिएका परिवर्तनहरू", "rcnotefrom": "तल $2 देखि ($1 सम्म) {{PLURAL:$5|भएका परिवर्तनहरू देखाइएको छ|भएका परिवर्तनहरू देखाइन्छ}}।", "rclistfrom": "$3 $2 देखिका नयाँ परिवर्तनहरू देखाउनु", "rcshowhideminor": "$1 सामान्य सम्पादन", @@ -1220,7 +1223,7 @@ "rcshowhidemine-hide": "लुकाउनुहोस्", "rcshowhidecategorization-show": "देखाउनुहोस्", "rcshowhidecategorization-hide": "लुकाउनुहोस्", - "rclinks": "पछिल्ला $1 परिवर्तनहरू पछिल्ला $2 दिनहरूमा", + "rclinks": "पछिल्ला $2 दिनहरूमा भएका पछिल्ला $1 परिवर्तनहरू देखाउनुहोस्", "diff": "भिन्न", "hist": "इतिहास", "hide": "लुकाउनुहोस्", @@ -1275,7 +1278,7 @@ "badfilename": "फाइलको नाम \"$1\"मा सारियो।", "filetype-mime-mismatch": "\".$1\" फाइल विस्तार पाइएको फाइल ($2)को MIME प्रकारसित मेल खाँदैन।", "filetype-badmime": "MIME \"$1\" प्रकारको फाइल उर्ध्वभरण गर्ने अनुमति छैन।", - "filetype-bad-ie-mime": "यो फाइल उर्ध्वभरण गर्न सकिएन किनभनें '''इण्टरनेट एक्स्प्लोरर'''ले यस फाइललाई \"$1\" बतायो जसलाई संभावित खतरनाक प्रकारको फाइल मानियो।", + "filetype-bad-ie-mime": "यो फाइल उर्ध्वभरण गर्न सकिएन किन भने '''इण्टरनेट एक्स्प्लोरर'''ले यस फाइललाई \"$1\" बतायो जसलाई सम्भावित खतरनाक प्रकारको फाइल मानियो।", "filetype-unwanted-type": "\".$1\" फाइल नचाहिने प्रकारको फाइल हो।\nमुख्यतया {{PLURAL:$3|फाइलको प्रकार हो|फाइलका प्रकार हुन्}} $2।", "filetype-banned-type": "\".$1\" फाइल {{PLURAL:$4|प्रकार|प्रकारहरू}} को अनुमति छैन।\nफाइल प्रकार {{PLURAL:$3|जसको|जुनको}} अनुमति छ: $2।", "filetype-missing": "फाइलको एक्स्टेन्शन छैन (उदा- \".jpg\")।", @@ -1515,7 +1518,7 @@ "randompage-nopages": "{{PLURAL:$2| $1 नाम भएको कुनै पृष्ट छैन|$1 नाम भएका कुनै पृष्टहरु छैनन्}}", "randomincategory": "श्रेणीमा रहेको अनियमित पृष्ठ", "randomincategory-invalidcategory": "''$1'' वैध श्रेणी नाम होइन ।", - "randomincategory-nopages": "यस [[:Category:$1|$1]] श्रेणीमा कुनै पनि पृष्ठ छैन् ।", + "randomincategory-nopages": "यस [[:Category:$1|$1]] श्रेणीमा कुनै पनि पृष्ठ छैन ।", "randomincategory-category": "श्रेणी:", "randomincategory-legend": "श्रेणीमा अनियमित पृष्ठ", "randomincategory-submit": "जाउ", @@ -1525,7 +1528,7 @@ "statistics-header-pages": "पृष्ठहरूको तथ्याङ्क", "statistics-header-edits": "सम्पादनहरूको तथ्याङ्क", "statistics-header-users": "प्रयोगकर्ता तथ्याङ्कहरू", - "statistics-header-hooks": "अन्य तथ्याङ्कहरु", + "statistics-header-hooks": "अन्य तथ्याङ्कहरू", "statistics-articles": "सामग्री पृष्ठहरू", "statistics-pages": "पृष्ठहरू", "statistics-pages-desc": "विकिका सबै पृष्ठहरू, वार्तापका पृष्ठहरूसमेत, रिडाइरेक्ट, इत्यादि ।", @@ -1654,7 +1657,7 @@ "booksources-text": "तल दिइएको सूची नयाँ तथा पूराना किताब बेच्ने लगायत तपाईंले खोज्नु भएको किताबका बारेमा थप जानकारी भएका अन्य साइटका लिंकहरू हुन् ।", "booksources-invalid-isbn": "यो आइएसबीएन सहि छैन; मूल स्रोतबाट नक्कल गर्दा भएको त्रुटिको जाँच गर्नुहोस।", "specialloguserlabel": "निष्पादक:", - "speciallogtitlelabel": "लक्ष्य (शीर्षक वा प्रयोगकर्ता)", + "speciallogtitlelabel": "लक्ष्य (शीर्षक वा {{ns:user}}:प्रयोगकर्ताका लागि प्रयोगकर्ता नाम)", "log": "लगहरू", "logeventslist-submit": "देखाउनुहोस्", "all-logs-page": "सबै सार्वजनिक लगहरू", @@ -1860,7 +1863,7 @@ "revertpage-nouser": "(सदस्य नाम हटाइएको छ) को सम्पादनहरूलाई हटाएर {{GENDER:$1|[[User:$1|$1]]}} ले अन्तिम अवतरणमा पूर्ववत गर्यो।", "rollback-success": "$1द्वारा उल्टाइएका सम्पादनहरू;\nपछिल्लो संशोधनमा $2द्वारा परिवर्तन गरि पुनः फर्काइएको।", "sessionfailure-title": "सत्र त्रुटी", - "sessionfailure": "यस्तो लागदैछ कि तपाईंको लगइन सत्रसँग कुनै समस्या छ। सत्र अपहरणबाट बचाउन को लागि सावधानीको रूपमा तपाईंको यो क्रियाकलाप रद्द गरिएको छ। कृपया पछाडी जानुहोस र पृष्ठलाई पुनः लोड गर्नुहोस, अनि फेरी प्रयास गर्नुहोला।", + "sessionfailure": "यस्तो लाग्दैछ कि तपाईंको लगइन सत्रसँग कुनै समस्या छ। सत्र अपहरणबाट बचाउन को लागि सावधानीको रूपमा तपाईंको यो क्रियाकलाप रद्द गरिएको छ। कृपया पछाडी जानुहोस र पृष्ठलाई पुनः लोड गर्नुहोस्, अनि फेरी प्रयास गर्नुहोला।", "changecontentmodel-title-label": "पाना शीर्षक", "changecontentmodel-reason-label": "कारण:", "logentry-contentmodel-change-revertlink": "पहिलेको रुपमा फर्काउने", @@ -2026,7 +2029,7 @@ "ipbother": "अरु समय:", "ipboptions": "२ घण्टाहरू:2 hours,१ दिन :1 day,३ दिनहरू:3 days,१ हप्ता:1 week,२ हप्ताहरू:2 weeks,१ महिना:1 month,३ महिनाहरू:3 months,६ महिनाहरू:6 months,१ वर्ष:1 year,अनगिन्ती:infinite", "ipbhidename": "प्रयोगकर्ताको नाम सम्पादनबाट र सूचीबाट हटाउने", - "ipbwatchuser": "यो प्रयोगकर्ताको प्रयपोगकर्ता र वार्तलाप पृष्ठ हेर्नुहोस्", + "ipbwatchuser": "यो प्रयोगकर्ताको प्रयपोगकर्ता पृष्ठ र वार्तालाप पृष्ठ हेर्नुहोस्", "ipb-disableusertalk": "यस प्रयोगकर्तालाई निषेधित समयमा आफ्नै वार्तालाप पृष्ठ सम्पादन गर्न नदिने", "ipb-change-block": "निम्म स्थितीमा प्रयोगकर्तालाई पुन: निषेध गर्ने", "ipb-confirm": "रोक सुनिश्चित गर्ने", @@ -2063,7 +2066,7 @@ "blocklist-reason": "कारण", "ipblocklist-submit": "खोज्ने", "ipblocklist-localblock": "स्थानीय रोक", - "ipblocklist-otherblocks": "अन्य {{PLURAL:$1|रोक|रोकहरु}}", + "ipblocklist-otherblocks": "अन्य {{PLURAL:$1|रोक|रोकहरू}}", "infiniteblock": "अनिश्चित काल", "expiringblock": "$1 को दिन $2 मा सकिनेछ", "anononlyblock": "अज्ञातहरु मात्र", @@ -2084,7 +2087,7 @@ "blocklog-showsuppresslog": "यो प्रयोगकर्तालाई पहिला रोक लगाइएको र लुकेको थियो ।\nलु्काइएको लग सन्दर्भको निम्ति तल दिइन्छ:", "blocklogentry": " [[$1]]लाई $2 $3 समयसम्म को लागि निषेध गरिएको छ", "reblock-logentry": "$2 $3 मा सकिने गरि [[$1]] को निषेध स्थिति परिवर्तन गरिएको छ ।", - "blocklogtext": "यो लग प्रयोगकर्ताको रोकावट र फुकुवा कार्यहरुको हो।\nस्वतः रोकिएका आईपी ठेगानाहरू सूचीमा छैनन्।\nवर्तमानका चालू रोक र प्रतिबन्धहरूको सूचीकोलागि हेर्नुहोस् [[Special:BlockList|आईपी निषेध सूची]]।", + "blocklogtext": "यो लग प्रयोगकर्ताको रोकावट र फुकुवा कार्यहरूको हो।\nस्वतः रोकिएका आईपी ठेगानाहरू सूचीमा छैनन्।\nवर्तमानका चालू रोक र प्रतिबन्धहरूको सूचीकोलागि हेर्नुहोस् [[Special:BlockList|आईपी निषेध सूची]]।", "unblocklogentry": "$1 लाई अनिषेधित गरियो", "block-log-flags-anononly": "अज्ञात प्रयोगकर्ताहरू मात्र", "block-log-flags-nocreate": "खाता खोल्न निस्क्रिय पारिएको", @@ -2099,7 +2102,7 @@ "ipb_hide_invalid": "यो खातालाई दबाउन सकिने छैन; किन कि यसका धेरै {{PLURAL:$1|एक सम्पादन|$1 सम्पादनहरू}} छन्।", "ipb_already_blocked": "\"$1\"लाई पहिले नै रोक लगाइएको छ", "ipb-needreblock": "$1लाई अघिबाट नैं प्रतिबन्ध लगाइएकोछ।\nके तपाईं यसको व्यवस्थालाई परिवर्तन गर्न चाहनुहुन्छ?", - "ipb-otherblocks-header": "अरु {{PLURAL:$1|रोक|रोकहरु}}", + "ipb-otherblocks-header": "अरु {{PLURAL:$1|रोक|रोकहरू}}", "unblock-hideuser": "यस प्रयोगकर्तालाई रोक फुकुवा गर्न सक्नु हुन्न, यस प्रयोगकर्ताको नाम लुकेको छ।", "ipb_cant_unblock": "त्रुटी: रोक आइडी $1 भेटिएन। या यो पहिले नै खोलिइसकेको हुनसक्छ ।", "ipb_blocked_as_range": "त्रुटी: IP ठेगाना $1 is लाई सिधै रोकलगाइएको छैन र यस रोकलाई खोल्न मिल्दैन\nयो एक रेन्ज रोक $2, को अन्तर्गत रहेको छ जसलाई रोक खोल्न मिल्छ ।", @@ -2116,7 +2119,7 @@ "ipbnounblockself": "तपाईं आफैले आफैलाई रोक खुलाउन सक्नुहुन्न ।", "lockdb": "डेटाबेस ताल्चामार्ने", "unlockdb": "डेटाबेसको ताल्चा खोल्ने", - "lockdbtext": "डेटाबेसमा ताला लगाउनाले सबै प्रयोगकर्ता पृष्ठ सम्पादन, आफ्नो अभिरूचीमा परिवर्तन, आफ्नो ध्यानसूचीमा सम्पादन, र अन्य वस्तु जसको लागि डेटाबेसमा परिवर्तन गरें हुन्छ, त्यसबाट वन्चित हुनेछ। कृपया यो सुनिश्चित गर्नुहोस् कि तपाईं यो गर्न चाहनुहुन्छ, र तपाईं रक्षण पश्चात ताला खोल्नुहुन्छ ।", + "lockdbtext": "डेटाबेसमा ताला लगाउनाले सबै प्रयोगकर्ता पृष्ठ सम्पादन, आफ्नो अभिरूचीमा परिवर्तन, आफ्नो ध्यानसूचीमा सम्पादन, र अन्य वस्तु जसको लागि डेटाबेसमा परिवर्तन गर्नु पर्ने हुन्छ, त्यसबाट वन्चित हुनेछ। कृपया यो सुनिश्चित गर्नुहोस् कि तपाईं यो गर्न चाहनुहुन्छ, र तपाईं रक्षण पश्चात ताला खोल्नुहुन्छ ।", "unlockdbtext": "डेटाबेसको ताला खोल्नका लागि सबै प्रयोगकर्ता पृष्ठ सम्पादन, आफ्नो अभिरूचीहरूमा परिवर्तन, आफ्नो ध्यानसूचीमा सम्पादन, र अन्य वस्तु जसको लागि डेटाबेसमा परिवर्तन गर्नु पर्छ, को सक्षमतालाई पुनर्स्थापित गर्नछ। कृपया यो सुनिश्चित गर्नुस कि तपाईं यो गर्न चाहनुहुन्छ।", "lockconfirm": "हो, म साँच्चिकै डेटाबेस थुन्न चाहन्छु।", "unlockconfirm": "हो , म साँच्चै डेटाबेसको ताल्चा खोल्न चाहन्छु ।", @@ -2264,7 +2267,7 @@ "import-nonewrevisions": "सबै पुनरावलोकनहरू पहिले नै आयात गरिएको हो।", "xml-error-string": "$1 पंक्ति $2 , हरफ $3 (बाइट $4): $5", "import-upload": "XML डेटा अपलोड गर्ने", - "import-token-mismatch": "सत्र जानकारी नष्ट भयो\nकृपया पुन: प्रयास गर्नुहोस्।", + "import-token-mismatch": "तपाईं बाहिरी सक्नुभएको हुनसक्छ। '''तपाईं लगइन हुनुहुन्छ भनी जाँच गरी पुनः प्रयास गर्नुहोस्'''। यदि अझै काम गरेन भने [[Special:UserLogout|लग आउट]] गरी लगइन गर्नुहोस् र यसका साथै तपाईंको ब्राउजरले यस वेबसाइटबाट कुकीजलाई समर्थनको जाँच गर्नुहोस्।", "import-invalid-interwiki": "खुलाइएको विकिबाट आयात गर्न सकिएन", "import-error-edit": "तपाईंलाई सम्पादन गर्ने अनुमति नभएको पृष्ठ \"$1\" आयात गरिएन ।", "import-error-create": "तपाईंलाई नयाँ बनाउने अनुमति नभएको पृष्ठ \"$1\" आयात गरिएन ।", @@ -2272,7 +2275,7 @@ "import-error-special": "पृष्ठ \"$1\" आयात गर्न सकिएन किनभने यो एउटा यस्तो विशेष नामस्थान अन्तर्गत आउँछ जसमा पृष्ठ बनाउन सकिंदैन।", "import-error-invalid": "पृष्ठ \"$1\" आयात गर्न सकिएन किनभने यसको आयात पश्चात जुन नाम हुन्थ्यो त्यो यस विकिमा मान्य छैन।", "import-error-unserialize": "पृष्ठ \"$1\" को संशोधन $2 लाई क्रमबाट हटाउन सकिएन। संशोधनको बारेमा भनिएको छ कि सामग्री नमूना $3 लाई क्रम $4 को रूप प्रयोगमा ल्याइएको थियो।", - "import-error-bad-location": "संशोधन $2 जसमा सामग्री नमूनाहरू $3 मा प्रयोग गरिएको छ, लाई यस विकिमा \"$1\" मा सङ्ग्रह गर्न सकिंदैन, किनकि त्यो नमूना यस पृष्ठको नमूनहरू भन्दा भिन्न छ।", + "import-error-bad-location": "संशोधन $2 जसमा सामग्री नमूनाहरू $3 मा प्रयोग गरिएको छ, लाई यस विकिमा \"$1\" मा सङ्ग्रह गर्न सकिंदैन, किनकि त्यो नमूना यस पृष्ठको नमूनाहरू भन्दा भिन्न छ।", "import-options-wrong": "गलत {{PLURAL:$2|विकल्प|विकल्पहरू}}: $1", "import-rootpage-invalid": "दिइएको उपसर्ग पृष्ठ शीर्षक अमान्य छ।", "import-rootpage-nosubpage": "दिइएको उपसर्ग पृष्ठ \"$1\" को नामस्थानमा उप-पृष्ठ बनाउन सकिंदैन।", @@ -2321,7 +2324,7 @@ "tooltip-feed-rss": "यो पृष्ठको लागि RSS फिड", "tooltip-feed-atom": "यो पृष्ठको लागि एटम फिड", "tooltip-t-contributions": "{{GENDER:$1|यस प्रयोगकर्ता}}का योगदानहरूको सूची हेर्नुहोस्", - "tooltip-t-emailuser": "यो प्रयोगकर्तालाई इमेल पठाउनुहोस्", + "tooltip-t-emailuser": "{{GENDER:$1|यस प्रयोगकर्ता}}लाई इमेल पठाउनुहोस्", "tooltip-t-info": "यस पृष्ठको बारेमा थप जानकारी", "tooltip-t-upload": "फाइल अपलोड गर्ने", "tooltip-t-specialpages": "सबै विशेष पृष्ठहरूको सूची", @@ -2365,7 +2368,7 @@ "creditspage": "क्रेडिट पृष्ठ", "nocredits": "यो पृष्ठको लागि कुनै श्रेय उपलब्ध छैन ।", "spamprotectiontitle": "स्प्याम सुरक्षा फिल्टर", - "spamprotectiontext": "तपाईंले जुन पन्ना लाइ सेभ गर्न चाहनुहुन्थ्यो त्यसलाई रद्दी छननी कार्यक्रमले रोक लगाएको छ।\nयो संभवतः कुनै कर्पसूचित बाहिरी स्थल संग सम्बन्धित कडी को कारणले भएको हुन सक्छ।", + "spamprotectiontext": "तपाईंले जुन पृष्ठलाई सेभ गर्न चाहनुहुन्थ्यो त्यसलाई रद्दी छननी कार्यक्रमले रोक लगाएको छ।\nयो संभवतः कुनै कर्पसूचित बाहिरी स्थलसँग सम्बन्धित लिङ्कको कारणले भएको हुन सक्छ।", "spamprotectionmatch": "निम्न पाठले हाम्रो स्प्प्याम फिल्टर : $1 घच्घच्यायो", "spambot_username": "MediaWiki स्पाम सर-सफाइ", "spam_reverting": "$1 मा कडीहरू नभएका पुरानो अवतरणमा पुनर्स्थापित गर्दै", @@ -2871,8 +2874,8 @@ "confirmemail_loggedin": "तपाईंको इमेल ठेगाना प्रमाणित भएको छ।", "confirmemail_subject": "{{SITENAME}} ई मेलl ठेगानाको पुष्टि", "confirmemail_body": "कसैले, सायद तपाईंले, आई पी ठेगाना $1बाट,\n{{SITENAME}}मा एउटा खाता \"$2\"को नाममा यस ई मेल ठेगानामा पञ्जीकरण गरेकोछ।\n\nयो खाता साँच्ची नैं तपाईंको हो भनेर पुष्टि गर्न र {{SITENAME}}मा यो ई मेलका सुविधाहरु सक्रिय गर्न तपाईंको ब्राउजरमा यो लिंक खोल्नुहोस्:\n\n$3 \n\nयदि त्यो खाता तपाईंले पञ्जीकरण गर्नु भएको *होइन* भनें, ई मेलको पुष्टिकरण रद्द गर्न यो लिंक पहिल्याउनुहोस्:\n\n$5\n\nयो पुष्टिकरणको समय $4 मा सकिनेछ।", - "confirmemail_body_changed": "कसैले, सायद तपाईंले, आई पी ठेगाना $1बाट,\n{{SITENAME}}मा \"$2\" नामको खाताको ई मेल ठेगाना यस ठेगानामा परिवर्तन गरेकोछ।\n\nयो खाता साँच्ची नैं तपाईंको हो भनेर पुष्टि गर्न र {{SITENAME}}मा यो ई मेलका सुविधाहरु पुनः सक्रिय गर्न तपाईंको ब्राउजरमा यो लिंक खोल्नुहोस्:\n\n$3 \n\nयदि त्यो खाता तपाईंको *होइन* भनें, ई मेल ठेगानाको पुष्टिकरण रद्द गर्न यो लिंक पहिल्याउनुहोस्:\n\n$5\n\nयो पुष्टिकरणको समय $4 मा सकिनेछ।", - "confirmemail_body_set": "कसैले, सायद तपाईंले, आईपी ठेगाना $1बाट,\n{{SITENAME}}मा \"$2\" नामको खाताको ईमेल ठेगाना यस ठेगानासित जोडेको छ।\n\nयो खाता साँच्ची नैं तपाईंको हो भनेर पुष्टि गर्न र {{SITENAME}}मा यो ईमेलका सुविधाहरु पुनः सक्रिय गर्न तपाईंको ब्राउजरमा यो लिङ्क खोल्नुहोस्:\n\n$3 \n\nयदि त्यो खाता तपाईंको *होइन* भनें, ईमेल ठेगानाको पुष्टिकरण रद्द गर्न यो लिङ्क पहिल्याउनुहोस्:\n\n$5\n\nयो पुष्टिकरणको समय $4 मा सकिनेछ।", + "confirmemail_body_changed": "कसैले, सायद तपाईंले, आई पी ठेगाना $1बाट,\n{{SITENAME}}मा \"$2\" नामको खाताको ई मेल ठेगाना यस ठेगानामा परिवर्तन गरेकोछ।\n\nयो खाता साँच्ची नैं तपाईंको हो भनेर पुष्टि गर्न र {{SITENAME}}मा यो ई मेलका सुविधाहरू पुनः सक्रिय गर्न तपाईंको ब्राउजरमा यो लिंक खोल्नुहोस्:\n\n$3 \n\nयदि त्यो खाता तपाईंको *होइन* भने, ई मेल ठेगानाको पुष्टिकरण रद्द गर्न यो लिंक पहिल्याउनुहोस्:\n\n$5\n\nयो पुष्टिकरणको समय $4 मा सकिनेछ।", + "confirmemail_body_set": "कसैले, सायद तपाईंले, आईपी ठेगाना $1बाट,\n{{SITENAME}}मा \"$2\" नामको खाताको ईमेल ठेगाना यस ठेगानासित जोडेको छ।\n\nयो खाता साँच्ची नैं तपाईंको हो भनेर पुष्टि गर्न र {{SITENAME}}मा यो ईमेलका सुविधाहरू पुनः सक्रिय गर्न तपाईंको ब्राउजरमा यो लिङ्क खोल्नुहोस्:\n\n$3 \n\nयदि त्यो खाता तपाईंको *होइन* भने, ईमेल ठेगानाको पुष्टिकरण रद्द गर्न यो लिङ्क पहिल्याउनुहोस्:\n\n$5\n\nयो पुष्टिकरणको समय $4 मा सकिनेछ।", "confirmemail_invalidated": "ई मेल ठेगाना रद्द भएको पुष्टिकरण", "invalidateemail": "इमेल यकिन कार्य रद्द गर्नुहोस्", "scarytranscludedisabled": "[अन्तरविकि दस्तावेज अन्तरकरण निस्क्रिय]", @@ -3098,7 +3101,7 @@ "tag-filter-submit": "फिल्टर", "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|ट्याग|ट्यागहरू}}]]: $2)", "tags-title": "ट्यागहरु", - "tags-intro": "यो पृष्ठले पुच्छरहरु सुचीकृत गर्छ जससँग यो सफ्टवेयरले चिनो लगाउन र सम्पादन गर्न सक्छ र तिनका अर्थहरु ।", + "tags-intro": "यो पृष्ठले ट्यागहरू सूचीकृत गर्छ जससँग यो सफ्टवेयरले चिनो लगाउन र सम्पादन गर्न सक्छ र तिनका अर्थहरू ।", "tags-tag": "आन्तरिक ट्याग नाम", "tags-display-header": "परिवर्तन सूचीहरूमाथि झलक", "tags-description-header": "पूर्ण अर्थको वर्णन", @@ -3214,7 +3217,7 @@ "htmlform-cloner-delete": "हटाउने", "htmlform-cloner-required": "कम्तिमा एउटामा आवश्यक छ ।", "logentry-delete-delete": "$1 द्वारा पृष्ठ $3 {{GENDER:$2|मेटाइयो}}", - "logentry-delete-restore": "$3 पृष्ठ $1ले {{GENDER:$2|पुनर्स्थापित}} गरेको हो", + "logentry-delete-restore": "$1 {{GENDER:$2|पुनर्स्थापित}} पृष्ठ $3 ($4)", "logentry-delete-event": "$1 ले $3 पृष्ठको लग {{PLURAL:$5|प्रविष्टि|प्रविष्टिहरू}}को दृश्यता {{GENDER:$2|परिवर्तन गर्यो}}: $4", "logentry-delete-revision": "$1 ले $3 पृष्ठको {{PLURAL:$5|एक अवतरण|$5 अवतरणहरू}}को दृश्यता {{GENDER:$2|परिवर्तन गर्यो}}: $4", "logentry-delete-event-legacy": "$1 ले $3 पृष्ठमा लग क्रियाहरूको दृश्यता {{GENDER:$2|परिवर्तन गर्यो}}", @@ -3407,5 +3410,6 @@ "special-characters-title-emdash": "इएम ड्यास", "special-characters-title-minus": "घटाउने चिन्ह", "mw-widgets-titleinput-description-new-page": "हालसम्म पृष्ठ उपलब्ध छैन्", - "mw-widgets-titleinput-description-redirect": "$1 मा जाने" + "mw-widgets-titleinput-description-redirect": "$1 मा जाने", + "randomrootpage": "यादृच्छिक शीर्ष पृष्ठ" } diff --git a/languages/i18n/nl.json b/languages/i18n/nl.json index 8b59ac186b..56b0a915c6 100644 --- a/languages/i18n/nl.json +++ b/languages/i18n/nl.json @@ -86,7 +86,8 @@ "QZanden", "Huhbakker", "Jos1950", - "Ooswesthoesbes" + "Ooswesthoesbes", + "MarcoSwart" ] }, "tog-underline": "Verwijzingen onderstrepen:", @@ -1357,6 +1358,7 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (zie ook de [[Special:NewPages|lijst met nieuwe pagina's]])", "recentchanges-legend-plusminus": "(±123)", "recentchanges-submit": "Weergeven", + "rcfilters-tag-remove": "Verwijder '$1'", "rcfilters-legend-heading": "Lijst met afkortingen:", "rcfilters-other-review-tools": "Andere controlehulpmiddelen", "rcfilters-group-results-by-page": "Resultaten per pagina groeperen", @@ -1391,14 +1393,14 @@ "rcfilters-empty-filter": "Geen actieve filters. Alle bijdragen worden weergeven.", "rcfilters-filterlist-title": "Filters", "rcfilters-filterlist-whatsthis": "Hoe werkt dit?", - "rcfilters-filterlist-feedbacklink": "Geef terugkoppeling op de nieuwe (beta)filters", + "rcfilters-filterlist-feedbacklink": "Laat ons weten wat u denkt over deze (nieuwe) filterhulpmiddelen", "rcfilters-highlightbutton-title": "Resultaten markeren", "rcfilters-highlightmenu-title": "Kies een kleur", "rcfilters-highlightmenu-help": "Selecteer een kleur om deze eigenschap uit te lichten", "rcfilters-filterlist-noresults": "Geen filters gevonden", "rcfilters-noresults-conflict": "Geen resultaten gevonden omdat de zoekcriteria met elkaar conflicteren", "rcfilters-state-message-subset": "Dit filter heeft geen effect omdat de resultaten ook worden gefilterd door {{PLURAL:$2|het|de}} bredere {{PLURAL:$2|filter|filters}} (probeer ze te markeren om ze te onderscheiden): $1", - "rcfilters-state-message-fullcoverage": "Het selecteren van alle filters in deze groep is hetzelfde als geen filter selecteren, waardoor dit filter geen effect heeft. De groep bevat: $1", + "rcfilters-state-message-fullcoverage": "Het selecteren van alle filters in deze groep doet hetzelfde als geen filter selecteren, waardoor dit filter geen effect heeft. De groep bevat: $1", "rcfilters-filtergroup-authorship": "Auteur van de bijdragen", "rcfilters-filter-editsbyself-label": "Uw eigen wijzigingen", "rcfilters-filter-editsbyself-description": "Uw eigen bijdragen.", @@ -1437,6 +1439,11 @@ "rcfilters-filter-watchlist-watchednew-description": "Wijzigingen aan pagina's die op uw volglijst staan, die u nog niet hebt bezocht sinds de wijziging.", "rcfilters-filter-watchlist-notwatched-label": "Niet op de volglijst", "rcfilters-filter-watchlist-notwatched-description": "Alles behalve wijzigingen aan pagina's die op uw volglijst staan.", + "rcfilters-filtergroup-watchlistactivity": "Volglijst activiteit", + "rcfilters-filter-watchlistactivity-unseen-label": "Onbezochte wijzigingen", + "rcfilters-filter-watchlistactivity-unseen-description": "Wijzigingen aan pagina's die u nog niet hebt bezocht sinds de wijziging.", + "rcfilters-filter-watchlistactivity-seen-label": "Bezochte wijzigingen", + "rcfilters-filter-watchlistactivity-seen-description": "Wijzingingen aan pagina's die u hebt bezocht sinds de wijziging.", "rcfilters-filtergroup-changetype": "Soort wijziging", "rcfilters-filter-pageedits-label": "Paginabewerkingen", "rcfilters-filter-pageedits-description": "Wijzigingen aan de wiki inhoud, discussies, categorie beschrijvingen…", @@ -1466,6 +1473,8 @@ "rcfilters-liveupdates-button": "Liveupdates", "rcfilters-liveupdates-button-title-on": "Live updates uitschakelen", "rcfilters-liveupdates-button-title-off": "Toon nieuwe wijzigingen op het moment dat ze gebeuren", + "rcfilters-watchlist-markseen-button": "Alle wijzigingen markeren als bezocht.", + "rcfilters-watchlist-edit-watchlist-button": "Bewerk uw volglijst", "rcnotefrom": "Wijzigingen sinds $3 om $4 (maximaal $1 {{PLURAL:$1|wijziging|wijzigingen}}).", "rclistfromreset": "Datum selectie opnieuw instellen", "rclistfrom": "Wijzigingen bekijken vanaf $3 $2", @@ -2150,7 +2159,7 @@ "unwatchthispage": "Niet meer volgen", "notanarticle": "Is geen pagina", "notvisiblerev": "De laatste versie van een andere gebruiker is verwijderd", - "watchlist-details": "Er {{PLURAL:$1|staat één pagina|staan $1 pagina's}} op uw volglijst. Overlegpagina's worden niet meegeteld.", + "watchlist-details": "Er {{PLURAL:$1|staat één pagina|staan $1 pagina's}} op uw volglijst (inclusief overlegpagina's).", "wlheader-enotif": "U wordt per e-mail gewaarschuwd.", "wlheader-showupdated": "Pagina's die zijn bewerkt sinds uw laatste bezoek worden '''vet''' weergegeven.", "wlnote": "Hieronder {{PLURAL:$1|staat de laaste wijziging|staan de laatste $1 wijzigingen}} in {{PLURAL:$2|het laatste uur|de laatste $2 uur}} per $3 om $4.", @@ -3988,7 +3997,7 @@ "undelete-cantedit": "U kunt deze pagina niet terug plaatsen omdat u niet het recht hebt om deze pagina te bewerken.", "undelete-cantcreate": "U kunt deze pagina niet terugplaatsen omdat er geen bestaande pagina met deze naam is en u geen toestemming hebt om deze pagina aan te maken.", "pagedata-title": "Pagina data", - "pagedata-text": "Deze pagina biedt een data interface voor pagina's. Geef een pagina titel op door deze in de URL te plaatsen, met behulp van de deelpagina syntax.\n* De toegepaste inhoudsindeling wordt gebaseerd op de door de client meegestuurde Accept Header. Dit betekent dat de pagina'data wordt aangeleverd in het formaat waaraan de client de voorkeur geeft.", + "pagedata-text": "Deze pagina biedt een data-interface voor pagina's. Geef een paginatitel op door deze in de URL op te nemen, op de manier van een subpagina.\n* De inhoud wordt afgestemd op de door de client meegestuurde Accept Header. Dit betekent dat de gegevens voor de pagina worden aangeboden in het voorkeursformaat van uw client.", "pagedata-not-acceptable": "Er is geen overeenkomende indeling gevonden. Ondersteunde MIME-typen: $1", "pagedata-bad-title": "Ongeldige titel: $1." } diff --git a/languages/i18n/nn.json b/languages/i18n/nn.json index 416b5878c5..e2bb1786a3 100644 --- a/languages/i18n/nn.json +++ b/languages/i18n/nn.json @@ -507,7 +507,7 @@ "newpassword": "Nytt passord", "retypenew": "Nytt passord om att", "resetpass_submit": "Oppgje passord og logg inn", - "changepassword-success": "Passordet ditt er no nullstilt! Loggar inn...", + "changepassword-success": "Passordet ditt er no endra!", "resetpass_forbidden": "Passord kan ikkje endrast", "resetpass-no-info": "Du må vera innlogga for å få direktetilgang til denne sida.", "resetpass-submit-loggedin": "Endra passord", @@ -530,7 +530,7 @@ "passwordreset-emailtext-user": "Brukaren $1 på {{SITENAME}} bad om ei påminning for kontodetaljane dine for {{SITENAME}} ($4). {{PLURAL:$3|Den fylgjande brukarkontoen|Dei fylgjande brukarkontoane}} er assosierte med denne e-postadressa:\n\n$2\n\n{{PLURAL:$3|Dette mellombels passordet|Desse mellombels passorda}} vil verta ugilde om {{PLURAL:$5|éin dag|$5 dagar}}.\nDu bør logga inn og velja eit nytt passord no. Om nokon andre enn deg bad om denne påminninga, eller du har kome i hug det opphavlege passordet og ikkje lenger ynskjer å endra det, kan du sjå bort frå denne meldinga og halda fram med å nytta det gamle passordet ditt.", "passwordreset-emailelement": "↓Brukarnamn: \n$1\n\nMellombels passord: \n$2", "passwordreset-emailsentemail": "Ein e-post for attendestilling av passord er vorten send", - "changeemail": "↓Endre e-postadresse", + "changeemail": "Endre eller fjern e-postadresse", "changeemail-header": "↓Endre kontoen si e-postadresse", "changeemail-no-info": "↓Du må vera pålogga for å få tilgang direkte til denne sida.", "changeemail-oldemail": "↓Noverande e-postadresse:", @@ -558,7 +558,7 @@ "sig_tip": "Signaturen din med tidsstempel", "hr_tip": "Vassrett line", "summary": "Samandrag:", - "subject": "Emne/overskrift:", + "subject": "Emne:", "minoredit": "Småplukk", "watchthis": "Overvak sida", "savearticle": "Lagra sida", @@ -709,7 +709,7 @@ "page_last": "siste", "histlegend": "Merk av for dei versjonane du vil samanlikne og trykk [Enter] eller klikk på knappen nedst på sida.
Forklaring: (no) = skilnad frå den noverande versjonen, (førre) = skilnad frå den førre versjonen, s = småplukk", "history-fieldset-title": "Søk etter versjonar", - "history-show-deleted": "Berre sletta", + "history-show-deleted": "Berre sletta versjonar", "histfirst": "eldste", "histlast": "nyaste", "historysize": "({{PLURAL:$1|1 byte|$1 byte}})", @@ -810,7 +810,7 @@ "lineno": "Line $1:", "compareselectedversions": "Samanlikn valde versjonar", "showhideselectedversions": "Vis/løyn valde versjonar", - "editundo": "fjern endringa", + "editundo": "fjern", "diff-empty": "(Ingen skilnad)", "diff-multi-sameuser": "({{PLURAL:$1|Éin mellomversjon|$1 mellomversjonar}} av den same brukaren er ikkje {{PLURAL:$1|vist|viste}})", "diff-multi-otherusers": "({{PLURAL:$1|Éin mellomliggjande versjon|$1 mellomliggjande versjonar}} av {{PLURAL:$2|éin annan brukar|$2 brukarar}} er ikkje {{PLURAL:$1|vist|viste}})", @@ -881,7 +881,7 @@ "prefs-watchlist-days-max": "Høgst {{PLURAL:$1|éin dag|$1 dagar}}", "prefs-watchlist-edits": "Talet på endringar som viser i den utvida overvakingslista:", "prefs-watchlist-edits-max": "Høgst 1000", - "prefs-watchlist-token": "Emne på overvakingslista:", + "prefs-watchlist-token": "Nykel for overvakingslista:", "prefs-misc": "Andre", "prefs-resetpass": "Endra passord", "prefs-changeemail": "↓Endre e-postadresse", @@ -938,7 +938,7 @@ "badsig": "Ugyldig råsignatur, sjekk HTML-kodinga.", "badsiglength": "Signaturen din er for lang. Han må vere under {{PLURAL:$1|eitt teikn|$1 teikn}}.", "yourgender": "Korleis ynskjer du å skildrast?", - "gender-unknown": "Eg ynskjer ikkje å spesifisera", + "gender-unknown": "Programvara vil omtala deg med med kjønnsnøytrale ord der relevant og mogeleg", "gender-male": "Han endrar wikisider", "gender-female": "Ho endrar wikisider", "prefs-help-gender": "Det er valfritt å oppgje dette.\nProgramvara brukar denne verdien for å bruka rett grammatisk kjønn når ho rettar seg til deg eller nemner deg for andre.\nDenne informasjonen vil vera offentleg.", @@ -978,6 +978,10 @@ "userrights-nodatabase": "Databasen $1 finst ikkje eller er ikkje lokal.", "userrights-changeable-col": "Grupper du kan endre", "userrights-unchangeable-col": "Grupper du ikkje kan endre", + "userrights-expiry-current": "Endar $1", + "userrights-expiry-none": "Aldri", + "userrights-expiry-othertime": "Anna tid:", + "userrights-expiry-options": "1 dag:1 day,1 veke:1 week,1 månad:1 month,3 månader:3 months,6 månader:6 months,1 år:1 year", "group": "Gruppe:", "group-user": "Brukarar", "group-autoconfirmed": "Automatisk godkjende brukarar", @@ -1122,6 +1126,7 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (sjå dessutan [[Special:NewPages|lista over nye sider]])", "recentchanges-submit": "Vis", "rcfilters-legend-heading": "Liste over forkortingar:", + "rcfilters-group-results-by-page": "Grupper resultat etter side", "rcfilters-activefilters": "Aktive filter", "rcfilters-advancedfilters": "Avanserte filter", "rcfilters-limit-title": "Tal endringar som skal visast", @@ -1129,7 +1134,7 @@ "rcfilters-days-title": "Dei siste dagane", "rcfilters-hours-title": "Dei siste timane", "rcfilters-days-show-days": "{{PLURAL:$1|Éin dag|$1 dagar}}", - "rcfilters-quickfilters": "Lagra filterinnstillingar", + "rcfilters-quickfilters": "Lagra filter", "rcfilters-quickfilters-placeholder-title": "Ingen lenkjer er lagra enno", "rcfilters-quickfilters-placeholder-description": "For å lagra filterinnstillingane dine og bruka dei på nytt seinare, klikk på bokmerkeikonet i området for aktive filter under.", "rcfilters-savedqueries-defaultlabel": "Lagra filter", @@ -1139,6 +1144,7 @@ "rcfilters-savedqueries-apply-label": "Lagra innstillingar", "rcfilters-savedqueries-add-new-title": "Lagra gjeldande filterinnstillingar", "rcfilters-clear-all-filters": "Fjern alle filter", + "rcfilters-show-new-changes": "Sjå dei nyaste endringane", "rcfilters-search-placeholder": "Filtrer siste endringar (gå gjennom liste eller skriv filternamn)", "rcfilters-invalid-filter": "Ugyldig filter", "rcfilters-empty-filter": "Ingen aktive filter. Alle bidrag er viste.", @@ -1174,6 +1180,7 @@ "rcfilters-filter-minor-description": "Endringar merkte som småplukk av forfattaren.", "rcfilters-filter-major-label": "Ikkje småplukk", "rcfilters-filter-major-description": "Endringar ikkje merkte som småplukk.", + "rcfilters-filtergroup-watchlist": "Overvaka sider", "rcfilters-filter-watchlist-watched-label": "På overvakingslista", "rcfilters-filter-watchlist-watched-description": "Endringar på sider du overvakar", "rcfilters-filter-watchlist-watchednew-label": "Nye endringar på overvakingslista", @@ -1200,6 +1207,7 @@ "rcfilters-view-namespaces-tooltip": "Filtrer resultat etter namnerom", "rcfilters-view-tags-tooltip": "Filtrer resultat etter endringsmerke", "rcnotefrom": "Nedanfor er endringane gjorde sidan $2 viste (opp til $1 stykke)", + "rclistfromreset": "Nullstill datoval", "rclistfrom": "Vis nye endringar sidan $3 $2", "rcshowhideminor": "$1 småplukk", "rcshowhideminor-show": "Vis", @@ -1656,6 +1664,8 @@ "logempty": "Ingen element i loggen passar.", "log-title-wildcard": "Søk i titlar som byrjar med denne teksten", "showhideselectedlogentries": "Vis/gøym valde loggoppføringar", + "log-edit-tags": "Endra merka til valde loggoppføringar", + "checkbox-select": "Vel: $1", "checkbox-all": "Alle", "checkbox-none": "Ingen", "checkbox-invert": "Vreng", @@ -2996,6 +3006,7 @@ "tags-create-reason": "Årsak:", "tags-create-submit": "Opprett", "tags-create-no-name": "Du må oppgje eit merkenamn.", + "tags-edit-title": "Endra merke", "tags-edit-existing-tags-none": "«Ingen»", "tags-edit-chosen-placeholder": "Vel nokre merke", "comparepages": "Samanlikna sider", @@ -3169,7 +3180,7 @@ "mw-widgets-dateinput-placeholder-day": "ÅÅÅÅ-MM-DD", "mw-widgets-dateinput-placeholder-month": "ÅÅÅÅ-MM", "mw-widgets-titleinput-description-new-page": "sida finst ikkje enno", - "mw-widgets-titleinput-description-redirect": "omdiriger til $1", + "mw-widgets-titleinput-description-redirect": "omdirigering til $1", "date-range-from": "Frå dato:", "date-range-to": "Til dato:", "randomrootpage": "Tilfeldig rotsida", diff --git a/languages/i18n/oc.json b/languages/i18n/oc.json index 268ee853c1..431ab09dd1 100644 --- a/languages/i18n/oc.json +++ b/languages/i18n/oc.json @@ -48,7 +48,7 @@ "tog-shownumberswatching": "Afichar lo nombre d'utilizaires que seguisson aquesta pagina", "tog-oldsig": "Vòstra signatura existenta :", "tog-fancysig": "Tractar la signatura coma de wikitèxte (sens ligam automatic)", - "tog-uselivepreview": "Utilizar l’apercebut rapid", + "tog-uselivepreview": "Afichar los apercebuts sens recargar la pagina", "tog-forceeditsummary": "M'avertir quand ai pas completat lo contengut de la bóstia de comentaris", "tog-watchlisthideown": "Amagar mas pròprias modificacions dins la lista de seguiment", "tog-watchlisthidebots": "Amagar los cambiaments faits pels bòts dins la lista de seguiment", @@ -885,7 +885,7 @@ "search-category": "(categoria $1)", "search-file-match": "(correspond al contengut del fichièr)", "search-suggest": "Avètz volgut dire : $1", - "search-interwiki-caption": "Projèctes fraires", + "search-interwiki-caption": "Resultats dels projèctes fraires", "search-interwiki-default": "Resultats de $1 :", "search-interwiki-more": "(mai)", "search-interwiki-more-results": "mai de resultats", @@ -1215,16 +1215,31 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (veire tanben la [[Special:NewPages|lista de las paginas novèlas]]).", "recentchanges-submit": "Afichar", "rcfilters-activefilters": "Filtres actius", + "rcfilters-hours-title": "Darrièras oras", + "rcfilters-days-show-days": "($1 {{PLURAL:$1|jorn|jorns}})", + "rcfilters-days-show-hours": "$1 {{PLURAL:$1|ora|oras}}", + "rcfilters-quickfilters": "Filtres salvats", + "rcfilters-savedqueries-defaultlabel": "Filtres salvats", + "rcfilters-savedqueries-rename": "Renomenar", + "rcfilters-savedqueries-setdefault": "Activar per defaut", + "rcfilters-savedqueries-unsetdefault": "Suprimir per defaut", + "rcfilters-savedqueries-remove": "Suprimir", + "rcfilters-savedqueries-new-name-label": "Nom", + "rcfilters-savedqueries-new-name-placeholder": "Descriure l'objècte del filtre", + "rcfilters-savedqueries-apply-label": "Crear un filtre", + "rcfilters-savedqueries-apply-and-setdefault-label": "Crear lo filtre per defaut", + "rcfilters-savedqueries-cancel-label": "Anullar", "rcfilters-invalid-filter": "Filtre pas valid", "rcfilters-filterlist-title": "Filtres", + "rcfilters-highlightmenu-title": "Causir una color", "rcfilters-filterlist-noresults": "Cap de filtre pas trobat", - "rcfilters-filtergroup-authorship": "Modificar la paternitat", - "rcfilters-filter-editsbyself-label": "Vòstras pròprias modificacions", - "rcfilters-filter-editsbyself-description": "Vòstras modificacions.", - "rcfilters-filter-editsbyother-label": "Modificacions per d’autres.", - "rcfilters-filter-user-experience-level-registered-label": "Enregistrat", + "rcfilters-filtergroup-authorship": "Paternitat de las contribucions", + "rcfilters-filter-editsbyself-label": "Modificacions faitas per vos", + "rcfilters-filter-editsbyself-description": "Vòstras pròprias contribucions.", + "rcfilters-filter-editsbyother-label": "Modificacions faitas pels autres.", + "rcfilters-filter-user-experience-level-registered-label": "Connectat", "rcfilters-filter-user-experience-level-registered-description": "Editors connectats.", - "rcfilters-filter-user-experience-level-unregistered-label": "Desinscrit", + "rcfilters-filter-user-experience-level-unregistered-label": "Pas connectat", "rcfilters-filter-user-experience-level-unregistered-description": "Editors que son pas connectats.", "rcfilters-filter-user-experience-level-newcomer-label": "Novèls arribants", "rcfilters-filter-user-experience-level-learner-label": "Aprenents", @@ -1233,6 +1248,8 @@ "rcfilters-filter-bots-label": "Robòt", "rcfilters-filter-humans-label": "Èsser uman (pas robòt)", "rcfilters-filter-humans-description": "Modificacions faitas per d'editors umans.", + "rcfilters-filter-patrolled-label": "Patrolhat", + "rcfilters-filter-unpatrolled-label": "Pas patrolhat", "rcfilters-filtergroup-significance": "Significacion", "rcfilters-filter-minor-label": "Cambiaments menors", "rcfilters-filter-minor-description": "Modificacions que l'autor a marcadas coma menoras.", @@ -3156,7 +3173,7 @@ "compare-invalid-title": "Lo títol qu'avètz especificat es incorrècte.", "compare-title-not-exists": "Lo títol qu'avètz especificat existís pas", "compare-revision-not-exists": "La revision qu'avètz especificada existís pas.", - "diff-form": "un '''formulari'''", + "diff-form": "Diferéncias", "dberr-problems": "O planhèm ! Aqueste site rencontra de dificultats tecnicas.", "dberr-again": "Ensajatz d'esperar qualques minutas e tornatz cargar.", "dberr-info": "(Accès a la basa de donadas impossible : $1)", diff --git a/languages/i18n/or.json b/languages/i18n/or.json index 9c862ada77..90b49a3c7c 100644 --- a/languages/i18n/or.json +++ b/languages/i18n/or.json @@ -160,13 +160,7 @@ "anontalk": "ଆଲୋଚନା", "navigation": "ଦିଗବାରେଣି", "and": " ଓ", - "qbfind": "ଖୋଜନ୍ତୁ", - "qbbrowse": "ଦେଖିବେ", - "qbedit": "ସମ୍ପାଦନା (Edit)", - "qbpageoptions": "ଏହି ପୃଷ୍ଠାଟି", - "qbmyoptions": "ମୋ ପୃଷ୍ଠାଗୁଡ଼ିକ", "faq": "ବାରମ୍ବାର ପଚରାଯାଉଥିବା ପ୍ରଶ୍ନ", - "faqpage": "Project:ବାରମ୍ବାର ପଚରାଯାଉଥିବା ପ୍ରଶ୍ନ", "actions": "କାର୍ଯ୍ୟକ୍ରମ", "namespaces": "ନେମସ୍ପେସ", "variants": "ନିଆରା", @@ -192,30 +186,20 @@ "edit-local": "ସ୍ଥାନୀୟ ବିବରଣ ସମ୍ପାଦନା କରନ୍ତୁ", "create": "ତିଆରି କରନ୍ତୁ", "create-local": "ନିଜର ସ୍ଥାନୀୟ ବିବରଣ ଯୋଡ଼ନ୍ତୁ", - "editthispage": "ଏହି ପୃଷ୍ଠାଟିକୁ ବଦଳାଇବେ", - "create-this-page": "ଏହି ପୃଷ୍ଠା ତିଆରି କରିବେ", "delete": "ଲିଭାଇବେ", - "deletethispage": "ଏହି ପୃଷ୍ଠାଟି ଲିଭାଇବେ", - "undeletethispage": "ଏହି ପୃଷ୍ଠାଟିକୁ ଲିଭାଇବେ ନାହିଁ", "undelete_short": "{{PLURAL:$1|ଗୋଟିଏ ବଦଳ|$1ଟି ବଦଳ}} ଯାହା ଲିଭାସରିଛି ତାହାକୁ ପଛକୁ ଫେରାଇଦେବା", "viewdeleted_short": "{{PLURAL:$1|ଗୋଟିଏ ଲିଭାଯାଇଥିବା ବଦଳ|$1ଟି ଲିଭାଯାଇଥିବା ବଦଳ}} ଦେଖାଇବେ", "protect": "କିଳିବେ", "protect_change": "ବଦଳାଇବା", - "protectthispage": "ଏହି ପୃଷ୍ଠାଟିକୁ କିଳିବେ", "unprotect": "ସୁରକ୍ଷା ସ୍ତରକୁ ବଦଳାଇବେ", - "unprotectthispage": "ଏହି ପୃଷ୍ଠା ପାଇଁ ସୁରକ୍ଷାର ପ୍ରକାର ବଦଳାଇବେ", "newpage": "ନୂଆ ପୃଷ୍ଠା", - "talkpage": "ପୃଷ୍ଠାକୁ ଆଲୋଚନା କରନ୍ତୁ", "talkpagelinktext": "ଆଲୋଚନା", "specialpage": "ବିଶେଷ ପୃଷ୍ଠା", "personaltools": "ନିଜର ଟୁଲ", - "articlepage": "ସୂଚୀ ପୃଷ୍ଠାଟି ଦେଖାଇବେ", "talk": "ଆଲୋଚନା", "views": "ଦେଖା", "toolbox": "ଉପକରଣ", "tool-link-emailuser": "{{GENDER:$1|user}}ଙ୍କୁ ଇ-ମେଲ କରନ୍ତୁ", - "userpage": "ବ୍ୟବହାରକାରୀଙ୍କ ପୃଷ୍ଠା ଦେଖନ୍ତୁ", - "projectpage": "ପ୍ରକଳ୍ପ ପୃଷ୍ଠାଟି ଦେଖାଇବା", "imagepage": "ଫାଇଲ ପୃଷ୍ଠାଗୁଡ଼ିକ ଦେଖନ୍ତୁ", "mediawikipage": "ମେସେଜ ପୃଷ୍ଠାଟି ଦେଖାଇବେ", "templatepage": "ଛାଞ୍ଚ ପୃଷ୍ଠାଗୁଡ଼ିକ ଦେଖନ୍ତୁ", @@ -661,7 +645,7 @@ "nonunicodebrowser": "'''ଚେତାବନୀ: ଆପଣଙ୍କ ବ୍ରାଉଜରରେ ଇଉନିକୋଡ଼ ସଚଳ କରାଯାଇନାହିଁ ।'''\nଏକ ୱର୍କାଆରାଉଣ୍ଡ ଏକ ଏହିପରି ଜାଗା ଯାହା ଆପଣଙ୍କୁ ନିରାପଦ ଭାବରେ ପୃଷ୍ଠା ସମ୍ପାଦନ କରିବାରେ ସାହାଯ୍ୟ କରିଥାଏ: ଅଣ-ASCII ଅକ୍ଷରସମୂହ ସମ୍ପାଦନା ଘରେ ହେକ୍ସାଡେସିମାଲ କୋଡ଼ ରୂପେ ଦେଖାଯିବ ।", "editingold": "'''ଚେତାବନୀ: ଆପଣ ଏହି ପୃଷ୍ଠାର ଏକ ଅଚଳ ପୁରାତନ ସଙ୍କଳନକୁ ବଦଳାଉଛନ୍ତି ।'''\nଯଦି ଆପଣ ଏହାକୁ ସାଇତିବେ, ନୂଆ ସଙ୍କଳନ ଯାଏଁ କରାଯାଇଥିବା ସବୁ ବଦଳ ନଷ୍ଟ ହୋଇଯିବ ।", "yourdiff": "ତଫାତ", - "copyrightwarning": "ଦୟାକରି ଜାଣିରଖନ୍ତୁ ଯେ {{SITENAME}}କୁ ସବୁଯାକ ଅବଦାନ $2 ଅଧିନରେ ପ୍ରକାଶ କରାଯିବ । (ଅଧିକ ଜାଣିବା ପାଇଁ $1 ଦେଖନ୍ତୁ)\nଯଦି ଆପଣ ନିଜର ଲେଖା ନିର୍ଦୟ ଭାବେ ସମ୍ପାଦିତ ହେଉ ବୋଲି ଚାହୁଁନାହାନ୍ତି ବା ବଣ୍ଟନ କରାଯାଉ ବୋଲି ଚାହୁଁ ନାହାନ୍ତି ତେବେ ତାହା ଏଠାରେ ଦିଅନ୍ତୁ ନାହିଁ ।
\nଆପଣ ଆମପକ୍ଷେ ମଧ୍ୟ ପ୍ରତିଜ୍ଞା କରୁଛନ୍ତି ଯେ ଏହା ଆପଣ ନିଜେ ଲେଖିଛନ୍ତି, କିମ୍ବା ଏକ ପବ୍ଲିକ ଡୋମେନରୁ ବା ମାଗଣା ଓ ଖୋଲା ଲାଇସେନ୍ସ ଥିବା ସାଇଟରୁ ନକଲ କରି ଆଣିଛନ୍ତି ।\n'''ଅନୁମତି ବିନା ସତ୍ଵାଧିକାର ଥିବା କାମ ଏଠାରେ ଦିଅନ୍ତୁ ନାହିଁ !'''", + "copyrightwarning": "ଦୟାକରି ଜାଣିରଖନ୍ତୁ ଯେ {{SITENAME}}କୁ ସବୁଯାକ ଅବଦାନ $2 ଅଧିନରେ ପ୍ରକାଶ କରାଯିବ । (ଅଧିକ ଜାଣିବା ପାଇଁ $1 ଦେଖନ୍ତୁ)\nଯଦି ଆପଣ ନିଜର ଲେଖା ନିର୍ଦୟ ଭାବେ ସମ୍ପାଦିତ ହେଉ ବୋଲି ଚାହୁଁନାହାନ୍ତି ବା ବଣ୍ଟନ କରାଯାଉ ବୋଲି ଚାହୁଁ ନାହାନ୍ତି ତେବେ ତାହା ଏଠାରେ ଦିଅନ୍ତୁ ନାହିଁ ।
\nଆପଣ ଆମପକ୍ଷେ ମଧ୍ୟ ପ୍ରତିଜ୍ଞା କରୁଛନ୍ତି ଯେ ଏହା ଆପଣ ନିଜେ ଲେଖିଛନ୍ତି, କିମ୍ବା ଏକ ପବ୍ଲିକ ଡୋମେନରୁ ବା ମାଗଣା ଓ ଖୋଲା ଲାଇସେନ୍ସ ଥିବା ସାଇଟରୁ ନକଲ କରି ଆଣିଛନ୍ତି ।\n'''ଅନୁମତି ବିନା ସ୍ଵତ୍ତ୍ଵାଧିକାର ଥିବା କାମ ଏଠାରେ ଦିଅନ୍ତୁ ନାହିଁ !'''", "copyrightwarning2": "ଦୟାକରି ଜାଣିରଖନ୍ତୁ ଯେ {{SITENAME}} ସବୁଯାକ ଅବଦାନ ସମ୍ପାଦିତ ହୋଇପାରିବ, ବଦଳାଯାଇପାରିବ କିମ୍ବା ବାକି ଅବଦାନକାରୀଙ୍କ ଦେଇ କଢ଼ାଯାଇପାରିବ ।\nଯଦି ଆପଣ ନିଜର ଲେଖା ନିର୍ଦୟ ଭାବେ ସମ୍ପାଦିତ ହେଉ ବୋଲି ଚାହୁଁନାହାନ୍ତି ବା ବଣ୍ଟନ କରାଯାଉ ବୋଲି ଚାହୁଁ ନାହାନ୍ତି ତେବେ ତାହା ଏଠାରେ ଦିଅନ୍ତୁ ନାହିଁ ।
\nଆପଣ ଆମପକ୍ଷେ ମଧ୍ୟ ପ୍ରତିଜ୍ଞା କରୁଛନ୍ତି ଯେ ଏହା ଆପଣ ନିଜେ ଲେଖିଛନ୍ତି, କିମ୍ବା ଏକ ପବ୍ଲିକ ଡୋମେନରୁ ବା ମାଗଣା ଓ ଖୋଲା ଲାଇସେନ୍ସ ଥିବା ସାଇଟରୁ ନକଲ କରି ଆଣିଛନ୍ତି । (ଦୟାକରି ସବିଶେଷ ପାଇଁ $1 ଦେଖନ୍ତୁ) ।\n'''ଅନୁମତି ବିନା ସତ୍ଵାଧିକାର ଥିବା କାମ ଏଠାରେ ଦିଅନ୍ତୁ ନାହିଁ !'''", "longpageerror": "'''ଭୁଲ: ଆପଣ ଦେଇଥିବା ଲେଖାଟି {{PLURAL:$1|କିଲୋବାଇଟ|$1 କିଲୋବାଇଟ}} ଲମ୍ବା, ଯାହାକି ସବୁଠାରୁ ଅଧିକ {{PLURAL:$2|କିଲୋବାଇଟ|$2 କିଲୋବାଇଟ}} ଠାରୁ ବି ଅଧିକ ।'''\nଏହା ସାଇତାଯାଇପାରିବ ନାହିଁ ।", "readonlywarning": "ସୂଚନା: ଏହି ଡାଟାବେସଟି ରକ୍ଷଣାବେକ୍ଷଣା ପାଇଁ କିଳାଯାଇଛି । ତେଣୁ ଆପଣ ଆପଣା ସମ୍ପାଦନା ଏବେ ସାଇତି ପାରିବେ ନାହିଁ ।'''\nଆପଣ ଲେଖାସବୁ ଏକ ଟେକ୍ସଟ ଫାଇଲରେ ନକଲ ଏବଂ ପେଷ୍ଟ କରି ଆଗକୁ ବ୍ୟବହାର କରିବା ପାଇଁ ସାଇତି ପାରିବେ ।\n\nଏହାକୁ କିଳିଥିବା ପରିଛା ଏହି କଇଫତ ଦେଇଛନ୍ତି: $1", @@ -2604,7 +2588,7 @@ "exif-compression-2": "CCITT ଗୋଠ ୩ ୧-ବିମିୟ ବଦଳାଯାଇଥିବା ହଫମାନ ରନ ଲମ୍ବ ଏନକୋଡ଼ିଙ୍ଗ", "exif-compression-3": "CCITT ଗୋଠ ୩ ଫାକ୍ସ ଏନକୋଡ଼ିଙ୍ଗ", "exif-compression-4": "CCITT ଗୋଠ ୪ ଫାକ୍ସ ଏନକୋଡ଼ିଙ୍ଗ", - "exif-copyrighted-true": "ସତ୍ଵାଧିକାର ଥିବା", + "exif-copyrighted-true": "ସ୍ଵତ୍ତ୍ଵାଧିକାର ଥିବା", "exif-copyrighted-false": "କପିରାଇଟ ତଥ୍ୟ ଦିଆଯାଇନାହିଁ", "exif-unknowndate": "ଅଜଣା ତାରିଖ", "exif-orientation-1": "ସାଧାରଣ", @@ -2912,7 +2896,6 @@ "fileduplicatesearch-noresults": "\"$1\" ନାମରେ ଗୋଟିଏ ବି ଫାଇଲ ମିଳିଲା ନାହିଁ ।", "specialpages": "ବିଶେଷ ପୃଷ୍ଠା", "specialpages-note-top": "ଲିଜେଣ୍ଡ", - "specialpages-note": "* ସାଧାରଣ ବିଶେଷ ପୃଷ୍ଠାମାନ ।\n* କିଳାଯାଇଥିବା ବିଶେଷ ପୃଷ୍ଠାମାନ ।", "specialpages-group-maintenance": "ରକ୍ଷଣାବେକ୍ଷଣା ବିବରଣୀ", "specialpages-group-other": "ବାକି ବିଶେଷ ପୃଷ୍ଠା", "specialpages-group-login": "ଲଗ-ଇନ (Log in)/ ନୂଆ ଖାତା ଖୋଲିବେ (Sign up)", diff --git a/languages/i18n/pl.json b/languages/i18n/pl.json index d2eca86de8..8fcd2b7655 100644 --- a/languages/i18n/pl.json +++ b/languages/i18n/pl.json @@ -1363,6 +1363,7 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (zobacz też [[Special:NewPages|listę nowych stron]])", "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Pokaż", + "rcfilters-tag-remove": "Usuń '$1'", "rcfilters-legend-heading": "Wykaz skrótów:", "rcfilters-other-review-tools": "Inne narzędzia do sprawdzania", "rcfilters-group-results-by-page": "Grupuj wyniki według stron", @@ -1375,6 +1376,7 @@ "rcfilters-hours-title": "Ostatnich godzin", "rcfilters-days-show-days": "$1 {{PLURAL:$1|dzień|dni}}", "rcfilters-days-show-hours": "$1 {{PLURAL:$1|godzina|godziny|godzin}}", + "rcfilters-highlighted-filters-list": "Podświetlono: $1", "rcfilters-quickfilters": "Zapisane filtry", "rcfilters-quickfilters-placeholder-title": "Nie masz jeszcze zapisanych linków", "rcfilters-quickfilters-placeholder-description": "Aby zapisać ustawienia filtrów i używać ich później, kliknij ikonkę zakładki w polu aktywnych filtrów znajdującym się niżej.", @@ -1397,14 +1399,14 @@ "rcfilters-empty-filter": "Brak aktywnych filtrów. Wyświetlane są wszystkie zmiany.", "rcfilters-filterlist-title": "Filtry", "rcfilters-filterlist-whatsthis": "Jak działają?", - "rcfilters-filterlist-feedbacklink": "Podziel się swoją opinią na temat tych nowych (beta) filtrów", + "rcfilters-filterlist-feedbacklink": "Napisz co sądzisz o tych nowych narzędziach filtrowania", "rcfilters-highlightbutton-title": "Podświetl wyniki", "rcfilters-highlightmenu-title": "Wybierz kolor", "rcfilters-highlightmenu-help": "Wybierz kolor, aby podświetlić tę właściwość", "rcfilters-filterlist-noresults": "Nie znaleziono filtrów", "rcfilters-noresults-conflict": "Nie znaleziono wyników z powodu konfliktu kryteriów wyszukiwania", "rcfilters-state-message-subset": "Ten filtr nie wywoła efektu, ponieważ pasujące do niego wyniki są zawarte w bardziej {{PLURAL:$2|szczegółowym filtrze|szczegółowych filtrach}} (spróbuj podświetlić, aby je rozróżnić): $1", - "rcfilters-state-message-fullcoverage": "Wybranie wszystkich filtrów w grupie działa tak samo jak niewybranie żadnego, więc taki filtr nie da żadnego efektu. W grupie zawarto też: $1", + "rcfilters-state-message-fullcoverage": "Wybranie wszystkich filtrów w tej grupie działa tak samo jak niewybranie żadnego, więc taki filtr nie da żadnego efektu. W grupie zawarto też: $1", "rcfilters-filtergroup-authorship": "Autorstwo wkładu", "rcfilters-filter-editsbyself-label": "Zmiany dokonane przeze mnie", "rcfilters-filter-editsbyself-description": "Czynności dokonane przez Ciebie.", @@ -1443,6 +1445,11 @@ "rcfilters-filter-watchlist-watchednew-description": "Zmiany na obserwowanych stronach, których jeszcze nie odwiedziłeś.", "rcfilters-filter-watchlist-notwatched-label": "Tylko spoza obserwowanych", "rcfilters-filter-watchlist-notwatched-description": "Wszystko oprócz zmian na obserwowanych przez ciebie stronach.", + "rcfilters-filtergroup-watchlistactivity": "Aktywność na liście obserwowanych", + "rcfilters-filter-watchlistactivity-unseen-label": "Nieobejrzane zmiany", + "rcfilters-filter-watchlistactivity-unseen-description": "Zmiany na stronach, których nie odwiedzono od momentu dokonania zmian.", + "rcfilters-filter-watchlistactivity-seen-label": "Obejrzane zmiany", + "rcfilters-filter-watchlistactivity-seen-description": "Zmiany na stronach, które odwiedzono od momentu dokonania zmian.", "rcfilters-filtergroup-changetype": "Rodzaj zmiany", "rcfilters-filter-pageedits-label": "Edycje strony", "rcfilters-filter-pageedits-description": "Edycje treści, stron dyskusji, opisów kategorii…", @@ -1472,6 +1479,8 @@ "rcfilters-liveupdates-button": "Aktualizacje na bieżąco", "rcfilters-liveupdates-button-title-on": "Wyłącz aktualizacje na bieżąco", "rcfilters-liveupdates-button-title-off": "Wyświetlaj nowe zmiany zaraz po tym jak nastąpią", + "rcfilters-watchlist-markseen-button": "Oznacz wszystkie zmiany jako obejrzane", + "rcfilters-watchlist-edit-watchlist-button": "Edytuj swoją listę obserwowanych stron", "rcnotefrom": "Poniżej {{PLURAL:$5|pokazano zmianę|pokazano zmiany}} {{PLURAL:$5|wykonaną|wykonane}} po $3, $4 (nie więcej niż '''$1''' pozycji).", "rclistfromreset": "Zresetuj wybór daty", "rclistfrom": "Pokaż nowe zmiany od $3 $2", @@ -3617,7 +3626,7 @@ "htmlform-int-toolow": "Podana wartość jest poniżej dopuszczalnego minimum $1", "htmlform-int-toohigh": "Podana wartość jest powyżej dopuszczalnego maximum $1", "htmlform-required": "Podanie tej wartości jest wymagane", - "htmlform-submit": "Zapisz", + "htmlform-submit": "Wyślij", "htmlform-reset": "Cofnij zmiany", "htmlform-selectorother-other": "Inne", "htmlform-no": "Nie", diff --git a/languages/i18n/pnb.json b/languages/i18n/pnb.json index eda97caa0c..fd7fb645b5 100644 --- a/languages/i18n/pnb.json +++ b/languages/i18n/pnb.json @@ -146,7 +146,7 @@ "category-file-count-limited": "اس گٹھ چ اے {{PLURAL:$1|فائل اے|$1 فائلاں نیں}}۔", "listingcontinuesabbrev": "جاری", "index-category": "انڈیکسڈ صفے", - "noindex-category": "نان انڈیکسڈ ورقے", + "noindex-category": "نان انڈیکسڈ صفے", "broken-file-category": "ٹٹے ہوۓ جوڑاں آلے صفحے", "about": "بارے چ", "article": "آرٹیکل والا صفہ", diff --git a/languages/i18n/pt-br.json b/languages/i18n/pt-br.json index 4d7606d231..d1c9de9b46 100644 --- a/languages/i18n/pt-br.json +++ b/languages/i18n/pt-br.json @@ -111,7 +111,8 @@ "Felipe L. Ewald", "WikiUser22222", "BarbaraAckles", - "Trigonometria87" + "Trigonometria87", + "RadiX" ] }, "tog-underline": "Link sublinhado:", @@ -1387,6 +1388,7 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (veja também a [[Special:NewPages|lista de páginas novas]])", "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Exibir", + "rcfilters-tag-remove": "Remover '$1'", "rcfilters-legend-heading": "Lista de abreviaturas:", "rcfilters-other-review-tools": " Outras ferramentas de revisão:", "rcfilters-group-results-by-page": "Agrupar resultado por página", @@ -1399,6 +1401,7 @@ "rcfilters-hours-title": "Horas recentes", "rcfilters-days-show-days": "$1 {{PLURAL:$1|dia|dias}}", "rcfilters-days-show-hours": "$1 {{PLURAL:$1|hora|horas}}", + "rcfilters-highlighted-filters-list": "Realçado: $1", "rcfilters-quickfilters": "Filtros salvos", "rcfilters-quickfilters-placeholder-title": "Ainda não foi gravado nenhum link", "rcfilters-quickfilters-placeholder-description": "Para gravar as suas configurações dos filtros e reutilizá-las mais tarde, clique o ícone do marcador de página, na área Filtro Ativo abaixo.", @@ -1421,14 +1424,14 @@ "rcfilters-empty-filter": "Nenhum filtro ativo. Todas as contribuições são mostradas.", "rcfilters-filterlist-title": "Filtros", "rcfilters-filterlist-whatsthis": "Como funcionam estes?", - "rcfilters-filterlist-feedbacklink": "Forneça feedback sobre os novos filtros (beta)", + "rcfilters-filterlist-feedbacklink": "Diga-nos o que você pensa sobre estas (novas) ferramentas de filtragem", "rcfilters-highlightbutton-title": "Realçar os resultados", "rcfilters-highlightmenu-title": "Selecione uma cor", "rcfilters-highlightmenu-help": "Selecione uma cor para realçar esta propriedade", "rcfilters-filterlist-noresults": "Nenhum filtro encontrado", "rcfilters-noresults-conflict": "Nenhum resultado encontrado porque os critérios de pesquisa estão em conflito", "rcfilters-state-message-subset": "Este filtro não tem efeito porque seus resultados estão incluídos com {{PLURAL:$2|o seguinte filtro mais amplo|os seguintes filtros mais amplos}} (tente realçar para distingui-lo): $1", - "rcfilters-state-message-fullcoverage": "Selecionar todos os filtros em um grupo é o mesmo que não selecionar nenhum, portanto este filtro não tem efeito. O grupo inclui: $1", + "rcfilters-state-message-fullcoverage": "Selecionar todos os filtros neste grupo é o mesmo que não selecionar nenhum, portanto este filtro não tem efeito. O grupo inclui: $1", "rcfilters-filtergroup-authorship": "Autoria da contribuição", "rcfilters-filter-editsbyself-label": "Mudanças por você", "rcfilters-filter-editsbyself-description": "Suas proprias contribuições.", @@ -1467,6 +1470,11 @@ "rcfilters-filter-watchlist-watchednew-description": "Modificações de páginas vigiadas que ainda não visitou depois de serem modificadas.", "rcfilters-filter-watchlist-notwatched-label": "Ausente da lista de páginas vigiadas", "rcfilters-filter-watchlist-notwatched-description": "Tudo menos modificações das suas páginas vigiadas.", + "rcfilters-filtergroup-watchlistactivity": "Atividade da lista de observação", + "rcfilters-filter-watchlistactivity-unseen-label": "Mudanças não vistas", + "rcfilters-filter-watchlistactivity-unseen-description": "Modificações nas páginas que você não visitou desde as alterações ocorridas.", + "rcfilters-filter-watchlistactivity-seen-label": "Ver mudanças", + "rcfilters-filter-watchlistactivity-seen-description": "Modificações nas páginas que visitou desde as alterações ocorridas.", "rcfilters-filtergroup-changetype": "Tipo de mudança", "rcfilters-filter-pageedits-label": "Edições da página", "rcfilters-filter-pageedits-description": "Edições para conteúdo wiki, discussões, descrições de categorias...", @@ -1496,6 +1504,9 @@ "rcfilters-liveupdates-button": "Atualizações instantâneas", "rcfilters-liveupdates-button-title-on": "Desativar as atualizações ao vivo", "rcfilters-liveupdates-button-title-off": "Exibir novas mudanças à medida que elas acontecem", + "rcfilters-watchlist-markseen-button": "Marque todas as mudanças como visto", + "rcfilters-watchlist-edit-watchlist-button": "Edite sua lista de páginas vigiadas", + "rcfilters-watchlist-showupdated": "As alterações nas páginas que você não visitou desde as mudanças ocorridas estão em negrito, com marcadores sólidos.", "rcnotefrom": "Abaixo {{PLURAL:$5|é a mudança|são as mudanças}} desde $3, $4 (up to $1 shown).", "rclistfromreset": "Redefinir seleção da data", "rclistfrom": "Mostrar as novas alterações a partir das $2 de $3", @@ -2179,7 +2190,7 @@ "unwatchthispage": "Parar de vigiar esta página", "notanarticle": "Não é uma página de conteúdo", "notvisiblerev": "Edição eliminada", - "watchlist-details": "{{PLURAL:$1|$1 página|$1 páginas}} na sua lista de páginas vigiadas, excluindo as páginas de discussão.", + "watchlist-details": "{{PLURAL:$1|$1 página está|$1 páginas estão}} na sua lista de páginas vigiadas (incluindo páginas de discussão).", "wlheader-enotif": "A notificação por email encontra-se ativada.", "wlheader-showupdated": "As páginas modificadas desde a sua última visita são mostradas em negrito.", "wlnote": "A seguir {{PLURAL:$1|está a última alteração ocorrida|estão as últimas $1 alterações ocorridas}} {{PLURAL:$2|na última hora|nas últimas $2 horas}} até $3, $4.", @@ -3673,7 +3684,7 @@ "logentry-protect-protect-cascade": "$1 {{GENDER:$2|protegeu}} $3 $4 [em cascata]", "logentry-protect-modify": "$1 {{GENDER:$2|alterou}} o nível de proteção para $3 $4", "logentry-protect-modify-cascade": "$1 {{GENDER:$2|alterou}} o nível de proteção para $3 $4 [em cascata]", - "logentry-rights-rights": "$1 {{GENDER:$2|mudou}} membros do grupo para {{GENDER:$6|$3}} de $4 para $5", + "logentry-rights-rights": "$1 {{GENDER:$2|alterou}} os grupos de usuário de {{GENDER:$6|$3}} de $4 para $5", "logentry-rights-rights-legacy": "$1 alterou os grupos de $3", "logentry-rights-autopromote": "$1 foi promovido automaticamente de $4 para $5", "logentry-upload-upload": "$1 {{GENDER:$2|carregou}} $3", diff --git a/languages/i18n/pt.json b/languages/i18n/pt.json index 3b76197f8d..1839dfd0c8 100644 --- a/languages/i18n/pt.json +++ b/languages/i18n/pt.json @@ -73,7 +73,8 @@ "Gato Preto", "Jdforrester", "Mansil", - "Ngl2016" + "Ngl2016", + "RadiX" ] }, "tog-underline": "Sublinhar ligações:", @@ -366,7 +367,7 @@ "databaseerror-function": "Função: $1", "databaseerror-error": "Erro: $1", "transaction-duration-limit-exceeded": "Para evitar grandes atrasos na replicação, esta operação foi cancelada porque a duração de gravação ($1) excedeu o limite de $2 {{PLURAL:$2|segundo|segundos}}. Se está a mudar muitos objetos de uma só vez, tente desmultiplicar a operação em várias de menor dimensão.", - "laggedslavemode": "'''Aviso:''' A página pode não conter as atualizações mais recentes.", + "laggedslavemode": "Aviso: A página pode não conter as atualizações mais recentes.", "readonly": "Base de dados bloqueada (limitada a leituras)", "enterlockreason": "Introduza um motivo para bloquear, incluindo uma estimativa de quando será desbloqueada", "readonlytext": "A base de dados está atualmente bloqueada para novas entradas e outras modificações, provavelmente para uma manutenção de rotina, após a qual voltará à sua normalidade.\n\nO administrador que a bloqueou deu a seguinte explicação: $1", @@ -417,9 +418,9 @@ "editinginterface": "Aviso: Está a editar uma página usada para fornecer texto de interface ao software. Alterações a esta página afetarão a aparência da interface de utilizador para os outros utilizadores.", "translateinterface": "Para adicionar ou alterar traduções para todas as wikis, considere utilizar a [https://translatewiki.net/wiki/Main_Page?setlang=pt translatewiki.net], um projeto destinado à tradução do MediaWiki.", "cascadeprotected": "Esta página foi protegida contra edições por estar transcluída {{PLURAL:$1|na página listada|nas páginas listadas}} a seguir, ({{PLURAL:$1|página essa que está protegida|páginas essas que estão protegidas}} com a opção de proteção \"em cascata\" ativada):\n$2", - "namespaceprotected": "Não tem permissão para editar páginas no domínio '''$1'''.", - "customcssprotected": "Não tem permissão para editar esta página de CSS porque esta contém as configurações pessoais de outro utilizador.", - "customjsprotected": "Não tem permissão para editar esta página de JavaScript porque esta contém as configurações pessoais de outro utilizador.", + "namespaceprotected": "Não tem permissão para editar páginas no espaço nominal $1.", + "customcssprotected": "Não tem permissão para editar esta página de CSS porque a página contém as configurações pessoais de outro utilizador.", + "customjsprotected": "Não tem permissão para editar esta página de JavaScript porque a página contém as configurações pessoais de outro utilizador.", "mycustomcssprotected": "Não tem permissão para editar esta página de CSS.", "mycustomjsprotected": "Não tem permissão para editar esta página de JavaScript.", "myprivateinfoprotected": "Não tem permissão para editar a sua informação privada.", @@ -442,15 +443,15 @@ "welcomecreation-msg": "A sua conta foi criada.\nNão se esqueça de personalizar as suas [[Special:Preferences|preferências]] na wiki {{SITENAME}}.", "yourname": "Nome de utilizador(a):", "userlogin-yourname": "Nome de utilizador(a)", - "userlogin-yourname-ph": "Digite o seu nome de utilizador(a)", - "createacct-another-username-ph": "Digite o nome de utilizador(a)", + "userlogin-yourname-ph": "Introduza o seu nome de utilizador", + "createacct-another-username-ph": "Introduza o nome de utilizador", "yourpassword": "Palavra-passe:", "userlogin-yourpassword": "Palavra-passe", - "userlogin-yourpassword-ph": "Digite a sua palavra-passe", - "createacct-yourpassword-ph": "Digite uma palavra-passe", + "userlogin-yourpassword-ph": "Introduza a sua palavra-passe", + "createacct-yourpassword-ph": "Introduza uma palavra-passe", "yourpasswordagain": "Repita a palavra-passe:", "createacct-yourpasswordagain": "Confirme a palavra-passe", - "createacct-yourpasswordagain-ph": "Digite a palavra-passe novamente", + "createacct-yourpasswordagain-ph": "Introduza a palavra-passe novamente", "userlogin-remembermypassword": "Manter-me autenticado", "userlogin-signwithsecure": "Usar uma ligação segura", "cannotlogin-title": "Não é possível iniciar sessão", @@ -473,14 +474,14 @@ "createaccount": "Criar conta", "userlogin-resetpassword-link": "Esqueceu-se da sua palavra-passe?", "userlogin-helplink2": "Ajuda para iniciar sessão", - "userlogin-loggedin": "Já está {{GENDER:$1|autenticado|autenticada|autenticado}} com o nome $1.\nUse o formulário abaixo para iniciar sessão com outro nome.", + "userlogin-loggedin": "Já está {{GENDER:$1|autenticado|autenticada}} com o nome $1.\nUse o formulário abaixo para iniciar sessão com outro nome.", "userlogin-reauth": "Deve iniciar novamente sessão para verificar se é {{GENDER:$1|$1}}.", "userlogin-createanother": "Criar outra conta", "createacct-emailrequired": "Endereço de correio eletrónico", "createacct-emailoptional": "Endereço de correio eletrónico (opcional)", - "createacct-email-ph": "Digite o seu endereço de correio eletrónico", - "createacct-another-email-ph": "Digite o endereço de correio eletrónico", - "createaccountmail": "Usar uma palavra passe aleatória e temporária e enviar para o endereço de correio eletrónico especificado", + "createacct-email-ph": "Introduza o seu endereço de correio eletrónico", + "createacct-another-email-ph": "Introduza o endereço de correio eletrónico", + "createaccountmail": "Usar uma palavra-passe aleatória e temporária e enviá-la para o endereço de correio eletrónico especificado", "createaccountmail-help": "Pode ser utilizado para criar uma conta para outra pessoa sem saber a palavra-passe.", "createacct-realname": "Nome verdadeiro (opcional)", "createacct-reason": "Motivo", @@ -493,29 +494,29 @@ "createacct-benefit-heading": "A wiki {{SITENAME}} é feita por pessoas como você.", "createacct-benefit-body1": "{{PLURAL:$1|edição|edições}}", "createacct-benefit-body2": "{{PLURAL:$1|página|páginas}}", - "createacct-benefit-body3": "{{PLURAL:$1|contribuidor|contribuidores}} recentes", + "createacct-benefit-body3": "{{PLURAL:$1|contribuidor recente|contribuidores recentes}}", "badretype": "As palavras-passe que introduziu não coincidem.", - "usernameinprogress": "Uma conta para este nome de utilizador já está a ser criada.\nPor favor, aguarde.", - "userexists": "O nome de utilizador introduzido já existe.\nPor favor escolha um nome diferente.", + "usernameinprogress": "Já está a ser criada uma conta para este nome de utilizador.\nAguarde, por favor.", + "userexists": "O nome de utilizador introduzido já existe.\nEscolha um nome diferente, por favor.", "loginerror": "Erro ao iniciar sessão", "createacct-error": "Erro na criação da conta", "createaccounterror": "Não foi possível criar a conta: $1", "nocookiesnew": "A conta de utilizador foi criada, mas neste momento não tem sessão iniciada.\nA wiki {{SITENAME}} utiliza ''cookies'' para autenticar os utilizadores.\nOs ''cookies'' estão desativados no seu navegador.\nAtive-os e inicie sessão com o seu nome de utilizador e a sua palavra-passe, por favor.", "nocookieslogin": "A wiki {{SITENAME}} utiliza ''cookies'' para autenticar os utilizadores.\nOs ''cookies'' estão desativados no seu navegador.\nAtive-os e tente novamente, por favor.", "nocookiesfornew": "A conta de utilizador não foi criada, porque não foi possível confirmar a sua origem.\nCertifique-se de que tem os ''cookies'' ativados, recarregue esta página e tente novamente.", - "createacct-loginerror": "A conta foi criada, mas não foi possível iniciar a sessão automaticamente. Por favor, [[Special:UserLogin|inície a sessão manualmente]].", + "createacct-loginerror": "A conta foi criada, mas não foi possível iniciar a sessão automaticamente. [[Special:UserLogin|Inicie a sessão manualmente]], por favor.", "noname": "Não especificou um nome de utilizador válido.", - "loginsuccesstitle": "Autenticação bem sucedida", - "loginsuccess": "Encontra-se agora ligado à wiki {{SITENAME}} como \"$1\".", - "nosuchuser": "Não existe nenhum utilizador com o nome \"$1\".\nOs nomes de utilizador são sensíveis às letras maiúsculas e minúsculas.\nVerifique a ortografia, ou [[Special:CreateAccount|crie uma nova conta]].", - "nosuchusershort": "Não existe um utilizador com o nome \"$1\". Verifique o nome que introduziu.", - "nouserspecified": "Precisa de especificar um nome de utilizador.", + "loginsuccesstitle": "Sessão iniciada", + "loginsuccess": "Tem agora uma sessão iniciada na wiki {{SITENAME}} como \"$1\".", + "nosuchuser": "Não existe nenhum utilizador com o nome \"$1\".\nOs nomes de utilizador distinguem as letras maiúsculas das minúsculas.\nVerifique se existem erros ortográficos, ou [[Special:CreateAccount|crie uma conta nova]].", + "nosuchusershort": "Não existe nenhum utilizador com o nome \"$1\".\nVerifique o nome que introduziu.", + "nouserspecified": "Tem de especificar um nome de utilizador.", "login-userblocked": "Este utilizador está bloqueado. Não é permitido o acesso.", "wrongpassword": "A palavra-passe que introduziu é inválida. Tente novamente, por favor.", "wrongpasswordempty": "A palavra-passe não foi introduzida. \nIntroduza-a, por favor.", "passwordtooshort": "A palavra-passe deve ter no mínimo $1 {{PLURAL:$1|carácter|caracteres}}.", - "passwordtoolong": "A palavra-passe deve exceder $1 {{PLURAL:$1|carácter|caracteres}}.", - "passwordtoopopular": "Palavras-passe normalmente escolhidas não podem ser usadas. Por favor, escolha uma palavra-passe mais exclusiva.", + "passwordtoolong": "A palavra-passe não pode exceder $1 {{PLURAL:$1|carácter|caracteres}}.", + "passwordtoopopular": "Não podem ser usadas palavras-passe vulgares. Escolha uma palavra-passe mais original, por favor.", "password-name-match": "A sua palavra-passe tem de ser diferente do seu nome de utilizador.", "password-login-forbidden": "Foi proibido o uso deste nome de utilizador e palavra-passe.", "mailmypassword": "Reiniciar a palavra-passe", @@ -524,11 +525,11 @@ "noemail": "Não foi registado um endereço de correio eletrónico para o utilizador \"$1\".", "noemailcreate": "Tem de fornecer um endereço de correio eletrónico válido.", "passwordsent": "Foi enviada uma palavra-passe nova para o endereço de correio eletrónico do utilizador \"$1\".\nVolte a iniciar sessão após recebê-la, por favor.", - "blocked-mailpassword": "O seu endereço IP está bloqueado para edição. Para evitar abusos, não é permitido a utilização da recuperação de palavra-passe a partir deste endereço IP.", + "blocked-mailpassword": "O seu endereço IP está bloqueado para edição. Para evitar abusos, não é permitido usar a recuperação da palavra-passe a partir deste endereço IP.", "eauthentsent": "Foi enviada uma mensagem de confirmação para o endereço de correio eletrónico que especificou.\nAntes que seja enviada qualquer outra mensagem para a conta, terá de seguir as instruções na mensagem enviada, de modo a confirmar que a conta lhe pertence.", - "throttled-mailpassword": "Já foi enviada um email de recuperação de palavra-passe {{PLURAL:$1|na última hora|nas últimas $1 horas}}.\nPara prevenir abusos, só um email de recuperação de palavra-passe pode ser enviado a cada {{PLURAL:$1|hora|$1 horas}}.", + "throttled-mailpassword": "Já foi enviada uma mensagem de reinício da palavra-passe {{PLURAL:$1|na última hora|nas últimas $1 horas}}.\nPara prevenir abusos, só pode ser enviada uma mensagem de reinício da palavra-passe a cada {{PLURAL:$1|hora|$1 horas}}.", "mailerror": "Erro ao enviar correio eletrónico: $1", - "acct_creation_throttle_hit": "Visitantes desta wiki com endereço IP igual ao seu criaram {{PLURAL:$1|uma conta|$1 contas}} nos últimos (ou últimas) $2, o que é o máximo permitido neste período de tempo.\nEm resultado, visitantes com este endereço IP não podem criar mais nenhuma conta de momento.", + "acct_creation_throttle_hit": "Visitantes desta wiki com um endereço IP igual ao seu criaram {{PLURAL:$1|uma conta|$1 contas}} nos últimos (ou últimas) $2, o que é o máximo permitido neste período de tempo.\nEm resultado, visitantes com este endereço IP não podem criar mais nenhuma conta de momento.", "emailauthenticated": "O seu endereço de correio eletrónico foi confirmado a $2, às $3.", "emailnotauthenticated": "O seu endereço de correio eletrónico ainda não foi confirmado.\nNão lhe serão enviadas mensagens por nenhuma das seguintes funcionalidades.", "noemailprefs": "Especifique um endereço de correio eletrónico nas suas preferências para ativar estas funcionalidades.", @@ -551,7 +552,7 @@ "pt-login-continue-button": "Continuar o início de sessão", "pt-createaccount": "Criar uma conta", "pt-userlogout": "Sair", - "php-mail-error-unknown": "Erro desconhecido na função mail() do PHP", + "php-mail-error-unknown": "Erro desconhecido na função mail() do PHP.", "user-mail-no-addy": "Tentou enviar uma mensagem sem um endereço de correio eletrónico.", "user-mail-no-body": "Tentou enviar uma mensagem sem conteúdo ou com um conteúdo demasiado pequeno.", "changepassword": "Alterar palavra-passe", @@ -583,18 +584,18 @@ "botpasswords-bad-appid": "O nome do robô \"$1\" não é válido.", "botpasswords-insert-failed": "Falhou ao adicionar o nome do robô \"$1\". Já foi adicionado?", "botpasswords-update-failed": "Falha ao atualizar o nome do robô \"$1\". Será que foi eliminado?", - "botpasswords-created-title": "Criada palavra-passe para o robô", - "botpasswords-created-body": "A palavra-passe de robô, para o nome de robô \"$1\" do utilizador \"$2\" foi criada.", + "botpasswords-created-title": "A palavra-passe de robô foi criada", + "botpasswords-created-body": "A palavra-passe de robô, para o nome de robô \"$1\" do utilizador \"$2\", foi criada.", "botpasswords-updated-title": "A palavra-passe de robô foi atualizada.", - "botpasswords-updated-body": "A palavra-passe de robô, para o nome de robô \"$1\" do utilizador \"$2\" foi atualizada.", + "botpasswords-updated-body": "A palavra-passe de robô, para o nome de robô \"$1\" do utilizador \"$2\", foi atualizada.", "botpasswords-deleted-title": "Palavra-passe de robô eliminada", - "botpasswords-deleted-body": "A palavra-passe de robô, para o nome de robô \"$1\" do utilizador \"$2\" foi eliminada.", + "botpasswords-deleted-body": "A palavra-passe de robô, para o nome de robô \"$1\" do utilizador \"$2\", foi eliminada.", "botpasswords-newpassword": "A nova palavra-passe para iniciar sessão com $1 é $2. Anote-a para referência futura, por favor.
(Para robôs antigos cujo nome de acesso tenha de ser igual ao eventual nome de utilizador, também pode usar o nome de utilizador $3 e a palavra-passe $4.)", "botpasswords-no-provider": "BotPasswordsSessionProvider não está disponível.", - "botpasswords-restriction-failed": "Restrições de palavra-passe de robô evitam esta autenticação.", + "botpasswords-restriction-failed": "Restrições da palavra-passe de robô impedem esta autenticação.", "botpasswords-invalid-name": "O nome de utilizador especificado não contém o separador de palavra-passe de robô (\"$1\").", - "botpasswords-not-exist": "O utilizador \"$1\" não possui uma palavra-passe de robô \"$2\".", - "resetpass_forbidden": "Não é possível alterar palavras-passe", + "botpasswords-not-exist": "O utilizador \"$1\" não tem uma palavra-passe para o robô chamado \"$2\".", + "resetpass_forbidden": "As palavras-passe não podem ser alteradas", "resetpass_forbidden-reason": "As palavras-passe não podem ser alteradas: $1", "resetpass-no-info": "Precisa de iniciar sessão para aceder diretamente a esta página.", "resetpass-submit-loggedin": "Alterar palavra-passe", @@ -616,29 +617,29 @@ "passwordreset-domain": "Domínio:", "passwordreset-email": "Correio eletrónico:", "passwordreset-emailtitle": "Detalhes da conta na wiki {{SITENAME}}", - "passwordreset-emailtext-ip": "Alguém (provavelmente você, a partir do endereço IP $1) pediu a recuperação da palavra-passe na wiki {{SITENAME}} ($4). {{PLURAL:$3|A seguinte conta de utilizador está associada|As seguintes contas de utilizador estão associadas}} a este correio eletrónico:\n\n$2\n\n{{PLURAL:$3|Esta palavra-passe temporária irá|Estas palavras-passes temporárias irão}} expirar dentro de {{PLURAL:$5|um dia|$5 dias}}.\nDeve autenticar-se e escolher uma palavra-passe nova agora. Se outra pessoa fez este pedido, ou se entretanto se recordou da sua palavra-passe original e já não deseja alterá-la, pode ignorar esta mensagem e continuar a usar a palavra-passe antiga.", - "passwordreset-emailtext-user": "O utilizador $1 da wiki {{SITENAME}} pediu a recuperação da sua palavra-passe ($4). {{PLURAL:$3|A seguinte conta de utilizador está associada|As seguintes contas de utilizador estão associadas}} a este endereço de correio eletrónico:\n\n$2\n\n{{PLURAL:$3|Esta palavra-passe temporária irá|Estas palavras-passes temporárias irão}} expirar dentro de {{PLURAL:$5|um dia|$5 dias}}.\nDeve autenticar-se e escolher uma palavra-passe nova agora. Se outra pessoa fez este pedido, ou se entretanto se recordou da sua palavra-passe original e já não deseja alterá-la, pode ignorar esta mensagem e continuar a usar a palavra-passe antiga.", + "passwordreset-emailtext-ip": "Alguém (provavelmente você, a partir do endereço IP $1) pediu um reinício da palavra-passe na wiki {{SITENAME}} ($4). {{PLURAL:$3|A seguinte conta de utilizador está associada|As seguintes contas de utilizador estão associadas}} a este correio eletrónico:\n\n$2\n\n{{PLURAL:$3|Esta palavra-passe temporária irá|Estas palavras-passes temporárias irão}} expirar dentro de {{PLURAL:$5|um dia|$5 dias}}.\nDeve autenticar-se e escolher uma palavra-passe nova agora. Se outra pessoa fez este pedido, ou se entretanto se recordou da sua palavra-passe original e já não deseja alterá-la, pode ignorar esta mensagem e continuar a usar a palavra-passe antiga.", + "passwordreset-emailtext-user": "O utilizador $1 da wiki {{SITENAME}} pediu um reinício da sua palavra-passe na wiki {{SITENAME}} ($4). {{PLURAL:$3|A seguinte conta de utilizador está associada|As seguintes contas de utilizador estão associadas}} a este endereço de correio eletrónico:\n\n$2\n\n{{PLURAL:$3|Esta palavra-passe temporária irá|Estas palavras-passes temporárias irão}} expirar dentro de {{PLURAL:$5|um dia|$5 dias}}.\nDeve autenticar-se e escolher uma palavra-passe nova agora. Se outra pessoa fez este pedido, ou se entretanto se recordou da sua palavra-passe original e já não deseja alterá-la, pode ignorar esta mensagem e continuar a usar a palavra-passe antiga.", "passwordreset-emailelement": "{{GENDER:$1|Utilizador|Utilizadora}}: \n$1\n\nPalavra-passe temporária: \n$2", - "passwordreset-emailsentemail": "Se este é o endereço de correio eletrónico associado a esta conta, ser-lhe-á enviada uma palavra-passe de reposição.", - "passwordreset-emailsentusername": "Se houver um endereço de correio eletrónico associado a esta conta, ser-lhe-á enviada uma mensagem para redefinir a sua palavra-passe.", - "passwordreset-nocaller": "Um interlocutor deve ser fornecido", - "passwordreset-nosuchcaller": "A pessoa que chama não existe: $1", - "passwordreset-ignored": "A reposição de palavra-passe não foi realizada. Talvez o fornecedor não tenha sido configurado?", + "passwordreset-emailsentemail": "Se este endereço de correio eletrónico está associado à sua conta, ser-lhe-á enviada uma mensagem de reinício da palavra-passe.", + "passwordreset-emailsentusername": "Se houver um endereço de correio eletrónico associado a esta conta, ser-lhe-á enviada uma mensagem de reinício da palavra-passe.", + "passwordreset-nocaller": "Tem de ser fornecida uma origem (um chamador) do pedido de reinício da palavra-passe", + "passwordreset-nosuchcaller": "O utilizador que chama este pedido não existe: $1", + "passwordreset-ignored": "O reinício da palavra-passe não foi realizado. Poderá não ter sido configurado um fornecedor?", "passwordreset-invalidemail": "Correio eletrónico inválido", - "passwordreset-nodata": "Não foram fornecidos nome de utilizador(a) nem endereço de correio eletrónico", + "passwordreset-nodata": "Não foi fornecido um nome de utilizador nem um endereço de correio eletrónico", "changeemail": "Alterar ou remover o endereço de correio eletrónico", - "changeemail-header": "Complete este formulário para alterar o seu endereço de correio eletrónico. Se quer eliminar a associação de qualquer endereço de correio eletrónico à sua conta, deixe em branco o novo endereço de correio eletrónico ao enviar o formulário.", + "changeemail-header": "Preencha este formulário para alterar o seu endereço de correio eletrónico. Se quer eliminar a associação de qualquer endereço de correio eletrónico à sua conta, deixe em branco o novo endereço de correio eletrónico ao enviar o formulário.", "changeemail-no-info": "Precisa de iniciar sessão para aceder diretamente a esta página.", "changeemail-oldemail": "Correio eletrónico atual:", "changeemail-newemail": "Novo endereço de correio eletrónico:", - "changeemail-newemail-help": "Este campo deve ser deixado em branco caso pretenda remover o seu endereço de correio eletrónico.\nNão será capaz de redefinir a sua palavra-passe nem receber mensagens eletrónicas desta wiki se efetuar esta operação.", + "changeemail-newemail-help": "Este campo deve ser deixado em branco caso pretenda remover o seu endereço de correio eletrónico.\nNão poderá reiniciar a sua palavra-passe nem receber mensagens eletrónicas desta wiki se remover o correio eletrónico.", "changeemail-none": "(nenhum)", "changeemail-password": "A sua palavra-passe na wiki {{SITENAME}}:", "changeemail-submit": "Alterar correio eletrónico", "changeemail-throttled": "Realizou demasiadas tentativas de início de sessão.\nAguarde $1 antes de tentar novamente, por favor.", - "changeemail-nochange": "Por favor insira um novo endereço de e-mail.", + "changeemail-nochange": "Insira um novo endereço de correio eletrónico, por favor.", "resettokens": "Redefinir chaves", - "resettokens-text": "Pode redefinir as chaves de acesso a certos dados privados associados à sua conta aqui.\n\nDeve fazê-lo se as divulgou acidentalmente a alguém ou se a sua conta tiver sido comprometida.", + "resettokens-text": "Pode redefinir aqui as chaves de acesso a certos dados privados associados à sua conta.\n\nDeve fazê-lo se as divulgou acidentalmente a alguém ou se a sua conta tiver sido comprometida.", "resettokens-no-tokens": "Não há chaves para redefinir.", "resettokens-tokens": "Chaves:", "resettokens-token-label": "$1 (valor atual: $2)", @@ -650,9 +651,9 @@ "italic_sample": "Texto em itálico", "italic_tip": "Texto em itálico", "link_sample": "Título da ligação", - "link_tip": "Ligação interna", - "extlink_sample": "http://www.example.com ligação externa", - "extlink_tip": "Ligação externa (lembre-se do prefixo http://)", + "link_tip": "Hiperligação interna", + "extlink_sample": "http://www.example.com hiperligação externa", + "extlink_tip": "Hiperligação externa (lembre-se do prefixo http://)", "headline_sample": "Texto do cabeçalho", "headline_tip": "Secção de nível 2", "nowiki_sample": "Inserir texto não-formatado aqui", @@ -660,7 +661,7 @@ "image_sample": "Exemplo.jpg", "image_tip": "Ficheiro incorporado", "media_sample": "Exemplo.ogg", - "media_tip": "Ligação para ficheiro", + "media_tip": "Hiperligação para ficheiro", "sig_tip": "A sua assinatura, com hora e data", "hr_tip": "Linha horizontal (utilize moderadamente)", "summary": "Resumo:", @@ -690,7 +691,7 @@ "systemblockedtext": "O seu nome de utilizador ou endereço IP foram bloqueados automaticamente pelo MediaWiki.\nO motivo fornecido é:\n\n:$2\n\n* Início do bloqueio: $8\n* Expiração do bloqueio: $6\n* Destinatário do bloqueio: $7\n\nO seu endereço IP atual é $3.\nInclua todos os detalhes acima em quaisquer contactos sobre este assunto, por favor.", "blockednoreason": "sem motivo especificado", "whitelistedittext": "Precisa de $1 para poder editar páginas.", - "confirmedittext": "Precisa de confirmar o seu endereço de correio eletrónico antes de começar a editar páginas.\nIntroduza e valide o endereço através das [[Special:Preferences|preferências do utilizador]], por favor.", + "confirmedittext": "Precisa de confirmar o seu endereço de correio eletrónico antes de começar a editar páginas.\nIntroduza e valide o endereço através das suas [[Special:Preferences|preferências de utilizador]], por favor.", "nosuchsectiontitle": "Não foi possível encontrar a secção", "nosuchsectiontext": "Tentou editar uma secção que não existe.\nEla pode ter sido movida ou removida enquanto estava a ver a página.", "loginreqtitle": "Início de sessão necessário", @@ -833,7 +834,7 @@ "last": "ant", "page_first": "primeira", "page_last": "última", - "histlegend": "Seleção de diferenças: use os botões de opção para marcar as versões que deseja comparar.\nPressione 'Enter' ou clique o botão \"{{int:compareselectedversions}}\".
\nLegenda: '''({{int:cur}})''' = diferenças para a versão atual,\n'''({{int:last}})''' = diferenças para a versão anterior,\n'''{{int:minoreditletter}}''' = edição menor", + "histlegend": "Seleção de diferenças: use os botões de opção das revisões para marcar as versões que deseja comparar.\nPressione 'Enter' ou clique o botão abaixo.
\nLegenda: ({{int:cur}}) = diferenças para a versão atual,\n({{int:last}}) = diferenças para a versão anterior,\n{{int:minoreditletter}} = edição menor.", "history-fieldset-title": "Pesquisar revisões", "history-show-deleted": "Somente revisões eliminadas", "histfirst": "Mais antigas", @@ -872,12 +873,12 @@ "revdelete-selected-text": "{{PLURAL:$1|Revisão selecionada|Revisões selecionadas}} de [[:$2]]:", "revdelete-selected-file": "{{PLURAL:$1|Versão do ficheiro selecionada|Versões do ficheiro selecionadas}} de [[:$2]]:", "logdelete-selected": "{{PLURAL:$1|Evento do registo selecionado|Eventos do registo selecionados}}:", - "revdelete-text-text": "Revisões eliminadas ainda aparecerão no histórico da página, mas parte do seu conteúdo estará inacessível para o público.", - "revdelete-text-file": "Versões eliminadas do ficheiro ainda aparecerão no histórico da página, mas parte do seu conteúdo estará inacessível para o público.", + "revdelete-text-text": "As revisões eliminadas ainda aparecerão no histórico da página, mas parte do seu conteúdo estará inacessível para o público.", + "revdelete-text-file": "As versões eliminadas do ficheiro ainda aparecerão no histórico da página, mas parte do seu conteúdo estará inacessível para o público.", "logdelete-text": "Os eventos eliminados ainda aparecerão no histórico da página, mas parte do seu conteúdo será inacessível ao público.", "revdelete-text-others": "Outros administradores serão ainda capazes de aceder ao conteúdo oculto e torná-lo visível novamente, a menos que sejam definidas restrições adicionais.", "revdelete-confirm": "Por favor, confirme que pretende executar esta operação, que compreende as suas consequências e que o faz em concordância com as [[{{MediaWiki:Policy-url}}|políticas e recomendações]].", - "revdelete-suppress-text": "A supressão '''só''' deverá ser usada nos seguintes casos:\n* Informação potencialmente caluniosa, difamatória ou injuriosa\n* Informação pessoal imprópria\n*: ''endereços de domicílio e números de telefone, números de identificação nacional, etc''", + "revdelete-suppress-text": "A supressão só deverá ser usada para os seguintes casos:\n* informação potencialmente caluniosa, difamatória ou injuriosa\n* informação pessoal imprópria\n*: endereços de domicílio e números de telefone, números de identificação nacional, etc.", "revdelete-legend": "Definir restrições de visibilidade", "revdelete-hide-text": "Texto da revisão", "revdelete-hide-image": "Ocultar conteúdo do ficheiro", @@ -893,17 +894,17 @@ "revdelete-log": "Motivo:", "revdelete-submit": "Aplicar {{PLURAL:$1|à revisão selecionada|às revisões selecionadas}}", "revdelete-success": "Visibilidade da revisão atualizada.", - "revdelete-failure": "'''A visibilidade da revisão não foi atualizada:'''\n$1", + "revdelete-failure": "Não foi possível atualizar a visibilidade da revisão:\n$1", "logdelete-success": "Visibilidade da entrada do registo definida.", - "logdelete-failure": "'''Não foi possível definir a visibilidade da entrada do registo:'''\n$1", - "revdel-restore": "Alterar visibilidade", + "logdelete-failure": "Não foi possível definir a visibilidade da entrada do registo:\n$1", + "revdel-restore": "alterar visibilidade", "pagehist": "Histórico da página", "deletedhist": "Histórico de eliminações", "revdelete-hide-current": "Erro ao ocultar o item datado de $2, $1: esta é a revisão atual.\nNão pode ser ocultada.", "revdelete-show-no-access": "Erro ao mostrar o item datado de $2, $1: este item foi marcado como \"restrito\".\nNão tem acesso.", "revdelete-modify-no-access": "Erro ao modificar o item datado de $2, $1: este item foi marcado como \"restrito\".\nNão tem acesso.", "revdelete-modify-missing": "Erro ao modificar o item ID $1: não existe na base de dados!", - "revdelete-no-change": "'''Aviso:''' a revisão com data de $2, $1 já tem as configurações de visibilidade solicitadas.", + "revdelete-no-change": "Aviso: a revisão com data de $2, $1 já tem as configurações de visibilidade solicitadas.", "revdelete-concurrent-change": "Erro ao modificar o item com data/hora $2, $1: o seu estado parece ter sido alterado por outra pessoa enquanto você tentava modificá-lo.\nVerifique os registos, por favor.", "revdelete-only-restricted": "Erro ao ocultar o item de $2 às $1: não pode impedir que os itens sejam vistos pelos administradores sem selecionar também uma das outras opções de visibilidade.", "revdelete-reason-dropdown": "*Razões comuns para eliminação\n** Violação de direitos de autor\n** Comentário ou informações pessoais inapropriados\n** Nome de utilizador inapropriado\n** Informações potencialmente difamatórias", @@ -995,7 +996,7 @@ "search-relatedarticle": "Relacionado", "searchrelated": "relacionados", "searchall": "todos", - "showingresults": "{{PLURAL:$1|É apresentado '''um''' resultado|São apresentados até '''$1''' resultados}} abaixo{{PLURAL:$1||, começando pelo '''$2'''º}}.", + "showingresults": "{{PLURAL:$1|É apresentado um resultado|São apresentados até $1 resultados}} abaixo{{PLURAL:$1||, começando pelo $2º}}.", "showingresultsinrange": "Apresenta-se abaixo {{PLURAL:$1|1 resultado|até $1 resultados}} no intervalo #$2 a #$3.", "search-showingresults": "{{PLURAL:$4|Resultado $1 de $3|Resultados $1 - $2 de $3}}", "search-nonefound": "A pesquisa não produziu resultados.", @@ -1122,7 +1123,7 @@ "prefs-tabs-navigation-hint": "Dica: Pode usar as setas direita e esquerda do teclado para navegar entre os separadores.", "userrights": "Privilégios de utilizador", "userrights-lookup-user": "Selecionar um utilizador", - "userrights-user-editname": "Introduza um nome de utilizador(a):", + "userrights-user-editname": "Forneça um nome de utilizador(a):", "editusergroup": "Carregar grupos do utilizador", "editinguser": "A modificar os privilégios {{GENDER:$1|do utilizador|da utilizadora|do(a) utilizador(a)}} [[User:$1|$1]] $2", "viewinguserrights": "A ver os privilégios {{GENDER:$1|do utilizador|da utilizadora}} [[User:$1|$1]] $2", @@ -1345,6 +1346,7 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|lista de páginas novas]])", "recentchanges-legend-plusminus": "(±123)", "recentchanges-submit": "Mostrar", + "rcfilters-tag-remove": "Remover '$1'", "rcfilters-legend-heading": "Lista de abreviações:", "rcfilters-other-review-tools": "Outras ferramentas de revisão", "rcfilters-group-results-by-page": "Agrupar resultados por página", @@ -1357,6 +1359,7 @@ "rcfilters-hours-title": "Horas recentes", "rcfilters-days-show-days": "$1 {{PLURAL:$1|dia|dias}}", "rcfilters-days-show-hours": "$1 {{PLURAL:$1|hora|horas}}", + "rcfilters-highlighted-filters-list": "Realçado: $1", "rcfilters-quickfilters": "Filtros gravados", "rcfilters-quickfilters-placeholder-title": "Ainda não foi gravado nenhum link", "rcfilters-quickfilters-placeholder-description": "Para gravar as suas configurações dos filtros e reutilizá-las mais tarde, clique o ícone do marcador de página, na área Filtro Ativo abaixo.", @@ -1386,7 +1389,7 @@ "rcfilters-filterlist-noresults": "Não foram encontrados filtros", "rcfilters-noresults-conflict": "Não foram encontrados resultados porque os critérios de pesquisa estão em conflito", "rcfilters-state-message-subset": "Este filtro não produz efeito porque os seus resultados já estão incluídos nos {{PLURAL:$2|do seguinte filtro mais abrangente|dos seguintes filtros mais abrangentes}} (tente usar o realce para diferenciá-lo): $1", - "rcfilters-state-message-fullcoverage": "Selecionar todos os filtros de um grupo é o mesmo que não selecionar nenhum, portanto este filtro não produz efeito. O grupo inclui: $1", + "rcfilters-state-message-fullcoverage": "Selecionar todos os filtros deste grupo é o mesmo que não selecionar nenhum, portanto este filtro não produz efeito. O grupo inclui: $1", "rcfilters-filtergroup-authorship": "Autoria da contribuição", "rcfilters-filter-editsbyself-label": "Modificações feitas por si", "rcfilters-filter-editsbyself-description": "As suas edições.", @@ -1425,6 +1428,11 @@ "rcfilters-filter-watchlist-watchednew-description": "Modificações de páginas vigiadas que ainda não visitou depois de serem modificadas.", "rcfilters-filter-watchlist-notwatched-label": "Ausente da lista de páginas vigiadas", "rcfilters-filter-watchlist-notwatched-description": "Tudo menos modificações das suas páginas vigiadas.", + "rcfilters-filtergroup-watchlistactivity": "Atividade das páginas vigiadas", + "rcfilters-filter-watchlistactivity-unseen-label": "Mudanças ainda não vistas", + "rcfilters-filter-watchlistactivity-unseen-description": "Modificações de páginas que ainda não visitou depois de serem modificadas.", + "rcfilters-filter-watchlistactivity-seen-label": "Modificações já vistas", + "rcfilters-filter-watchlistactivity-seen-description": "Modificações de páginas que já visitou depois de serem modificadas.", "rcfilters-filtergroup-changetype": "Tipo de alteração", "rcfilters-filter-pageedits-label": "Edições de páginas", "rcfilters-filter-pageedits-description": "Edições do conteúdo da wiki, de discussões, de descrições de categorias…", @@ -1454,6 +1462,7 @@ "rcfilters-liveupdates-button": "Atualizações instantâneas", "rcfilters-liveupdates-button-title-on": "Desligar atualizações ao vivo", "rcfilters-liveupdates-button-title-off": "Apresentar mudanças novas à medida que acontecem", + "rcfilters-watchlist-markseen-button": "Marcar todas as modificações como já vistas", "rcnotefrom": "Abaixo {{PLURAL:$5|está a mudança|estão as mudanças}} desde $2 (mostradas até $1).", "rclistfromreset": "Reiniciar a seleção da data", "rclistfrom": "Mostrar as novas mudanças a partir das $2 de $3", @@ -1498,7 +1507,7 @@ "recentchangeslinked-feed": "Alterações relacionadas", "recentchangeslinked-toolbox": "Alterações relacionadas", "recentchangeslinked-title": "Alterações relacionadas com \"$1\"", - "recentchangeslinked-summary": "Esta é uma lista de mudanças recentes a todas as páginas para as quais a página fornecida contém ligações (ou de todas as que pertencem à categoria fornecida).\nAs suas [[Special:Watchlist|páginas vigiadas]] aparecem a '''negrito'''.", + "recentchangeslinked-summary": "Esta é uma lista de mudanças recentes a todas as páginas para as quais a página fornecida contém hiperligações (ou de todas as que pertencem à categoria fornecida).\nAs suas [[Special:Watchlist|páginas vigiadas]] aparecem a negrito.", "recentchangeslinked-page": "Nome da página:", "recentchangeslinked-to": "Inversamente, mostrar mudanças às páginas que contêm ligações para esta", "recentchanges-page-added-to-category": "[[:$1]] foi adicionada à categoria", @@ -1516,7 +1525,7 @@ "upload_directory_read_only": "O servidor de Internet não possui permissão de escrita no diretório de carregamento de ficheiros ($1).", "uploaderror": "Erro ao carregar", "upload-recreate-warning": "Aviso: Um ficheiro com esse nome foi eliminado ou movido.\n\nPara sua conveniência, é apresentado abaixo o registo de eliminação e movimentação da página:", - "uploadtext": "Utilize o formulário abaixo para fazer o carregamento de novos ficheiros.\nPara ver ou pesquisar ficheiros anteriormente enviados, consulte a [[Special:FileList|lista de ficheiros]].\nOs reenvios de um ficheiro são também registados no [[Special:Log/upload|registo de carregamentos]] e as eliminações no [[Special:Log/delete|registo de eliminações]].\n\nPara utilizar um ficheiro numa página, depois de ter feito o carregamento, insira uma ligação com um dos seguintes formatos:\n* '''[[{{ns:file}}:ficheiro.jpg]]''' para mostrar uma imagem nas suas dimensões originais;\n* '''[[{{ns:file}}:ficheiro.png|200px|thumb|left|texto]]''' para mostrar uma imagem com a dimensão horizontal de 200 píxeis, dentro de uma caixa, na margem esquerda, contendo 'texto' como descrição (pode usar subconjuntos destas características);\n* '''[[{{ns:media}}:ficheiro.ogg]]''' para apresentar uma ligação direta para o ficheiro em vez de mostrá-lo, quer este tenha por conteúdo uma imagem ou outros dados.", + "uploadtext": "Utilize o formulário abaixo para fazer o carregamento de novos ficheiros.\nPara ver ou pesquisar ficheiros anteriormente enviados, consulte a [[Special:FileList|lista de ficheiros]].\nOs reenvios de um ficheiro são também registados no [[Special:Log/upload|registo de carregamentos]] e as eliminações no [[Special:Log/delete|registo de eliminações]].\n\nPara utilizar um ficheiro numa página, depois de ter feito o carregamento, insira uma hiperligação com um dos seguintes formatos:\n* [[{{ns:file}}:Ficheiro.jpg]] para mostrar uma imagem nas suas dimensões originais;\n* [[{{ns:file}}:Ficheiro.png|200px|thumb|left|texto]] para mostrar uma imagem com a dimensão horizontal de 200 píxeis, dentro de uma caixa, na margem esquerda, contendo 'texto' como descrição (pode usar subconjuntos destas características);\n* [[{{ns:media}}:Ficheiro.ogg]] para apresentar uma hiperligação direta para o ficheiro em vez de mostrá-lo, quer este tenha por conteúdo uma imagem quer outros dados.", "upload-permitted": "{{PLURAL:$2|Tipo|Tipos}} de ficheiro {{PLURAL:$2|permitido|permitidos}}: $1.", "upload-preferred": "{{PLURAL:$2|Tipo|Tipos}} de ficheiro {{PLURAL:$2|preferido|preferidos}}: $1.", "upload-prohibited": "{{PLURAL:$2|Tipo|Tipos}} de ficheiro {{PLURAL:$2|proibido|proibidos}}: $1.", @@ -1537,9 +1546,9 @@ "filetype-mime-mismatch": "A extensão \".$1\" não corresponde ao tipo MIME do ficheiro ($2).", "filetype-badmime": "Não é permitido carregar ficheiros do tipo MIME \"$1\".", "filetype-bad-ie-mime": "Não é possível carregar este ficheiro porque o Internet Explorer o detetaria como \"$1\", que é um tipo de ficheiro não permitido e potencialmente perigoso.", - "filetype-unwanted-type": "'''\".$1\"''' não é um tipo de ficheiro desejado.\n{{PLURAL:$3|O tipo preferido é|Os tipos preferidos são}} $2.", - "filetype-banned-type": "'''\".$1\"''' {{PLURAL:$4|não é um tipo de ficheiro permitido|não são tipos de ficheiro permitidos}}.\n{{PLURAL:$3|O tipo de ficheiro permitido é|Os tipos de ficheiro permitidos são}} $2.", - "filetype-missing": "O ficheiro não possui uma extensão (como, por exemplo, \".jpg\").", + "filetype-unwanted-type": "\".$1\" não é um tipo de ficheiro desejado.\n{{PLURAL:$3|O tipo preferido é|Os tipos preferidos são}} $2.", + "filetype-banned-type": "\".$1\" {{PLURAL:$4|não é um tipo de ficheiro permitido|não são tipos de ficheiro permitidos}}.\n{{PLURAL:$3|O tipo de ficheiro permitido é|Os tipos de ficheiro permitidos são}} $2.", + "filetype-missing": "O ficheiro não tem uma extensão (como, por exemplo, \".jpg\").", "empty-file": "O ficheiro que enviou estava vazio.", "file-too-large": "O ficheiro que enviou era demasiado grande.", "filename-tooshort": "O nome do ficheiro é demasiado curto.", @@ -1603,7 +1612,7 @@ "watchthisupload": "Vigiar este ficheiro", "filewasdeleted": "Um ficheiro com este nome foi carregado anteriormente e subsequentemente eliminado.\nDeverá verificar o $1 antes de voltar a enviá-lo.", "filename-thumb-name": "Isto parece ser o título de uma miniatura. Por favor, não volte a carregar miniaturas na mesma wiki. Se este não é o caso, corrija o nome do ficheiro por um mais significativo, e que não possua o prefixo de miniatura.", - "filename-bad-prefix": "O nome do ficheiro que está a enviar começa por '''\"$1\"''', um nome pouco explicativo, normalmente originado de forma automática por câmaras digitais. Escolha um nome de ficheiro mais explicativo, por favor.", + "filename-bad-prefix": "O nome do ficheiro que está a enviar começa por \"$1\", um nome pouco explicativo, normalmente originado de forma automática por câmaras digitais. Escolha um nome de ficheiro mais explicativo, por favor.", "filename-prefix-blacklist": " #
\n# A sintaxe é a seguinte:\n#   * Tudo a partir do carácter \"#\" até ao fim da linha é um comentário\n#   * Todas as linhas não vazias são um prefixo para nomes de ficheiros típicos atribuídos automaticamente por câmaras digitais\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # alguns telefones móveis\nIMG # genérico\nJD # Jenoptik\nMGP # Pentax\nPICT # misc.\n #
", "upload-proto-error": "Protocolo incorreto", "upload-proto-error-text": "O carregamento remoto de ficheiros requer endereços URL começados por http:// ou ftp://.", @@ -1770,22 +1779,22 @@ "upload-disallowed-here": "Não pode substituir este ficheiro.", "filerevert": "Reverter $1", "filerevert-legend": "Reverter ficheiro", - "filerevert-intro": "Está prestes a reverter o ficheiro '''[[Media:$1|$1]]''' para a [$4 versão de $2 às $3].", + "filerevert-intro": "Está prestes a reverter o ficheiro [[Media:$1|$1]] para a [$4 versão de $2 às $3].", "filerevert-comment": "Motivo:", "filerevert-defaultcomment": "Revertido para a versão de $2, $1 ($3)", "filerevert-submit": "Reverter", - "filerevert-success": "'''[[Media:$1|$1]]''' foi revertida para a [$4 versão das $3 de $2].", - "filerevert-badversion": "Não há uma versão local anterior deste ficheiro no período de tempo especificado.", + "filerevert-success": "[[Media:$1|$1]] foi revertida para a [$4 versão das $3 de $2].", + "filerevert-badversion": "Não há uma versão local anterior deste ficheiro com a data e hora fornecidas.", "filerevert-identical": "A versão atual do ficheiro já é idêntica à selecionada.", "filedelete": "Eliminar $1", "filedelete-legend": "Eliminar ficheiro", - "filedelete-intro": "Está prestes a eliminar o ficheiro '''[[Media:$1|$1]]''' e todo o seu histórico.", - "filedelete-intro-old": "Está prestes a eliminar a versão de '''[[Media:$1|$1]]''' tal como se encontrava em [$4 $3, $2].", + "filedelete-intro": "Está prestes a eliminar o ficheiro [[Media:$1|$1]] e todo o seu histórico.", + "filedelete-intro-old": "Está prestes a eliminar a versão de [[Media:$1|$1]] tal como se encontrava em [$4 $3, $2].", "filedelete-comment": "Motivo:", "filedelete-submit": "Eliminar", - "filedelete-success": "'''$1''' foi eliminado.", - "filedelete-success-old": "A versão de '''[[Media:$1|$1]]''' tal como $3, $2 foi eliminada.", - "filedelete-nofile": "'''$1''' não existe.", + "filedelete-success": "$1 foi eliminado.", + "filedelete-success-old": "A versão de [[Media:$1|$1]] de $2 às $3 foi eliminada.", + "filedelete-nofile": "$1 não existe.", "filedelete-nofile-old": "Não há nenhuma versão de $1 em arquivo com os atributos especificados.", "filedelete-otherreason": "Outro/motivo adicional:", "filedelete-reason-otherlist": "Outro motivo", @@ -2138,7 +2147,7 @@ "notvisiblerev": "Edição eliminada", "watchlist-details": "{{PLURAL:$1|Existe $1 página|Existem $1 páginas}} na sua lista de páginas vigiadas, excluindo-se as páginas de discussão.", "wlheader-enotif": "A notificação por correio eletrónico está ativa.", - "wlheader-showupdated": "As páginas modificadas desde a última vez que as visitou aparecem destacadas a '''negrito'''.", + "wlheader-showupdated": "As páginas modificadas desde a última vez que as visitou aparecem destacadas a negrito.", "wlnote": "A seguir {{PLURAL:$1|está a última alteração ocorrida|estão as últimas $1 alterações ocorridas}} {{PLURAL:$2|na última hora|nas últimas $2 horas}} até $3, $4.", "wlshowlast": "Ver últimas $1 horas $2 dias", "watchlist-hide": "Ocultar", @@ -2257,11 +2266,11 @@ "protect_expiry_invalid": "O tempo de expiração fornecido é inválido.", "protect_expiry_old": "O tempo de expiração fornecido situa-se no passado.", "protect-unchain-permissions": "Desbloquear outras opções de proteção", - "protect-text": "Pode ver e alterar aqui o nível de proteção da página '''$1'''.", - "protect-locked-blocked": "Não pode alterar níveis de proteção enquanto estiver bloqueado.\nEsta é a configuração presente para a página '''$1''':", - "protect-locked-dblock": "Não é possível alterar os níveis de proteção, porque a base de dados está bloqueada.\nEsta é a configuração atual para a página '''$1''':", - "protect-locked-access": "A sua conta não tem permissões para alterar os níveis de proteção de uma página.\nEsta é a configuração atual da página '''$1''':", - "protect-cascadeon": "Esta página está atualmente protegida porque está transcluída {{PLURAL:$1|na página listada a seguir, a qual|nas páginas listadas a seguir, as quais}} têm a proteção em cascata ativada.\nAlterações feitas ao nível de proteção desta página não afetarão a proteção em cascata.", + "protect-text": "Pode ver e alterar aqui o nível de proteção da página $1.", + "protect-locked-blocked": "Não pode alterar níveis de proteção enquanto estiver bloqueado.\nEsta é a configuração presente para a página $1:", + "protect-locked-dblock": "Não é possível alterar os níveis de proteção, porque a base de dados está bloqueada.\nEsta é a configuração atual para a página $1:", + "protect-locked-access": "A sua conta não tem permissões para alterar os níveis de proteção de uma página.\nEsta é a configuração atual da página $1:", + "protect-cascadeon": "Esta página está atualmente protegida porque está transcluída {{PLURAL:$1|na página listada a seguir, a qual tem|nas páginas listadas a seguir, as quais têm}} a proteção em cascata ativada.\nAlterações feitas ao nível de proteção desta página não afetarão a proteção em cascata.", "protect-default": "Permitir todos os utilizadores", "protect-fallback": "Permitir apenas utilizadores com o privilégio de \"$1\"", "protect-level-autoconfirmed": "Permitir apenas utilizadores autoconfirmados", @@ -2295,11 +2304,11 @@ "restriction-level-all": "qualquer nível", "undelete": "Ver páginas eliminadas", "undeletepage": "Ver e restaurar páginas eliminadas", - "undeletepagetitle": "'''Seguem-se as edições eliminadas de [[:$1]]'''.", + "undeletepagetitle": "Seguem-se as edições eliminadas de [[:$1|$1]].", "viewdeletedpage": "Ver páginas eliminadas", "undeletepagetext": "{{PLURAL:$1|A seguinte página foi eliminada|As seguintes páginas foram eliminadas}}, mas ainda {{PLURAL:$1|permanece|permanecem}} em arquivo e podem ser restauradas. O arquivo pode ser limpo periodicamente.", "undelete-fieldset-title": "Restaurar edições", - "undeleteextrahelp": "Para restaurar o histórico de edições completo desta página, desmarque todas as caixas de seleção e clique '''''{{int:undeletebtn}}'''''.\nPara efetuar uma restauração seletiva, marque as caixas correspondentes às edições que pretende restaurar e clique '''''{{int:undeletebtn}}'''''.", + "undeleteextrahelp": "Para restaurar o histórico de edições completo desta página, desmarque todas as caixas de seleção e clique {{int:undeletebtn}}'.\nPara efetuar uma restauração seletiva, marque as caixas correspondentes às edições que pretende restaurar e clique {{int:undeletebtn}}.", "undeleterevisions": "$1 {{PLURAL:$1|revisão eliminada|revisões eliminadas}}", "undeletehistory": "Se restaurar uma página, todas as edições serão restauradas para o histórico.\nSe uma nova página foi criada com o mesmo nome desde a eliminação, as edições restauradas aparecerão no histórico anterior.", "undeleterevdel": "O restauro não será efetuado se resulta na remoção parcial da versão mais recente da página ou ficheiro.\nNestes casos, deverá desmarcar ou revelar a versão eliminada mais recente.", @@ -2314,7 +2323,7 @@ "undeleteinvert": "Inverter seleção", "undeletecomment": "Motivo:", "cannotundelete": "Algumas ou todas as restaurações falharam:\n$1", - "undeletedpage": "'''$1 foi restaurada'''\n\nConsulte o [[Special:Log/delete|registo de eliminações]] para um registo das eliminações e restaurações mais recentes.", + "undeletedpage": "$1 foi restaurada\n\nConsulte o [[Special:Log/delete|registo de eliminações]] para um registo das eliminações e restaurações mais recentes.", "undelete-header": "Consulte o [[Special:Log/delete|registo de eliminações]] para ver as páginas eliminadas recentemente.", "undelete-search-title": "Pesquisar páginas eliminadas", "undelete-search-box": "Pesquisar páginas eliminadas", @@ -2369,9 +2378,9 @@ "whatlinkshere": "Páginas afluentes", "whatlinkshere-title": "Páginas com ligações para \"$1\"", "whatlinkshere-page": "Página:", - "linkshere": "As seguintes páginas têm ligação a '''[[:$1]]''':", - "nolinkshere": "Não existem afluentes para '''[[:$1]]''' com as condições especificadas.", - "nolinkshere-ns": "Não existem ligações para [[:$1]] no domínio selecionado.", + "linkshere": "As seguintes páginas têm hiperligações para [[:$1]]:", + "nolinkshere": "Não existem afluentes para [[:$1]] com as condições especificadas.", + "nolinkshere-ns": "Não existem afluentes para [[:$1]] no espaço nominal selecionado.", "isredirect": "página de redirecionamento", "istemplate": "inclusão", "isimage": "ligação para ficheiro", @@ -2518,11 +2527,11 @@ "lockedbyandtime": "(por {{GENDER:$1|$1}} em $2 às $3)", "move-page": "Mover $1", "move-page-legend": "Mover página", - "movepagetext": "Usando o formulário abaixo pode mover esta página e todo o seu histórico de edições para uma página nova com outro nome.\nA página original será transformada num redirecionamento para a página nova.\nPode corrigir de forma automática os redirecionamentos existentes que apontam para a página original.\nCaso escolha não o fazer, após a operação certifique-se de que dela não resultaram [[Special:DoubleRedirects|redirecionamentos duplos]] ou [[Special:BrokenRedirects|quebrados]].\nÉ da sua responsabilidade verificar que as ligações continuam a apontar para onde é suposto que apontem.\n\nNote que a página '''não''' será movida se já existir uma página com o novo título, a menos que esta última seja um redirecionamento sem qualquer histórico de edições.\nIsto significa que pode mover uma página de volta para o seu nome original se a tiver movido por engano e que não pode mover uma página para cima de outra já existente.\n\n'''Nota:'''\nNuma página popular esta operação pode representar uma mudança drástica e inesperada;\ncertifique-se de que compreende as consequências da mudança antes de prosseguir, por favor.", - "movepagetext-noredirectfixer": "Usando o formulário abaixo, pode alterar o nome de uma página e mover todo o histórico desta para o nome novo.\nA página antiga é transformada numa página de redirecionamento para a nova.\nVerifique a existência de [[Special:DoubleRedirects|redirecionamentos duplos]] ou [[Special:BrokenRedirects|quebrados]].\nÉ da sua responsabilidade certificar-se de que as ligações continuam a apontar para onde é suposto.\n\nNote que a página '''não''' será movida se já existir uma página com o nome novo, a menos que esta página já existente esteja vazia ou seja uma página de redirecionamento e não tenha um histórico de edições.\nIsto também significa que, se se tiver enganado, pode alterar o nome da página movida de volta para o seu nome original; e que não pode sobrescrever o conteúdo de uma página existente.\n\n'''Nota:'''\nPara páginas populares, esta operação pode representar uma mudança drástica e inesperada;\ncertifique-se de que compreende as consequências da operação antes de continuar.", + "movepagetext": "Usando o formulário abaixo pode mover esta página e todo o seu histórico de edições para uma página nova com outro nome.\nA página original será transformada num redirecionamento para a página nova.\nPode corrigir de forma automática os redirecionamentos existentes que apontam para a página original.\nCaso escolha não o fazer, após a operação certifique-se de que dela não resultaram [[Special:DoubleRedirects|redirecionamentos duplos]] ou [[Special:BrokenRedirects|quebrados]].\nÉ da sua responsabilidade verificar que as hiperligações continuam a apontar para onde é suposto que apontem.\n\nNote que a página não será movida se já existir uma página com o novo título, a menos que esta última seja um redirecionamento sem qualquer histórico de edições.\nIsto significa que pode mover uma página de volta para o seu nome original se a tiver movido por engano e que não pode mover uma página para cima de outra já existente.\n\nNota:\nNuma página popular esta operação pode representar uma mudança drástica e inesperada;\ncertifique-se de que compreende as consequências da mudança antes de prosseguir, por favor.", + "movepagetext-noredirectfixer": "Usando o formulário abaixo, pode alterar o nome de uma página e mover todo o histórico desta para o nome novo.\nA página antiga é transformada numa página de redirecionamento para a nova.\nVerifique a existência de [[Special:DoubleRedirects|redirecionamentos duplos]] ou [[Special:BrokenRedirects|quebrados]].\nÉ da sua responsabilidade certificar-se de que as hiperligações continuam a apontar para onde é suposto que apontem.\n\nNote que a página não será movida se já existir uma página com o nome novo, a menos que esta página já existente esteja vazia ou seja uma página de redirecionamento e não tenha um histórico de edições.\nIsto também significa que, se se tiver enganado, pode alterar o nome da página movida de volta para o seu nome original; e que não pode sobrescrever o conteúdo de uma página existente.\n\nNota:\nPara páginas populares, esta operação pode representar uma mudança drástica e inesperada;\ncertifique-se de que compreende as consequências da operação antes de continuar.", "movepagetalktext": "Se assinalar esta opção, e existir uma página de discussão associada, ela será automaticamente movida, a não ser que já exista uma página de discussão com o novo título que não esteja vazia.\n\nNeste caso, terá de mover a página de discussão manualmente, ou fundi-la com a existente, se assim desejar.", - "moveuserpage-warning": "'''Aviso:''' Está prestes a mover uma página de utilizador. Note que a página será apenas movida, ''sem'' alterar o nome do utilizador.", - "movecategorypage-warning": "Aviso: Está prestes a mover uma categoria. Por favor, note que apenas moverá a página da categoria e quaisquer páginas que estejam listadas não serão recategorizadas na nova.", + "moveuserpage-warning": "Aviso: Está prestes a mover uma página de utilizador. Note que a página será apenas movida, sem alterar o nome do utilizador.", + "movecategorypage-warning": "Aviso: Está prestes a mover uma categoria. Note, por favor, que apenas moverá a página da categoria e que quaisquer páginas que estejam nesta categoria não serão recategorizadas para a nova.", "movenologintext": "Precisa de ser um utilizador registado e [[Special:UserLogin|ter sessão iniciada]] para poder mover uma página.", "movenotallowed": "Não tem permissão para mover páginas.", "movenotallowedfile": "Não possui permissão para mover ficheiros.", @@ -3280,8 +3289,8 @@ "scarytranscludefailed": "[Não foi possível obter a predefinição a partir de $1]", "scarytranscludefailed-httpstatus": "[Não foi possível obter a predefinição a partir de $1: HTTP $2]", "scarytranscludetoolong": "[O URL é demasiado longo]", - "deletedwhileediting": "AVISO: Esta página foi eliminada depois de ter começado a editá-la!", - "confirmrecreate": "Depois de ter começado a editar esta página, {{GENDER:$1|o utilizador|a utilizadora|o(a) utilizador(a)}} [[User:$1|$1]] ([[User talk:$1|discussão]]) eliminou-a pelo seguinte motivo:\n: $2\nPor favor, confirme que quer realmente recriar esta página.", + "deletedwhileediting": "Aviso: Esta página foi eliminada após ter começado a editá-la!", + "confirmrecreate": "Depois de ter começado a editar esta página, {{GENDER:$1|o utilizador|a utilizadora|o(a) utilizador(a)}} [[User:$1|$1]] ([[User talk:$1|discussão]]) eliminou-a pelo seguinte motivo:\n: $2\nConfirme que quer realmente recriar esta página, por favor.", "confirmrecreate-noreason": "{{GENDER:$1|O utilizador|A utilizadora|O(a) utilizador(a)}} [[User:$1|$1]] ([[User talk:$1|discussão]]) eliminou esta página depois de ter começado a editá-la. Confirme que deseja recriar a página, por favor.", "recreate": "Recriar", "confirm-purge-title": "Purgar esta página", diff --git a/languages/i18n/qqq.json b/languages/i18n/qqq.json index eeb0e7a65f..897728e0f0 100644 --- a/languages/i18n/qqq.json +++ b/languages/i18n/qqq.json @@ -91,6 +91,7 @@ "Mormegil", "Mpradeep", "Murma174", + "MusikAnimal", "Najami", "Naudefj", "Nemo bis", @@ -1540,6 +1541,7 @@ "recentchanges-legend-unpatrolled": "Used as legend on [[Special:RecentChanges]] and [[Special:Watchlist]].\n\nRefers to {{msg-mw|Recentchanges-label-unpatrolled}}.", "recentchanges-legend-plusminus": "{{optional}}\nA plus/minus sign with a number for the legend.", "recentchanges-submit": "Label for submit button in [[Special:RecentChanges]]\n{{Identical|Show}}", + "rcfilters-tag-remove": "A tooltip for the button that removes a filter from the active filters area in [[Special:RecentChanges]] and [[Special:Watchlist]] when RCFilters are enabled. \n\nParameters: $1 - Tag label", "rcfilters-legend-heading": "Used as a heading for legend box on [[Special:RecentChanges]] and [[Special:Watchlist]] when RCFilters are enabled.", "rcfilters-other-review-tools": "Used as a heading for the community collection of other links on [[Special:RecentChanges]] when RCFilters are enabled.", "rcfilters-group-results-by-page": "A label for the checkbox describing whether the results in [[Special:RecentChanges]] are grouped by page when RCFilters are enabled.", @@ -1550,8 +1552,9 @@ "rcfilters-limit-shownum": "Title for the button that opens the operation to control how many results are shown. \n\nParameters: $1 - Number of results shown", "rcfilters-days-title": "Title for the options to change the number of days for the results shown.", "rcfilters-hours-title": "Title for the options to change the number of hours for the results shown.", - "rcfilters-days-show-days": "Title for the button that opens the operation to control the day range for the results. \n\nParameters: $1 - Number of days shown", - "rcfilters-days-show-hours": "Title for the button that opens the operation to control the hour range for the results. \n\nParameters: $1 - Number of hours shown", + "rcfilters-days-show-days": "Title for the button that opens the operation to control the day range for the results. \n\nParameters: $1 - Number of days shown\n{{Identical|Day}}", + "rcfilters-days-show-hours": "Title for the button that opens the operation to control the hour range for the results. \n\nParameters: $1 - Number of hours shown\n{{Identical|Hour}}", + "rcfilters-highlighted-filters-list": "Text for the tooltip that is displayed over highlighted results, specifying which filters the result matches in [[Special:RecentChanges]] when RCFilters are enabled. \n\nParameters: $1 - A comma separated list of matching filter names.", "rcfilters-quickfilters": "Label for the button that opens the saved filter settings menu in [[Special:RecentChanges]]", "rcfilters-quickfilters-placeholder-title": "Title for the text shown in the quick filters menu on [[Special:RecentChanges]] if the user has not saved any quick filters.", "rcfilters-quickfilters-placeholder-description": "Description for the text shown in the quick filters menu on [[Special:RecentChanges]] if the user has not saved any quick filters.", @@ -1613,13 +1616,18 @@ "rcfilters-filter-minor-description": "Description for the filter for showing edits marked as minor.", "rcfilters-filter-major-label": "Label for the filter for showing edits not marked as minor.", "rcfilters-filter-major-description": " Description for the filter for showing edits not marked as minor.", - "rcfilters-filtergroup-watchlist": "Title for the watchlist filter group", + "rcfilters-filtergroup-watchlist": "Title for the watchlist filter group (only available on [[Special:Recentchanges]])", "rcfilters-filter-watchlist-watched-label": "Label for the filter for showing changes to pages on your watchlist.", "rcfilters-filter-watchlist-watched-description": "Description for the filter for showing changes to pages on your watchlist.", "rcfilters-filter-watchlist-watchednew-label": "Label for the filter for showing new changes to pages on your watchlist.", "rcfilters-filter-watchlist-watchednew-description": "Description for the filter for showing new changes to pages on your watchlist.", "rcfilters-filter-watchlist-notwatched-label": "Label for the filter for showing changes to pages not on your watchlist.", "rcfilters-filter-watchlist-notwatched-description": "Description for the filter for showing changes to pages not on your watchlist.", + "rcfilters-filtergroup-watchlistactivity": "Title for the watchlist activity filter group (only available on [[Special:Watchlist]])", + "rcfilters-filter-watchlistactivity-unseen-label": "Label for unseen changes in the watchlist activity filter group.", + "rcfilters-filter-watchlistactivity-unseen-description": "Description for unseen changes in the watchlist activity filter group.", + "rcfilters-filter-watchlistactivity-seen-label": "Label for seen changes in the watchlist activity filter group.", + "rcfilters-filter-watchlistactivity-seen-description": "Description for seen changes in the watchlist activity filter group.", "rcfilters-filtergroup-changetype": "Title for the filter group for edit type.", "rcfilters-filter-pageedits-label": "Label for the filter for showing edits to existing pages.", "rcfilters-filter-pageedits-description": "Description for the filter for showing edits to existing pages.", @@ -1651,6 +1659,9 @@ "rcfilters-liveupdates-button": "Label for the button to enable or disable live updates on [[Special:RecentChanges]]", "rcfilters-liveupdates-button-title-on": "Title for the button to enable or disable live updates on [[Special:RecentChanges]] when the feature is ON.", "rcfilters-liveupdates-button-title-off": "Title for the button to enable or disable live updates on [[Special:RecentChanges]] when the feature is OFF.", + "rcfilters-watchlist-markseen-button": "Label for the button to mark all changes as seen on [[Special:Watchlist]] when using the structured filters interface.", + "rcfilters-watchlist-edit-watchlist-button": "Label for the button to edit the watched pages on [[Special:Watchlist]] when using the structured filters interface.\n\nCf. {{msg-mw|watchlisttools-edit}}.", + "rcfilters-watchlist-showupdated": "Message at the top of [[Special:Watchlist]] when the Structured filters are enabled that describes what unseen changes look like.\n\nCf. {{msg-mw|wlheader-showupdated}}", "rcnotefrom": "This message is displayed at [[Special:RecentChanges]] when viewing recentchanges from some specific time.\n\nThe corresponding message is {{msg-mw|Rclistfrom}}.\n\nParameters:\n* $1 - the maximum number of changes that are displayed\n* $2 - (Optional) a date and time\n* $3 - a date\n* $4 - a time\n* $5 - Number of changes are displayed, for use with PLURAL", "rclistfromreset": "Used on [[Special:RecentChanges]] to reset a selection of a certain date range.", "rclistfrom": "Used on [[Special:RecentChanges]]. Parameters:\n* $1 - (Currently not use) date and time. The date and the time adds to the rclistfrom description.\n* $2 - time. The time adds to the rclistfrom link description (with split of date and time).\n* $3 - date. The date adds to the rclistfrom link description (with split of date and time).\n\nThe corresponding message is {{msg-mw|Rcnotefrom}}.", @@ -2639,7 +2650,9 @@ "sp-contributions-explain": "{{optional}}", "sp-contributions-footer": "{{ignored}}This is the footer for users that are not anonymous or newbie on [[Special:Contributions]].", "sp-contributions-footer-anon": "{{ignored}}This is the footer for anonymous users on [[Special:Contributions]].", + "sp-contributions-footer-anon-range": "{{ignored}}This is the footer for IP ranges on [[Special:Contributions]].", "sp-contributions-footer-newbies": "{{ignored}}This is the footer for newbie users on [[Special:Contributions]].", + "sp-contributions-outofrange": "Message shown when a user tries to view contributions of an IP range that's too large. $1 is the numerical limit imposed on the CIDR range.", "whatlinkshere": "The text of the link in the toolbox (on the left, below the search menu) going to [[Special:WhatLinksHere]].\n\nSee also:\n* {{msg-mw|Whatlinkshere}}\n* {{msg-mw|Accesskey-t-whatlinkshere}}\n* {{msg-mw|Tooltip-t-whatlinkshere}}", "whatlinkshere-title": "Title of the special page [[Special:WhatLinksHere]]. This page appears when you click on the 'What links here' button in the toolbox. $1 is the name of the page concerned.", "whatlinkshere-summary": "{{doc-specialpagesummary|whatlinkshere}}", @@ -3985,7 +3998,7 @@ "specialpages": "{{doc-special|SpecialPages|unlisted=1}}\nDisplay name of link to [[Special:SpecialPages]] shown on all pages in the toolbox.\n\nSee also:\n* {{msg-mw|Specialpages}}\n* {{msg-mw|Accesskey-t-specialpages}}\n* {{msg-mw|Tooltip-t-specialpages}}\n{{Identical|Special page}}", "specialpages-summary": "{{doc-specialpagesummary|specialpages}}", "specialpages-note-top": "Heading for {{msg-mw|specialpages-note}}.\n{{Identical|Legend}}", - "specialpages-note-restricted": "Footer note for the [[Special:SpecialPages]] page", + "specialpages-note-restricted": "Footer note for the [[Special:SpecialPages]] page\n\nCompare {{msg-mw|Mw-core-1.18-specialpages-note}}", "specialpages-note-cached": "{{ignore}}\nFooter note for the [[Special:SpecialPages]] page", "specialpages-group-maintenance": "{{doc-special-group|like=[[Special:DoubleRedirects]], [[Special:LonelyPages]] and [[Special:WantedPages]]}}", "specialpages-group-other": "{{doc-special-group|like=[[Special:AdminLinks]] and [[Special:BookSources]]}}", diff --git a/languages/i18n/rif.json b/languages/i18n/rif.json index cc85e3b2ec..905a618b0f 100644 --- a/languages/i18n/rif.json +++ b/languages/i18n/rif.json @@ -16,7 +16,7 @@ "sunday": "ⴰⵙⴰⵎⴰⵙ", "monday": "ⴰⵢⵏⴰⵙ", "tuesday": "ⴰⵙⵉⵏⴰⵙ", - "wednesday": "Akṛas (Řarbeɛ)", + "wednesday": "ⵍⴰⵔⴱⵄ", "thursday": "ⴰⴽⵡⴰⵙ", "friday": "ⴰⵙⵉⵎⵡⴰⵙ", "saturday": "Asiḍyas (Esseft)", @@ -42,7 +42,7 @@ "january-gen": "ⵉⵏⵏⴰⵢⵔ", "february-gen": "Ybrayr", "march-gen": "Mars", - "april-gen": "Ibrir", + "april-gen": "ⴰⴱⵔⵉⵍ", "may-gen": "ⵎⴰⵢⵢⵓ", "june-gen": "ⵢⵓⵏⵢⵓ", "july-gen": "ⵢⵓⵍⵢⵓⵣ", @@ -54,7 +54,7 @@ "jan": "ⵉⵏⵏ", "feb": "Yebrayer", "mar": "ⵎⴰⵔ", - "apr": "Abrir", + "apr": "ⴰⴱⵔ", "may": "ⵎⴰⵢ", "jun": "ⵢⵓⵏ", "jul": "ⵢⵓⵍ", @@ -72,9 +72,9 @@ "october-date": "$1 ⴽⵜⵓⴱⵔ", "november-date": "$1 ⵏⵓⵡⴰⵏⴱⵉⵔ", "december-date": "$1 ⴷⵓⵊⴰⵏⴱⵉⵔ", - "pagecategories": "{{PLURAL:$1|ⴰⵙⵎⵉⵍ|ⵉⵙⵎⵉⵍⵏ}}", - "category_header": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⴷⵉ ⵜⴰⴳⴳⴰⵢⵜ \"$1\"", - "subcategories": "ⵉⴷⵓⵙⵎⵉⵍⵏ", + "pagecategories": "{{PLURAL:$1|ⵜⴰⴳⴳⴰⵢⵜ|ⵜⴰⴳⴳⴰⵢⵉⵏ}}", + "category_header": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⵏ ⵜⴰⴳⴳⴰⵢⵜ \"$1\"", + "subcategories": "ⵜⴰⴷⵓⴳⴳⴰⵢⵉⵏ", "category-media-header": "Media di category \"$1\"", "category-empty": "''Taggayt a war dags bu ca n Tasna niɣ ca n umedia.''", "listingcontinuesabbrev": "arni-d.", @@ -89,7 +89,7 @@ "and": " ⴷ", "actions": "ⵜⵉⴳⴰⵡⵉⵏ", "errorpagetitle": "ⵜⴰⵣⴳⵍⵜ", - "returnto": "Dwl ghar $1.", + "returnto": "ⴷⵡⵍ ⵖⵔ $1.", "tagline": "ⵣⵉ {{SITENAME}}", "help": "ⵜⵉⵡⵉⵙⵉ", "search": "ⵔⵣⵓ", @@ -138,7 +138,7 @@ "youhavenewmessages": "{{PLURAL:$3|ⵖⴰⵔⴽ|ⵖⴰⵔⵎ}} $1 ($2).", "editsection": "ⵙⵏⴼⵍ", "editold": "ⵙⵏⴼⵍ", - "viewsourceold": "ẓeṛ aɣbalu", + "viewsourceold": "ⵥⵔ ⴰⵙⴰⴳⵎ", "editlink": "ⵙⵏⴼⵍ", "viewsourcelink": "ẓṛ aghbalu", "editsectionhint": "ⵙⵏⴼⵍ ⵜⵉⴳⵣⵎⵉ: $1", @@ -161,7 +161,7 @@ "nstab-category": "ⴰⵙⵎⵉⵍ", "badtitle": "isem war icni ca", "badtitletext": "Isem n Tasna itexised war icni ca, ixwa, niɣ isem n ajar-tutlayt niɣ ajar-wiki war icni ca.\nteqqad ad yilli days ca n usekkil war itwagg deg isem .", - "viewsource": "Ẓeṛ aɣbalu", + "viewsource": "ⵥⵔ ⴰⵙⴰⴳⵎ", "viewsourcetext": "Tzemred a tẓerd u atsneɣled aɣbal n Tasna ya :", "yourname": "Izwl-usqdac:", "yourpassword": "Tawalt n wadaf:", @@ -187,10 +187,11 @@ "passwordsent": "Taguri n wadaf tamaynut twassekked i e-mail \"$1\".\nadeff-d xmi ɣa teṭfed.", "eauthentsent": "ijj n e-mail itwasekked ɣar e-mail nni.\nzzat ma ca n e-mail nniḍen ma ad itwasekk ɣar umiḍan , ixessa ad tegged manayenni di e-mail, bac ad nessen ila qa amiḍan a inec.", "loginlanguagelabel": "ⵜⵓⵜⵍⴰⵢⵜ: $1", + "pt-userlogout": "ⴼⴼⵖ", "retypenew": "Ɛawd arri Taguri n wadaf tamaynut:", "botpasswords-label-delete": "ⴽⴽⵙ", - "bold_sample": "Tirra tizurarin", - "bold_tip": "Tira tizurarin", + "bold_sample": "ⵜⵉⵔⵔⴰ ⵜⵉⵣⵓⵔⴰⵔⵉⵏ", + "bold_tip": "ⵜⵉⵔⵔⴰ ⵜⵉⵣⵓⵔⴰⵔⵉⵏ", "italic_sample": "Tirra titalyanin", "italic_tip": "Tira ifrghn.", "link_sample": "isem n tzedayt", @@ -205,7 +206,7 @@ "media_tip": "Tazdayt ufaylu", "sig_tip": "Azewl(signature) inec ag ukud(time) .", "hr_tip": "Acariḍ aglawan", - "summary": "Tagḍwit:", + "summary": "ⵜⵓⴳⵣⵉⵍⵜ:", "subject": "ⴰⵙⵏⵜⵍ:", "minoredit": "ⵡⴰ ⴷ ⴰⵙⵏⴼⵍ ⵓⵎⵥⵉⵢ", "watchthis": "Ḥḍa tasna ya", @@ -251,14 +252,14 @@ "deletedhist": "ⴰⵎⵣⵔⵓⵢ ⵉⵜⵜⵡⴰⴽⴽⵙⵏ", "mergehistory-reason": "ⵜⴰⵎⵏⵜⵉⵍⵜ:", "history-title": "Amezruy n teẓṛigt n \"$1\"", - "lineno": "Tabrit $1:", + "lineno": "ⴰⵣⵔⵉⴳ $1:", "compareselectedversions": "Smequdda tunɣilin a", "editundo": "kkes min ggiɣ", "searchresults": "ⵜⵉⵢⴰⴼⵓⵜⵉⵏ ⵏ ⵓⵔⵣⵣⵓ", "searchresults-title": "ⵜⵉⵢⴰⴼⵓⵜⵉⵏ ⵏ ⵓⵔⵣⵣⵓ ⵅⴼ \"$1\"", "prevn": "Amzray {{PLURAL:$1|$1}}", "nextn": "wn d-itasn {{PLURAL:$1|$1}}", - "viewprevnext": "Ẓeṛ ($1 {{int:pipe-separator}} $2) ($3)", + "viewprevnext": "ⵥⵔ ($1 {{int:pipe-separator}} $2) ($3)", "searchprofile-articles": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⵏ ⵜⵓⵎⴰⵢⵜ", "searchprofile-everything": "ⵎⴰⵔⵔⴰ", "searchprofile-articles-tooltip": "ⵔⵣⵓ ⴳ $1", @@ -351,17 +352,17 @@ "listfiles-latestversion-yes": "ⵢⴰⵀ", "listfiles-latestversion-no": "ⵓⵀⵓ", "file-anchor-link": "ⴰⴼⴰⵢⵍⵓ", - "filehist": "Amzruy n usatul", + "filehist": "ⴰⵎⵣⵔⵓⵢ ⵏ ⵓⴼⴰⵢⵍⵓ", "filehist-help": "Tka di date/time bac ad tẓerd afaylu mamec ja d-itban di Lwaqt a .", "filehist-deleteall": "ⴽⴽⵙ ⵎⴰⵔⵔⴰ", "filehist-deleteone": "ⴽⴽⵙ", "filehist-current": "ⴰⵎⵉⵔⴰⵏ", "filehist-datetime": "ⴰⵙⴰⴽⵓⴷ/ⴰⴽⵓⴷ", - "filehist-user": "Aseqdac", + "filehist-user": "ⴰⵙⵇⴷⴰⵛ", "filehist-dimensions": "Tisektiwin", "filehist-filesize": "ⵜⵉⴷⴷⵉ ⵏ ⵓⴼⴰⵢⵍⵓ", "filehist-comment": "ⴰⵅⴼⴰⵡⴰⵍ", - "imagelinks": "Aseqdec usatul", + "imagelinks": "ⴰⵙⵇⴷⵛ ⵏ ⵓⴼⴰⵢⵍⵓ", "linkstoimage": "{{PLURAL:$1|Tasna ya teqn-ad|$1 Tasniwin a qnent-id}} ɣa ufaylu ya :", "nolinkstoimage": "war telli ca n Tasna teqqen-d ɣa ufaylu ya.", "sharedupload": "Wa d ijj ufaylu itwacrec jar aṭṭas n isenfaren(projects).", @@ -428,7 +429,7 @@ "apisandbox-continue-clear": "ⵙⴼⴹ", "booksources": "Ighbula n udlis", "booksources-search": "ⵔⵣⵓ", - "specialloguserlabel": "Aseqdac:", + "specialloguserlabel": "ⴰⵎⴳⴰⵢ:", "speciallogtitlelabel": "isem:", "log": "Aɣmis", "all-logs-page": "Maṛṛa iɣmisen", @@ -440,7 +441,7 @@ "allarticles": "ⵎⴰⵔⵔⴰ ⵜⴰⵙⵏⵉⵡⵉⵏ", "allpagessubmit": "Uyur", "allpagesprefix": "Ẓar Tasniwin s usekkil amzwaru:", - "categories": "ⵉⵙⵎⵉⵍⵏ", + "categories": "ⵜⴰⴳⴳⴰⵢⵉⵏ", "sp-deletedcontributions-contribs": "ⵜⵓⵎⵓⵜⵉⵏ", "linksearch-ok": "ⵔⵣⵓ", "listusers-submit": "Smmrad", @@ -545,7 +546,7 @@ "unblocklink": "Ṛẓem", "contribslink": "ⵜⵓⵎⵓⵜⵉⵏ", "blocklogpage": "Ẓareqq aɣmis", - "blocklogentry": "ibloka [[$1]] ar $2 $3", + "blocklogentry": "ⵉⴳⴷⵍ [[$1]] ar $2 $3", "block-log-flags-nocreate": "timggit n imiḍanen imaynutn ttwasbdd", "move-page": "ⵙⵎⵓⵜⵜⵉ $1", "move-page-legend": "ⵙⵎⵓⵜⵜⵉ ⵜⴰⵙⵏⴰ", @@ -611,7 +612,7 @@ "tooltip-ca-nstab-main": "Ẓeṛ tasna n ukettur", "tooltip-ca-nstab-user": "Ẓar Tasna n user", "tooltip-ca-nstab-project": "Ẓṛ tasna n usnfar", - "tooltip-ca-nstab-image": "Ẓar Tasna n ufaylu", + "tooltip-ca-nstab-image": "ⵥⵔ ⵜⴰⵙⵏⴰ ⵏ ⵓⴼⴰⵢⵍⵓ", "tooltip-ca-nstab-template": "Ẓṛ tamudmt", "tooltip-ca-nstab-help": "Ẓar Tasna n tallalt", "tooltip-ca-nstab-category": "Ẓṛ tasna n taggayt", diff --git a/languages/i18n/ro.json b/languages/i18n/ro.json index c5f9e8c83e..ea49052610 100644 --- a/languages/i18n/ro.json +++ b/languages/i18n/ro.json @@ -62,7 +62,7 @@ "tog-shownumberswatching": "Arată numărul utilizatorilor care urmăresc", "tog-oldsig": "Semnătura actuală:", "tog-fancysig": "Tratează semnătura ca wikitext (fără o legătură automată)", - "tog-uselivepreview": "Folosește previzualizarea în timp real", + "tog-uselivepreview": "Arată previzualizarea fără a reîncărca pagina", "tog-forceeditsummary": "Avertizează-mă când uit să descriu modificările", "tog-watchlisthideown": "Ascunde modificările mele din lista de pagini urmărite", "tog-watchlisthidebots": "Ascunde modificările roboților din lista de pagini urmărite", @@ -335,7 +335,7 @@ "nonwrite-api-promise-error": "Antetul HTTP „Promise-Non-Write-API-Action” a fost trimis, dar cererea s-a făcut către un modul de scriere API.", "internalerror": "Eroare internă", "internalerror_info": "Eroare internă: $1", - "internalerror-fatal-exception": "Excepție fatală pentru tipul „$1”", + "internalerror-fatal-exception": "Excepție fatală de tipul „$1”", "filecopyerror": "Fișierul \"$1\" nu a putut fi copiat la \"$2\".", "filerenameerror": "Fișierul \"$1\" nu a putut fi mutat la \"$2\".", "filedeleteerror": "Fișierul \"$1\" nu a putut fi șters.", @@ -718,8 +718,8 @@ "permissionserrorstext-withaction": "Nu aveți permisiunea să $2, din {{PLURAL:$1|următorul motiv|următoarele motive}}:", "contentmodelediterror": "Nu puteți modifica această versiune, deoarece modelul de conținut al acesteia este $1, diferit față de actualul model de conținut al paginii, care este $2.", "recreate-moveddeleted-warn": "'''Atenție: Recreați o pagină care a fost ștearsă anterior.'''\n\nAsigurați-vă că este oportună recrearea acestei pagini.\nJurnalul ștergerilor și al mutărilor pentru această pagină este disponibil:", - "moveddeleted-notice": "Această pagină a fost ștearsă.\nJurnalul ștergerilor și al redenumirilor este disponibil mai jos.", - "moveddeleted-notice-recent": "Ne cerem scuze, dar această pagină a fost ștearsă recent (în ultimele 24 de ore).\nJurnalele de ștergere și redenumire ale paginii sunt disponibile mai jos cu scop informativ.", + "moveddeleted-notice": "Această pagină a fost ștearsă.\nJurnalul ștergerilor, protejărilor și redenumirilor este disponibil mai jos.", + "moveddeleted-notice-recent": "Ne cerem scuze, dar această pagină a fost ștearsă recent (în ultimele 24 de ore).\n\nJurnalele ștergerilor, protejărilor și redenumirilor paginii sunt disponibile mai jos.", "log-fulllog": "Vezi tot jurnalul", "edit-hook-aborted": "Modificarea a fost abandonată din cauza unui hook.\nNicio explicație furnizată.", "edit-gone-missing": "Pagina nu s-a putut actualiza.\nSe pare că a fost ștearsă.", @@ -987,7 +987,7 @@ "prefs-editwatchlist-clear": "Golește-mi lista de pagini urmărite", "prefs-watchlist-days": "Numărul de zile care apar în lista paginilor urmărite:", "prefs-watchlist-days-max": "Maxim $1 {{PLURAL:$1|zi|zile}}", - "prefs-watchlist-edits": "Numărul de modificări care apar în lista extinsă a paginilor urmărite:", + "prefs-watchlist-edits": "Numărul de modificări care apar în lista de pagini urmărite:", "prefs-watchlist-edits-max": "Număr maxim: 1000", "prefs-watchlist-token": "Jeton pentru lista de pagini urmărite:", "prefs-misc": "Parametri diverși", @@ -1089,7 +1089,7 @@ "saveusergroups": "Salvează grupul de {{GENDER:$1|utilizatori}}", "userrights-groupsmember": "Membru al:", "userrights-groupsmember-auto": "Membru, implicit, al:", - "userrights-groups-help": "Puteți schimba grupul căruia îi aparține utilizatorul:\n*Căsuța bifată înseamnă că utilizatorul aparține grupului respectiv.\n*Căsuța nebifată înseamnă că utilizatorul nu aparține grupului respectiv.\n*Steluța (*) indică faptul că utilizatorul nu poate fi eliminat din grup odată adăugat, sau invers.\n* (#) indică faptul că puteti modifica data de expirare in trecut pentru acest grup o singură datăș data poate fi modificată doar in viitor.", + "userrights-groups-help": "Puteți schimba grupul căruia îi aparține utilizatorul:\n*Căsuța bifată înseamnă că utilizatorul aparține grupului respectiv.\n*Căsuța nebifată înseamnă că utilizatorul nu aparține grupului respectiv.\n*Steluța (*) indică faptul că utilizatorul nu poate fi eliminat din grup odată adăugat, sau invers.\n*Diezul (#) indică faptul că puteți modifica data de expirare doar în viitor; nu puteți să o mutați la un moment anterior.", "userrights-reason": "Motiv:", "userrights-no-interwiki": "Nu aveți permisiunea de a modifica permisiunile utilizatorilor pe alte wiki.", "userrights-nodatabase": "Baza de date $1 nu există sau nu este locală.", @@ -1303,27 +1303,28 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (vedeți și [[Special:NewPages|lista cu pagini noi]])", "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Afișează", + "rcfilters-legend-heading": "Lista abrevierilor:", "rcfilters-activefilters": "Filtre active", - "rcfilters-limit-shownum": "Arată ultimele $1 modificări", + "rcfilters-limit-shownum": "Arată {{PLURAL:$1|ultima modificare|ultimele $1 modificări|ultimele $1 de modificări}}", "rcfilters-days-show-days": "$1 {{PLURAL:$1|zi|zile|de zile}}", "rcfilters-days-show-hours": "$1 {{PLURAL:$1|oră|ore|de ore}}", - "rcfilters-quickfilters": "Legături rapide", + "rcfilters-quickfilters": "Filtre salvate", "rcfilters-savedqueries-defaultlabel": "Filtre salvate", "rcfilters-savedqueries-rename": "Redenumește", "rcfilters-savedqueries-setdefault": "Setează ca predefinit", "rcfilters-savedqueries-unsetdefault": "Eliminați ca implicit", "rcfilters-savedqueries-remove": "Elimină", "rcfilters-savedqueries-new-name-label": "Nume", - "rcfilters-savedqueries-apply-label": "Crează un link rapid", + "rcfilters-savedqueries-apply-label": "Crează filtru", "rcfilters-savedqueries-cancel-label": "Anulare", - "rcfilters-savedqueries-add-new-title": "Salvați filtrele ca un link rapid", + "rcfilters-savedqueries-add-new-title": "Salvați filtrele curente", "rcfilters-restore-default-filters": "Restaurați filtrele prestabilite", "rcfilters-clear-all-filters": "Ștergeți toate filtrele", "rcfilters-search-placeholder": "Filtrați modificările recente (răsfoiți sau începeți să tastați)", "rcfilters-invalid-filter": "Filtru invalid", "rcfilters-empty-filter": "Nu există filtre active. Toate contribuțiile sunt afișate.", "rcfilters-filterlist-title": "Filtre", - "rcfilters-filterlist-whatsthis": "Ce este aceasta?", + "rcfilters-filterlist-whatsthis": "Cum funcționează acestea?", "rcfilters-filterlist-feedbacklink": "Oferiți feedback cu privire la noile filtre (beta)", "rcfilters-highlightbutton-title": "Evidențiați rezultatele", "rcfilters-highlightmenu-title": "Selectați o culoare", @@ -1331,23 +1332,23 @@ "rcfilters-filterlist-noresults": "Nu s-a găsit niciun filtru", "rcfilters-noresults-conflict": "Nu s-au găsit rezultate deoarece criteriile de căutare sunt în conflict", "rcfilters-state-message-subset": "Acest filtru nu are efecte deoarece rezultatele sale sunt incluse în filtrele cu selectie mai largă {{PLURAL:$2|filtru|filtre}} (încercați să subliniați pentru a o deosebi): $1", - "rcfilters-state-message-fullcoverage": "Selectarea tuturor filtrelor dintr-un grup este aceeași cu cea selectată, astfel încât acest filtru nu are efect. Grupul include: $1", + "rcfilters-state-message-fullcoverage": "Selectarea tuturor filtrelor din acest grup este același lucru cu a nu selecta niciunul, astfel încât acest filtru nu are efect. Grupul include: $1", "rcfilters-filtergroup-authorship": "Contribuția autorului", "rcfilters-filter-editsbyself-label": "Modificările tale", "rcfilters-filter-editsbyself-description": "Contribuțiile tale.", "rcfilters-filter-editsbyother-label": "Contribuțiile altora", "rcfilters-filter-editsbyother-description": "Toate modificările mai puțin ale tale.", - "rcfilters-filtergroup-userExpLevel": "Nivel de experiență (numai pentru utilizatorii înregistrați)", + "rcfilters-filtergroup-userExpLevel": "Nivelul de experiență a utilizatorilor", "rcfilters-filter-user-experience-level-registered-label": "Înregistrat", "rcfilters-filter-user-experience-level-registered-description": "Editorii conectați.", "rcfilters-filter-user-experience-level-unregistered-label": "Neînregistrat", "rcfilters-filter-user-experience-level-unregistered-description": "Editorii care nu sunt conectați.", "rcfilters-filter-user-experience-level-newcomer-label": "Nou veniți", - "rcfilters-filter-user-experience-level-newcomer-description": "Mai puțin de 10 editări și 4 zile de activitate.", + "rcfilters-filter-user-experience-level-newcomer-description": "Editorii înregistrați care au mai puțin de 10 editări și 4 zile de activitate.", "rcfilters-filter-user-experience-level-learner-label": "Cursanți", - "rcfilters-filter-user-experience-level-learner-description": "Mai multă experiență decât \"Noi veniți\" dar mai puțină decât \"Useri experimentați\".", + "rcfilters-filter-user-experience-level-learner-description": "Editorii înregistrați a căror experiență este între \"Noi veniți\" și \"Utilizatori experimentați\".", "rcfilters-filter-user-experience-level-experienced-label": "Utilizatori experimentați", - "rcfilters-filter-user-experience-level-experienced-description": "Mai mult de 30 de zile de activitate și 500 de editări.", + "rcfilters-filter-user-experience-level-experienced-description": "Editorii înregistrați cu mai mult de 500 de editări și 30 de zile de activitate.", "rcfilters-filtergroup-automated": "Contribuții automate", "rcfilters-filter-bots-label": "Robot", "rcfilters-filter-bots-description": "Modificări făcute cu unelte automate.", @@ -1367,9 +1368,9 @@ "rcfilters-filter-watchlist-watched-label": "Listă de urmărire", "rcfilters-filter-watchlist-watched-description": "Modificări are paginilor urmărite de dv.", "rcfilters-filter-watchlist-watchednew-label": "Modificari ale listei urmărite de dv.", - "rcfilters-filter-watchlist-watchednew-description": "Modificările paginilor care nu au fost vizitate de la efectuarea modificărilor.", + "rcfilters-filter-watchlist-watchednew-description": "Modificările paginilor urmărite care nu au fost vizitate de la efectuarea schimbărilor.", "rcfilters-filter-watchlist-notwatched-label": "Care nu sunt pe lista urmărită de dv.", - "rcfilters-filter-watchlist-notwatched-description": "Totul, cu excepția modificărilor aduse paginilor dvs. vizionate.", + "rcfilters-filter-watchlist-notwatched-description": "Totul, cu excepția modificărilor aduse paginilor urmărite de dvs.", "rcfilters-filtergroup-changetype": "Tipul modificării", "rcfilters-filter-pageedits-label": "Editări ale paginii", "rcfilters-filter-pageedits-description": "Editări ale conținutului wiki, discuții, descrieri de categorii...", @@ -1380,13 +1381,13 @@ "rcfilters-filter-logactions-label": "Acțiuni logate", "rcfilters-filter-logactions-description": "Acțiuni administrative, creare de conturi, ștergere de pagini, încărcări...", "rcfilters-hideminor-conflicts-typeofchange-global": "Filtrul \"Modificări minore\" se află în conflict cu unul sau mai multe filtre de tipul \"Modificare\", deoarece anumite tipuri de schimbări nu pot fi desemnate ca \"minore\". Filtrele conflictuale sunt marcate în zona Filtre Active, de mai sus.", - "rcfilters-hideminor-conflicts-typeofchange": "Anumite tipuri de schimbări nu pot fi desemnate ca fiind \"minore\", astfel că acest filtru este în conflict cu următoarele filtre de Tip de schimbare: $1", - "rcfilters-typeofchange-conflicts-hideminor": "Acest tip de filtrare a tipului de schimbare este în conflict cu filtrul \"Modificări minore\". Anumite tipuri de schimbări nu pot fi desemnate ca fiind \"minore\".", - "rcfilters-filtergroup-lastRevision": "Ultima revizie", - "rcfilters-filter-lastrevision-label": "Ultima revizie", - "rcfilters-filter-lastrevision-description": "Cea mai recentă modificare a unei pagini.", - "rcfilters-filter-previousrevision-label": "Versiuni recente", - "rcfilters-filter-previousrevision-description": "Toate modificările care nu sunt cea mai recentă modificare a unei pagini.", + "rcfilters-hideminor-conflicts-typeofchange": "Anumite tipuri de schimbări nu pot fi desemnate ca fiind \"minore\", astfel că acest filtru este în conflict cu următoarele tipuri de filtre de schimbări: $1", + "rcfilters-typeofchange-conflicts-hideminor": "Acest tip de filtru al schimbărilor este în conflict cu filtrul \"Modificări minore\". Anumite tipuri de schimbări nu pot fi desemnate ca fiind \"minore\".", + "rcfilters-filtergroup-lastRevision": "Ultimele versiuni", + "rcfilters-filter-lastrevision-label": "Versiunea curentă", + "rcfilters-filter-lastrevision-description": "Doar cea mai recentă modificare a unei pagini.", + "rcfilters-filter-previousrevision-label": "Nu versiunea curentă", + "rcfilters-filter-previousrevision-description": "Toate modificările care nu reprezintă cea mai recentă modificare a unei pagini.", "rcfilters-filter-excluded": "Exclus", "rcnotefrom": "Dedesubt {{PLURAL:$5|se află o modificare|sunt modificările}} începând cu $3, $4 (maximum $1 afișate).", "rclistfromreset": "Resetați selectarea datei", @@ -1499,7 +1500,7 @@ "fileexists-forbidden": "Un fișier cu acest nume există deja și nu poate fi rescris.\nMergeți înapoi și încărcați acest fișier sub un nume nou. [[File:$1|thumb|center|$1]]", "fileexists-shared-forbidden": "Un fișier cu acest nume există deja în magazia de imagini comune; mergeți înapoi și încărcați fișierul sub un nou nume. [[File:$1|thumb|center|$1]]", "fileexists-no-change": "Fișierul încărcat este un duplicat exact al versiunii curente a [[:$1]].", - "fileexists-duplicate-version": "Fișierul încărcat este un duplicat exact al {{PLURAL:$2|versiunii vechi|versiunilor vechi}} a [[:$1]].", + "fileexists-duplicate-version": "Fișierul încărcat este un duplicat exact al {{PLURAL:$2|versiune veche|versiuni vechi|de versiuni vechi}} a [[:$1]].", "file-exists-duplicate": "Acest fișier este dublura {{PLURAL:$1|fișierului|fișierelor}}:", "file-deleted-duplicate": "Un fișier identic cu acesta ([[:$1]]) a fost șters anterior. Verificați istoricul ștergerilor fișierului înainte de a-l reîncărca.", "file-deleted-duplicate-notitle": "Un fișier identic cu acesta a fost șters anterior, iar titlul a fost suprimat.\nAr trebui să contactați pe cineva care poate vizualiza datele suprimate ale fișierului pentru a evalua situația înainte de a începe să-l reîncărcați.", @@ -1550,7 +1551,7 @@ "upload-too-many-redirects": "URL-ul conținea prea multe redirecționări", "upload-http-error": "A avut loc o eroare HTTP: $1", "upload-copy-upload-invalid-domain": "Încărcarea copiilor nu este disponibilă pentru acest domeniu.", - "upload-foreign-cant-upload": "Acest wiki nu este configurat pentru a încărca fișiere în depozitul de fișiere străin solicitat.", + "upload-foreign-cant-upload": "Acest wiki nu este configurat pentru a încărca fișiere în depozitul de fișiere străin solicitat.", "upload-dialog-title": "Încărcare fișier", "upload-dialog-button-cancel": "Revocare", "upload-dialog-button-back": "Înapoi", @@ -1894,7 +1895,7 @@ "apisandbox-sending-request": "Se trimite solicitarea API...", "apisandbox-loading-results": "Se obțin rezultatele API...", "apisandbox-results-error": "A apărut o eroare la încărcarea răspunsului solicitării API: $1.", - "apisandbox-request-selectformat-label": "Afișați datele de solicitare ca:", + "apisandbox-request-selectformat-label": "Afișați datele solicitate ca:", "apisandbox-request-url-label": "URL cerere:", "apisandbox-request-time": "Durata cererii: {{PLURAL:$1|$1 ms}}", "apisandbox-results-fixtoken": "Corectează jetonul și retrimite", @@ -2027,7 +2028,7 @@ "emailccsubject": "O copie a mesajului la $1: $2", "emailsent": "E-mail trimis", "emailsenttext": "E-mailul dumneavoastră a fost trimis.", - "emailuserfooter": "Acest mesaj a fost {{GENDER:$1|trimis}} de $1 către {{GENDER:$2|$2}} prin intermediul funcției „{{int:emailuser}}” de la {{SITENAME}}.", + "emailuserfooter": "Acest mesaj a fost {{GENDER:$1|trimis}} de $1 către {{GENDER:$2|$2}} prin intermediul funcției „{{int:emailuser}}” al {{SITENAME}}. Dacă {{GENDER:$2|dvs.}} răspundeți acestui mesaj, adresa {{GENDER:$2|dvs.}} va fi trimisă direct către {{GENDER:$1|expeditorul original}}, fiind vizibilă de către {{GENDER:$1|acesta}}.", "usermessage-summary": "a lăsat un mesaj de sistem", "usermessage-editor": "Mesager de sistem", "watchlist": "Pagini urmărite", @@ -2079,8 +2080,8 @@ "enotif_body_intro_moved": "Pagina $1 de la {{SITENAME}} a fost redenumită la $PAGEEDITDATE de către {{gender:$2|$2}}; vedeți $3 pentru versiunea actuală.", "enotif_body_intro_restored": "Pagina $1 de la {{SITENAME}} a fost restaurată la $PAGEEDITDATE de către {{gender:$2|$2}}; vedeți $3 pentru versiunea actuală.", "enotif_body_intro_changed": "Pagina $1 de la {{SITENAME}} a fost modificată la $PAGEEDITDATE de către {{gender:$2|$2}}; vedeți $3 pentru versiunea actuală.", - "enotif_lastvisited": "Vedeți $1 pentru toate modificările de la ultima dvs. vizită.", - "enotif_lastdiff": "Apasă $1 pentru a vedea această schimbare.", + "enotif_lastvisited": "Pentru toate modificările de la ultima dvs. vizită, vedeți $1", + "enotif_lastdiff": "Pentru a vedea această schimbare, vedeți $1", "enotif_anon_editor": "utilizator anonim $1", "enotif_body": "Domnule/Doamnă $WATCHINGUSERNAME,\n$PAGEINTRO $NEWPAGE\n\nDescrierea lăsată de utilizator: $PAGESUMMARY $PAGEMINOREDIT\n\nPuteți contacta utilizatorul:\ne-mail: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nNu veți mai primi notificări în cazul unei viitoare activități până când nu veți vizitați pagina ca utilizator autentificat. Puteți de asemenea reseta notificările pentru toate pagini pe care le urmăriți.\n\nAl dumneavoastră amic, sistemul de notificare de la {{SITENAME}}\n\n--\nPentru a modifica setările notificării prin e-mail, vizitați\n{{canonicalurl:{{#special:Preferences}}}}\n\nPentru a modifica setările listei de pagini urmărite, vizitați\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nPentru a nu mai urmări pagina, vizitați\n$UNWATCHURL\n\nAsistență și suport:\n$HELPPAGE", "enotif_minoredit": "Aceasta este o modificare minoră", @@ -2122,7 +2123,7 @@ "editcomment": "Descrierea modificărilor a fost: $1.", "revertpage": "Anularea modificărilor efectuate de către [[Special:Contributions/$2|$2]] ([[User talk:$2|discuție]]) și revenire la ultima versiune de către [[User:$1|$1]]", "revertpage-nouser": "Anularea modificărilor efectuate de un utilizator ascuns și revenirea la ultima modificare de către {{GENDER:$1|[[User:$1|$1]]}}", - "rollback-success": "Anularea modificărilor făcute de $1;\nrevenire la ultima versiune de $2.", + "rollback-success": "Modificările făcute de {{GENDER:$3|$1}} au fost anulate;\nam revenit la ultima versiune de {{GENDER:$4|$2}}.", "sessionfailure-title": "Eroare de sesiune", "sessionfailure": "Se pare că este o problemă cu sesiunea de autentificare; această acțiune a fost oprită ca o precauție împotriva hijack. Apăsați \"back\" și reîncărcați pagina de unde ați venit, apoi reîncercați.", "changecontentmodel": "Modificare model de conținut al unei pagini", @@ -2137,7 +2138,7 @@ "changecontentmodel-emptymodels-title": "Nu sunt disponibile modele de conținut", "changecontentmodel-emptymodels-text": "Conținutul paginii [[:$1]] nu poate fi convertit în alt tip.", "log-name-contentmodel": "Jurnal modificări model de conținut", - "log-description-contentmodel": "Evenimente referitoare la modelele de conținut ale paginilor", + "log-description-contentmodel": "Această pagină listează schimbări în tipul de conținut al paginilor, precum și pagini care au fost create cu un tip de conținut altul decât cel implicit.", "logentry-contentmodel-change": "$1 {{GENDER:$2|a modificat}} modelul de conținut al paginii $3 din „$4” în „$5”", "logentry-contentmodel-change-revertlink": "revenire", "logentry-contentmodel-change-revert": "revenire", @@ -2217,7 +2218,7 @@ "undeleteviewlink": "vezi", "undeleteinvert": "Exclude spațiul", "undeletecomment": "Motiv:", - "cannotundelete": "Recuperarea a eșuat:\n$1", + "cannotundelete": "Recuperarea a eșuat parțial sau total:\n$1", "undeletedpage": "'''$1 a fost recuperat'''\n\nConsultați [[Special:Log/delete|jurnalul ștergerilor]] pentru a vedea toate ștergerile și recuperările recente.", "undelete-header": "Consultați [[Special:Log/delete|jurnalul de ștergeri]] pentru paginile șterse recent.", "undelete-search-title": "Căutare pagini șterse", @@ -2255,12 +2256,12 @@ "sp-contributions-newbies-sub": "Pentru începători", "sp-contributions-newbies-title": "Contribuțiile utilizatorului pentru conturile noi", "sp-contributions-blocklog": "jurnal blocări", - "sp-contributions-suppresslog": "contribuții suprimate ale utilizatorului", - "sp-contributions-deleted": "contribuțiile șterse ale utilizatorului", + "sp-contributions-suppresslog": "Contribuții suprimate ale {{GENDER:$1|utilizatorului}}", + "sp-contributions-deleted": "contribuțiile șterse ale {{GENDER:$1|utilizatorului}}", "sp-contributions-uploads": "încărcări", "sp-contributions-logs": "jurnale", "sp-contributions-talk": "discuție", - "sp-contributions-userrights": "administrarea permisiunilor de utilizator", + "sp-contributions-userrights": "administrarea permisiunilor de {{GENDER:$1|utilizator}}", "sp-contributions-blocked-notice": "Acest utilizator este momentan blocat.\nUltima blocare este indicată mai jos pentru informare:", "sp-contributions-blocked-notice-anon": "Această adresă IP este blocată acum.\nIată aici ultima înregistrare relevantă din jurnalul blocărilor:", "sp-contributions-search": "Căutare contribuții", @@ -2292,7 +2293,7 @@ "unblock": "Deblocare utilizator", "blockip": "Blocare {{GENDER:$1|utilizator|utilizatoare}}", "blockip-legend": "Blocare utilizator/adresă IP", - "blockiptext": "Pentru a bloca un utilizator completați rubricile de mai jos.
\n'''Respectați [[{{MediaWiki:Policy-url}}|politica de blocare]].'''
\nPrecizați motivul blocării; de exemplu indicați paginile vandalizate de acest utilizator.", + "blockiptext": "Folosiți formularul de mai jos pentru a bloca accesul la modificare al unei adrese IP specifice sau al unui nume de utilizator.\nAcest lucru ar trebui făcut doar pentru a preveni vandalismul, și în acord cu [[{{MediaWiki:Policy-url}}|politica]].\nCompletați un motiv specific mai jos (de exemplu, citând paginile care au fost vandalizate).\nPuteți bloca range-uri de adrese IP folosind notația [https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR]; cea mai mică mască permisă este /$1 pentru IPv4 și /$2 pentru IPv6.", "ipaddressorusername": "Adresă IP sau nume de utilizator", "ipbexpiry": "Expiră", "ipbreason": "Motiv:", @@ -3415,7 +3416,7 @@ "compare-invalid-title": "Titlul specificat nu este corect.", "compare-title-not-exists": "Titlul specificat nu există.", "compare-revision-not-exists": "Versiunea specificată nu există.", - "diff-form": "un '''formular'''", + "diff-form": "Diferențe", "dberr-problems": "Ne cerem scuze! Acest site întâmpină dificultăți tehnice.", "dberr-again": "Așteptați câteva minute și încercați din nou.", "dberr-info": "(Nu se poate accesa baza de date: $1)", @@ -3439,6 +3440,9 @@ "htmlform-cloner-create": "Adăugă mai mult", "htmlform-cloner-delete": "Elimină", "htmlform-cloner-required": "Este necesară cel puțin o valoare.", + "htmlform-date-placeholder": "YYYY-MM-DD", + "htmlform-time-placeholder": "HH:MM:SS", + "htmlform-datetime-placeholder": "YYYY-MM-DD HH:MM:SS", "htmlform-title-badnamespace": "[[:$1]] nu se află în spațiul de nume „{{ns:$2}}”.", "htmlform-title-not-creatable": "„$1” este un titlu de pagină inutilizabil", "htmlform-title-not-exists": "$1 nu există.", @@ -3659,8 +3663,11 @@ "mw-widgets-dateinput-no-date": "Nicio dată selectată", "mw-widgets-dateinput-placeholder-day": "AAAA-LL-ZZ", "mw-widgets-dateinput-placeholder-month": "AAAA-LL", + "mw-widgets-mediasearch-noresults": "Niciun rezultat găsit.", "mw-widgets-titleinput-description-new-page": "pagina nu există încă", "mw-widgets-titleinput-description-redirect": "redirecționare către $1", + "mw-widgets-categoryselector-add-category-placeholder": "Adăugați o categorie...", + "mw-widgets-usersmultiselect-placeholder": "Adăugați mai multe...", "date-range-from": "De la data:", "date-range-to": "Până la data:", "sessionmanager-tie": "Nu se pot combina multiple tipuri de cereri de autentificare: $1.", @@ -3676,7 +3683,8 @@ "log-action-filter-newusers": "Tip de creare de cont:", "log-action-filter-patrol": "Tip de patrulare:", "log-action-filter-protect": "Tip de protecție:", - "log-action-filter-rights": "Tip de schimbare de drepturi", + "log-action-filter-rights": "Tip de schimbare de drepturi:", + "log-action-filter-suppress": "Tip de suprimare:", "log-action-filter-upload": "Tip de încărcare:", "log-action-filter-all": "Toate", "log-action-filter-block-block": "Blocare", @@ -3707,8 +3715,12 @@ "authmanager-realname-label": "Nume real", "authmanager-realname-help": "Numele real al utilizatorului", "authprovider-resetpass-skip-label": "Omite", + "specialpage-securitylevel-not-allowed-title": "Nepermis", + "specialpage-securitylevel-not-allowed": "Ne pare rău, nu aveți dreptul de a folosi această pagină deoarece identitatea dvs. nu a putut fi verificată.", "linkaccounts-submit": "Leagă conturile", "unlinkaccounts": "Dezleagă conturile", "unlinkaccounts-success": "Contul a fost dezlegat", - "userjsispublic": "Atenție: subpaginile JavaScript nu trebuie să conțină date confidențiale, întrucât ele sunt vizibile altor utilizatori." + "userjsispublic": "Atenție: subpaginile JavaScript nu trebuie să conțină date confidențiale, întrucât ele sunt vizibile altor utilizatori.", + "pagedata-title": "Datele paginii", + "pagedata-bad-title": "Titlu invalid: $1." } diff --git a/languages/i18n/roa-tara.json b/languages/i18n/roa-tara.json index e6937d0f6c..5fb74ed0eb 100644 --- a/languages/i18n/roa-tara.json +++ b/languages/i18n/roa-tara.json @@ -514,9 +514,14 @@ "botpasswords-label-grants": "Assegnazziune applicabbile:", "botpasswords-label-grants-column": "Assegnazziune", "botpasswords-bad-appid": "'U nome d'u bot \"$1\" non g'è valide.", + "botpasswords-insert-failed": "'Mbossibbile aggiungere 'u nome bot \"$1\". Ha state ggià mise?", + "botpasswords-update-failed": "'Mbossibbile aggiornà 'u nome bot \"$1\". Ha state ggià scangellate?", "botpasswords-created-title": "Passuord d'u bot ccrejate", + "botpasswords-created-body": "'A passuord pu bot de nome \"$1\" de l'utende \"$2\" ha state ccrejate.", "botpasswords-updated-title": "Passuord d'u bot cangiate", + "botpasswords-updated-body": "'A passuord pu bot de nome \"$1\" de l'utende \"$2\" ha state aggiornate.", "botpasswords-deleted-title": "Passuord d'u bot scangellate", + "botpasswords-deleted-body": "'A passuord pu bot de nome \"$1\" de l'utende \"$2\" ha state scangellate.", "resetpass_forbidden": "Le Password non ge ponne cangià", "resetpass_forbidden-reason": "Le passuord non ge ponne essere cangiate: $1", "resetpass-no-info": "Tu a essere colleghete pe accedere a sta pàgene direttamende.", @@ -1916,7 +1921,7 @@ "unwatchthispage": "No condrollà cchiù 'a pàgene", "notanarticle": "Non g'è 'na vosce", "notvisiblerev": "'A revisione ha state scangellete", - "watchlist-details": "{{PLURAL:$1|$1 pàgene|$1 pàggene}} jndr'à l'elenghe de le pàggene condrollate, scartanne le pàggene de le 'ngazzaminde.", + "watchlist-details": "{{PLURAL:$1|$1 pàgene jè|$1 pàggene stonne}} jndr'à l'elenghe de le pàggene condrollate (cchiù le pàggene de le 'ngazzaminde).", "wlheader-enotif": "* Notifiche pe email abbilitate.", "wlheader-showupdated": "* Le pàggene ca onne state cangiate da l'urtema visite avènene fatte vedè in '''grascette'''", "wlnote": "Aqquà sotte {{PLURAL:$1|ste l'urteme cangiamende|stonne l'urteme $1 cangiaminde}} jndr'à {{PLURAL:$2|l'urtema ore|l'urteme $2 ore}}, jndr'à $3, $4.", @@ -3437,7 +3442,7 @@ "compare-invalid-title": "'U titele ca è specificate jè invalide.", "compare-title-not-exists": "'U titele ca è specificate non g'esiste.", "compare-revision-not-exists": "'A revisione ca è specificate non g'esiste.", - "diff-form": "'nu '''form'''", + "diff-form": "Differenze", "dberr-problems": "Sime spiacende! Stu site stè 'ngondre de le difficoltà tecniche.", "dberr-again": "Aspitte quacche minute e pò recareche.", "dberr-info": "(Non ge riuscime a trasè sus a'u server d'u database: $1)", diff --git a/languages/i18n/ru.json b/languages/i18n/ru.json index 4ba7dd6542..c34cec3adc 100644 --- a/languages/i18n/ru.json +++ b/languages/i18n/ru.json @@ -150,7 +150,7 @@ "tog-watchlisthideminor": "Скрывать малые правки из списка наблюдения", "tog-watchlisthideliu": "Скрывать правки представившихся участников из списка наблюдения", "tog-watchlistreloadautomatically": "Обновлять список наблюдения автоматически всякий раз, когда изменяется фильтр (требуется JavaScript)", - "tog-watchlistunwatchlinks": "Добавить прямые для включения/исключения записей в Список наблюдения (требуется JavaScript)", + "tog-watchlistunwatchlinks": "Добавить в список наблюдения прямые ссылки для исключения записей (требуется JavaScript)", "tog-watchlisthideanons": "Скрывать правки анонимных участников из списка наблюдения", "tog-watchlisthidepatrolled": "Скрывать отпатрулированные правки из списка наблюдения", "tog-watchlisthidecategorization": "Скрывать категоризацию страниц", @@ -328,7 +328,7 @@ "pool-errorunknown": "Неизвестная ошибка", "pool-servererror": "Служба счётчика пула недоступна ($1).", "poolcounter-usage-error": "Ошибка использования: $1", - "aboutsite": "Описание {{GRAMMAR:prepositional|{{SITENAME}}}}", + "aboutsite": "О {{GRAMMAR:prepositional|{{SITENAME}}}}", "aboutpage": "Project:Описание", "copyright": "Содержание доступно по лицензии $1 (если не указано иное).", "copyrightpage": "{{ns:project}}:Авторские права", @@ -1392,6 +1392,7 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (см. также [[Special:NewPages|список новых страниц]])", "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Показать", + "rcfilters-tag-remove": "Удалить '$1'", "rcfilters-legend-heading": "Список сокращений:", "rcfilters-other-review-tools": "Другие инструменты проверки", "rcfilters-group-results-by-page": "Группировать результаты по странице", @@ -1404,6 +1405,7 @@ "rcfilters-hours-title": "Последние часы", "rcfilters-days-show-days": "$1 {{PLURAL:$1|день|дня|дней}}", "rcfilters-days-show-hours": "$1 {{PLURAL:$1|час|часа|часов}}", + "rcfilters-highlighted-filters-list": "Подсвечено: $1", "rcfilters-quickfilters": "Сохранённые фильтры", "rcfilters-quickfilters-placeholder-title": "Сохраненных ссылок еще нет", "rcfilters-quickfilters-placeholder-description": "Чтобы сохранить настройки фильтра и повторно использовать их позже, щелкните значок закладки в области «Активный фильтр» ниже.", @@ -1426,14 +1428,14 @@ "rcfilters-empty-filter": "Нет активных фильтров. Показываются все правки.", "rcfilters-filterlist-title": "Фильтры", "rcfilters-filterlist-whatsthis": "Как это работает?", - "rcfilters-filterlist-feedbacklink": "Оставить отзыв о новых (бета) фильтрах", + "rcfilters-filterlist-feedbacklink": "Расскажите нам, что вы думаете об этих (новых) инструментах фильтрации", "rcfilters-highlightbutton-title": "Выделить результаты", "rcfilters-highlightmenu-title": "Выберите цвет", "rcfilters-highlightmenu-help": "Выберите цвет, чтобы подсветить это свойство", "rcfilters-filterlist-noresults": "Фильтры не найдены", "rcfilters-noresults-conflict": "Результатов не найдено из-за конфликта критериев поиска", "rcfilters-state-message-subset": "Фильтр не будет иметь эффекта, поскольку его результаты включены в {{PLURAL:$2|следующий более широкий фильтр|следующие более широкие фильтры}} (попробуйте подсвечивание для различения): $1", - "rcfilters-state-message-fullcoverage": "Выбор всех фильтров в группе — это то же самое, что и отсутствие какого-либо выбора, поэтому этот фильтр не имеет никакого эффекта. Включённые группы: $1", + "rcfilters-state-message-fullcoverage": "Выбор всех фильтров в этой группе — это то же самое, что и отсутствие какого-либо выбора, поэтому данный фильтр не имеет никакого эффекта. Включённые группы: $1", "rcfilters-filtergroup-authorship": "Редактировать авторство", "rcfilters-filter-editsbyself-label": "Внесённые вами изменения", "rcfilters-filter-editsbyself-description": "Ваш вклад.", @@ -1472,6 +1474,11 @@ "rcfilters-filter-watchlist-watchednew-description": "Правки на страницах из вашего списка наблюдения, которые вы не просмотрели с их совершения.", "rcfilters-filter-watchlist-notwatched-label": "Нет в списке наблюдения", "rcfilters-filter-watchlist-notwatched-description": "Всё, исключая правки со страниц из вашего списка наблюдения.", + "rcfilters-filtergroup-watchlistactivity": "Активность в списке наблюдения", + "rcfilters-filter-watchlistactivity-unseen-label": "Непросмотренные изменения", + "rcfilters-filter-watchlistactivity-unseen-description": "Правки на страницах, которые вы не видели с тех пор, как были внесены изменения.", + "rcfilters-filter-watchlistactivity-seen-label": "Просмотренные изменения", + "rcfilters-filter-watchlistactivity-seen-description": "Правки на страницах, которые вы видели с тех пор, как были внесены изменения.", "rcfilters-filtergroup-changetype": "Тип изменения", "rcfilters-filter-pageedits-label": "Правки страницы", "rcfilters-filter-pageedits-description": "Правки содержимого, обсуждений, описания категорий…", @@ -1501,6 +1508,9 @@ "rcfilters-liveupdates-button": "Обновлять автоматически", "rcfilters-liveupdates-button-title-on": "Отключить автоматические обновления", "rcfilters-liveupdates-button-title-off": "Показывать новые изменения сразу после их появления", + "rcfilters-watchlist-markseen-button": "Отметить все изменения как просмотренные", + "rcfilters-watchlist-edit-watchlist-button": "Редактировать ваш список просмотренных страниц", + "rcfilters-watchlist-showupdated": "Изменения страниц, которые вы не посещали с того момента, как они изменились, выделены жирным и отмечены полным маркером.", "rcnotefrom": "Ниже {{PLURAL:$5|указано изменение|перечислены изменения}} с $3, $4 (показано не более $1).", "rclistfromreset": "Сбросить выбор даты", "rclistfrom": "Показать изменения с $3 $2.", @@ -2189,7 +2199,7 @@ "unwatchthispage": "Прекратить наблюдение", "notanarticle": "Не статья", "notvisiblerev": "Версия была удалена", - "watchlist-details": "В вашем списке наблюдения $1 {{PLURAL:$1|страница|страницы|страниц}}, не считая страниц обсуждений.", + "watchlist-details": "В вашем Списке наблюдения $1 {{PLURAL:$1|страница|страницы|страниц}} (а также страницы обсуждений).", "wlheader-enotif": "Уведомления по эл. почте включены.", "wlheader-showupdated": "Страницы, изменившиеся с вашего последнего их посещения, выделены '''полужирным''' шрифтом.", "wlnote": "Ниже {{PLURAL:$1|показано последнее изменение|показаны $1 последние изменения|показаны $1 последних изменений}} за {{PLURAL:$2|последний час|последние $2 часа|последние $2 часов}}, по состоянию на $3 $4.", diff --git a/languages/i18n/sd.json b/languages/i18n/sd.json index b92fbee0e2..047d508183 100644 --- a/languages/i18n/sd.json +++ b/languages/i18n/sd.json @@ -1188,6 +1188,7 @@ "log": "لاگس", "logeventslist-submit": "ڏيکاريو", "all-logs-page": "سڀ عوامي لاگس", + "checkbox-all": "سڀ", "checkbox-none": "ڪو بہ نہ", "checkbox-invert": "ابتيو", "allpages": "سڀ صفحا", @@ -1536,6 +1537,7 @@ "show-big-image-preview": "هن پيش نگاھ جي ماپ: $1", "show-big-image-other": "ٻيا {{PLURAL:$2|تحلل}}:$1", "show-big-image-size": "$1*$2 پڪزلس", + "file-info-gif-frames": "$1 {{PLURAL:$1|فريم|فريمَ}}", "newimages": "نون فائيلن جي گيلري", "noimages": "ڏسڻ لاءِ ڪجھہ ناهي.", "ilsubmit": "ڳوليو", @@ -1789,8 +1791,10 @@ "special-characters-group-ipa": "بول", "special-characters-group-symbols": "نشانيون", "special-characters-group-greek": "يوناني", + "special-characters-group-greekextended": "يوناني توسيعي", "special-characters-group-cyrillic": "رُوسي", "special-characters-group-arabic": "عربي", + "special-characters-group-arabicextended": "عربي توسيعي", "special-characters-group-hebrew": "ابراني", "special-characters-group-bangla": "بنگالي", "special-characters-group-tamil": "تامل", @@ -1799,7 +1803,9 @@ "special-characters-group-gujarati": "گجراتي", "special-characters-group-devanagari": "ديوناگري", "special-characters-group-thai": "ٿائي", + "special-characters-group-lao": "لائو", "mw-widgets-dateinput-no-date": "ڪا بہ تاريخ نہ چونڊيل", "mw-widgets-titleinput-description-new-page": "اڃا اهو صفحو وجود نہ ٿو رکي", - "mw-widgets-titleinput-description-redirect": "$1 ڏانهن چوريل" + "mw-widgets-titleinput-description-redirect": "$1 ڏانهن چوريل", + "log-action-filter-all": "سڀ" } diff --git a/languages/i18n/shi.json b/languages/i18n/shi.json index 9d1f190de7..576cb1771e 100644 --- a/languages/i18n/shi.json +++ b/languages/i18n/shi.json @@ -15,15 +15,15 @@ "tog-extendwatchlist": "Ssaɣḍ umuɣ n tisniwin lli n ttfur bac ad n ẓṛṛa imbddln maci ɣir imaynutn", "tog-usenewrc": "Skr s imbddln imaynutn lli n sastwa (ira mayad JavaScript)", "tog-numberheadings": "nmra n nsmiat wahdot", - "tog-showtoolbar": "sbaynd tizikrt n tbddil(JavaScript)", - "tog-editondblclick": "Ẓrig tisniwin ad s uklik snat wal ( ira mayad JavaScript)", + "tog-showtoolbar": "ⵙⴱⴰⵢⵏ ⴷ ⵜⵉⵏⵉⵎⴰⵙⵙⵏ ⵏ ⵓⵙⵏⴼⵍ", + "tog-editondblclick": "ⵙⵏⴼⵍ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵙ ⵓⵙⵉⵏⴽⵍⵉⴽ", "tog-editsectiononrightclick": "Yan uklik s tsga tafasi f uzwl n w-ayyaw bac ad tsbadlt ɣtad (ira JavaScript)", "tog-watchcreations": "Zaydn tasniwin lli skrɣ i umuɣ n tilli ssuġiɣ.", "tog-watchdefault": "Zaydn tasniwin lli tżrigɣ i umuɣ n tilli tsaggaɣ", "tog-watchmoves": "Zayd tisniwin lli smattayɣ i tilli tsggaɣ.", "tog-watchdeletion": "Zaydn tasniwin lli kkesɣ i tilli tsaggaɣ", "tog-minordefault": "ⵔⵛⵎ ⵉⵙⵏⴼⵍⵏ ⴰⴽⴽⵯ ⵎⴰⵙ ⴳⴰⵏ ⵓⵎⵥⵉⵢⵏ ⵙ ⵓⵡⵏⵓⵍ", - "tog-previewontop": "Mel iẓri amzwaru ɣ uflla ɣ taɣzut n imbddln", + "tog-previewontop": "ⵎⵍ ⴰⴱⵔⵉⴱⵢⵓ ⴰⴼⵍⵍⴰ ⵏ ⵓⵎⴽⴰⵏ ⵏ ⵓⵙⵏⴼⵍ", "tog-previewonfirst": "Ml imzray n imbdln imzwura", "tog-enotifwatchlistpages": "sifd yi tabrat igh ibdl kra yat twriqt ghomdfor inu", "tog-enotifusertalkpages": "sifd yi tabrat igh tbdl tawriqt ohokko-no", @@ -42,7 +42,7 @@ "tog-watchlisthidepatrolled": "Ḥbu ibdln lli nssugga ɣu umuɣ n umdfr", "tog-ccmeonemails": "Azn n yyi tunɣit n tbratin liyid uzn wiyaḍ", "tog-diffonly": "Ad ur tml may illan ɣ tisniwin, ml ɣir mattnt isnaḥyan", - "tog-showhiddencats": "sbaynd tsnifat ihbanin", + "tog-showhiddencats": "ⵙⴱⴰⵢⵏ ⴷ ⵜⴰⴳⴳⴰⵢⵉⵏ ⵏⵜⵍⵏⵉⵏ", "tog-norollbackdiff": "hiyd lfarq baad lqiyam bstirjaa", "underline-always": "ⴷⵉⵎⴰ", "underline-never": "ⵊⵊⵓ", @@ -50,8 +50,8 @@ "editfont-style": "lkht n lmintaqa nthrir", "editfont-default": "ala hssab reglage n lmotasaffih", "editfont-monospace": "kht ard tabt", - "editfont-sansserif": "lkht bla zwayd", - "editfont-serif": "lkht szwayd", + "editfont-sansserif": "ⵜⵉⵙⵉⵙⴽⵉⵍⵜ ⴱⵍⴰ ⵙⵉⵔⵉⴼ", + "editfont-serif": "ⵜⵉⵙⵉⵙⴽⵉⵍⵜ ⵙⵉⵔⵉⴼ", "sunday": "ⴰⵙⴰⵎⴰⵙ", "monday": "ⴰⵢⵏⴰⵙ", "tuesday": "ⴰⵙⵉⵏⴰⵙ", @@ -88,7 +88,7 @@ "august-gen": "ⵖⵓⵛⵜ", "september-gen": "ⵛⵓⵜⴰⵏⴱⵉⵔ", "october-gen": "ⴽⵜⵓⴱⵔ", - "november-gen": "ⵏⵓⵡⴰⵏⴱⵉⵔ", + "november-gen": "ⵏⵓⵡⴰⵎⴱⵉⵔ", "december-gen": "ⴷⵓⵊⴰⵏⴱⵉⵔ", "jan": "ⵉⵏⵏ", "feb": "brayr", @@ -112,38 +112,38 @@ "november-date": "$1 ⵏⵓⵡⴰⵏⴱⵉⵔ", "december-date": "$1 ⴷⵓⵊⴰⵏⴱⵉⵔ", "pagecategories": "{{PLURAL:$1|ⵜⴰⴳⴳⴰⵢⵜ|ⵜⴰⴳⴳⴰⵢⵉⵏ}}", - "category_header": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⵖ ⵜⴰⴳⴳⴰⵢⵜ \"$1\"", - "subcategories": "ⵉⴷⵓⵙⵎⵉⵍⵏ", - "category-media-header": "Asdaw multimedya ɣ taggayt \"$1\"", - "category-empty": "Taggayt ad ur gis kra n tasna, du-taggayt niɣd asddaw multimidya", + "category_header": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⵏ ⵜⴰⴳⴳⴰⵢⵜ \"$1\"", + "subcategories": "ⵜⵉⴷⵓⴳⴳⴰⵢⵉⵏ", + "category-media-header": "ⵎⵉⴷⵢⴰ ⵏ ⵜⴰⴳⴳⴰⵢⵜ \"$1\"", + "category-empty": "ⵜⴰⴳⴳⴰⵢⵜ ⴰⴷ ⵓⵔ ⵜⵓⵎⵢ ⵖⵉⵍⴰⴷ ⴽⵔⴰ ⵏ ⵜⴰⵙⵏⴰ ⵏⵖ ⴰⴼⴰⵢⵍⵓ.", "hidden-categories": "{{PLURAL:$1|ⵜⴰⴳⴳⴰⵢⵜ ⵉⵏⵜⵍⵏ|ⵜⴰⴳⴳⴰⵢⵉⵏ ⵏⵜⵍⵏⵉⵏ}}", - "hidden-category-category": "ⵉⵙⵎⵉⵍⵏ ⵏⵜⵍⵏⵉⵏ", - "category-subcat-count": "Taggayt ad gis {{PLURAL:$2|ddu taggayt|$2 ddu taggayin, lli ɣ tlla {{PLURAL:$1|ɣta|ɣti $1}}}} γu flla nna.", - "category-subcat-count-limited": "Taggayt ad illa gis {{PLURAL:$1|ddu taggayt| $1 ddu taggayyin}} ɣid ɣ uzddar.", - "category-article-count": "Taggayt ad gis {{PLURAL:$2|tasna d yuckan|$2 tisniwin, lliɣ llant {{PLURAL:$1|ɣta|ɣti $1}} ɣid ɣu uzddar}}.", + "hidden-category-category": "ⵜⴰⴳⴳⴰⵢⵉⵏ ⵏⵜⵍⵏⵉⵏ", + "category-subcat-count": "{{PLURAL:$2|ⵜⴰⴳⴳⴰⵢⵜ ⴰⴷ ⵓⵔ ⵜⵓⵎⵢ ⴰⴱⵍⴰ ⵜⴰⴷⵓⴳⴳⴰⵢⵜ ⴰⴷ ⵉⵍⵍⴰⵏ ⴷⴷⴰⵡ ⴰⵙ.|ⵜⴰⴳⴳⴰⵢⵜ ⴰⴷ ⵜⵓⵎⵢ $2 ⵜⴷⵓⴳⴳⴰⵢⵉⵏ, ⴳⵉⵙ {{PLURAL:$1|ⵜⴰⴷⵓⴳⴳⴰⵢⵜ ⴰⴷ ⵉⵍⵍⴰⵏ|ⵜⵉⴷⵓⴳⴳⴰⵢⵉⵏ ⴰⴷ ⵙ $1 ⵍⵍⴰⵏⵉⵏ}} ⴷⴷⴰⵡ ⴰⵙ.}}", + "category-subcat-count-limited": "ⵜⴰⴳⴳⴰⵢⵜ ⴰⴷ ⵢⵓⵎⵢ {{PLURAL:$1|ⵜⴰⴷⵓⴳⴳⴰⵢⵜ|$1 ⵜⴰⴷⵓⴳⴳⴰⵢⵉⵏ}} ⴰⴷ ⴷⴷⴰⵡ ⴰⵙ.", + "category-article-count": "ⵜⴰⴳⴳⴰⵢⵜ ⴰⴷ {{PLURAL:$2|ⵓⵔ ⵜⵓⵎⵢ ⴰⴱⵍⴰ ⵜⴰⵙⵏⴰ ⴰⴷ ⵉⴹⴼⴰⵔⵏ.|ⵜⵓⵎⵢ $2 ⵜⴰⵙⵏⵉⵡⵉⵏ, ⴳⵉⵙⵏⵜ {{PLURAL:$1|ⵜⴰⵙⵏⴰ ⴰⴷ ⵉⴹⴼⴰⵔⵏ|ⵜⴰⵙⵏⵉⵡⵉⵏ ⴰⴷ ⴹⴼⴰⵔⵏⵉⵏ}}.}}", "category-article-count-limited": "{{PLURAL:$1|Tasna d yuckan tlla|Tisniwin $1 llid yuckan llant}} ɣ taggayt ad", - "category-file-count": "Taggayt ad gis {{PLURAL:$2|asdaw ad yuckan|$2 isdawn ad, lliɣ llant {{PLURAL:$1|ɣta|ɣti $1}} ɣid ɣ uzddar}}.", + "category-file-count": "ⵜⴰⴳⴳⴰⵢⵜ ⴰⴷ {{PLURAL:$2|ⵓⵔ ⵜⵓⵎⵢ ⴰⴱⵍⴰ ⴰⴼⴰⵢⵍⵓ ⴰⴷ ⵏⵏⴰ ⵉⴹⴼⴰⵔⵏ.|ⵜⵓⵎⵢ $2 ⵉⴼⴰⵢⵍⵓⵜⵏ, ⴳⵉⵙⵏ {{PLURAL:$1|ⴰⴼⴰⵢⵍⵓ ⴰⴷ ⵏⵏⴰ ⵉⴹⴼⴰⵔⵏ|$1 ⵉⴼⴰⵢⵍⵓⵜⵏ ⴰⴷ ⵏⵏⴰ ⴹⴼⴰⵔⵏⵉⵏ}} ⴷⴷⴰⵡ ⴰⵙ.}}", "category-file-count-limited": "{{PLURAL:$1|Asdaw ad yuckan illa|isdawn ad $1 llid yuckan llan}} ɣ taggayt ad", "listingcontinuesabbrev": "Attfr", - "index-category": "Tisniwin su umatar", + "index-category": "ⵜⴰⵙⵡⵏⵉⵡⵉⵏ ⵜⵜⵡⴰⵏⴷⵉⴽⵙⴰⵏⵉⵏ", "noindex-category": "Tisniwin bla amatar", "broken-file-category": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⵖ ⵍⵍⴰⵏ ⵉⵍⵉⵏⴽⵏ ⵔⵥⴰⵏⵉⵏ", - "about": "ⵅⴼ", + "about": "ⵖⴼ", "article": "ⵜⴰⵙⵏⴰ ⵏ ⵜⵓⵎⴰⵢⵜ", "newwindow": "(ⵉⵜⵜⵏⵓⵔⵥⵓⵎ ⴷⴳ ⵓⵙⴽⵙⵍ ⴰⵎⴰⵢⵏⵓ)", - "cancel": "ḥiyyd", + "cancel": "ⵙⵎⵎⵜ", "moredotdotdot": "ⵓⴳⴳⴰⵔ...", "mypage": "ⵜⴰⵙⵏⴰ", "mytalk": "ⴰⵎⵙⴰⵡⴰⵍ", "anontalk": "ⴰⵎⵙⴰⵡⴰⵍ", "navigation": "ⴰⵙⵜⴰⵔⴰ", "and": " ⴷ", - "faq": "Isqsitn li bdda tsutulnin", + "faq": "ⵉⵇⵙⵇⵙⵉⵜⵏ ⵜⵜⵢⴰⵍⴰⵙⵏⵉⵏ", "actions": "ⵜⵉⴳⴰⵡⵉⵏ", "namespaces": "Ismawn n tɣula", "variants": "ⵜⵉⵎⵣⴰⵔⴰⵢⵉⵏ", "errorpagetitle": "ⵜⴰⵣⴳⵍⵜ", - "returnto": "Urri s $1.", + "returnto": "ⴰⵖⵓⵍ ⵏⵏ ⵙ $1.", "tagline": "ⵣⵖ {{SITENAME}}", "help": "ⵜⵉⵡⵉⵙⵉ", "search": "ⵙⵉⴳⴳⵍ", @@ -154,7 +154,7 @@ "history_short": "ⴰⵎⵣⵔⵓⵢ", "history_small": "ⴰⵎⵣⵔⵓⵢ", "updatedmarker": "Tuybddal z tizrink li iğuran", - "printableversion": "Tasna nu sugz", + "printableversion": "ⴰⵎⴱⵔⵉⵎⵉ ⵜⴰⵙⵏⴰ ⴰⴷ", "permalink": "Azday Bdda illan", "print": "Siggz", "edit": "ⵙⵏⴼⵍ", @@ -171,28 +171,28 @@ "talk": "ⴰⵎⵙⴰⵡⴰⵍ", "views": "ⵜⴰⵏⵏⴰⵢⵉⵏ", "toolbox": "ⵉⵎⴰⵙⵙⵏ", - "imagepage": "Ẓr tasna n-usddaw", - "mediawikipage": "Ẓr tasna n tabrat", + "imagepage": "ⵥⵔ ⵜⴰⵙⵏⴰ ⵏ ⵓⴼⴰⵢⵍⵓ", + "mediawikipage": "ⵥⵔ ⵜⴰⵙⵏⴰ ⵏ ⵜⵓⵣⵉⵏⵜ", "templatepage": "Ẓr tasna n Tamudemt", - "viewhelppage": "Ẓr tasna n-aws", - "categorypage": "Ẓr tasna n taggayt", - "viewtalkpage": "Ẓr amsgdal", + "viewhelppage": "ⵥⵔ ⵜⴰⵙⵏⴰ ⵏ ⵜⵡⵉⵙⵉ", + "categorypage": "ⵥⵔ ⵜⴰⵙⵏⴰ ⵏ ⵜⴰⴳⴳⴰⵢⵜ", + "viewtalkpage": "ⵥⵔ ⴰⵎⵙⴰⵡⴰⵍ", "otherlanguages": "ⵙ ⵜⵓⵜⵍⴰⵢⵉⵏ ⵢⴰⴹⵏ", "redirectedfrom": "(Tmmuttid z $1)", "redirectpagesub": "Tasna n-usmmattay", - "lastmodifiedat": "ⴰⵙⵏⴼⵍ ⵉⴳⴳⵯⵔⴰⵏ ⵖ ⵜⴰⵙⵏⴰ ⴰⴷ ⵉⵜⵜⵢⵓⵙⴽⵔ ⴰⵙⵙ ⵏ $1 ⴳ $2.", + "lastmodifiedat": "ⴰⵙⵏⴼⵍ ⵉⴳⴳⵯⵔⴰⵏ ⵖ ⵜⴰⵙⵏⴰ ⴰⴷ ⵉⵜⵜⵢⵓⵙⴽⵔ ⴰⵙⵙ ⵏ $1 ⵖ $2.", "viewcount": "Tmmurzm tasna yad {{PLURAL:$1|yat twalt|$1 mnnawt twal}}.", "protectedpage": "Tasnayat iqn ugdal nes.", "jumpto": "ⴷⴷⵓ ⵙ:", "jumptonavigation": "ⴰⵙⵜⴰⵔⴰ", "jumptosearch": "ⵙⵉⴳⴳⵍ", - "view-pool-error": "Surf, iqddacn žayn ɣilad. mnnaw midn yaḍnin ay siggiln tasna yad. Qqel imik fad addaɣ talst at tarmt at lkmt tasna yad\n\n$1", + "view-pool-error": "ⵙⵙⵓⵔⴼ ⴰⵙ, ⵉⵙⵉⵔⴱⵓⵔⵏ ⵕⵎⵉⵏ ⵖⵉⵍⴰⴷ.\nⴱⵣⵣⴰⴼ ⵏ ⵉⵙⵎⵔⴰⵙⵏ ⴰⵔ ⵜⵜⴰⵔⵎⵏ ⴰⴷ ⴰⵏⵏⴰⵢⵏ ⵜⴰⵙⵏⴰ ⴰⴷ.\nⵇⵇⵍ ⵢⴰⵏ ⵉⵎⵉⴽⴽ ⴼⴰⴷ ⴰⴷ ⴷⴰⵖ ⵜⴰⵔⵎⵜ ⴰⴷ ⵜⴽⵛⵎⵜ ⵙ ⵜⴰⵙⵏⴰ ⴰⴷ.\n\n$1", "pool-timeout": "Tzrit tizi n uql lli yak ittuykfan. Ggutn midn lli iran ad iẓr tasna yad. Urrid yan imik..", "pool-queuefull": "Umuɣ n twuri iẓun (iεmr)", "pool-errorunknown": "Anzri (error) ur ittuyssan.", "aboutsite": "ⴼ {{SITENAME}}", "aboutpage": "Project:ⵖⴼ", - "copyright": "Mayllan gis illa ɣ ddu $1.", + "copyright": "ⵜⴻⵜⵜⵢⵓⴼⵙⵔ ⵜⵓⵎⴰⵢⵜ ⵖ ⵓⵏⵛⴽ ⵏ $1, ⵉⵖ ⵓⵔ ⵉⵏⵏⵉ ⴽⵔⴰ ⵎⴳⴰⵍ ⵏ ⵖⴰⵢⴰⴷ.", "copyrightpage": "{{ns:project}}:ⵉⵣⵔⴼⴰⵏ ⵏ ⵓⵎⴳⴰⵢ", "currentevents": "Immussutn n ɣila", "currentevents-url": "Project:Immussutn n ɣilad", @@ -203,8 +203,8 @@ "mainpage": "ⵜⴰⵙⵏⴰ ⵏ ⵓⵙⵏⵓⴱⴳ", "mainpage-description": "ⵜⴰⵙⵏⴰ ⵏ ⵓⵙⵏⵓⴱⴳ", "policy-url": "Project:ⵜⴰⵙⵔⵜⵉⵜ", - "portal": "ⴰⵡⵡⵓⵔ ⵏ ⵜⴳⵔⴰⵡⵜ", - "portal-url": "Project:ⴰⵡⵡⵓⵔ ⵏ ⵜⴳⵔⴰⵡⵜ", + "portal": "ⴰⴳⴳⵓⵔ ⵏ ⵜⴳⵔⴰⵡⵜ", + "portal-url": "Project:ⴰⴳⴳⵓⵔ ⵏ ⵜⴳⵔⴰⵡⵜ", "privacy": "ⵜⴰⵙⵔⵜⵉⵜ ⵏ ⵜⵉⵏⵏⵓⵜⵍⴰ", "privacypage": "Project:ⵜⴰⵙⵔⵜⵉⵜ ⵏ ⵜⵉⵏⵏⵓⵜⵍⴰ", "badaccess": "Anezri (uras tufit)", @@ -219,36 +219,36 @@ "youhavenewmessages": "{{PLURAL:$3|{{GENDER:$3|ⴷⴰⵔⴽ|ⴷⴰⵔⵎ}}}} $1 ($2).", "newmessageslinkplural": "{{PLURAL:$1|ⵜⵓⵣⵉⵏⵜ ⵜⴰⵎⴰⵢⵏⵓⵜ|ⵜⵓⵣⵉⵏⵉⵏ ⵜⵉⵎⴰⵢⵏⵓⵜⵉⵏ}}", "newmessagesdifflinkplural": "{{PLURAL:$1|ⵓⵙⵏⴼⵍ ⵉⴳⴳⵯⵔⴰⵏ|ⵉⵙⵏⴼⵉⵍⵏ ⴳⴳⵯⵔⴰⵏⵉⵏ}}", - "youhavenewmessagesmulti": "{{GENDER:|ⴷⴰⵔⴽ|ⴷⴰⵔⵎ}} ⵜⵓⵣⵉⵏⵉⵏ ⵜⵉⵎⴰⵢⵏⵓⵜⵉⵏ ⴳ $1", + "youhavenewmessagesmulti": "{{GENDER:|ⴷⴰⵔⴽ|ⴷⴰⵔⵎ}} ⵜⵓⵣⵉⵏⵉⵏ ⵜⵉⵎⴰⵢⵏⵓⵜⵉⵏ ⵖ $1", "editsection": "ⵙⵏⴼⵍ", "editold": "ⵙⵏⴼⵍ", - "viewsourceold": "Mel aɣbalu", + "viewsourceold": "ⵥⵔ ⴰⵙⴰⴳⵎ", "editlink": "ⵙⵏⴼⵍ", "viewsourcelink": "ⵥⵔ ⴰⵙⴰⴳⵎ", "editsectionhint": "ⵙⵏⴼⵍ ⵜⵉⴳⵣⵎⵉ: $1", "toc": "ⵜⵓⵎⴰⵢⵉⵏ", - "showtoc": "Mel", + "showtoc": "ⵎⵍ", "hidetoc": "ⵙⵙⵏⵜⵍ", "collapsible-collapse": "Smnuḍu", "collapsible-expand": "Sfruri", "confirmable-yes": "ⵢⴰⵀ", "confirmable-no": "ⵓⵀⵓ", - "thisisdeleted": "Mel niɣd rard $1?", - "viewdeleted": "Mel $1?", - "restorelink": "{{PLURAL:$1|ⵢⴰⵏ ⵓⵙⵏⴼⵍ ⵉⵜⵜⵡⴰⴽⴽⵙⵏ|imbddel lli imḥin}}", + "thisisdeleted": "ⵉⵙ ⵜⵔⵉⵜ ⴰⴷ ⵜⴰⵏⵏⴰⵢⵜ ⵏⵖ ⴰⴷ ⵜⵙⵙⴰⴹⵓⵜ $1?", + "viewdeleted": "ⴰⴷ ⵜⵥⵔⵜ $1?", + "restorelink": "{{PLURAL:$1|ⵢⴰⵏ ⵓⵙⵏⴼⵍ ⵉⵜⵜⵡⴰⴽⴽⵙⵏ|$1 ⵉⵙⵏⴼⵉⵍⵏ ⵜⵜⵡⴰⴽⴽⵙⵏⵉⵏ}}", "feedlinks": "ⵉⴼⵉⵍⵉ:", "feed-invalid": "Anaw n usurdm ur gis iffuy umya", "feed-unavailable": "Isudmn ur llanin ɣil", - "site-rss-feed": "$1 asudm n RSS", - "site-atom-feed": "$1 lqm n' atom", - "page-rss-feed": "\"$1\" tlqim RSS", - "page-atom-feed": "$1 azday atom", + "site-rss-feed": "ⵉⴼⵉⵍⵉ RSS ⵏ $1", + "site-atom-feed": "ⵉⴼⵉⵍⵉ ⴰⵟⵓⵎ ⵏ $1", + "page-rss-feed": "ⵉⴼⵉⵍⵉ RSS ⵏ \"$1\"", + "page-atom-feed": "ⵉⴼⵉⵍⵉ ⴰⵟⵓⵎ ⵏ \"$1\"", "red-link-title": "$1 (ⵜⴰⵙⵏⴰ ⵓⵔ ⵉⵍⵍⵉⵏ)", "nstab-main": "ⵜⴰⵙⵏⴰ", "nstab-user": "ⵜⴰⵙⵏⴰ ⵏ {{GENDER:{{ROOTPAGENAME}}|ⵓⵙⵎⵔⴰⵙ|ⵜⵙⵎⵔⴰⵙⵜ}}", "nstab-media": "Tasnat Ntuzumt", "nstab-special": "ⵜⴰⵙⵏⴰ ⵉⵥⵍⵉⵏ", - "nstab-project": "Tasna n tuwuri", + "nstab-project": "Project page", "nstab-image": "ⴰⴼⴰⵢⵍⵓ", "nstab-mediawiki": "ⵜⵓⵣⵉⵏⵜ", "nstab-template": "Talɣa", @@ -256,14 +256,14 @@ "nstab-category": "ⵜⴰⴳⴳⴰⵢⵜ", "mainpage-nstab": "ⵜⴰⵙⵏⴰ ⵏ ⵓⵙⵏⵓⴱⴳ", "nosuchaction": "ⵓⵔ ⵜⵍⵍⵉ ⵜⵉⴳⴰⵡⵜ ⴰⴷ", - "nosuchactiontext": "Mytuskarn ɣu tansa yad ur tti tgi.\n\nIrwas is turit tansa skra mani yaḍnin, ulla azday ur igi amya.\n\nTzdar attili tamukrist ɣ {{SITENAME}}.", + "nosuchactiontext": "Mytuskarn ɣu tansa yad ur tti tgi.\nⵉⵔⵡⴰⵙ ⵉⵙ ⵓⵔ ⵜⵓⵔⵉⵜ ⵎⵣⵢⴰⵏ ⴰURL, ⵏⵖ ⵉⵙ ⵜⴹⴼⵔⵜ ⴽⵔⴰ ⵏ ⵓⵍⵉⵏⴽ ⵉⵣⴳⵍⵏ.\nTzdar attili tamukrist ɣ {{SITENAME}}.", "nosuchspecialpage": "ⵓⵔ ⵜⵍⵍⵉ ⵜⴰⵙⵏⴰ ⴰⴷ ⵉⵥⵍⵉⵏ", - "nospecialpagetext": "Trit yat tasna tamzlit ur illan.\n\nTifilit n tasnayin gaddanin ratn taft ɣid [[Special:SpecialPages|{{int:specialpages}}]].", + "nospecialpagetext": "ⵜⴻⵜⵜⵔⵜ ⵢⴰⵜ ⵜⴰⵙⵏⴰ ⵉⵥⵍⵉⵏ ⵓⵔ ⵉⵍⵍⵉⵏ.\n\nⵔⴰⴷ ⵜⴰⴼⵜ ⵢⴰⵜ ⵜⵍⴳⴰⵎⵜ ⵏ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵥⵍⵉⵏⵉⵏ ⵖⵜⴰⵏⵉⵏ ⵖ [[Special:SpecialPages|{{int:specialpages}}]].", "error": "ⵜⴰⵣⴳⵍⵜ", "databaseerror": "ⵜⴰⵣⴳⵍⵜ ⴳ ⵜⴰⵙⵉⵍⴰ ⵏ ⵉⵙⴼⴽⴰ", - "databaseerror-error": "ⵜⴰⵣⴳⵍⵜ: $1", + "databaseerror-error": "ⴰⵣⴳⴳⴰⵍ: $1", "laggedslavemode": "Ḥan tasnayad ur gis graygan ambddel amaynu.", - "readonly": "Tqqn tabase", + "readonly": "ⵜⴰⵙⵉⵍⴰ ⵏ ⵉⵙⴼⴽⴰ ⵉⵜⵜⵡⴰⵔⴳⵍⵏ", "missing-article": "lqaa'ida n lbayanat ortofa nass ad gh tawriqt liss ikhssa asti taf limism \"$1\" $2.\n\nghikad artitsbib igh itabaa lfrq aqdim nghd tarikh artawi skra nsfha ityohyadn.\n\nighor iga lhal ghika ati ran taft kra lkhata gh lbarnamaj.\n\nini mayad ikra [[Special:ListUsers/sysop|lmodir]] tfktas ladriss ntwriqt an.", "missingarticle-rev": "(lmorajaaa#: $1)", "missingarticle-diff": "(ⴰⵎⵣⴰⵔⴰⵢ: $1, $2)", @@ -271,38 +271,40 @@ "internalerror_info": "ⵜⴰⵣⴳⵍⵜ ⵜⴰⴳⵯⵏⵙⴰⵏⵜ: $1", "filecopyerror": "orimkin ankopi \"$1\" s \"$2\".", "filerenameerror": "ur as tufit ad tsmmut \"$1\" s \"$2\".", - "filedeleteerror": "Ur as yuffi ad ikkis asddaw ad « $1 ».", + "filedeleteerror": "ⵓⵔ ⵢⴰⵍⵍⴼⵓⵙ ⴰⴷ ⵉⵜⵜⵡⴰⴽⴽⵙ ⵓⴼⴰⵢⵍⵓ \"$1\".", "directorycreateerror": "Ur as tufit an tgt asddaw « $1 ».", - "filenotfound": "Ur as tufit ad taft \"$1\"", + "filenotfound": "ⵓⵔ ⵢⴰⵍⵍⴼⵓⵙ ⴰⴷ ⵉⵜⵜⵢⴰⴼ ⵓⴼⴰⵢⵍⵓ \"$1\".", "unexpected": "Azal (atig) llis ur nql: « $1 » = « $2 ».", "formerror": "Anzri: ur as tufit an tgt tifrkit", "badarticleerror": "Tigawt ad ur as tufi ad ttuyskar ɣ tasna yad.", "cannotdelete": "Ur as tufa tasna yad ad ttuykkas niɣd asdaw ad « $1 ».\nAkks ad iskrt kra yaḍn", "badtitle": "Azwl ur ifulkin", "badtitletext": "Azwl n tasna lli trit ur igadda, ixwa, niɣd iga aswl n gr tutlayt niḍ ngr tuwwurins ur izdimzyan. Ẓr urgis tgit kra nu uskkil niɣd mnnaw lli gis ur llanin", - "viewsource": "Mel iɣbula", - "virus-unknownscanner": "ⴰⵎⴳⵍⴼⵉⵔⵓⵙ ⴰⵔⵓⵙⵙⵉⵏ:", + "viewsource": "ⵥⵔ ⴰⵙⴰⴳⵎ", + "virus-unknownscanner": "ⴰⵎⴳⵍⴱⵉⵔⵓⵙ ⴰⵔⵓⵙⵙⵉⵏ:", + "welcomeuser": "ⴱⵔⵔⴽ ⴰ $1!", "yourname": "ⵉⵙⵎ ⵏ ⵓⵙⵎⵔⴰⵙ:", - "yourpassword": "awal iḥdan:", - "yourpasswordagain": "Зawd ara awal iḥdan:", + "yourpassword": "ⵜⴰⴳⵓⵔⵉ ⵏ ⵓⵣⵔⴰⵢ:", + "yourpasswordagain": "ⴰⵔⴰ ⴷⴰⵖ ⵜⴰⴳⵓⵔⵉ ⵏ ⵓⵣⵔⴰⵢ:", "yourdomainname": "Taɣult nek", "externaldberror": "Imma tlla ɣin kra lafut ɣu ukcumnk ulla urak ittuyskar at tsbddelt lkontnk nbrra.", "login": "ⴽⵛⵎ", "nav-login-createaccount": "ⴽⵛⵎ / ⵙⵏⵓⵍⴼⵓ ⴰⵎⵉⴹⴰⵏ", "logout": "ⴼⴼⵖ", "userlogout": "ⴼⴼⵖ", - "notloggedin": "Ur tmlit mat git", - "createaccount": "Murzm amidan nek (lkunt)..", + "notloggedin": "ⵓⵔ ⵜⵣⴷⵉⵜ", + "createaccount": "ⵔⵥⵎ ⴽⵔⴰ ⵏ ⵓⵎⵉⴹⴰⵏ", "createaccountmail": "S tirawt taliktunant", + "createacct-reason": "ⵜⴰⵎⵏⵜⵉⵍⵜ", "createacct-benefit-body1": "{{PLURAL:$1|ⴰⵙⵏⴼⵍ|ⵉⵙⵏⴼⵉⵍⵏ}}", "createacct-benefit-body2": "{{PLURAL:$1|ⵜⴰⵙⵏⴰ|ⵜⴰⵙⵏⵉⵡⵉⵏ}}", "createacct-benefit-body3": "{{PLURAL:$1|ⴰⵏⴰⵎⵓ ⵉⴳⴳⵯⵔⴰⵏ|ⵉⵏⴰⵎⵓⵜⵏ ⴳⴳⵯⵔⴰⵏⵉⵏ}}", - "badretype": "Tasarut lin tgit ur dis tucka.", + "badretype": "ⵜⵉⴳⵓⵔⵉⵡⵉⵏ ⵏ ⵓⵣⵔⴰⵢ ⵏⵏⴰ ⵜⵙⵙⴽⵛⵎⵜ ⵓⵔ ⵎⵙⴰⵙⴰⵏⵜ.", "userexists": "Asaɣ nu umsqdac li tskcmt illa yad", "loginerror": "Gar akccum", "createaccounterror": "$1 ur as tufit at kcmt", - "loginsuccesstitle": "Tkcmt mzyan (tllit ɣil ɣ ifalan)", - "loginsuccess": "Tllit ɣilad ɣ ifalan (tzdit d tuqqna) {{GENDER:$1|||}} ar {{SITENAME}} zund « $1 ».", + "loginsuccesstitle": "ⵜⵣⴷⵉⵜ ⵏⵏ", + "loginsuccess": "ⵀⴰ ⴽ(ⵎ) ⵉⵏⵏ ⵖⵉⵍⴰⴷ ⵜⵣⴷⵉⵜ ⵏⵏ ⵖ {{SITENAME}} ⵙ ⵢⵉⵙⵎ ⵏ \"$1\".", "nosuchuser": "Asqdac « $1 » ur illi.\nUssaɣ n isqdacn ḥiln hlli.\nẒṛ daɣ ist turit mzyan mayad, niɣd [[Special:CreateAccount|tmmurẓmt amiḍan amaynu]].", "nosuchusershort": "Ur illa umsaws lli ilan assaɣ « $1 ». Ẓṛ ist turit mzyan mayad.", "nouserspecified": "Illa fllak ad tarat assaɣ nk.", @@ -315,90 +317,90 @@ "pt-login-button": "ⴽⵛⵎ", "pt-userlogout": "ⴼⴼⵖ", "php-mail-error-unknown": "Kra ur igadda tasɣnt btbratin() n PHP.", - "changepassword": "bdl awal ihdan", + "changepassword": "ⵙⵏⴼⵍ ⵜⴰⴳⵓⵔⵉ ⵏ ⵓⵣⵔⴰⵢ", "resetpass_announce": "Tkcmt {{GENDER:||e|(e)}} s yat tangalt lli kin ilkmt s tbrat emeil . tangaltad ur tgi abla tin yat twalt. Bac ad tkmlt tqqiyyidank kcm tangalt tamaynut nk ɣid:", - "resetpass_header": "Sbadl taguri n tangalt n umiḍal (compte)", - "oldpassword": "Awal iḥḍan aqbur", - "newpassword": "Awal iḥḍan amaynu:", - "retypenew": "Als i tirra n w-awal iḥḍan:", + "resetpass_header": "ⵙⵏⴼⵍ ⵜⴰⴳⵓⵔⵉ ⵏ ⵓⵣⵔⴰⵢ ⵏ ⵓⵎⵉⴹⴰⵏ", + "oldpassword": "ⵜⴰⴳⵓⵔⵉ ⵏ ⵓⵣⵔⴰⵢ ⵉⵇⴷⵎⵏ:", + "newpassword": "ⵜⴰⴳⵓⵔⵉ ⵏ ⵓⵣⵔⴰⵢ ⵜⴰⵎⴰⵢⵏⵓⵜ:", + "retypenew": "ⴰⵔⴰ ⴷⴰⵖ ⵜⴰⴳⵓⵔⵉ ⵏ ⵓⵣⵔⴰⵢ ⵜⴰⵎⴰⵢⵏⵓⵜ:", "resetpass_submit": "Sbadl awal n uzri tkcmt", "changepassword-success": "Awal n uzri nk ibudl mzyan! rad nit tilit ɣ ifalan", "botpasswords-label-create": "ⵙⵏⵓⵍⴼⵓ", "botpasswords-label-delete": "ⴽⴽⵙ", "resetpass_forbidden": "Iwaliwn n uzri ur ufan ad badln.", "resetpass-no-info": "illa fllak ad zwar tilit ɣ ifalan bac ad tkcmt s tasna yad", - "resetpass-submit-loggedin": "Bdl awal n ukccum (tangalt)", - "resetpass-submit-cancel": "ḥiyyd", + "resetpass-submit-loggedin": "ⵙⵏⴼⵍ ⵜⴰⴳⵓⵔⵉ ⵏ ⵓⵣⵔⴰⵢ", + "resetpass-submit-cancel": "ⵙⵎⵎⵜ", "resetpass-wrong-oldpass": "Awal n uzri yad niɣt walli yak ittkfan i yatwalt ur gis iffuɣ umya.\nHan irwas is yad tsbadlt awal n uzri niɣd is ḍalbt yan yaḍn n yat tklit.", "resetpass-temp-password": "Awal ad n uzri iga ɣir win yat tklit:", "bold_sample": "Aḍṛiṣ iḍnin", "bold_tip": "Aḍṛiṣ iḍnin", "italic_sample": "Aḍṛiṣ iknan", "italic_tip": "Aḍṛiṣ iknan", - "link_sample": "Azwl n uzday", + "link_sample": "ⴰⵣⵡⵍ ⵏ ⵓⵍⵉⵏⴽ", "link_tip": "ⴰⵍⵉⵏⴽ ⴰⴳⵯⵏⵙⴰⵏ", "extlink_sample": "http://www.example.com ⴰⵣⵡⵍ ⵏ ⵓⵍⵉⵏⴽ", - "extlink_tip": "ⴰⵍⵉⵏⴽ ⴰⴱⵔⵔⴰⵏ (ⴰⴷ ⵓⵔ ⵜⴻⵜⵜⵓⵜ ⴰⵣⵡⵉⵔ http://)", + "extlink_tip": "ⴰⵍⵉⵏⴽ ⴰⴱⵕⵕⴰⵏ (ⴰⴷ ⵓⵔ ⵜⴻⵜⵜⵓⵜ ⴰⵣⵡⵉⵔ http://)", "headline_sample": "Aḍṛiṣ n ddu uzwl", "headline_tip": "Ddu-uzwl taskfalt 2", "nowiki_sample": "Kcm aḍṛiṣ li ur imzln ɣid", "nowiki_tip": "Zri Taseddast n wiki", - "image_tip": "Asdaw n illan", - "media_tip": "Azday s usdaw usɣmas (midya)", - "sig_tip": "Tirra n ufus nk (akrraj) s usakud", - "hr_tip": "izriri iɣzzifn (ad bahra gis ur tsgut)", - "summary": "Tagḍwit (ⵜⴰⴳⴹⵡⵉⵜ):", + "image_tip": "ⴰⴼⴰⵢⵍⵓ ⵉⵜⵜⵡⴰⵙⵉⴷⴼⵏ", + "media_tip": "ⴰⵍⵉⵏⴽ ⵏ ⵓⴼⴰⵢⵍⵓ", + "sig_tip": "ⴰⵙⴳⵎⴹ ⵏⵏⴽ/ⵎ ⵙ ⵜⵉⵣⵉ", + "hr_tip": "izriri iɣzzifn (ⴰⴷ ⵜ ⵓⵔ ⵜⵙⵙⵓⴳⵜⵜ)", + "summary": "ⵜⵓⴳⵣⵉⵍⵜ:", "subject": "ⴰⵙⵏⵜⵍ:", "minoredit": "ⵡⴰⴷ ⵉⴳⴰ ⴰⵙⵏⴼⵍ ⵓⵎⵥⵉⵢ", "watchthis": "ⴹⴼⵓⵔ ⵜⴰⵙⵏⴰ ⴰⴷ", "savearticle": "Ẓṛig d tḥbut", - "preview": "Iẓṛi amzwaru", + "preview": "ⴱⵔⵉⴱⵢⵓ", "showpreview": "ⵎⵍ ⵜⴰⵎⵓⵖⵍⵉ", "showdiff": "ⵎⵍ ⵉⵙⵏⴼⵉⵍⵏ", "anoneditwarning": "Han ''' ur ttuyssant ''' rad ibayn IP nk ɣ umzrut n tasna yad, ur sul iḥba tamagit nk", - "anonpreviewwarning": "ur ittuyssan mat tgit. Iɣ tgdl tawuri nk, tansa nk IP rad tbayn ɣ umzruy n imbdln n tasna yad.", + "anonpreviewwarning": "ⵓⵔ ⵜⵣⴷⵉⵜ. Saving will record your IP address in this page's edit history.", "missingsummary": "'''Adakt nskti :''' ur ta tfit awal imun n imbddln nk.\nIɣ tklikkit tiklit yaḍn f tjrrayt « $1 », aẓṛig rad ittuyskar blla tsnt", - "missingcommenttext": "Σafak skjm awnnit (aɣfawal) nk ɣ uflla.", - "summary-preview": "Tiẓṛi n tagḍwit:", + "missingcommenttext": "ⵉ ⵕⴱⴱⵉ ⵙⵙⴽⵛⵎ ⴽⵔⴰ ⵏ ⵓⵖⴼⴰⵡⴰⵍ ⴷⴷⴰⵡ ⴰⵙ.", + "summary-preview": "ⴱⵔⵉⴱⵢⵓ ⵏ ⵜⵓⴳⵣⵉⵍⵜ ⵏ ⵓⵙⵏⴼⵍ:", "blockedtitle": "ⵉⵜⵜⵡⴰⴳⴷⵍ ⵓⵙⵎⵔⴰⵙ ⴰⴷ", - "blockednoreason": "ta yan sabab oritfki", - "whitelistedittext": "Illa fllak ad tilit ɣ $1 bac adak ittuyskar ad tsbadlt mayllan ɣid", + "blockednoreason": "ⵓⵔ ⵜⴻⵜⵜⵢⵓⴼⴽⵉ ⴽⵔⴰ ⵏ ⵜⵎⵏⵜⵉⵍⵜ", + "whitelistedittext": "ⵉ ⵕⴱⴱⵉ $1 ⵉⵖ ⵜⵔⵉⵜ ⴰⴷ ⵜⵙⵏⴼⵍⵜ ⵜⴰⵙⵏⵉⵡⵉⵏ.", "confirmedittext": "Illa fllak ad talst i tansa nk tbratin urta tsbadalt tisniwin.\nKcm zwar tft tansan nk tbratin ɣ [[Special:Preferences|Timssusmin n umqdac]].", "nosuchsectiontitle": "Ur as tufit ad taft ayyaw ad.", - "nosuchsectiontext": "Turmt ad tsbadlt yan w-ayyaw lli ur illin.\nḤaqqan is immutti s mani niɣt ittuykkas s mad tɣrit tasnayad.", - "loginreqtitle": "Labd ad tkclt zwar", + "nosuchsectiontext": "ⵜⵓⵔⵎⵜ ⴰⴷ ⵜⵙⵏⴼⵍⵜ ⵢⴰⵜ ⵜⴳⵣⵎⵉ ⵓⵔ ⵉⵍⵍⵉⵏ.\nⵉⵥⴹⴰⵔ ⴰⴷ ⵜⵉⵍⵉ ⵜⴻⵜⵜⵢⴰⵡⵙⵎⴰⵜⵜⵉ ⵏⵖ ⵜⴻⵜⵜⵡⴰⴽⴽⵙ ⵍⵍⵉⵖ ⴰⵔ ⵜⴻⵜⵜⴰⵏⵏⴰⵢⵜ ⵜⴰⵙⵏⴰ.", + "loginreqtitle": "ⵍⴰⴱⵓⴷⴷ ⵏ ⵓⵣⴷⴰⵢ", "loginreqlink": "ⴽⵛⵎ", - "loginreqpagetext": "Illa fllak $1 bac ad tẓṛt tisniwin yaḍn.", - "accmailtitle": "awal ihdan hatin yuznak nnit", + "loginreqpagetext": "ⵉ ⵕⴱⴱⵉ $1 ⵉⵖ ⵜⵔⵉⵜ ⴰⴷ ⵜⴰⵏⵏⴰⵢⵜ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵢⴰⴹⵏ.", + "accmailtitle": "ⵜⴻⵜⵜⵢⵓⵣⵏ ⵜⴳⵓⵔⵉ ⵏ ⵓⵣⵔⴰⵢ", "newarticle": "(ⴰⵎⴰⵢⵏⵓ)", - "newarticletext": "Tfrt yan uzday s yat tasna lli ur ta jju illan [{{fullurl:Special:Log|type=delete&page={{FULLPAGENAMEE}}}} ttuykkas].\nIɣ rast daɣ tskrt skcm atṛiṣ nk ɣ tanaka yad (Tẓḍaṛt an taggt γi [$1 tasna u usaws] iɣ trit inɣmisn yaḍn).\nIvd tlkmt {{GENDER:||e|(e)}} ɣis bla trit, klikki f tajrrayt n '''urrir''' n iminig nk (navigateur).", + "newarticletext": "ⵜⵎⴰⵏⵜ ⴷ ⵢⴰⵏ ⵓⵍⵉⵏⴽ ⵙ ⵢⴰⵜ ⵜⴰⵙⵏⴰ ⵓⵔ ⵜⴰ ⵉⵍⵍⵉⵏ.\nⴱⴰⵛ ⴰⴷ ⵜⵙⵏⵓⵍⴼⵓⵜ ⵜⴰⵙⵏⴰ, start typing in the box below (ⵥⵔ [$1 ⵜⴰⵙⵏⴰ ⵏ ⵜⵡⵉⵙⵉ] for more info).\nIf you are here by mistake, click your browser's back button.", "noarticletext": "ⵓⵔ ⵖⵉⵍⴰⴷ ⵉⵍⵍⵉ ⴽⵔⴰ ⵏ ⵓⴹⵔⵉⵙ ⵖ ⵜⴰⵙⵏⴰ ⴰⴷ.\nⵜⵥⴹⴰⵔⵜ [[Special:Search/{{PAGENAME}}|ⴰⴷ ⵜⵙⵉⴳⴳⵍⵜ ⴰⵣⵡⵍ ⴰⴷ]] ⵖ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵢⴰⴹⵏ,\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} search the related logs],\nⵏⵖ [{{fullurl:{{FULLPAGENAME}}|action=edit}} ⴰⴷ ⵜⵙⵏⵓⵍⴼⵓⵜ ⵜⴰⵙⵏⴰ ⴰⴷ].", "noarticletext-nopermission": "Ur illa may itt yuran ɣ tasna tad.\nẒr [[Special:Search/{{PAGENAME}}|search for this page title]] ɣ tisnatin yaḍnin,\nulla [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}}search the related logs].", "updated": "(mohdata)", "note": "'''molahada:'''", - "previewnote": "'''Ad ur ttut aṭṛiṣ ad iga ɣir amzwaru urta illa ɣ ifalan !'''", + "previewnote": "Remember that this is only a preview.\nⵉⵙⵏⴼⵉⵍⵏ ⵏⵏⴽ/ⵎ ⵓⵔ ⵜⴰ ⵜⵜⵢⵓⵣⵎⵎⵉⵎⵏ!", "editing": "ⴰⵙⵏⴼⵍ ⵏ $1", "creating": "ⴰⵙⵏⵓⵍⴼⵓ ⵏ $1", "editingsection": "ⴰⵙⵏⴼⵍ ⵏ $1 (ⵜⵉⴳⵣⵎⵉ)", - "yourtext": "nss nek", - "storedversion": "noskha ityawsjaln", + "yourtext": "ⴰⴹⵔⵉⵙ ⵏⵏⴽ/ⵎ", + "storedversion": "ⵜⵓⵏⵖⵉⵍⵜ ⵉⵜⵜⵢⵓⵃⴹⴰⵏ", "yourdiff": "ⵉⵎⵣⴰⵔⴰⵢⵏ", "copyrightwarning": "ikhssak atst izd kolchi tikkin noun ɣ {{SITENAME}} llan ɣdo $2 (zr $1 iɣ trit ztsnt uggar).\niɣ ortrit ayg ɣayli torit ḥor artisbadal wnna ka-iran, attid ortgt ɣid.
\nikhssak ola kiyi ador tnqilt ɣtamani yadni.\n'''ador tgat ɣid ɣayli origan ḥor iɣzark orilli lidn nbab-ns!'''", "templatesused": "{{PLURAL:$1|Tamuḍimt lli nsxdm|Timuḍimin}} ɣ tasna yad:", "templatesusedpreview": "{{PLURAL:$1|Tamuḍimt llis nskar |Timuḍam lli sa nskar }} ɣ iẓriyad amzwaru :", "template-protected": "(ⵉⵜⵜⵢⵓⴼⵔⴰⴳ)", "template-semiprotected": "Azin-ugdal", - "hiddencategories": "{{PLURAL:$1|Taggayt iḥban|Taggayin ḥbanin}} lli ɣtlla tasba yad :", + "hiddencategories": "ⵜⵍⵍⴰ ⵜⴰⵙⵏⴰ ⴰⴷ ⵖ {{PLURAL:$1|1 ⵜⴰⴳⴳⴰⵢⵜ ⵉⵏⵜⵍⵏ|$1 ⵜⴰⴳⴳⴰⵢⵉⵏ ⵏⵜⵍⵏⵉⵏ}}:", "permissionserrors": "ⵜⴰⵣⴳⵍⵜ ⵖ ⵜⵓⵔⴰⴳⵜ", "permissionserrorstext-withaction": "Urak ittuyskar {{IGGUT:||e|(e)}} s $2, bac {{PLURAL:$1|s wacku yad|iwackutn ad}} :", - "recreate-moveddeleted-warn": "\"Balak z ɣin: tmmaɣt addaɣ tskrt tasna lli yad ittuykkasn.\"\nẒr zwar is ifulki ad tfrt imbddln ɣ tasna yad. Tanɣmast n mad ittuykkasn d mad ibddln ttla ɣid ɣ uzddar.", - "moveddeleted-notice": "Tasna yad ttuykkas. inɣmas n tuyykkas d issmmattayn nsn llan ɣ ɣ ufflla i tusna.", + "recreate-moveddeleted-warn": "ⵔⴰⵔ ⵜⴰⵖⴹⴼⵜ: ⵀⴰ ⵜ ⴰⵔ ⴷⴰⵖ ⵜⵙⵏⵓⵍⴼⵓⵜ ⵢⴰⵜ ⵜⴰⵙⵏⴰ ⵢⴰⴷ ⵉⵜⵜⵡⴰⴽⴽⵙⵏ.\n\nYou should consider whether it is appropriate to continue editing this page.\nⴰⵍⵓⴳ ⵏ ⵡⵓⴽⵓⵙ ⴷ ⵓⵙⵎⵓⵜⵜⵉ ⵏ ⵜⴰⵙⵏⴰ ⴰⴷ ⵜⵜⵢⴰⵡⴼⵙⵔⵏ ⴷⴷⴰⵡ ⴰⵙ for convenience:", + "moveddeleted-notice": "ⵜⴻⵜⵜⵡⴰⴽⴽⵙ ⵜⴰⵙⵏⴰ ⴰⴷ.\nⵜⵓⴽⴽⵙⴰ, ⴰⴼⵔⴰⴳ, ⴷ ⵓⵙⵎⵓⵜⵜⵉ ⵏ ⵜⴰⵙⵏⴰ ⵍⵍⴰⵏ ⴷⴷⴰⵡ‒ⴰⵙ for reference.", "log-fulllog": "Zṛ anɣmas izun (usmmid)", "edit-hook-aborted": "Imbddln ur ttuyskarnin.. Ur ittuyssan maɣ", "edit-gone-missing": "Ur iga as f was tasnayad\nḤaqqan is iḥiyd kra n yan", - "edit-conflict": "Maɣn ɣid imbddln", - "edit-no-change": "Ambdeln nk nxxln acku ur ibudl walu ɣ uṭṛiṣ.", - "edit-already-exists": "Tasnayad tlla yadlli. ur as tufit ast daɣ tskrt.", + "edit-conflict": "ⴰⵎⵎⵣⵔⴰⵢ ⵖ ⵓⵙⵏⴼⵍ.", + "edit-no-change": "ⵉⵜⵜⵢⵓⵏⵅⵅⵍ ⵓⵙⵏⴼⵍ ⵏⵏⴽ/ⵎ ⴰⵛⴽⵓ ⵡⴰⵍⵓ ⵎⴰⴷ ⵉⵏⴼⵍⵏ ⵖ ⵓⴹⵔⵉⵙ.", + "edit-already-exists": "ⵓⵔ ⵢⴰⵍⵍⴼⵓⵙ ⴰⴷ ⵜⵏⵓⵍⴼⵓ ⵜⴰⵙⵏⴰ ⴰⴷ ⵜⴰⵎⴰⵢⵏⵓⵜ.\nⵜⵍⵍⴰ ⵢⴰⴷ.", "post-expand-template-inclusion-warning": "Han: tasna yad illa gis tuggut n tmuḍimin. Kra gitsnt ur ran illint.", "post-expand-template-inclusion-category": "Tisniwin lli bahra ittafn tuggut n tmuḍimin", "post-expand-template-argument-warning": "Balak: Tasna ivɣ gis uggar n iɣwar n tmudimt lli ur tti ttajjan an gis tilli\nTigira n ujbbad ns, ar takka yat tayafut bahra imqqurn, ɣayan afan ur ttili.", @@ -408,37 +410,37 @@ "currentrev-asof": "Amseggar amǧuru n $1", "revisionasof": "Askttay yaḍn f $1", "revision-info": "Imsurritn n $1 s $2", - "previousrevision": "Iẓṛi daɣ aqbur", - "nextrevision": "Amẓr amaynu", + "previousrevision": "← ⵜⵓⵏⵖⵉⵍⵜ ⵉⵣⵡⴰⵔⵏ", + "nextrevision": "ⵜⵓⵏⵖⵉⵍⵜ ⵉⴹⴼⴰⵔⵏ →", "currentrevisionlink": "Amcggr amggaṛu", "cur": "ⵎⵔⵏ", "next": "ⵓⴹⴼⵉⵔ", - "last": "Amzwaru", - "page_first": "walli izwarn", - "page_last": "walli igran", - "histlegend": "Isisfiw amzyan : ({{MediaWiki:Cur}}) = urtga zund lqm (la version) n ɣila, ({{MediaWiki:Last}}) = urd tmcacka d lqm lli izrin, m = ambddl idrusn", - "history-fieldset-title": "Sigel ɣ umzruy", + "last": "ⵣⵡⵔ", + "page_first": "ⵜⴰⵎⵣⵡⴰⵔⵓⵜ", + "page_last": "ⵜⴰⵎⴳⴳⴰⵔⵓⵜ", + "histlegend": "Diff selection: ⵕⵛⵎ the radio boxes ⵏ ⵜⵓⵏⵖⵉⵍⵉⵏ ⵏⵏⴰ ⵜⵔⵉⵜ ⴰⴷ ⵜⵙⵎⵣⴰⵣⴰⵍⵜ, ⵜⴰⴷⴷⵜ ⵖⴼ enter ⵏⵖ ⵜⴰⴱⵓⵟⵓⵏⵜ ⵉⵍⵍⴰⵏ ⴷⴷⴰⵡ ⴰⵙ.
\nⵜⵉⵣⴳⵣⵉⵍⵉⵏ: ({{int:cur}}) = ⴰⵎⵣⴰⵔⴰⵢ ⵉⵍⵍⴰⵏ ⴷ ⵜⵓⵏⵖⵉⵍⵜ ⵉⴳⴳⵯⵔⴰⵏ, ({{int:last}}) = ⴰⵎⵣⴰⵔⴰⵢ ⵉⵍⵍⴰⵏ ⴷ ⵜⵓⵏⵖⵉⵍⵜ ⵉⵣⵡⴰⵔⵏ ⵜⴰⴷ, {{int:minoreditletter}} = ⴰⵙⵏⴼⵍ ⵓⵎⵥⵉⵢ.", + "history-fieldset-title": "ⵙⵉⴳⴳⵍ revisions", "history-show-deleted": "Tḥiyd hlli", - "histfirst": "Amzwaru", - "histlast": "Amggaru", - "historyempty": "(ⵢⵓⴳⴰ)", - "history-feed-item-nocomment": "$1 ⴳ $2", + "histfirst": "ⴰⵇⴷⵉⵎ ⴰⴽⴽⵯ", + "histlast": "ⴰⵎⴰⵢⵏⵓ ⴰⴽⴽⵯ", + "historyempty": "(ⵉⵅⵡⴰ)", + "history-feed-item-nocomment": "$1 ⵖ $2", "rev-delundel": "Mel/ĥbu", - "rev-showdeleted": "Mel", + "rev-showdeleted": "ⵎⵍ", "revdelete-show-file-submit": "ⵢⴰⵀ", "revdelete-radio-set": "ⵉⵏⵜⵍ", "revdelete-radio-unset": "uhu", "revdelete-suppress": "Ḥbu issfkatn ḥtta iy-indbal", "revdelete-unsuppress": "Kkiss iqqntn i imcggrn llid n surri.", - "revdelete-log": "Maɣ..acku:", + "revdelete-log": "ⵜⴰⵎⵏⵜⵉⵍⵜ:", "revdel-restore": "sbadl tannayt", "pagehist": "ⴰⵎⵣⵔⵓⵢ ⵏ ⵜⴰⵙⵏⴰ", "deletedhist": "ⴰⵎⵣⵔⵓⵢ ⵉⵜⵜⵡⴰⴽⴽⵙⵏ", "mergehistory": "Smun imzruyn n tisniwin.", "mergehistory-header": "Tasna yad ar ttjja ad tsmunt ticggarin n umzruy ɣ yat tasna taɣbalut s yat tasna tamaynut.", "mergehistory-box": "Smun ilqqmn ad n snat tisniwin :", - "mergehistory-from": "Nasna n uɣbalu.", - "mergehistory-into": "Tasna n uwttas:", + "mergehistory-from": "ⵜⴰⵙⵏⴰ ⵜⴰⵙⴰⵍⴰⵏⵜ:", + "mergehistory-into": "ⵜⴰⵙⵏⴰ ⵏ ⵓⵡⵜⵜⴰⵙ:", "mergehistory-list": "Amzruy n imbddln lli munin.", "mergehistory-merge": "ilqqmn ad n [[:$1]] ẓḍarn ad mun d [[:$2]]. Skr s Tannalt n tagffalt (tajrrayt) radyu bac ad tsmunt ilqqmn lli ittuyskarn ɣ umzwaru ar asakud lli ɣin illan. Han ad tamskart n isdayn n ummuddu rad daɣ alsn z sizwar tannalt ad.", "mergehistory-go": "Ẓṛ imbddln lli izḍarn ad mun.", @@ -447,20 +449,20 @@ "mergehistory-done": "$3 lqm{{PLURAL:$3||s}} n $1 {{PLURAL:$3|imunn|munnin}} ɣ [[:$2]].", "mergehistory-fail": "Ur as yuffi ad yili umun ɣ yan n imzruyn. Sti daɣ tasna d ḥtta iɣwwarn n usakud.", "mergehistory-no-source": "Tasna taɣbalut $1 ur tlli.", - "mergehistory-no-destination": "Tasna n uwttas $1 ur tlli.", + "mergehistory-no-destination": "ⵜⴰⵙⵏⴰ ⵏ ⵓⵡⵜⵜⴰⵙ $1 ⵓⵔ ⵜⵍⵍⵉ.", "mergehistory-invalid-source": "Tasna taɣbalut ila fllas ad tili yan uzwl lli igaddan.", "mergehistory-invalid-destination": "Tasna n uwttas illa fllas ad ṭṭaf yan uzwl igaddan.", "mergehistory-autocomment": "[[:$1]] tllan ɣ ugns n [[:$2]]", "mergehistory-comment": "Tllan [[:$1]] ɣ ugns n [[:$2]]: $3", "mergehistory-same-destination": "Tisniwin tiɣbula d tin ɣilli rant urgant yat.", - "mergehistory-reason": "Maɣ:", + "mergehistory-reason": "ⵜⴰⵎⵏⵜⵉⵍⵜ:", "mergelog": "Aɣmis n imsmun", "revertmerge": "Fukku", "mergelogpagetext": "Γid umuɣ n izdayn n umzruy n yat tasna ɣ yat yaḍn lli igan tamaynut", - "history-title": "Asakud n umcggr n « $1 »", - "difference-multipage": "Amzaray (laḥna) gr tisniwin", - "lineno": "Izriri $1:", - "compareselectedversions": "Snahya gr ilqmn lli tuystaynin", + "history-title": "ⴰⵎⵣⵔⵓⵢ ⵏ \"$1\"", + "difference-multipage": "(ⴰⵎⵣⴰⵔⴰⵢ ⴳⵔ ⵜⴰⵙⵏⵉⵡⵉⵏ)", + "lineno": "ⴰⵣⵔⵉⵔⴳ $1:", + "compareselectedversions": "ⵙⵎⵣⴰⵣⴰⵍ revisions ⵜⵜⵢⵓⵙⵜⴰⵢⵏⵉⵏ", "showhideselectedversions": "Ml/Ḥbu ilqmn lli ittuystayn", "editundo": "Urri", "diff-multi-manyusers": "({{PLURAL:$1|yan ulqm n gratsn|$1 ilqmn ngratsn}} zdar mnnaw {{PLURAL:$2|amcgr |n $2 imcgrn}} {{PLURAL:$1|iḥba|lli iḥban}})", @@ -469,14 +471,14 @@ "titlematches": "Assaɣ n tasna iga zund", "textmatches": "Aṭṛiṣ n tasna iga zund", "notextmatches": "Ur ittyufa kra nu uṭṛiṣ igan zund ɣwad", - "prevn": "Tamzwarut {{PLURAL:$1|$1}}", + "prevn": "{{PLURAL:$1|$1 ⵉⵣⵡⴰⵔⵏ|$1 ⵣⵡⴰⵔⵏⵉⵏ}}", "nextn": "Tallid yuckan {{PLURAL:$1|$1}}", - "prevn-title": "$1 {{PLURAL:$1|Askfa amzaru|Iskfatn imzwura}}", + "prevn-title": "$1 {{PLURAL:$1|ⵜⵢⴰⴼⵓⵜ ⵉⵣⵡⴰⵔⵏ|ⵜⵢⴰⴼⵓⵜⵉⵏ ⵣⵡⴰⵔⵏⵉⵏ}}", "nextn-title": "$1 {{PLURAL:$1|ⵜⵢⴰⴼⵓⵜ ⵜⵓⴹⴼⵉⵔⵜ|ⵜⵢⴰⴼⵓⵜⵉⵏ ⵜⵓⴹⴼⵉⵔⵉⵏ}}", "shown-title": "ⵎⵍ $1 {{PLURAL:$1|ⵜⵢⴰⴼⵓⵜ|ⵜⵢⴰⴼⵓⵜⵉⵏ}} ⵉ ⵜⴰⵙⵏⴰ", - "viewprevnext": "Mel ($1 {{int:pipe-separator}} $2) ($3)", - "searchmenu-exists": "\"'Tlla yat tasna lli ilan assaɣ « [[:$1]] » ɣ wiki yad", - "searchmenu-new": "ⵙⵏⵓⵍⴼⵓ ⵜⴰⵙⵏⴰ \"[[:$1]]\" ⴳ ⵓⵡⵉⴽⵉ ⴰⴷ! {{PLURAL:$2|0=|See also the page found with your search.|See also the search results found.}}", + "viewprevnext": "ⵥⵔ ($1 {{int:pipe-separator}} $2) ($3)", + "searchmenu-exists": "ⵜⵍⵍⴰ ⵢⴰⵜ ⵜⴰⵙⵏⴰ ⵉⵍⴰⵏ ⵉⵙⵎ ⵏ \"[[:$1]]\" ⵖ ⵓⵡⵉⴽⵉ ⴰⴷ. {{PLURAL:$2|0=|See also the other search results found.}}", + "searchmenu-new": "ⵙⵏⵓⵍⴼⵓ ⵜⴰⵙⵏⴰ \"[[:$1]]\" ⵖ ⵓⵡⵉⴽⵉ ⴰⴷ! {{PLURAL:$2|0=|See also the page found with your search.|See also the search results found.}}", "searchprofile-articles": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⵏ ⵜⵓⵎⴰⵢⵜ", "searchprofile-images": "ⴰⴳⵜⵎⵉⴷⵢⴰ", "searchprofile-everything": "ⴰⴽⴽⵯ", @@ -489,7 +491,7 @@ "search-result-category-size": "$1 {{PLURAL:$1|ⵓⴳⵎⴰⵎ|ⵉⴳⵎⴰⵎⵏ}} ($2 {{PLURAL:$2|ⵡⴰⴷⵓⵎⵙⵉⵍ|ⵉⴷⵓⵎⵙⵉⵍⵏ}}, $3 {{PLURAL:$3|ⵓⴼⴰⵢⵍⵓ|ⵉⴼⴰⵢⵍⵓⵜⵏ}})", "search-redirect": "(Asmmati $1)", "search-section": "(ⵜⵉⴳⵣⵎⵉ $1)", - "search-category": "(ⴰⵙⵎⵉⵍ $1)", + "search-category": "(ⵜⴰⴳⴳⴰⵢⵜ $1)", "search-suggest": "ⵉⵙ ⵜⵔⵉⵜ ⴰⴷ ⵜⵉⵏⵉⵜ: $1", "search-interwiki-caption": "Tiwuriwin taytmatin", "search-interwiki-default": "ⵜⵉⵢⴰⴼⵓⵜⵉⵏ ⵏ $1:", @@ -497,61 +499,61 @@ "search-relatedarticle": "Tzdi", "searchrelated": "Tuyzday", "searchall": "ⴰⴽⴽⵯ", - "showingresults": "Ẓr azddar {{PLURAL:$1|'''1''' May tuykfan|'''$1''' Mad kfan}} Bdu s #'''$2'''", + "showingresults": "Showing below up to {{PLURAL:$1|1 ⵜⵢⴰⴼⵓⵜ|$1 ⵜⵢⴰⴼⵓⵜⵉⵏ}} ⵣⵖ ⵡⵓⵟⵟⵓⵏ $2.", "search-nonefound": "Ur ittuykfa walu maygan zund ɣayli trit", - "powersearch-legend": "Amsigl imzwarn", - "powersearch-ns": "Icnubbucn ɣ tɣulin", - "powersearch-togglelabel": "Sti", + "powersearch-legend": "ⴰⵔⵣⵣⵓ ⵉⴳⴰⵏ advanced", + "powersearch-ns": "ⵙⵉⴳⴳⵍ ⵖ namespaces:", + "powersearch-togglelabel": "ⵙⵜⵉ:", "powersearch-toggleall": "ⴰⴽⴽⵯ", "powersearch-togglenone": "ⵓⵍⴰ ⵢⴰⵜ", - "search-external": "ⴰⵔⵣⵣⵓ ⴰⴱⵔⵔⴰⵏⵉ", - "searchdisabled": "{{SITENAME}} Acnubc ibid.\nTzdar at cabbat ɣilad ɣ Google.\nIzdar ad urtili ɣ isbidn n mayllan ɣ {{SITENAME}} .", + "search-external": "ⴰⵔⵣⵣⵓ ⴰⴱⵕⵕⴰⵏ", + "searchdisabled": "ⵉⵏⵙⴰ ⵓⵔⵣⵣⵓ ⵖ {{SITENAME}}.\nⵜⵥⴹⴰⵔⵜ ⴰⴷ ⵜⵙⵉⴳⴳⵍⵜ ⵖ ⴳⵓⴳⵍ ⵙ ⵉⵖ ⴷ ⵢⵓⵔⵔⵉ.\nIzdar ad urtili ɣ isbidn n mayllan ɣ {{SITENAME}} .", "preferences": "Timssusmin", - "mypreferences": "ⵉⵙⵏⵢⵉⴼⵏ", - "prefs-edits": "ⵓⵟⵟⵓⵏ ⵏ ⵉⵙⵏⴼⵍⵏ:", + "mypreferences": "ⵜⵉⵙⵖⴰⵍ", + "prefs-edits": "ⵓⵟⵟⵓⵏ ⵏ ⵉⵙⵏⴼⵉⵍⵏ:", "prefs-skin": "ⵜⵉⵎⵍⵙⵉⵜ", - "skin-preview": "Ammal", + "skin-preview": "ⴱⵔⵉⴱⵢⵓ", "datedefault": "Timssusmin", "prefs-personal": "milf n umsxdam", - "prefs-rc": "ⵉⵙⵏⴼⵍⵏ ⴳⴳⵯⵔⴰⵏⵉⵏ", + "prefs-rc": "ⵉⵙⵏⴼⵉⵍⵏ ⴳⴳⵯⵔⴰⵏⵉⵏ", "prefs-watchlist": "ⵜⴰⵍⴳⴰⵎⵜ ⵏ ⵓⴹⴼⴼⵓⵔ", "prefs-watchlist-days": "osfan liratzrt gh lista n umdfur", - "prefs-watchlist-days-max": "Maximum $1 {{PLURAL:$1|day|days}}", + "prefs-watchlist-days-max": "$1 {{PLURAL:$1|ⵡⴰⵙⵙ|ⵡⵓⵙⵙⴰⵏ}} ⵙ ⵉⴳⴳⵓⵜ", "prefs-watchlist-token": "tasarut n list n omdfor", "prefs-misc": "motafarriqat", - "prefs-resetpass": "bdl awal ihdan", - "prefs-email": "lkhiyarat n Email", + "prefs-resetpass": "ⵙⵏⴼⵍ ⵜⴰⴳⵓⵔⵉ ⵏ ⵓⵣⵔⴰⵢ", + "prefs-email": "ⵜⵉⵙⵖⴰⵍ ⵏ ⵢⵉⵎⴰⵢⵍ", "prefs-rendering": "adm", - "saveprefs": "sjjl", + "saveprefs": "ⵣⵎⵎⴻⵎ", "restoreprefs": "sglbd kollo regalega", "prefs-editing": "ⴰⵙⵏⴼⵍ", "searchresultshead": "ⵙⵉⴳⴳⵍ", "stub-threshold": "wasla n do amzdoy itforma (bytes):", "stub-threshold-sample-link": "ⴰⵎⴷⵢⴰ", - "stub-threshold-disabled": "moattal", + "stub-threshold-disabled": "ⵉⵏⵙⴰ", "recentchangesdays": "adad liyam lmroda gh ahdat tghyirat", - "recentchangesdays-max": "ⵎⴰⴽⵙⵉⵎⵓⵎ $1 {{PLURAL:$1|ⵡⴰⵙⵙ|ⵡⵓⵙⵙⴰⵏ}}", + "recentchangesdays-max": "$1 {{PLURAL:$1|ⵡⴰⵙⵙ|ⵡⵓⵙⵙⴰⵏ}} ⵙ ⵉⴳⴳⵓⵜ", "localtime": "↓Tizi n ugmaḍ ad:", - "servertime": "Asaru n Tizi", + "servertime": "ⴰⴽⵓⴷ ⵏ ⵓⵙⵉⵔⴱⵓⵔ:", "guesstimezone": "skchm twqit gh lmotasaffih", - "timezoneregion-africa": "Africa", - "timezoneregion-america": "America", - "timezoneregion-antarctica": "Antarctica", - "timezoneregion-arctic": "Arctic", - "timezoneregion-asia": "Asia", - "timezoneregion-atlantic": "Atlantic Ocean", - "timezoneregion-australia": "Australia", - "timezoneregion-europe": "Europa", + "timezoneregion-africa": "ⵜⴰⴼⵔⵉⴽⵜ", + "timezoneregion-america": "ⵜⴰⵎⵔⵉⴽⵜ", + "timezoneregion-antarctica": "ⴰⵏⵜⴰⵔⴽⵜⵉⴽ", + "timezoneregion-arctic": "ⴰⵔⴽⵜⵉⴽ", + "timezoneregion-asia": "ⴰⵙⵢⴰ", + "timezoneregion-atlantic": "ⴰⴳⴰⵔⴰⵡ ⴰⵏⴰⵟⵍⴰⵙ", + "timezoneregion-australia": "ⵓⵙⵜⵔⴰⵍⵢⴰ", + "timezoneregion-europe": "ⵓⵔⵓⴱⴱⴰ", "timezoneregion-indian": "ⴰⴳⴰⵔⴰⵡ ⴰⵀⵉⵏⴷⵉ", "timezoneregion-pacific": "Pacific Ocean", "allowemail": "artamz limail dar isxdamn yadni", "prefs-searchoptions": "ⴰⵔⵣⵣⵓ", "prefs-namespaces": "Ismawn n tɣula", - "default": "iftiradi", + "default": "ⵙ ⵓⵡⵏⵓⵍ", "prefs-files": "ⵉⴼⴰⵢⵍⵓⵜⵏ", "prefs-custom-css": "khss CSS", "prefs-custom-js": "khss JavaScipt", - "youremail": "Tabrat mail", + "youremail": "ⵉⵎⴰⵢⵍ:", "username": "{{GENDER:$1|ⵉⵙⵎ ⵏ ⵓⵙⵎⵔⴰⵙ|ⵉⵙⵎ ⵏ ⵜⵙⵎⵔⴰⵙⵜ}}:", "group-membership-link-with-expiry": "$1 (ⴰⵔ $2)", "prefs-registration": "ⵜⵉⵣⵉ ⵏ ⵓⵣⵎⵎⴻⵎ:", @@ -562,20 +564,20 @@ "gender-unknown": "ghayr mohdad", "gender-male": "ⴰⵔ ⵉⵙⵏⴼⴰⵍ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵏ ⵓⵡⵉⴽⵉ", "gender-female": "ⴰⵔ ⵜⵙⵏⴼⴰⵍ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵏ ⵓⵡⵉⴽⵉ", - "email": "email", + "email": "ⵉⵎⴰⵢⵍ", "prefs-help-email": "Tansa n tbratin ur tga bzzez, mac trwa ad taft taguri n uzray d ar ak tskar ast tsbadlt iɣ tti tuut.", "prefs-help-email-others": "Tẓḍart ad tstit ad tajt wiyyaḍ ad ak ttaran, snḥkmn dik ɣ, mlinak iwnnan nsn ɣ tasna lli sik iẓlin bla ssn assaɣ nk d mad tgit.", "prefs-signature": "ⴰⵙⴳⵎⴹ", "prefs-dateformat": "ⵜⴰⵍⵖⴰ ⵏ ⵓⵙⴰⴽⵓⴷ", "group": "ⵜⴰⵔⴰⴱⴱⵓⵜ:", "group-bot": "ⵉⵔⵓⴱⵓⵜⵏ", - "group-sysop": "Anedbalen n unagraw", + "group-sysop": "ⵉⵏⵎⵀⴰⵍⵏ", "grouppage-bot": "{{ns:project}}:ⵉⵔⵓⴱⵓⵜⵏ", - "grouppage-sysop": "{{ns:project}}: Inedbalen", + "grouppage-sysop": "{{ns:project}}:ⵉⵏⵎⵀⴰⵍⵏ", "right-read": "ⵖⵔ ⵜⴰⵙⵏⵉⵡⵉⵏ", "right-edit": "ⵙⵏⴼⵍ ⵜⴰⵙⵏⵉⵡⵉⵏ", - "right-move": "ⵙⵎⴰⵜⵜⵉ ⵜⴰⵙⵏⵉⵡⵉⵏ", - "right-move-categorypages": "ⵙⵎⴰⵜⵜⵉ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵏ ⵓⵙⵎⵉⵍ", + "right-move": "ⵙⵎⵓⵜⵜⵉ ⵜⴰⵙⵏⵉⵡⵉⵏ", + "right-move-categorypages": "ⵙⵎⵓⵜⵜⵉ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵏ ⵜⴰⴳⴳⴰⵢⵜ", "right-delete": "ⴽⴽⵙ ⵜⴰⵙⵏⵉⵡⵉⵏ", "newuserlogpage": "Aɣmis n willi mmurzmn imiḍan amsqdac", "rightslog": "Anɣmas n imbddlnn izrfan n umsqdac", @@ -584,15 +586,15 @@ "action-createpage": "ⵙⵏⵓⵍⴼⵓ ⵜⴰⵙⵏⴰ ⴰⴷ", "action-createtalk": "ⵙⵏⵓⵍⴼⵓ ⵜⴰⵙⵏⴰ ⴰⴷ ⵏ ⵓⵎⵙⴰⵡⴰⵍ", "action-createaccount": "snulf amiḍan ad n usqdac", - "action-move": "ⵙⵎⴰⵜⵜⵉ ⵜⴰⵙⵏⴰ ⴰⴷ", - "action-move-categorypages": "ⵙⵎⴰⵜⵜⵉ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵏ ⵓⵙⵎⵉⵍ", - "action-movefile": "ⵙⵎⴰⵜⵜⵉ ⴰⴼⴰⵢⵍⵓ ⴰⴷ", + "action-move": "ⵙⵎⵓⵜⵜⵉ ⵜⴰⵙⵏⴰ ⴰⴷ", + "action-move-categorypages": "ⵙⵎⵓⵜⵜⵉ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵏ ⵓⵙⵎⵉⵍ", + "action-movefile": "ⵙⵎⵓⵜⵜⵉ ⴰⴼⴰⵢⵍⵓ ⴰⴷ", "action-delete": "ⴽⴽⵙ ⵜⴰⵙⵏⴰ ⴰⴷ", - "nchanges": "$1 {{PLURAL:$1|ⵓⵙⵏⴼⵍ|ⵉⵙⵏⴼⵍⵏ}}", + "nchanges": "$1 {{PLURAL:$1|ⵓⵙⵏⴼⵍ|ⵉⵙⵏⴼⵉⵍⵏ}}", "enhancedrc-history": "ⴰⵎⵣⵔⵓⵢ", "recentchanges": "ⵉⵙⵏⴼⵉⵍⵏ ⴳⴳⵯⵔⴰⵏⵉⵏ", "recentchanges-legend": "ⵜⵉⵙⵖⴰⵍ ⵏ ⵉⵙⵏⴼⵉⵍⵏ ⴳⴳⵯⵔⴰⵏⵉⵏ", - "recentchanges-summary": "Ml imbddln imaynutn n wiki ɣ tasna yad", + "recentchanges-summary": "ⴹⴼⵓⵔ ⴰⵎⴰⵢⵏⵓ ⴰⴽⴽⵯ ⵖ ⵉⵙⵏⴼⵉⵍⵏ ⵏ ⵓⵡⵉⴽⵉ ⵖ ⵜⴰⵙⵏⴰ ⴰⴷ.", "recentchanges-feed-description": "ⴹⴼⵓⵔ ⵉⵙⵏⴼⵉⵍⵏ ⴰⴽⴽⵯ ⵉⴳⴳⵯⵔⴰⵏ ⵏ ⵓⵡⵉⴽⵉ ⵖ ⵉⴼⵉⵍⵉ ⴰⴷ.", "recentchanges-label-newpage": "ⵉⵙⵏⵓⵍⴼⴰ ⵓⵙⵏⴼⵍ ⴰⴷ ⵢⴰⵜ ⵜⴰⵙⵏⴰ ⵜⴰⵎⴰⵢⵏⵓⵜ", "recentchanges-label-minor": "ⵡⴰⴷ ⵉⴳⴰ ⴰⵙⵏⴼⵍ ⵓⵎⵥⵉⵢ", @@ -606,7 +608,7 @@ "rcfilters-days-show-days": "$1 {{PLURAL:$1|ⵡⴰⵙⵙ|ⵡⵓⵙⵙⴰⵏ}}", "rcfilters-savedqueries-new-name-label": "ⵉⵙⵎ", "rcfilters-filterlist-whatsthis": "ⵎⴰⵜⵜⴰ ⵓⵢⴰ?", - "rcfilters-filter-bots-label": "ⴱⵓⵜ", + "rcfilters-filter-bots-label": "ⴰⵔⵓⴱⵓ", "rcnotefrom": "ⴷⴷⴰⵡ ⴰⵙ {{PLURAL:$5|ⴰⵙⵏⴼⵍ|ⵉⵙⵏⴼⵉⵍⵏ}} ⵣⵖ $3, $4 (ⴰⵔ $1 ⴰⴷ ⵉⴱⴰⵢⵏⴻⵏ ⵙ ⵉⴳⴳⵓⵜ).", "rclistfrom": "ⵎⵍ ⵉⵙⵏⴼⵉⵍⵏ ⵉⵎⴰⵢⵏⵓⵜⵏ ⵣⵖ $3 ⵖ $2", "rcshowhideminor": "$1 ⵉⵙⵏⴼⵉⵍⵏ ⵓⵎⵥⵉⵢⵏ", @@ -641,7 +643,7 @@ "rc-change-size-new": "$1 {{PLURAL:$1|ⴱⴰⵢⵜ|ⵉⴷ ⴱⴰⵢⵜ}} ⴷⴼⴼⵉⵔ ⵏ ⵓⵙⵏⴼⵍ", "newsectionsummary": "/* $1 */ ⵜⵉⴳⵣⵎⵉ ⵜⴰⵎⴰⵢⵏⵓⵜ", "rc-enhanced-expand": "Ml ifruriyn (ira JavaScript)", - "rc-enhanced-hide": "Ĥbu ifruriyn", + "rc-enhanced-hide": "ⵙⵙⵏⵜⵍ ⵉⴼⵔⵓⵔⵉⵜⵏ", "recentchangeslinked": "ⵉⵙⵏⴼⵉⵍⵏ ⴷⴰⵔ ⴰⵙⵙⴰⵖ", "recentchangeslinked-feed": "Imbddeln zund ɣwid", "recentchangeslinked-toolbox": "Imbddeln zund ɣwid", @@ -667,7 +669,7 @@ "sourcefilename": "Aɣbalu n ussaɣ n usdaw", "upload-form-label-infoform-name": "ⵉⵙⵎ", "upload-form-label-usage-filename": "ⵉⵙⵎ ⵏ ⵓⴼⴰⵢⵍⵓ", - "upload-form-label-infoform-categories": "ⵉⵙⵎⵉⵍⵏ", + "upload-form-label-infoform-categories": "ⵜⴰⴳⴳⴰⵢⵉⵏ", "upload-form-label-infoform-date": "ⴰⵙⴰⴽⵓⴷ", "license": "ⵜⵓⵔⴰⴳⵜ:", "license-header": "ⵜⵓⵔⴰⴳⵜ", @@ -683,14 +685,14 @@ "filehist": "ⴰⵎⵣⵔⵓⵢ ⵏ ⵓⴼⴰⵢⵍⵓ", "filehist-help": "ⴽⵍⵉⴽⵉ ⴼ ⴽⵔⴰ ⵏ ⵓⵙⴰⴽⵓⴷ/ⴰⴽⵓⴷ ⴰⴷ ⵜⵥⵔⵜ ⴰⴼⴰⵢⵍⵓ ⵎⴽⵍⵍⵉ ⵜⵜ ⵉⵏⵏ ⵉⴽⴽⴰ ⵖ ⵜⵉⵣⵉ ⴰⵏⵏ.", "filehist-deleteone": "ⴽⴽⵙ", - "filehist-revert": "Sgadda daɣ", + "filehist-revert": "ⵙⵙⴰⴹⵓ", "filehist-current": "ⴰⵎⵉⵔⴰⵏ", "filehist-datetime": "ⴰⵙⴰⴽⵓⴷ/ⴰⴽⵓⴷ", "filehist-thumb": "Awlaf imżżin", "filehist-thumbtext": "Mżżi n lqim ɣ tizi $1", "filehist-user": "ⴰⵙⵎⵔⴰⵙ", "filehist-dimensions": "ⵉⵎⵏⴰⴷⵏ", - "filehist-comment": "ⴰⵅⴼⴰⵡⴰⵍ", + "filehist-comment": "ⴰⵖⴼⴰⵡⴰⵍ", "imagelinks": "ⴰⵙⵇⴷⵛ ⵏ ⵓⴼⴰⵢⵍⵓ", "linkstoimage": "Tasna yad {{PLURAL:$1|izdayn n tasna|$1 azday n tasniwin}} s usdaw:", "nolinkstoimage": "ⵓⵔ ⵜⵍⵍⵉ ⴽⵔⴰ ⵏ ⵜⴰⵙⵏⴰ ⵉⵏⴰⵡⵍⵏ ⴰⴼⴰⵢⵍⵓ ⴰⴷ.", @@ -702,43 +704,45 @@ "filedelete-submit": "ⴽⴽⵙ", "randompage": "ⵜⴰⵙⵏⴰ ⵜⴰⴷⵀⵎⴰⵙⵜ", "randomincategory-category": "ⴰⵙⵎⵉⵍ:", - "statistics": "Tisnaddanin", + "statistics": "ⵜⵉⵙⵉⴹⴰⵏ", + "statistics-header-edits": "ⵜⵉⵙⵉⴹⴰⵏ ⵏ ⵉⵙⵏⴼⵉⵍⵏ", + "statistics-header-hooks": "ⵜⵉⵙⵉⴹⴰⵏ ⵢⴰⴹⵏ", "statistics-articles": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⵏ ⵜⵓⵎⴰⵢⵜ", "statistics-pages": "ⵜⴰⵙⵏⵉⵡⵉⵏ", "brokenredirects-edit": "ⵙⵏⴼⵍ", "brokenredirects-delete": "ⴽⴽⵙ", "nbytes": "$1 {{PLURAL:$1|ⴱⴰⵢⵜ|ⵉⴷ ⴱⴰⵢⵜ}}", - "ncategories": "$1 {{PLURAL:$1|ⵓⵙⵎⵉⵍ|ⵉⵙⵎⵉⵍⵏ}}", - "nlinks": "$1 {{PLURAL:$1|azday|izdayn}}", + "ncategories": "$1 {{PLURAL:$1|ⵜⴰⴳⴳⴰⵢⵜ|ⵜⴰⴳⴳⴰⵢⵉⵏ}}", + "nlinks": "$1 {{PLURAL:$1|ⵓⵍⵉⵏⴽ|ⵉⵍⵉⵏⴽⵏ}}", "nmembers": "$1 {{PLURAL:$1|ⵓⴳⵎⴰⵎ|ⵉⴳⵎⴰⵎⵏ}}", "nrevisions": "$1 {{PLURAL:$1|asgadda|isgaddatn}}", "specialpage-empty": "Ur illa mayttukfan i asaggu yad", - "lonelypages": "Tasnatiwin tigigilin", + "lonelypages": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⵜⵉⴳⵉⴳⵉⵍⵉⵏ", "lonelypagestext": "Tisnawinad ur ur tuyzdaynt z ulla lant ɣ tisniwin yaḍnin ɣ {{SITENAME}}.", - "uncategorizedpages": "Tisnawinad ur llant ɣ graygan taggayt", - "uncategorizedcategories": "Taggayin ur ittuyzlayn ɣ kraygan taggayt", - "prefixindex": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⴰⴽⴽⵯ ⵉⵍⴰⵏ ⵓⵣⵡⵉⵔ", + "uncategorizedpages": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⵓⵔ ⴰⵎⵓⵏⵉⵏ ⵖ ⵜⴰⴳⴳⴰⵢⵉⵏ", + "uncategorizedcategories": "ⵜⴰⴳⴳⴰⵢⵉⵏ ⵓⵔ ⴰⵎⵓⵏⵉⵏ ⵖ ⵜⴰⴳⴳⴰⵢⵉⵏ", + "prefixindex": "ⴽⵓⵍⵍⵓ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵍⴰⵏⵉⵏ ⴰⵣⵡⵉⵔ", "protectedpages-page": "ⵜⴰⵙⵏⴰ", "listusers": "ⵜⴰⵍⴳⴰⵎⵜ ⵏ ⵉⵙⵎⵔⴰⵙⵏ", - "usercreated": "{{GENDER:$3|ⵉⵙⵏⵓⵍⴼⴰ|ⵜⵙⵏⵓⵍⴼⴰ}} ⴳ $1 ⴳ $2", + "usercreated": "{{GENDER:$3|ⵉⵏⵓⵍⴼⴰ|ⵜⵏⵓⵍⴼⴰ}} ⵖ $1 ⵖ $2", "newpages": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⵜⵉⵎⴰⵢⵏⵓⵜⵉⵏ", "move": "ⵙⵎⵓⵜⵜⵉ", - "movethispage": "ⵙⵎⴰⵜⵜⵉ ⵜⴰⵙⵏⴰ ⴰⴷ", + "movethispage": "ⵙⵎⵓⵜⵜⵉ ⵜⴰⵙⵏⴰ ⴰⴷ", "unusedcategoriestext": "Taggayin ad llant waxxa gis nt ur tlli kra n tasna wala kra n taggayin yaḍnin", - "notargettitle": "F walu", + "notargettitle": "ⵡⴰⵍⵓ ⴰⵡⵜⵜⴰⵙ", "nopagetext": "Tasna li trit ur tlli", "pager-newer-n": "{{PLURAL:$1|amaynu 1|amaynu $1}}", "pager-older-n": "{{PLURAL:$1|aqbur 1|aqbur $1}}", "suppress": "Iẓriyattuyn", "apisandbox-examples": "ⵉⵎⴷⵢⴰⵜⵏ", - "booksources": "Iɣbula n udlis", + "booksources": "ⵉⴷⵍⵉⵙⵏ ⵉⵙⵓⴳⴰⵎ", "booksources-search-legend": "Acnubc s iɣbula n idlisn", "booksources-isbn": "ISBN:", "booksources-search": "ⵙⵉⴳⴳⵍ", "specialloguserlabel": "ⴰⵎⴳⴰⵢ:", "speciallogtitlelabel": "Azwl", - "log": "Immussutn ittyuran", - "all-logs-page": "Immussutn ittyuran immurzmn i kullu..", + "log": "Logs", + "all-logs-page": "All public logs", "log-title-wildcard": "Cabba s iswln li ttizwirnin s uṭṛiṣ ad", "allpages": "ⴽⵓⵍⵍⵓ ⵜⴰⵙⵏⵉⵡⵉⵏ", "nextpage": "ⵜⴰⵙⵏⴰ ⵜⵓⴹⴼⵉⵔⵜ ($1)", @@ -749,8 +753,8 @@ "allinnamespace": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⴰⴽⴽⵯ ($1 namespace)", "allpagessubmit": "Ftu", "allpagesprefix": "Mel tasniwin li ttizwirnin s", - "categories": "ⵉⵙⵎⵉⵍⵏ", - "linksearch": "Izdayn n brra", + "categories": "ⵜⴰⴳⴳⴰⵢⵉⵏ", + "linksearch": "ⴰⵔⵣⵣⵓ ⵖ ⵉⵍⵉⵏⴽⵏ ⵉⴱⵕⵕⴰⵏⴻⵏ", "linksearch-ok": "ⵙⵉⴳⴳⵍ", "linksearch-line": "$1 tmmuttid z $2", "listgrouprights-group": "ⵜⴰⵔⴰⴱⴱⵓⵜ", @@ -770,7 +774,7 @@ "watchlist-details": "{{PLURAL:$1|$1 ⵜⴰⵙⵏⴰ|$1 ⵜⴰⵙⵏⵉⵡⵉⵏ}} ⴳ ⵜⵍⴳⴰⵎⵜ {{GENDER:|ⵏⵏⴽ|ⵏⵏⵎ}} ⵏ ⵓⴹⴼⴼⵓⵔ, not separately counting talk pages.", "wlshowlast": "ⵎⵍ $1 ⵜⵙⵔⴰⴳⵉⵏ ⴳⴳⵯⵔⴰⵏⵉⵏ, $2 ⵡⵓⵙⵙⴰⵏ ⴳⴳⵯⵔⴰⵏⵉⵏ", "watchlist-hide": "ⵙⵙⵏⵜⵍ", - "wlshowhidebots": "ⵉⴷ ⴱⵓⵜ", + "wlshowhidebots": "ⵉⵔⵓⴱⵓⵜⵏ", "watchlist-options": "ⵜⵉⵙⵖⴰⵍ ⵏ ⵜⵍⴳⴰⵎⵜ ⵏ ⵓⴹⴼⴼⵓⵔ", "watching": "ⵉⴹⴼⴰⵔ...", "unwatching": "Ur at sul ntsagga", @@ -781,16 +785,16 @@ "actioncomplete": "tigawt tummidt", "actionfailed": "Tawwuri i xsrn", "deletedtext": "\"$1\" ttuykkas.\nẒṛ $2 inɣmas imggura n ma ittuykkasn", - "dellogpage": "Qqiyd akkas ad", - "deletecomment": "! Maɣ:", - "deleteotherreason": "Wayyaḍ/ maf ittuykkas yaḍn", - "deletereasonotherlist": "Maf ittuykkas yaḍn", + "dellogpage": "ⴰⵍⵓⴳ ⵏ ⵡⵓⴽⵓⵙ", + "deletecomment": "ⵜⴰⵎⵏⵜⵉⵍⵜ:", + "deleteotherreason": "ⵜⴰⵎⵏⵜⵉⵍⵜ ⵢⴰⴹⵏ/:", + "deletereasonotherlist": "ⵜⴰⵎⵏⵜⵉⵍⵜ ⵢⴰⴹⵏ", "rollbacklink": "Rard", "changecontentmodel-submit": "ⵙⵏⴼⵍ", "protectlogpage": "Iɣmisn n ugdal", "protectedarticle": "ay gdl \"[[$1]]\"", "modifiedarticleprotection": "isbudl taskfalt n ugdal n « [[$1]] »", - "protectcomment": "Maɣ:", + "protectcomment": "ⵜⴰⵎⵏⵜⵉⵍⵜ:", "protectexpiry": "Tizi nu uzri n umzruy:", "protect_expiry_invalid": "Tizi n uzri n umzruy urtti tga.", "protect_expiry_old": "Tizi n uzri n umzruy n zrit.", @@ -815,15 +819,15 @@ "undelete-show-file-submit": "ⵢⴰⵀ", "namespace": "Taɣult", "invert": "amglb n ustay", - "blanknamespace": "(Amuqran)", + "blanknamespace": "(ⴰⴷⵙⵍⴰⵏ)", "contributions": "ⵜⵓⵎⵓⵜⵉⵏ ⵏ {{GENDER:$1|ⵓⵙⵎⵔⴰⵙ|ⵜⵙⵎⵔⴰⵙⵜ}}", "contributions-title": "ⵜⵓⵎⵓⵜⵉⵏ ⵏ {{GENDER:$1|ⵓⵙⵎⵔⴰⵙ|ⵜⵙⵎⵔⴰⵙⵜ}} $1", "mycontris": "ⵜⵓⵎⵓⵜⵉⵏ", "anoncontribs": "ⵜⵓⵎⵓⵜⵉⵏ", "contribsub2": "ⵉ {{GENDER:$3|$1}} ($2)", "uctop": "(ⵜⴰⵎⵉⵔⴰⵏⵜ)", - "month": "Z usggas (d urbur):", - "year": "Z usggas (d urbur):", + "month": "ⵣⵖ ⵡⴰⵢⵢⵓⵔ (ⴷ ⵣⵉⴽⴽ ⵏⵏⵙ):", + "year": "ⵣⵖ ⵓⵙⴳⴳⵯⴰⵙ (ⴷ ⵣⵉⴽⴽ ⵏⵏⵙ):", "sp-contributions-newbies": "ⵎⵍ ⵖⴰⵔ ⵜⵓⵎⵓⵜⵉⵏ ⵏ ⵉⵎⵉⴹⴰⵏⴻⵏ ⵉⵎⴰⵢⵏⵓⵜⵏ", "sp-contributions-newbies-sub": "Z imiḍan (comptes) imaynutn", "sp-contributions-newbies-title": "Tiwuriwin n umqdac z imḍan imaynutn", @@ -841,23 +845,23 @@ "sp-contributions-newonly": "ⵎⵍ ⵖⴰⵔ ⵉⵙⵏⴼⵉⵍⵏ ⴳⴰⵏⵉⵏ ⵉⵙⵏⵓⵍⴼⵓⵜⵏ ⵏ ⵜⴰⵙⵏⵉⵡⵉⵏ", "sp-contributions-submit": "ⵙⵉⴳⴳⵍ", "sp-contributions-explain": "↓", - "whatlinkshere": "ⵎⴰⴷ ⵉⵇⵇⵏⴻⵏ ⵙ ⵖⵉⴷ", + "whatlinkshere": "ⵎⴰⴷ ⵉⵜⵜⴰⵡⵉⵏ ⵙ ⵖⵉⴷ", "whatlinkshere-title": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⵜⵜⴰⵡⵉⵏⵉⵏ ⵙ \"$1\"", "whatlinkshere-page": "ⵜⴰⵙⵏⴰ:", - "linkshere": "Tasnawinad ar slkamnt i '''[[:$1]]''':", + "linkshere": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⴰⴷ ⴹⴼⴰⵔⵏⵉⵏ ⴰⵔ ⵜⵜⴰⵡⵉⵏⵜ ⵙ [[:$1]]:", "nolinkshere": "ⵓⵍⴰ ⴽⵔⴰ ⵏ ⵜⴰⵙⵏⴰ ⵓⵔ ⴰⵔ ⵜⴻⵜⵜⴰⵡⵉ ⵙ [[:$1]].", "nolinkshere-ns": "Ur tlla kra n tasna izdin d '''[[:$1]]''' ɣ tɣult l-ittuystayn.", "isredirect": "Tasna immutin", "istemplate": "Illa gis", "isimage": "ⴰⵍⵉⵏⴽ ⵏ ⵓⴼⴰⵢⵍⵓ", - "whatlinkshere-prev": "{{PLURAL:$1|amzwaru|amzwaru $1}}", - "whatlinkshere-next": "{{PLURAL:$1|wali d yuckan|wali d yuckan $1}}", + "whatlinkshere-prev": "{{PLURAL:$1|$1 ⵉⵣⵡⴰⵔⵏ|$1 ⵣⵡⴰⵔⵏⵉⵏ}}", + "whatlinkshere-next": "{{PLURAL:$1|ⵉⴹⴼⴰⵔⵏ|$1 ⴹⴼⴰⵔⵏⵉⵏ}}", "whatlinkshere-links": "← ⵉⵍⵉⵏⴽⵏ", "whatlinkshere-hideredirs": "$1 Ismmattayn", "whatlinkshere-hidetrans": "$1 mayllan gis", "whatlinkshere-hidelinks": "$1 ⵉⵍⵉⵏⴽⵏ", - "whatlinkshere-hideimages": "$1 izdayn awlaf", - "whatlinkshere-filters": "Istayn", + "whatlinkshere-hideimages": "$1 ⵉⵍⵉⵏⴽⵏ ⵏ ⵓⴼⴰⵢⵍⵓ", + "whatlinkshere-filters": "ⵜⵉⵙⵜⵜⴰⵢⵉⵏ", "blockip": "ⴳⴷⵍ {{GENDER:$1|ⴰⵙⵎⵔⴰⵙ|ⵜⴰⵙⵎⵔⴰⵙⵜ}}", "ipboptions": "2 ikudn:2 hours,1 as:1 day,3 ussan:3 days,1 imalas:1 week,2 imalasn:2 weeks,1 ayur:1 month,3 irn:3 months,6 irn:6 months,1 asggas:1 year,tusut ur iswuttan:infinite", "ipbhidename": "ḥbu assaɣ n umsqdac ɣ imbdln d umuɣn", @@ -866,31 +870,31 @@ "ipblocklist": "ⵉⵙⵎⵔⴰⵙⵏ ⵜⵜⵡⴰⴳⴷⵍⵏⵉⵏ", "ipblocklist-submit": "ⵙⵉⴳⴳⵍ", "blocklink": "ⴳⴷⵍ", - "unblocklink": "kkis agdal", - "change-blocklink": "Sbadl agdal", + "unblocklink": "ⴽⴽⵙ ⴰⴳⴷⴷⵓⵍ", + "change-blocklink": "ⵙⵏⴼⵍ ⴰⴳⴷⴷⵓⵍ", "contribslink": "ⵜⵓⵎⵓⵜⵉⵏ", "blocklogpage": "aɣmmis n may ittuyqqanin", "blocklog-showlog": "Amsqdac ikkattin ittuyqqan. anɣmis n willi ttuyqqanin ɣid:", "blocklog-showsuppresslog": "Amsqdac ikkattin ittuyqqan d iḥba. Anɣmis n willi ttuyqqanin ɣid:", "blocklogentry": "tqn [[$1]] s tizi izrin n $2 $3", - "unblocklogentry": "immurzm $1", + "unblocklogentry": "ⵉⴽⴽⵙ ⴰⴳⴷⴷⵓⵍ ⵉ $1", "block-log-flags-nocreate": "Ammurzm n umiḍan urak ittuyskar", - "move-page": "ⵙⵎⴰⵜⵜⵉ $1", - "move-page-legend": "ⵙⵎⴰⵜⵜⵉ ⵜⴰⵙⵏⴰ", + "move-page": "ⵙⵎⵓⵜⵜⵉ $1", + "move-page-legend": "ⵙⵎⵓⵜⵜⵉ ⵜⴰⵙⵏⴰ", "movepagetext": "Swwur s tifrkkitad bac ad sbadlt uzwl tasna yad , s usmmattay n umzru ns s uzwl amaynu . Assaɣ Aqbur rad ig ɣil yan usmmattay n tasna s uzwl (titre) amynu . Tâḍart ad s tgt immattayn n ɣil f was fwas utumatik s dar uswl amaynu. Iɣ tstit bac ad tskrt . han ad ur ttut ad tẓrt kullu [[Special:DoubleRedirects|double redirection]] ou [[Special:BrokenRedirects|redirection cassée]]. Illa fllak ad ur ttut masd izdayn rad tmattayn s sin igmmaḍn ur igan yan.\n\nSmmem masd tasna ur rad tmmatti iɣ tlla kra n yat yaḍn lli ilan asw zund nttat . Abla ɣ dars amzruy ɣ ur illa umay, nɣd yan usmmattay ifssusn. \n\n''' Han !'''\nMaya Iẓḍar ad iglb zzu uzddar ar aflla tasna yad lli bdda n nttagga. Illa fllak ad urtskr mara yigriẓ midn d kiyyin lli iswurn ɣ tasna yad. issin mara tskr urta titskrt..", "movepagetalktext": "Tasna n umsgdal (imdiwiln) lli izdin d ɣta iɣ tlla, rad as ibadl w-assaɣ utumatik '''abla iɣ :'''\n* tsmmuttim tasna s yan ugmmaḍ wassaɣ, niɣd\n* tasna n umsgdal( imdiwiln) tlla s wassaɣ ad amaynu, niɣd\n* iɣ tkrjm tasatmt ad n uzddar\n\nΓ Tiklayad illa flla tun ad tsbadlm assaɣ niɣt tsmun mayad s ufus ɣ yat, iɣ tram", - "newtitle": "dar w-assaɣ amaynu:", + "newtitle": "ⴰⵣⵡⵍ ⴰⵎⴰⵢⵏⵓ:", "move-watch": "Tfr tisniwin timaynutin d timẓlay", - "movepagebtn": "Smmatti tasna niɣ as tsbudlt assaɣ", - "pagemovedsub": "tmmutti bla tamukrist", - "movepage-moved": "'''\"$1\" tmmutti s \"$2\"'''", + "movepagebtn": "ⵙⵎⵓⵜⵜⵉ ⵜⴰⵙⵏⴰ", + "pagemovedsub": "ⵉⵎⵓⵔⵙ ⵓⵙⵎⵓⵜⵜⵉ", + "movepage-moved": "ⵜⴻⵜⵜⵢⵓⵙⵎⴰⵜⵜⵉ \"$1\" ⵙ \"$2\"", "articleexists": "Tlla yad tasna illan assaɣ zund ɣwa niɣd assaɣ llid tiwid urt iga. Sti assaɣ yaḍn tarmt.", "movetalk": "Sbadl assaɣ tasna n imdiwiln lli izdin d ɣi.", - "movelogpage": "Iɣmisn n ismmattrayn", + "movelogpage": "ⵍⵓⴳ ⵏ ⵓⵙⵎⵓⵜⵜⵉ", "movelogpagetext": "Γid umuɣ n tisniwin lli sbadlnin assaɣ d tilli mmuttini.", "movesubpage": "Ddu-tasna {{PLURAL:$1||s}}", - "movereason": "Maɣ:", - "revertmove": "Rard", + "movereason": "ⵜⴰⵎⵏⵜⵉⵍⵜ:", + "revertmove": "ⵙⵙⴰⴹⵓ ⴷ", "delete_and_move_confirm": "ⵢⴰⵀ, ⴽⴽⵙ ⵜⴰⵙⵏⴰ", "export": "assufɣ n tasniwin", "export-addcat": "ⵔⵏⵓ", @@ -902,16 +906,16 @@ "allmessages-filter-translate": "ⵙⵙⵓⵖⵍ", "thumbnail-more": "Simɣur", "thumbnail_error": "Irrur n uskr n umssutl: $1", - "import-comment": "ⴰⵅⴼⴰⵡⴰⵍ:", + "import-comment": "ⴰⵖⴼⴰⵡⴰⵍ:", "tooltip-pt-userpage": "Tasna n umsqdac", "tooltip-pt-mytalk": "ⵜⴰⵙⵏⴰ {{GENDER:|ⵏⵏⴽ|ⵏⵏⵎ}} ⵏ ⵓⵎⵙⴰⵡⴰⵍ", "tooltip-pt-anontalk": "Amsgdal f imbddeln n tansa n IP yad", - "tooltip-pt-preferences": "ⵉⵙⵏⵢⵉⴼⵏ {{GENDER:|ⵏⵏⴽ|ⵏⵏⵎ}}", + "tooltip-pt-preferences": "ⵜⵉⵙⵖⴰⵍ {{GENDER:|ⵏⵏⴽ|ⵏⵏⵎ}}", "tooltip-pt-watchlist": "Tifilit n tisnatin li itsaggan imdddeln li gisnt ittyskarn..", "tooltip-pt-mycontris": "ⵜⴰⵍⴳⴰⵎⵜ ⵏ ⵜⵓⵎⵓⵜⵉⵏ {{GENDER:|ⵏⵏⴽ|ⵏⵏⵎ}}", "tooltip-pt-login": "Yufak at qiyt akcum nek, mach ur fllak ibziz .", "tooltip-pt-logout": "ⴼⴼⵖ", - "tooltip-ca-talk": "ⴰⵎⵙⴰⵡⴰⵍ ⵅⴼ ⵜⴰⵙⵏⴰ ⵏ ⵜⵓⵎⴰⵢⵜ", + "tooltip-ca-talk": "ⴰⵎⵙⴰⵡⴰⵍ ⴼ ⵜⴰⵙⵏⴰ ⵏ ⵜⵓⵎⴰⵢⵜ", "tooltip-ca-edit": "ⵙⵏⴼⵍ ⵜⴰⵙⵏⴰ ⴰⴷ", "tooltip-ca-addsection": "ⵙⵙⵏⵜⵉ ⴽⵔⴰ ⵏ ⵜⴳⵣⵎⵉ ⵜⴰⵎⴰⵢⵏⵓⵜ", "tooltip-ca-viewsource": "Tasnatad tuyḥba. mac dẓdart at tẓrt aɣbalu nes.", @@ -934,15 +938,15 @@ "tooltip-n-recentchanges": "ⵜⴰⵍⴳⴰⵎⵜ ⵏ ⵉⵙⵏⴼⵉⵍⵏ ⴳⴳⵯⵔⴰⵏⵉⵏ ⵖ ⵓⵡⵉⴽⵉ", "tooltip-n-randompage": "ⵣⴷⵎ ⴷ ⴽⵔⴰ ⵏ ⵜⴰⵙⵏⴰ ⵙ ⵓⴷⵀⵎⴰⵙ", "tooltip-n-help": "Adɣar n w-aws", - "tooltip-t-whatlinkshere": "Umuɣ n kullu tisnatin n Wiki lid ilkkmn ɣid", + "tooltip-t-whatlinkshere": "ⵜⴰⵍⴳⴰⵎⵜ ⵏ ⴽⵓⵍⵍⵓ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵉⵜⵜⴰⵡⵉⵏ ⵙ ⵖⵉⴷ", "tooltip-t-recentchangeslinked": "ⵉⵙⵏⴼⵉⵍⵏ ⴳⴳⵯⵔⴰⵏⵉⵏ ⵖ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵏⵏⴰ ⵙⵔⵙⵏ ⵜⴻⵜⵜⴰⵡⵉ ⵜⴰⵙⵏⴰ ⴰⴷ", "tooltip-feed-rss": "Usuddm (Flux) n tasna yad", - "tooltip-feed-atom": "Usuddm Atum n tasna yad", + "tooltip-feed-atom": "ⵉⴼⵉⵍⵉ ⴰⵟⵓⵎ ⵏ ⵜⴰⵙⵏⴰ ⴰⴷ", "tooltip-t-contributions": "ⵜⴰⵍⴳⴰⵎⵜ ⵏ ⵜⵓⵎⵓⵜⵉⵏ ⵏ {{GENDER:$1|ⵓⵙⵎⵔⴰⵙ|ⵜⵙⵎⵔⴰⵙⵜ}} ⴰⴷ", "tooltip-t-emailuser": "Ṣafd tabrat umsqdac ad", "tooltip-t-upload": "ⵙⴽⵜⵔ ⵉⴼⴰⵢⵍⵓⵜⵏ", "tooltip-t-specialpages": "ⵜⴰⵍⴳⴰⵎⵜ ⵏ ⴽⵓⵍⵍⵓ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵥⵍⵉⵏⵉⵏ", - "tooltip-t-print": "Lqim uziggz n tasna yad", + "tooltip-t-print": "Printable version of this page", "tooltip-t-permalink": "Azday bdda i lqim n tasna yad", "tooltip-ca-nstab-main": "ⵥⵔ ⵜⴰⵙⵏⴰ ⵏ ⵜⵓⵎⴰⵢⵜ", "tooltip-ca-nstab-user": "Ẓr tasna n useqdac", @@ -977,12 +981,12 @@ "pageinfo-contentpage-yes": "ⵢⴰⵀ", "pageinfo-protect-cascading-yes": "ⵢⴰⵀ", "confirm-markpatrolled-button": "ⵡⴰⵅⵅⴰ", - "previousdiff": "Imbddln imzwura", - "nextdiff": "Ambdl d ittfrn →", + "previousdiff": "← ⴰⵙⵏⴼⵍ ⵉⵣⵡⴰⵔⵏ", + "nextdiff": "ⴰⵙⵏⴼⵍ ⵉⴹⴼⴰⵔⵏ →", "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|ⵜⴰⵙⵏⴰ|ⵜⴰⵙⵏⵉⵡⵉⵏ}}", "file-info-size": "$1 × $2 ⴱⵉⴽⵙⵉⵍ, ⵜⵉⴷⴷⵉ ⵏ ⵓⴼⴰⵢⵍⵓ: $3, ⴰⵏⴰⵡ MIME: $4", "file-nohires": "↓Ur tlli tabudut tamqrant.", - "svg-long-desc": "Asdaw SVG, Tabadut n $1 × $2 ifrdan, Tiddi : $3", + "svg-long-desc": "ⴰⴼⴰⵢⵍⵓ SVG, nominally $1 × $2 ⵉⴷ ⴱⵉⴽⵙⵉⵍ, ⵜⵉⴷⴷⵉ ⵏ ⵓⴼⴰⵢⵍⵓ: $3", "show-big-image": "ⴰⴼⴰⵢⵍⵓ ⴰⵏⵚⵍⵉ", "ilsubmit": "ⵙⵉⴳⴳⵍ", "days": "{{PLURAL:$1|$1 ⵡⴰⵙⵙ|$1 ⵡⵓⵙⵙⴰⵏ}}", @@ -1027,21 +1031,21 @@ "exif-sensingmethod-2": "amfay n lon n tozmi ghyat tosa", "exif-sensingmethod-3": "amfay n lon n tozmi ghsnat tosatin", "exif-gaincontrol-0": "ⵡⴰⵍⵓ", - "exif-contrast-0": "normal", + "exif-contrast-0": "ⵏⵓⵔⵎⴰⵍ", "exif-contrast-1": "irtb", "exif-contrast-2": "ⴰⵇⵓⵔⴰⵔ", "exif-saturation-0": "ⴰⵎⴰⴳⵏⵓ", "exif-saturation-1": "imik ntmlli", "exif-saturation-2": "kigan ntmlli", - "exif-sharpness-0": "normal", + "exif-sharpness-0": "ⵏⵓⵔⵎⴰⵍ", "exif-sharpness-1": "irtb", "exif-sharpness-2": "iqor", "exif-subjectdistancerange-0": "ⴰⵔⵓⵙⵙⵉⵏ", "exif-subjectdistancerange-1": "ⵎⴰⴽⵔⵓ", "exif-subjectdistancerange-2": "tannayt iqrbn", "exif-gpslatitude-n": "dairat lard chamaliya", - "exif-gpsspeed-n": "Knots", - "exif-iimcategory-edu": "ⴰⵙⴳⵎⵉ", + "exif-gpsspeed-n": "ⵜⵉⴽⵔⵓⵙⵉⵏ", + "exif-iimcategory-edu": "ⴰⵙⵍⵎⴷ", "exif-iimcategory-hth": "ⵜⴰⴷⵓⵙⵉ", "exif-iimcategory-pol": "ⵜⴰⵙⵔⵜⵉⵜ", "namespacesall": "ⴰⴽⴽⵯ", @@ -1061,9 +1065,9 @@ "table_pager_first": "tawriqt tamzwarut", "table_pager_last": "tawriqt tamgrut", "table_pager_limit_submit": "ballak", - "table_pager_empty": "ornofa amya", - "watchlistedit-normal-submit": "hiyd lanawin", - "watchlistedit-raw-titles": "Azwl", + "table_pager_empty": "ⵡⴰⵍⵓ ⵜⵉⵢⴰⴼⵓⵜⵉⵏ", + "watchlistedit-normal-submit": "ⴽⴽⵙ ⵉⵣⵡⵉⵍⵏ", + "watchlistedit-raw-titles": "ⵉⵣⵡⵉⵍⵏ:", "watchlisttools-clear": "ⵙⴼⴹ ⵜⴰⵍⴳⴰⵎⵜ ⵏ ⵓⴹⴼⴼⵓⵔ", "watchlisttools-view": "Umuɣ n imtfrn", "watchlisttools-edit": "Ẓr tẓṛgt umuɣ lli tuytfarn", @@ -1087,20 +1091,20 @@ "fileduplicatesearch-submit": "ⵙⵉⴳⴳⵍ", "specialpages": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⵥⵍⵉⵏⵉⵏ", "specialpages-group-other": "tiwriqin khassa yadnin", - "specialpages-group-login": "kchm/sjl", + "specialpages-group-login": "ⴽⵛⵎ / ⵙⵏⵓⵍⴼⵓ ⴰⵎⵉⴹⴰⵏ", "specialpages-group-changes": "tghyirat granin d sijilat", "specialpages-group-media": "taqarir n lmedia d upload", "specialpages-group-users": "imskhdamn d salahiyat", "specialpages-group-highuse": "tiwriqim li bahra skhdamn midn", "specialpages-group-pages": "lista n twriqin", "specialpages-group-pagetools": "ⵉⵎⴰⵙⵙⵏ ⵏ ⵜⴰⵙⵏⵉⵡⵉⵏ", - "specialpages-group-wiki": "wiki ladawat dlmalomat", + "specialpages-group-wiki": "ⵉⵙⴼⴽⴰ ⴷ ⵉⵎⴰⵙⵙⵏ", "specialpages-group-redirects": "sfhat tahwil gant khassa", - "specialpages-group-spam": "ladawat n spam", - "blankpage": "tawriqt orgiss walo", + "specialpages-group-spam": "ⵉⵎⴰⵙⵙⵏ ⵏ ⵓⵙⴲⴰⵎ", + "blankpage": "ⵜⴰⵙⵏⴰ ⵉⵅⵡⴰⵏ", "external_image_whitelist": "# Ajji aṣṭtar nna ɣiklli iga.
\n# Ml igzman n tannayin (ɣir imi lli illan gr//) ɣ uzddar ɣid.\n# Rad tmiqqirn d tansiwin URL n tiwlaf n brra.\n# Tilli dis tmiqqirnin rad baynt zund tiwlaf, niɣd yan uzday s tawlaft arad ibayn.\n# Isṭṭarn lli ittizwirn s # rad gin zund iwnnan.\n# Tasna yad tfta d ugmmaḍ ad\n\n# Gatn igzman n iwnnan ɣ uflla n usṭṭar ad. Ajji yataṣṭṭar amggaru ɣiklli iga. 
", "tag-filter": "ⵜⴰⵙⵜⵜⴰⵢⵜ ⵏ [[Special:Tags|ⵜⵔⵛⴰⵎⵉⵏ]]:", - "tag-filter-submit": "Istayn", + "tag-filter-submit": "ⵜⴰⵙⵜⵜⴰⵢⵜ", "tags-title": "imarkiwn", "tags-source-header": "ⴰⵙⴰⴳⵎ", "tags-hitcount-header": "tghyiran markanin", diff --git a/languages/i18n/shn.json b/languages/i18n/shn.json index f5155f48a2..ee8cef5ca0 100644 --- a/languages/i18n/shn.json +++ b/languages/i18n/shn.json @@ -572,6 +572,7 @@ "missingcommenttext": "ၶႅၼ်းတေႃႈ ပေႃႉသႂ်ႇပၼ် တၢင်းၶႆႈၸႂ် ၵႃႈတီႈတႂ်ႈၼႆႉ", "previewerrortext": "မိူဝ်ႈၽွင်းၶတ်းၸႂ်ၼႄ တႃႇတူၺ်းလူင်ႈၼႃႈ လွင်ႈလႅၵ်ႈလၢႆႈ ဢၼ်ၸဝ်ႈၵဝ်ႇ ႁဵတ်းမႃးၼၼ်ႉ လႆႈမီးလွင်ႈၽိတ်းပိူင်ႈ ဢွၵ်ႇပဵၼ်ဝႆႉ။", "blockedtitle": "ၽူႈၸႂ်ႉတိုဝ်းၼႆႉ ထုၵ်ႇတတ်းၶၢတ်ႇဝႆ့", + "blockedtext": "ၸိုဝ်ႈၽူႈၸႂ်ႉတိုဝ်း ၸဝ်ႈၵဝ်ႇ ဢမ်ႇၼၼ် ႁဵင်းလိၵ်ႈဢၢႆႇၽီႇၸဝ်ႈၵဝ်ႇ ထုတ်ႇႁႄႉတတ်းဝႆႉ\nလွင်ႈႁႄႉတတ်းၼႆႉ $1 ၵေႃႉႁဵတ်းသၢင်ႈဝႆႉ။\nလွင်ႈတၢင်းမၼ်းတႄႉ ပၼ်ဝႆႉ ၸွမ်းၼင်ႇ $2 ၼႆယဝ်ႉ။\n\n* တႄႇႁႄႉတတ်းဝႆႉမိူဝ်ႈ: $8\n* လွင်ႈႁႄႉတတ်းတေသုတ်းသဵင်ႈမိူဝ်ႈ: $6\n* လွင်ႈယိူင်းဢၢၼ်း ၽူႈႁႄႉတတ်း: $7\n\nတွၼ်ႈတႃႇဢုပ်ႇဢူဝ်းၵၼ် ၵပ်းၵၢႆႇလွင်ႈႁႄႉတတ်းဢၼ်ၼႆႉ ၵပ်းသိုပ်ႇၸူးတင်း $1 ဢမ်ႇၼၼ် [[{{MediaWiki:Grouppage-sysop}}|ၽူႈၵုမ်းၵမ်ၼႃႈၵၢၼ်]] သေၵေႃႈလႆႈယူႇၶႃႈ။ သင်ၸိူဝ်ႉဝႃႈ ၸဝ်ႈၵဝ်ႇ ဢမ်ႇလႆႈမၵ်းမၼ်ႈ ႁဵင်းလိၵ်ႈဢီးမေးလ် ၸဝ်ႈၵဝ်ႇဝႆႉ တီႈၼႂ်း [[Special:Preferences|ၵၢၼ်တင်ႈၵႃႊ ဢၶွင်ႉ]]ၼၼ်ႉၼႆၸိုင် ၸဝ်ႈၵဝ်ႇတေ ဢမ်ႇၸၢင်ႈၸႂ်ႉ ဢၼ်ပဵၼ်လၢႆးႁဵတ်းၵၢၼ်ဝႃႈ \"သူင်ႇဢီးမေးလ်ၸူး ၽူႈၸႂ်ႉတိုဝ်းၵေႃႉၼႆႉ\" ဢၼ်ဝႃႈၼၼ်ႉ။ လွင်ႈႁဵတ်းတႃႇမၵ်းမၼ်ႈၸိူင်ႉၼၼ်ႉၵေႃႈ တေလႆႈႁဵတ်းသၢင်ႈဝႆႉ မိူဝ်ႈပႆႇ ထုၵ်ႇႁႄႉတတ်းၼၼ်ႉယဝ်ႉ။\nႁဵင်းလိၵ်ႈ ဢၢႆႇၽီႇ ၸဝ်ႈၵဝ်ႇ ဢၼ်ၸႂ်ႉဝႆႉယၢမ်းလဵဝ်ၼႆႉ ပဵၼ် $3 သေ ဢၼ်ထုၵ်ႇႁႄႉတတ်းဝႆႉၼၼ်ႉတႄႉ ပဵၼ် #$5 ယဝ်ႉ။\nၶႅၼ်းတေႃႈႁဵတ်းႁႂ်ႈ လွင်ႈတၢင်းႁူဝ်ယွႆႈပႃႈၼိူဝ်ၼႆႉ ၶဝ်ႈပႃးဝႆႉမူတ်းၵႃႈတီႈ လွင်ႈၶူၼ်ႉႁႃ ဢၼ်ၸဝ်ႈၵဝ်ႇတေႁဵတ်းၼၼ်ႉ။", "blockednoreason": "ဢမ်ႇလႆႈပၼ်ဝႆႉ လွင်ႈတၢင်းသင်။", "whitelistedittext": "တႃႇတေမႄးထတ်း ၼႃႈလိၵ်ႈၼႆႉ ၶႅၼ်းတေႃႈ $1 ။", "loginreqtitle": "လူဝ်ႇလႆႈ ၶဝ်ႈလွၵ်ႉဢိၼ်ႇ", @@ -580,10 +581,12 @@ "accmailtitle": "ၶေႃႈလပ်ႉ သူင်ႇၵႂႃႇယဝ်ႉယဝ်ႈ။", "newarticle": "(ဢၼ်မႂ်ႇ)", "newarticletext": "ၸဝ်ႈၵဝ်ႇလႆႈၸွမ်းလင်ဝႆႉ ႁဵင်းၵွင်ႉ ၼႃႈလိၵ်ႈ ဢၼ်ဢမ်ႇမီးဝႆႉၼၼ်ႉ။\nတႃႇတေၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈ၊ တႄႇပေႃႉသႂ်ႇၵႃႈတီႈ လွၵ်ႈပႃႈတႂ်ႈ \n (တွၼ်ႈတႃႇ လွၼ်ႉၶၢဝ်ႇ တၢင်ႇၸိူဝ်း တူၺ်းၵႃႈတီႈ [$1 help page] ).\nသင်ၸိူဝ်ႉဝႃႈ ၸဝ်ႈၵဝ်ႇ ၽိတ်းတၢင်းသေ ၽႅဝ်မႃးတီႈၼႆႈၼႆ၊ ၼဵၵ်း ပၼ်တူဝ် ၼဵၼ်ႁူၼ်လင် ၶွင် တူဝ်ပိုတ်ႇဝႅပ်ႉ ၸဝ်ႈၵဝ်ႇလႄႈ။", + "anontalkpagetext": "----\nဢၼ်ၼႆႉၼႆႉ မၼ်းပဵၼ်ၼႃႈလိၵ်ႈဢုပ်ႇဢူဝ်း တွၼ်ႈတႃႇ ၽူႈဢၼ်ဢမ်ႇႁဵတ်း ဢၶွင်ႉ ဢမ်ႇၼၼ် ၽူႈဢၼ်ဢမ်ႇမီးဢၶွင်ႉ ဢၼ်ၸိူဝ်းပဵၼ် ၽူႈဢမ်ႇမီး/ဢမ်ႇႁူႉ ၸိုဝ်ႈသဵင်ၶဝ် ၸႂ်ႉၼႆယဝ်ႉ။\nယွၼ်ႉပိူဝ်ႈၼၼ်လႄႈ ႁဝ်းၶႃႈၸင်ႇလႆႈၸႂ်ႉ ႁဵင်းလိၵ်ႈ ဢၢႆႇၽီႇ တွၼ်ႈတႃႇၸႅၵ်ႇလႆႈဝႃႈ ပဵၼ် မၼ်း ႁိုဝ် မၼ်းၼၢင်း ဢၼ်ဝႃႈၼၼ်ႉဢေႃႈ။\nဢၼ်ပဵၼ် ႁဵင်းလိၵ်ႈဢၢႆႇၽီႇၸိူင်ႉၼၼ်ၵေႃႈ ၽူႈၸႂ်ႉတိုဝ်းတင်းၼမ် ၸၢင်ႈထုၵ်ႇၽႄၸႂ်ႉဝႆႉယူႇ။\nသင်ၸိူဝ်ႉဝႃႈ ၸဝ်ႈၵဝ်ႇ ပဵၼ် ၽူႈဢၼ်ဢမ်ႇမီးၸိုဝ်ႈသေ သမ်ႉလႆႈယိၼ်းဝႃႈ လွင်ႈဢုပ်ႇဢူဝ်း ၸိူဝ်းဢၼ်ဢမ်ႇၵပ်းၵၢႆႇၸဝ်ႈၵဝ်ႇၼၼ်ႉ မီးလွင်ႈတုမ်ႉတေႃႇတင်းၸဝ်ႈၵဝ်ႇၼႆ ၸိုင် [[Special:CreateAccount|ၵေႃႇသၢင်ႈဢၶွင်ႉ ဢၼ်ၼိုင်ႈ]] ဢမ်ႇၼၼ် [[Special:UserLogin|ၶဝ်ႈလွၵ်ႉဢိၼ်ႇ]]သေၵေႃႈ ၸဝ်ႈၵဝ်ႇၸၢင်ႈယူႇႁၢင်ႁၢင်ႇၵၼ်တင်း ၽူႈဢမ်ႇမီးၸိုဝ်ႈ တၢင်ႇၸိူဝ်းၼၼ်ႉလႆႈယူႇၶႃႈ။", "noarticletext": "ၼႂ်းၼႃႈၼႆႉယင်းဢမ်ႇမီးလိၵ်ႈသင်တေႃႈလဵဝ်။\nသူၸၢင်ႈ [[Special:Search/{{PAGENAME}}|ႁႃ ႁူဝ်ၶေႃႈၼႃႈလိၵ်ႈၼႆႉ]] ၼႂ်းတၢင်ႇၼႃႈ၊\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ၶူၼ်ႉႁႃ logs ဢၼ်ၵွင်ႉၵၢႆႇၵၼ်],\nဢမ်ႇၼၼ် [{{fullurl:{{FULLPAGENAME}}|action=edit}} သၢင်ႈၼႃႈၼႆႉ]။", "noarticletext-nopermission": "ၼႂ်းၼႃႈၼႆႉယင်းဢမ်ႇမီးလိၵ်ႈသင်တေႃႈလဵဝ်။\nသူၸၢင်ႈ [[Special:Search/{{PAGENAME}}|ႁႃ ႁူဝ်ၶေႃႈၼႆႉ]] ၼႂ်းတၢင်ႇၼႃႈ၊\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ၶူၼ်ႉႁႃ logs ဢၼ်ၵဵဝ်ႇၵွင်ႉၵၼ်],\nဢမ်ႇၼၼ် [{{fullurl:{{FULLPAGENAME}}|action=edit}} မူၼ်ႉမႄးၼႃႈၼႆႉ]။", "userpage-userdoesnotexist-view": "ဢၶွင်ႉ ၽူႈၸႂ်ႉတိုဝ်း \"$1\" ၼႆႉ ဢမ်ႇပႆႇလႆႈ တၢင်ႇမၢႆၽၢင်ဝႆႉ။", "blocked-notice-logextract": "ၽူႈၸႂ်ႉတိုဝ်းၵေႃႉၼႆႉ ထုၵ်ႇတတ်းၶၢတ်ႇဝႆႉဢေႃႈ ယၢမ်းလဵဝ်။\nသဵၼ်ႈမၢႆတတ်းၶၢတ်ႇ ၵမ်းလိုၼ်းသုတ်းၼႆႉ ၼႄဝႆႉယူႇၵႃႈတီႈ သဵၼ်ႈမၢႆၽိုၼ်ဢိင် ပႃႈတႂ်ႈၼႆႉ။", + "clearyourcache": "မၢႆတွင်း: ဝၢႆးသေသိမ်းပၼ်ယဝ်ႉ၊ တွၼ်ႈတႃႇ ၸဝ်ႈၵဝ်ႇ တေႁၼ်လႆႈ လွင်ႈလႅၵ်ႈလၢႆႈၼၼ်ႉ ၸဝ်ႈၵဝ်ႇတေၸၢင်ႈလႆႈလတ်းၶၢမ်ႈ cache တူဝ်ပိုတ်ႇဝႅပ်ႉၸဝ်ႈၵဝ်ႇယဝ်ႉ။\n*ၽွင်းမိူဝ်ႈတိုၵ်ႉၼဵၵ်း Reload တီႈ Firefox / Safari: ၼၼ်ႉ ၼဵၵ်းဝႆႉပႃး Shift ၊ဢမ်ႇၼၼ် ၼဵၵ်းပၼ် Ctrl-F5 ဢမ်ႇၼၼ် Ctrl-R (တီႈၼႂ်း Mac ၼႆ ၼဵၵ်းပၼ်⌘-R)\n*တီႈၼႂ်း Google Chrome: ၼဵၵ်းပၼ် Ctrl-Shift-R (တီႈၼႂ်း Mac ၼႆႉ ၼဵၵ်းပၼ်⌘-Shift-R )\n*ၽွင်းမိူဝ်ႈ တိုၵ်ႉၼဵၵ်း Refreshတီႈ Internet Explorer: ၼဵၵ်းဝႆႉပၼ် Ctrl ဢမ်ႇၼၼ် ၼဵၵ်းပၼ် Ctrl-F5\n* တီႈၼႂ်း Opera: ၵႂႃႇၸူးတီႈ Menu → Settings (ပေႃးပဵၼ်တီႈၼႂ်း Mac ၸိုင် Opera → Preferences ) သေ သိုပ်ႇၵႂႃႇ Privacy & security → Clear browsing data → Cached images and files ၼၼ်ႉလႄႈ။", "updated": "(ဢၢပ်ႉတိတ်ႉ)", "note": "မၢႆတွင်း:", "previewnote": "တွင်းဝႆႉပၼ်ဝႃႈ ၼႆႉပဵၼ် ဢၼ်တူၺ်းလူင်ႈၼႃႈၵူၺ်း\nဢၼ်ၸဝ်ႈၵဝ်ႇ ႁဵတ်းလွင်ႈလႅၵ်ႈလၢႆႈမႃးၸိူဝ်းၼၼ်ႉ ပႆႇလႆႈသိမ်းၵွၼ်ႇ။", @@ -639,6 +642,7 @@ "content-json-empty-object": "ၵၢၼ်ပဝ်ႇ", "content-json-empty-array": "ထႅဝ်ပဝ်ႇ", "post-expand-template-inclusion-warning": "ၶေႃႈၽၢင်ႉ - ပိူင်ဢဝ်မႃးႁူမ်ႈၼၼ်ႉယႂ်ႇပူၼ်ႉၼႃႇ။\nပိူင်မၢင်ၼႃႈတေဢမ်ႇႁူမ်ႈပႃးၸွမ်း။", + "undo-failure": "ယွၼ်ႉပိူဝ်ႈ လွင်ႈယုင်ႈယၢင်ႈၵၢၼ်ၶဝ်ႈမႄးထတ်းၸိမ်ၵၢင်ၸိူဝ်းၼၼ်ႉလႄႈ လွင်ႈမႄးထတ်း တေဢမ်ႇၸၢင်ႈၶိုၼ်း မႄးဢဝ်လႆႈယဝ်ႉ။", "viewpagelogs": "တူၺ်းသၢႆမၢႆ တွၼ်ႈတႃႇၼႃႈလိၵ်ႈၼႆႉ", "nohistory": "တီႈၼႆႈ ဢမ်ႇမီး ပိုၼ်းထတ်းသၢင်ႈ တွၼ်ႈတႃႇၼႃႈလိၵ်ႈၼႆႉ", "currentrev": "ၵၢၼ်ၶူၼ်ႉၶႆႈ ၵမ်းလိုၼ်းသုတ်း", @@ -653,6 +657,7 @@ "last": "ဢွၼ်တၢင်း", "page_first": "ဢွၼ်တၢင်း", "page_last": "လိုတ်းသုတ်း", + "histlegend": "တွၼ်ႈတႃႇၼိူင်းၵၼ်တူၺ်း လွင်ႈမႄးထတ်း ႁဵၼ်းပၼ်မၢႆၶၼ် တီႈတိူၵ်ႈလိူၵ်ႈသၢင်ႈ သေ ၼဵၵ်းပၼ် Enter ဢမ်ႇၼၼ် ၼဵၵ်းပၼ်တီႈ ၼဵၼ် ဢၼ်မီးယူႇၽၢႆႇတႂ်ႈၼၼ်ႉလႄႈ။\nLegend: ({{int:cur}}) = လွင်ႈပႅၵ်ႇပိူင်ႈၵၼ်တင်း ၶေႃႈမႄးထတ်းဝႆႉ ၵမ်းလိုၼ်းသုတ်း, ({{int:last}}) = လွင်ႈပႅၵ်ႇပိူင်ႈၵၼ်တင်း ၶေႃႈမႄးထတ်း ၽၢႆႇၼႃႈၼၼ်ႉ, {{int:minoreditletter}} = လွင်ႈမႄးထတ်းဢွၼ်ႇဢီႈ.", "history-fieldset-title": "သွၵ်ႈႁႃတႃ ၶေႃႈၶူၼ်ႉဢၢၼ်ႇ", "history-show-deleted": "ၶေႃႈၶူၼ်ႉဢၢၼ်ႇ ဢၼ်​ယႃႉ​ဝႆႉ​ၼၼ်ႉၵွၺ်း", "histfirst": "ၵဝ်ႇသုတ်း", @@ -1344,6 +1349,7 @@ "filehist-comment": "တၢင်းႁၼ်ထိုင်", "imagelinks": "လွင်ႈၸႂ်ႉတိုဝ်း ၾၢႆႇ", "linkstoimage": "{{PLURAL:$1|ၼႃႈလိၵ်ႈ|$1 ၼႃႈလိၵ်ႈ}} ၵွင်ႉမႃးၸူးၾၢႆႇၼႆႉ:", + "linkstoimage-more": "{{PLURAL:$1|ၼႃႈလိၵ်ႈ ၵွင်ႉသၢၼ်|ၼႃႈလိၵ်ႈ ၸိူဝ်းၵွင်ႉသၢၼ်}} ဝႆႉၸူးၾၢႆႇဢၼ်ၼႆႉ မၼ်းၼမ်မီးၼမ်လိူဝ်သေ $1 ဢၼ်ၶႃႈ။\nသဵၼ်ႈမၢႆ ၸိူဝ်းဢၼ်ၼႄဝႆႉ ၽၢႆႇတႂ်ႈၼႆႉ {{PLURAL:$1|ႁဵင်းၵွင်ႉ ၼႃႈလိၵ်ႈဢွၼ်တၢင်းသုတ်း|ႁဵင်းၵွင်ႉၸိူဝ်းမီးတီႈ ၼႃႈလိၵ်ႈဢွၼ်တၢင်းသုတ်း}} တႃ ၾၢႆႇဢၼ်ၼႆႉၵူၺ်းၶႃႈ။\n[[Special:WhatLinksHere/$2|သဵၼ်ႈမၢႆတဵမ်ထူၼ်ႈ]] ၵေႃႈ ၸၢင်ႈဢဝ်တူၺ်းလႆႈယူႇၶႃႈ။", "nolinkstoimage": "ဢမ်ႇမီးၼႃႈလိၵ်ႈဢၼ်ၵွင်ႉၸူး ၾၢႆႇဢၼ်ၼႆႉ", "morelinkstoimage": "တူၺ်း [[Special:WhatLinksHere/$1|ႁဵင်းၵွင်ႉတၢင်ႇၸိူဝ်း]] ၸူး ၾၢႆႇဢၼ်ၼႆႉ။", "linkstoimage-redirect": "$1 (ပိၼ်ႇၸီႉ ၾၢႆႇၸူး) $2", @@ -1541,6 +1547,7 @@ "log": "သၢႆမၢႆ", "logeventslist-submit": "ၼႄ", "all-logs-page": "သဵၼ်ႈမၢႆၵူၼ်းတင်းၼမ် တင်းမူတ်း", + "alllogstext": "ႁူမ်ႈၵၼ်ၼႄဝႆႉပၼ် သဵၼ်ႈမၢႆတွင်း ၶွင် {{SITENAME}} ဢၼ်ၸၢင်ႈဢဝ်လႆႈၼၼ်ႉ။\nၸဝ်ႈၵဝ်ႇ ၸၢင်ႈ လိူၵ်ႈ လိူင်ႈသဵၼ်ႈမၢႆတွင်း၊ ၽူႈၸႂ်ႉတိုဝ်း(ၼင်ႇတူဝ်လိၵ်ႈလဵၵ်ႉယႂ်ႇ)၊ ဢမ်ႇၼၼ် ၼႃႈလိၵ်ႈဢၼ်ၵပ်းၵၢႆႇ (ၼင်ႇတူဝ်လိၵ်ႈလဵၵ်ႉယႂ်ႇ) သေၵေႃႈ တူၺ်းလႆႈယူႇ။", "logempty": "ဢမ်ႇငမ်ႇၵၼ်တင်း တီႈၼႂ်းသဵၼ်ႈမၢႆ", "log-title-wildcard": "ဢဝ်လိၵ်ႈၸိူဝ်းၼႆႉသေ တႄႇသွၵ်ႈႁႃ ႁူဝ်ၶေႃႈ", "showhideselectedlogentries": "လႅၵ်ႈလၢႆႈ ၵၢၼ်ႁၼ်လႆႈ ၶွင် ၶေႃႈၶူၼ်ႉဢၢၼ်ႇ ၸိူဝ်းလိူၵ်ႈဝႆႉ", @@ -1643,6 +1650,9 @@ "addwatch": "ထႅမ်သႂ်ႇၸူး သဵၼ်ႈမၢႆ ပႂ်ႉတူၺ်း", "watch": "ပႂ်ႉတူၺ်း", "unwatch": "ဢမ်ႇတူၺ်း", + "watchlist-details": "{{PLURAL:$1|ၼႃႈလိၵ်ႈ $1 ၼႃႈ|ၸိူဝ်းၼႃႈလိၵ်ႈ $1 ၼႃႈ}} ၼႆႉမီးဝႆႉ တီႈၼႂ်းသဵၼ်ႈမၢႆတူၺ်းၸဝ်ႈၵဝ်ႇသေ ၸိူဝ်းပၼ်ၼႃႈလိၵ်ႈ ဢုပ်ႇဢူဝ်းၼၼ်ႉတႄႉ ဢမ်ႇဢၢၼ်ႇၶဝ်ႈပႃး။", + "wlheader-showupdated": "ဝၢႆးသေၸဝ်ႈၵဝ်ႇ တူၺ်းမႃးသေ ဢၼ်ပဵၼ်ၼႃႈလိၵ်ႈ ၸိူဝ်းမီးလွင်ႈလႅၵ်ႈလၢႆႈၼၼ်ႉ ဢဝ်\nသင် နောက်ဆုံးကြည့်ရှုခဲ့ပြီးနောက် ပြောင်းလဲမှုရှိခဲ့သော စာမျက်နှာများကို တူဝ်လိၵ်ႈလမ်သေ ၼႄဝႆႉပၼ်ယူႇ။", + "wlnote": "ၼႂ်းၵႃႈ တေႃႇထိုင် $3၊ $4 ၼၼ်ႉ ၵမ်းလိုၼ်းသုတ်း {{PLURAL:$2|မူင်း|$2 မူင်း}}ၼၼ်ႉမီႈ{{PLURAL:$1|လွင်ႈလႅၵ်ႈလၢႆႈ ဝႆႉဢၼ်ၼိုင်ႈ|လွင်ႈၸိူဝ်းလႅၵ်ႈလၢႆႈဝႆႉ $1 ဢၼ်}}", "wlshowlast": "ၼႄ ၶၢဝ်းယၢမ်းလိုၼ်းသုတ်း $1 မူင်း $2 ဝၼ်း", "watchlist-hide": "သိူင်ႇ", "watchlist-submit": "ၼႄ", @@ -1750,6 +1760,7 @@ "mycontris": "လွင်ႈၶဝ်ႈႁူမ်ႈ", "anoncontribs": "လွင်ႈၶဝ်ႈႁူမ်ႈ", "contribsub2": "တွၼ်ႈတႃႇ {{GENDER:$3|$1}} ($2)", + "nocontribs": "ဢမ်ႇမီးလွင်ႈလႅၵ်ႈလၢႆး ၸိူဝ်းဢၼ်ငမ်ႇမႅၼ်ႈၵၼ်တင်း ၶေႃႈမၵ်းမၢႆၸိူဝ်းၼႆႉ။", "uctop": "(ယၢမ်းလဵဝ်)", "month": "တႄႇဢဝ်လိူၼ် (လႄႈ ဢၼ်ပူၼ်ႉမႃး):", "year": "တႄႇဢဝ်ပီ (လႄႈ ဢၼ်ပူၼ်ႉမႃး):", @@ -2102,6 +2113,7 @@ "pageinfo-few-watchers": "ဢေႇလိူဝ်သေ $1 {{PLURAL:$1|ၽူႈၶဝ်ႈတူၺ်း}}", "pageinfo-redirects-name": "တၢင်းၼမ် လွင်ႈပိၼ်ႇၽၢႆႇ ၸူး ၼႃႈလိၵ်ႈဢၼ်ၼႆႉ", "pageinfo-subpages-name": "တၢင်းၼမ် ၼႃႈလိၵ်ႈၽႄ ၶွင်ႈၼႃႈလိၵ်ႈဢၼ်ၼႆႉ", + "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|ပိၼ်ႇၸီႉ|ၸိူဝ်းပိၼ်ႇၸီႉ}}; $3 {{PLURAL:$3|ဢမ်ႇ-ပိၼ်ႇၸီႉ|ၸိူဝ်းဢမ်ႇ-ပိၼ်ႇၸီႉ}})", "pageinfo-firstuser": "ၽူႈၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈ", "pageinfo-firsttime": "ဝၼ်းထီႉ လွင်ႈၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈ", "pageinfo-lastuser": "ၽူႈမႄးထတ်း ၵေႃႉလိုၼ်းသုတ်း", @@ -2218,6 +2230,7 @@ "version-skins": "ၽိဝ်ၼင် ၸိူဝ်းဢူၼ်းသႂ်ႇဝႆႉ�", "version-specialpages": "�ၼႃႈလိၵ်ႈ ၶိုၵ်ႉတွၼ်း", "redirect": "ၶိုၼ်းပိၼ်ႇၽၢႆ ၼင်ႇ ၾၢႆႇ၊ ၽူႈၸႂ်ႉတိုဝ်း၊ ၼႃႈလိၵ်ႈ၊ လွင်ႈမႄးၶိုၼ်း ဢမ်ႇၼၼ် မၢႆၽၢင် သဵၼ်ႈမၢႆ", + "redirect-summary": "ၼႃႈလိၵ်ႈၶိုၵ်ႉတွၼ်း ၼႃႈၼႆႉ ပိၼ်ႇၽၢႆႇၸူး ၾၢႆႇဢၼ်ၼိုင်ႈ (ၸွမ်းၼင်ႇၸိုဝ်ႈၾၢႆႇဢၼ်ပၼ်ဝႆႉ)၊ ၼႃးလိၵ်ႈဢၼ်ၼိုင်ႈ(ၸွမ်းၼင်ႇ မၢႆၽၢင်ႇမႄးထတ်းဢၼ်ပၼ်ဝႆႉ ဢမ်ႇၼၼ် မၢႆၽၢင်ၼႃႈလိၵ်ႈ)၊ ၼႃႈလိၵ်ႈၽူႈၸႂ်ႉတိုဝ်းဢၼ်ၼိုင်ႈ (ၸွမ်းၼင်ႇ တူဝ်ၼပ်ႉမၢႆၽၢင်ၽူႈၸႂ်ႉတိုဝ်း ဢၼ်ပၼ်ဝႆႉ)၊ ဢမ်ႇၼၼ် သဵၼ်ႈမၢႆတွင်း ဢၼ်ၼိုင်ႈ (ၸွမ်းၼင်ႇ သဵၼ်ႈမၢႆတွင်း မၢႆၽၢင်)။ လၢႆးၸႂ်ႉတိုဝ်း -\n[[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]], ဢမ်ႇၼၼ် [[{{#Special:Redirect}}/logid/186]].", "redirect-submit": "သိုပ်ႇၵႂႃႇ", "redirect-lookup": "ပိုတ်ႇတူၺ်း:", "redirect-value": "ၵႃႈၶၼ်:", @@ -2238,6 +2251,7 @@ "logentry-move-move": "$1 {{GENDER:$2|ၶၢႆႉယဝ်ႉ}} ၼႃႈလိၵ်ႈ $3 တေႃႇ $4", "logentry-move-move-noredirect": "ဢမ်ႇဢွၵ်ႇယၢၼ် လွင်ႈပိၼ်ႇၽၢႆႇေသ $1 {{GENDER:$2|ၶၢႆႉဝႆႉ}} ၼႃႈလိၵ်ႈ $3 တေႃႇ $4", "logentry-move-move_redir": "တၢင်ႇၼိူဝ် လွင်ႈပိၼ်ႇၽၢႆႇ သေ $1 {{GENDER:$2|ၶၢႆႉ}} ၼႃႈလိၵ်ႈ $3 တေႃႇ $4", + "logentry-patrol-patrol-auto": "$1 ပႂ်ႉတူၺ်းသေလႄႈ {{GENDER:$2|ထုၵ်ႇမၢႆဝႆႉ}} လွင်မႄးထတ်း $4 ၶွင်ၼႃႈလိၵ်ႈ $3 ၼၼ်ႉ။", "logentry-newusers-create": "ဢၶွင်ႉၽူႈၸႂ်ႉတိုဝ်း $1 ၼႆႉ လႆႈ {{GENDER:$2|ၵေႃႇသၢင်ႈယဝ်ႉ}}", "logentry-newusers-autocreate": "ဢၶွင်ႉ ၽူႈၸႂ်ႉတိုဝ်း $1 ၼႆႉ ထုၵ်ႇ {{GENDER:$2|ၵေႃႇသၢင်ႈၵႂႃႇ}} ႁင်းမၼ်းယဝ်ႉ။", "logentry-upload-upload": "$1 {{GENDER:$2|လူတ်ႇၶိုၼ်ႈၵႂႃႇယဝ်ႉ}} $3", diff --git a/languages/i18n/skr-arab.json b/languages/i18n/skr-arab.json index a2c15f7f5f..c033af2bc7 100644 --- a/languages/i18n/skr-arab.json +++ b/languages/i18n/skr-arab.json @@ -11,6 +11,7 @@ "tog-numberheadings": "سرخیاں کوں خود کار نمبر ݙیوو", "tog-showtoolbar": "آلات ترمیم ݙکھاؤ", "tog-editondblclick": "ڈبل کلک نال ورقے وچ تبدیلیاں کرو", + "tog-previewonfirst": "پہلی تبدیلی تے پری ویویو ݙکھاؤ", "tog-oldsig": "تہاݙے موجودہ دستخط:", "tog-uselivepreview": "ورقہ ولدا لوڈ کیتے ٻاجھوں نمائش ݙکھاؤ", "tog-watchlisthideminor": "چھوٹیاں تبدیلیاں اکھیں ہیٹھ فہرست وچوں لکاؤ", @@ -92,6 +93,7 @@ "category_header": "زمرہ \"$1\" وچ ورقے", "subcategories": "ذیلی زمرہ جات", "category-media-header": "زمرہ \"$1\" وچ میڈیا", + "category-empty": "ایں قسم وچ اڄݨ تائیں کوئی ورقہ یا میڈیا کائنی۔", "hidden-categories": "{{PLURAL:$1|پوشیدہ زمرہ|پوشیدہ زمرہ جات}}", "hidden-category-category": "لکیاں قسماں", "listingcontinuesabbrev": "جاری۔", @@ -107,13 +109,13 @@ "mypage": "ورقہ", "mytalk": "ڳالھ مہاڑ", "anontalk": "ڳالھ مہاڑ", - "navigation": "رہنمائی", + "navigation": "نیوی ڳیشݨ", "and": " تے", "faq": "عام طور تے پچھے ونڄݨ آلے سوال", "actions": "کم", "namespaces": "ناں جاہیں", "variants": "قسماں", - "navigation-heading": "فہرست رہنمائی", + "navigation-heading": "نیوی ڳیشݨ فہرست", "errorpagetitle": "نقص", "returnto": "واپس $1 چلو", "tagline": " {{SITENAME}} توں", @@ -133,7 +135,7 @@ "edit": "لکھو", "edit-local": "مقامی تفصیل درج کرو", "create": "بݨاؤ", - "create-local": "آپنی لکھت رلاؤ", + "create-local": "آپݨی لکھت رَلاؤ", "delete": "مٹاؤ", "protect": "حفاظت کرو", "protect_change": "تبدیل کرو", @@ -159,12 +161,13 @@ "lastmodifiedat": "ایہ ورقہ چھیکڑی واری $1 کوں $2 تے تبدیل تھیا ہائی۔", "protectedpage": "آم شام ورقہ", "jumpto": "ٹپ مارو", - "jumptonavigation": "رہنمائی", + "jumptonavigation": "نیوی ڳیشݨ", "jumptosearch": "ڳولو", "pool-errorunknown": "نامعلوم غلطی", "poolcounter-usage-error": "استعمال وچ خامی: $1", "aboutsite": "{{SITENAME}} دا تعارف", "aboutpage": "Project:تعارف", + "copyright": "مواد $1 دے تحت مل سڳدے، جے تائیں کوئی ٻئی ڳالھ نہ ہوسے۔", "copyrightpage": "{{ns:project}}:حقوق تصانیف", "currentevents": "حالیہ واقعات", "currentevents-url": "Project:حالیہ واقعات", @@ -183,6 +186,7 @@ "ok": "ٹھیک ہے", "retrievedfrom": "\"$1\" توں گھدا", "youhavenewmessages": "{{PLURAL:$3| تہاݙے کیتے}} $1 ($2).", + "youhavenewmessagesfromusers": "{{PLURAL:$4|تہاݙے کیتے}} {{PLURAL:$3|کہیں ٻئے صارف|$3 صارفین}} دی طرفوں $1 ($2)۔", "newmessageslinkplural": "{{PLURAL:$1|نواں سنیہا|999=نویں سنیہے}}", "newmessagesdifflinkplural": "چھیکڑی {{PLURAL:$1|تبدیلی|تبدیلیاں}}", "editsection": "لکھو", @@ -236,7 +240,10 @@ "viewsource": "ماخذ ݙیکھو", "viewsource-title": "$1 دا مسودہ ݙیکھو", "viewsourcetext": "تساں ایں ورقے کوں صرف ݙیکھ تے ماخز نقل کر سڳدے ہو لیکن تبدیلی نہوے کر سڳدے", + "ns-specialprotected": "خاص ورقیاں وچ تبدیلی نی تھی سڳدی", "exception-nologin": "لاگ ان نہوے تھئے", + "virus-scanfailed": "سکین نی تھی سڳیا(کوڈ$1)", + "virus-unknownscanner": "ان ڄاݨ اینٹی وائرس", "cannotlogoutnow-title": "ہݨ لاگ ان نہوے تھی سڳدے", "welcomeuser": "خوش آمدید، $1!", "yourname": "صارف دا ناں", @@ -287,6 +294,7 @@ "createacct-error": "کھاتہ بݨاوݨ وچ غلطی", "loginsuccesstitle": "لاگ ان تھی ڳیا", "mailmypassword": "نواں پاس ورڈ بݨاؤ", + "mailerror": "ای میل بھیجݨ وچ غلطی: $1", "emailconfirmlink": "آپݨے ای میل پتے دی تصدیق کرو", "emaildisabled": "ایہ سائٹ ای میل نی بھیج سڳدی۔", "accountcreated": "کھاتہ کھل ڳیا", @@ -301,6 +309,8 @@ "oldpassword": "پراݨا پاس ورڈ", "newpassword": "نواں پاس ورڈ", "retypenew": "نواں پاس ورڈ ولدا لکھو", + "resetpass_submit": "پاس ورڈ بݨاؤ تے لاگ ان تھیوو", + "changepassword-success": "تہاݙا پاس ورڈ تبدیل تھی ڳیا!", "botpasswords": "بوٹ پاس ورڈ", "botpasswords-label-appid": "بوٹ ناں:", "botpasswords-label-create": "بݨاؤ", @@ -308,6 +318,8 @@ "botpasswords-label-cancel": "منسوخ", "botpasswords-label-delete": "مٹاؤ", "botpasswords-label-resetpassword": "پاس ورڈ تبدیل کرو", + "botpasswords-label-grants-column": "ݙے ݙتا ڳئے", + "botpasswords-bad-appid": "\"$1\" بوٹ ناں ٹھیک کائنی۔", "resetpass-submit-loggedin": "پاس ورڈ تبدیل کرو", "resetpass-submit-cancel": "منسوخ", "resetpass-temp-password": "عارضی لنگھݨ لفظ، پاس ورڈ", @@ -351,7 +363,7 @@ "preview": "نمائش", "showpreview": "نمائش", "showdiff": "تبدیلیاں ݙکھاؤ", - "subject-preview": "موضوع دی نمائش:", + "subject-preview": "موضوع دا ݙکھالا:", "blockedtitle": "ورتݨ آلا بلاک ہے", "blockednoreason": "کوئی وجہ نی ݙتی ڳئی", "loginreqtitle": "لاگ ان ضروری ہے", @@ -374,8 +386,12 @@ "template-semiprotected": "(نیم محفوظ)", "hiddencategories": "ایہ ورقہ {{PLURAL:$1|1 لُکے زمریاں|$1 لکا زمرہ }} وچ شامل ہے:", "permissionserrors": "خطائے اجازت", + "permissionserrorstext-withaction": "انہاں {{PLURAL:$1|وجہ|وجوہات}} پاروں تہاکوں$2 دی اجازت کائنی", "moveddeleted-notice": "ایہ ورقہ مٹایا ڳیا ہے۔ مٹاوݨ دا لاگ،حفاظت دا لاگ تے ورقہ ٹورݨ دا لاگ حوالے کیتے ہیٹھاں ݙتے ہوئے ہن۔", "log-fulllog": "پورا لاگ ݙیکھو", + "postedit-confirmation-created": "ورقہ بݨ ڳیا ہے۔", + "postedit-confirmation-restored": "ورقہ بحال تھی ڳئے", + "postedit-confirmation-saved": "تہاݙی تبدیلی محفوظ تھی ڳئی ہے۔", "content-model-wikitext": "ویکی متن", "content-model-text": "سادہ متن", "content-model-javascript": "جاوا سکرپٹ", @@ -386,6 +402,7 @@ "currentrev": "موجودہ حالت", "currentrev-asof": "حالیہ نسخہ بمطابق $1", "revisionasof": "دی تبدیلیاں $1", + "revision-info": " $1 دی دہرائی توں {{جنس:$6|$2}}$7", "previousrevision": "→ پراݨا نسخہ", "nextrevision": "نویں تبدیلی →", "currentrevisionlink": "موجودہ حالت", @@ -410,6 +427,7 @@ "revdelete-radio-set": "پوشیدہ", "revdelete-radio-unset": "ظاہر", "revdelete-log": "سبب:", + "pagehist": "ورقے دی تاریخ", "deletedhist": "مٹایا ہویا تاریخچہ", "revdelete-reasonotherlist": "ہور وجہ", "revdelete-edit-reasonlist": "مٹاوݨ دی وجہ لکھو", @@ -467,6 +485,7 @@ "prefs-personal": "پروفائل", "prefs-rc": "نویاں تبدیلیاں", "prefs-watchlist": "نظریں ہیٹھ فہرست", + "prefs-resetpass": "پاس ورڈ تبدیل کرو", "prefs-rendering": "شکل و صورت", "saveprefs": "بچاؤ", "searchresultshead": "ڳولو", @@ -513,6 +532,8 @@ "prefs-advancedrendering": "اعلیٰ اختیارات", "prefs-advancedsearchoptions": "اعلیٰ اختیارات", "prefs-advancedwatchlist": "اعلیٰ اختیارات", + "prefs-displayrc": "ݙکھاوݨ دے اختیارات", + "prefs-displaywatchlist": "ݙکھاوݨ دے اختیارات", "prefs-tokenwatchlist": "ٹوکن", "prefs-diffs": "فرق", "userrights-user-editname": "ورتݨ آلا ناں درج کرو:", @@ -527,6 +548,8 @@ "group-user-member": "{{GENDER:$1|ورتݨ آلا}}", "grouppage-bot": "{{ns:project}}:بوٹ", "grouppage-sysop": "{{ns:project}}:ایڈمنسٹریٹر", + "right-move": "ورقے ٹورو", + "right-movefile": "فائلاں ٹورو", "right-upload": "فائلاں چڑھاؤ", "right-writeapi": "اے پی آئی تحریر دا استعمال", "right-delete": "ورقے مٹاؤ", @@ -534,7 +557,7 @@ "grant-group-email": "ای میل بھیجو", "grant-createaccount": "کھاتے کھولو", "grant-basic": "بنیادی حقوق", - "newuserlogpage": "یوزر بنݨاوݨ آلی لاگ", + "newuserlogpage": "کھاتہ بݨاوݨ آلی لاگ", "rightslog": "ورتݨ والے دے حقاں دی لاگ", "action-read": "ایہ ورقہ پڑھو", "action-edit": "ایں ورقے تے لکھو", @@ -573,7 +596,7 @@ "rcfilters-filter-minor-label": "معمولی تبدیلیاں", "rcfilters-filtergroup-lastRevision": "موجودہ حالت", "rcfilters-filter-lastrevision-label": "موجودہ حالت", - "rclistfrom": "$3 $2 توں ہونے آلیاں نویاں تبدیلیاں ݙکھاؤ", + "rclistfrom": "$3 $2 توں تھیوݨ آلیاں نویاں تبدیلیاں ݙکھاؤ", "rcshowhideminor": "$1 معمولی تبدیلیاں", "rcshowhideminor-show": "ݙیکھاؤ", "rcshowhideminor-hide": "لُکاؤ", @@ -610,6 +633,7 @@ "recentchangeslinked-feed": "رلدیاں ملدیاں تبدیلیاں", "recentchangeslinked-toolbox": "رلدیاں ملدیاں تبدیلیاں", "recentchangeslinked-title": "\"$1\" دے متعلقہ تبدیلیاں", + "recentchangeslinked-summary": "ایہ انہاں نویاں تبدیلیاں دی لسٹ ہے جہڑیاں خاص ورقے نال جُڑے ہوئے ورقیاں( یا خاص قسم دے ممبراں) وچ تھیاں ہن۔\nتہاݙی [[Special:Watchlist|اکھیں ہیٹھ ورقے]] موٹے نظر آسن۔", "recentchangeslinked-page": "ورقے دا ناں", "recentchangeslinked-to": "کھلے ہوئے ورقے دی بجائے ایندے نال جُڑے ہوئے ورقے دیاں تبدیلیاں ݙکھاؤ", "upload": "فائل چڑھاؤ", @@ -654,7 +678,7 @@ "listfiles-latestversion-no": "کو", "file-anchor-link": "فائل", "filehist": "فائل دا تاریخچہ", - "filehist-help": "کہیں خاص ویلے تے تاریخ کوں فائل کینویں نظردی ہائی، ݙیکݨ کیتے اوں ویلے تے کلک کرو۔", + "filehist-help": "کہیں خاص ویلے تے تاریخ کوں فائل کین٘ویں نظردی ہائی، ݙیکھݨ کیتے اوں ویلے تے کلک کرو۔", "filehist-deleteall": "سارے مٹاؤ", "filehist-deleteone": "مٹاؤ", "filehist-revert": "واپس", @@ -698,11 +722,11 @@ "protectedpages-page": "ورقہ", "protectedpages-reason": "سبب", "protectedpages-unknown-timestamp": "اݨ سونہاں", - "listusers": "ورتݨ والیاں دے ناں", + "listusers": "ورتݨ آلیاں دے ناں", "newpages": "نویں ورقے", "newpages-submit": "ݙِکھاؤ", "newpages-username": "ورتݨ آلا ناں:", - "move": "ٹرو", + "move": "ٹورو", "pager-newer-n": "{{PLURAL:$1|newer 1|زیادہ نواں $1}}", "pager-older-n": "{{PLURAL:$1|قدیم}} $1", "apisandbox-unfullscreen": "ورقہ ݙکھاؤ", @@ -751,6 +775,7 @@ "watchlistfor2": "$1 تے $2 کیتے", "watch": "اکھ تلے رکھو", "unwatch": "اکھ ہیٹھوں ہٹاؤ", + "watchlist-details": "{{PLURAL:$1|$1 ورقہ ہے|$1 ورقے ہن}} تہاݙیاں نظراں ہیٹھ (تے ڳالھ مہاڑ آلے ورقے).", "wlshowlast": "ݙیکھاؤ چھیکڑی $1 گھنٹے $2 ݙینہ", "watchlist-hide": "لُکاؤ", "watchlist-submit": "ݙِکھاؤ", @@ -873,7 +898,7 @@ "tooltip-n-portal": "ایں مںصوبے بارے، تساں کیا کر سڳدو، ، چیزاں کتھوں ڳولوں", "tooltip-n-currentevents": "موجودہ حالات وچ پچھلیاں معلومات ݙیکھو", "tooltip-n-recentchanges": "وکی تے نویاں تبدیلیاں۔", - "tooltip-n-randompage": "کوئی صفہ کھولو۔", + "tooltip-n-randompage": "کوئی ورقہ کھولو۔", "tooltip-n-help": "لبھݨ دی جاہ", "tooltip-t-whatlinkshere": "ایں نال جڑے سارے وکی ورقے۔", "tooltip-t-recentchangeslinked": "ایں ورقے توں جڑے ورقیاں وچ نویاں تبدیلیاں", @@ -884,7 +909,7 @@ "tooltip-t-specialpages": "سارے خاص ورقیاں دی تندیر", "tooltip-t-print": "ایں ورقے دا چھپݨ آلا انگ ݙیکھو", "tooltip-t-permalink": "ایں ورقے دی ایں رویژن دا پکا لنک جوڑ", - "tooltip-ca-nstab-main": "مواد آلا صفہ ݙیکھو", + "tooltip-ca-nstab-main": "مواد آلا ورقہ ݙیکھو", "tooltip-ca-nstab-user": "صارف دا ورقہ ݙیکھو", "tooltip-ca-nstab-special": "ایہ ہک خاص ورقہ ہے، اینکوں تبدیل نسے کرسڳدے", "tooltip-ca-nstab-project": "منصبے آلا ورقہ ݙیکھو", @@ -968,7 +993,7 @@ "imgmultigo": "ونڄو!", "imgmultigoto": "$1 تے ونڄو", "watchlisttools-clear": "زیرنظر فہرست دی صفائی", - "watchlisttools-view": "متعلقہ تبدیلیاں ݙیکو", + "watchlisttools-view": "متعلقہ تبدیلیاں ݙیکھو", "watchlisttools-edit": "زیرنظر فہرست کوں ݙیکھو تے تبدیلی کرو", "watchlisttools-raw": "کچی زیرِنظرفہرست وچ تبدیلی کرو", "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|تبادلۂ خیال]])", @@ -990,8 +1015,10 @@ "logentry-delete-delete": "$1 {{GENDER:$2|مٹایا ڳیا}} ورقہ $3", "logentry-delete-restore": "$1 {{GENDER:$2|بحال تھی ڳیوہے}} page $3 ($4)", "revdelete-content-hid": "مواد لکیا", - "logentry-move-move": "$1 {{جنس:$2|پلٹی}} صفہ $3 توں $4", + "logentry-move-move": "$1 {{جنس:$2|پلٹی}} ورقہ $3 توں $4", + "logentry-move-move-noredirect": "$1 نے $3 کوں $4 آلے پاسے ریڈائرکٹ کیتے ٻاڄھ{{GENDER:$2|منتقل کیتے}}", "logentry-move-move_redir": "$1 نے رجوع مکرر ہٹا تے ورقہ $3 کوں $4 آلے پاسے {{GENDER:$2|منتقل کیتا}}", + "logentry-patrol-patrol-auto": "$1 نے ورقہ $3 دے نسخہ $4 کوں خودکار طور تے گشت کیتا ہویا {{GENDER:$2|نشان زد کیتا}}", "logentry-newusers-create": "صارف کھاتہ $1 {{GENDER:$2|بݨایا ڳیا}}", "logentry-newusers-autocreate": "صارف کھاتہ $1 خودکار طور {{GENDER:$2|تخلیق تھیا}}", "logentry-upload-upload": "$1 {{GENDER:$2|اپلوڈ}} $3", diff --git a/languages/i18n/sl.json b/languages/i18n/sl.json index e3f91ebc40..3997ac7eef 100644 --- a/languages/i18n/sl.json +++ b/languages/i18n/sl.json @@ -1287,6 +1287,7 @@ "recentchanges-legend-heading": "Legenda:", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (glej tudi [[Special:NewPages|seznam novih strani]])", "recentchanges-submit": "Prikaži", + "rcfilters-tag-remove": "Odstrani »$1«", "rcfilters-legend-heading": "Seznam okrajšav:", "rcfilters-other-review-tools": "Druga orodja za pregled", "rcfilters-group-results-by-page": "Združi rezultate po strani", @@ -1299,6 +1300,7 @@ "rcfilters-hours-title": "Pretekle ure", "rcfilters-days-show-days": "$1 {{PLURAL:$1|dan|dneva|dnevi|dni}}", "rcfilters-days-show-hours": "$1 {{PLURAL:$1|ura|uri|ure|ur}}", + "rcfilters-highlighted-filters-list": "Označeno: $1", "rcfilters-quickfilters": "Shranjeni filtri", "rcfilters-quickfilters-placeholder-title": "Shranjena ni še nobena povezava", "rcfilters-quickfilters-placeholder-description": "Da shranite svoje nastavitve filtrov in jih ponovno uporabite pozneje, kliknite na ikono za zaznamek v območju Dejavni filtri spodaj.", @@ -1321,14 +1323,14 @@ "rcfilters-empty-filter": "Ni dejavnih filtrov. Prikazani so vsi prispevki.", "rcfilters-filterlist-title": "Filtri", "rcfilters-filterlist-whatsthis": "Kako to deluje?", - "rcfilters-filterlist-feedbacklink": "Podajte povratne informacije o novih (preizkusnih) filtrih", + "rcfilters-filterlist-feedbacklink": "Povejte nam, kaj menite o teh (novih) orodjih za filtriranje", "rcfilters-highlightbutton-title": "Označi rezultate", "rcfilters-highlightmenu-title": "Izberite barvo", "rcfilters-highlightmenu-help": "Izberite barvo za označitev te lastnosti", "rcfilters-filterlist-noresults": "Nismo našli nobenega filtra", "rcfilters-noresults-conflict": "Našli nismo nobenih rezultatov, ker si merila za iskanje nasprotujejo", "rcfilters-state-message-subset": "Ta filter nima učinka, saj njegove rezultate {{PLURAL:$2|vključuje naslednji, širši filter|vključujeta naslednja, širša filtra|vključujejo naslednji, širši filtri}} (označite jih, da razlikujete med njimi): $1", - "rcfilters-state-message-fullcoverage": "Izbira vseh filtrov v skupini je enako kot izbira nobenega, zato ta filter nima učinka. Skupina vključuje: $1", + "rcfilters-state-message-fullcoverage": "Izbira vseh filtrov v tej skupini je enako kot izbira nobenega, zato ta filter nima učinka. Skupina vključuje: $1", "rcfilters-filtergroup-authorship": "Avtorstvo prispevka", "rcfilters-filter-editsbyself-label": "Vaše spremembe", "rcfilters-filter-editsbyself-description": "Vaša lastna urejanja.", @@ -1367,6 +1369,11 @@ "rcfilters-filter-watchlist-watchednew-description": "Spremembe nadzorovanih strani, ki jih niste obiskali, odkar je prišlo do sprememb.", "rcfilters-filter-watchlist-notwatched-label": "Ni na spisku nadzorov", "rcfilters-filter-watchlist-notwatched-description": "Vse razen spremembe strani na vašem spisku nadzorov.", + "rcfilters-filtergroup-watchlistactivity": "Dejavnost spiska nadzorov", + "rcfilters-filter-watchlistactivity-unseen-label": "Nepregledane spremembe", + "rcfilters-filter-watchlistactivity-unseen-description": "Spremembe strani, ki jih niste obiskali, odkar je prišlo do sprememb.", + "rcfilters-filter-watchlistactivity-seen-label": "Pregledane spremembe", + "rcfilters-filter-watchlistactivity-seen-description": "Spremembe strani, ki ste jih obiskali, odkar je prišlo do sprememb.", "rcfilters-filtergroup-changetype": "Vrsta spremembe", "rcfilters-filter-pageedits-label": "Urejanja strani", "rcfilters-filter-pageedits-description": "Urejanja vsebine wikija, razprav, opisov kategorij ...", @@ -1396,6 +1403,9 @@ "rcfilters-liveupdates-button": "Posodobitve v živo", "rcfilters-liveupdates-button-title-on": "Izklopi posodobitve v živo", "rcfilters-liveupdates-button-title-off": "Prikaži nove spremembe, ko se zgodijo", + "rcfilters-watchlist-markseen-button": "Označi vse spremembe kot pregledane", + "rcfilters-watchlist-edit-watchlist-button": "Uredite svoj seznam nadzorovanih strani", + "rcfilters-watchlist-showupdated": "Spremembe strani, ki jih niste obiskali od zadnje spremembe, so prikazane krepko, z močnimi oznakami.", "rcnotefrom": "{{PLURAL:$5|Navedena je sprememba|Navedeni sta spremembi|Navedene so spremembe}} od $3 $4 dalje (prikazujem jih do $1).", "rclistfromreset": "Ponastavi izbiro datuma", "rclistfrom": "Prikaži spremembe od $3 $2 naprej", @@ -2079,7 +2089,7 @@ "unwatchthispage": "Prenehaj opazovati stran", "notanarticle": "Ni članek", "notvisiblerev": "Redakcija je bila izbrisana", - "watchlist-details": "Na vašem spisku nadzorov {{PLURAL:$1|je $1 stran|sta $1 strani|so $1 strani|je $1 strani}}; pogovorne strani niso štete posebej.", + "watchlist-details": "Na vašem spisku nadzorov {{PLURAL:$1|je $1 stran|sta $1 strani|so $1 strani|je $1 strani}} (plus pogovorne strani).", "wlheader-enotif": "Obveščanje po elektronski pošti je omogočeno.", "wlheader-showupdated": "Strani, spremenjene od vašega zadnjega ogleda, so prikazane '''krepko'''.", "wlnote": "{{PLURAL:$1|Navedena je zadnja|Navedeni sta zadnji|Navedene so zadnje|Navedenih je zadnjih}} $1 {{PLURAL:$1|sprememba|spremembi|spremembe|sprememb}} v {{PLURAL:$2|zadnji $2 uri|zadnjih $2 urah}}, od $3, $4.", diff --git a/languages/i18n/sr-ec.json b/languages/i18n/sr-ec.json index 2546fdceed..6335655f27 100644 --- a/languages/i18n/sr-ec.json +++ b/languages/i18n/sr-ec.json @@ -33,7 +33,8 @@ "Xð", "Matma Rex", "Zoranzoki21", - "Obsuser" + "Obsuser", + "Prevodim" ] }, "tog-underline": "Подвлачење веза:", @@ -414,6 +415,11 @@ "createacct-yourpasswordagain-ph": "Унесите лозинку још једном", "userlogin-remembermypassword": "Остави ме пријављеног/у", "userlogin-signwithsecure": "Користите сигурну конекцију", + "cannotlogin-title": "Пријава није могућа", + "cannotlogin-text": "Пријава није могућа", + "cannotloginnow-title": "Пријава тренутно није могућа", + "cannotloginnow-text": "Пријава није могућа када се користи $1.", + "cannotcreateaccount-title": "Отварање налога није могуће", "yourdomainname": "Домен:", "password-change-forbidden": "Не можете да промените лозинку на овом викију.", "externaldberror": "Дошло је до грешке при препознавању базе података или немате овлашћења да ажурирате свој спољни налог.", @@ -441,6 +447,8 @@ "createacct-reason-ph": "Зашто правите још један налог?", "createacct-submit": "Отвори налог", "createacct-another-submit": "Отвори налог", + "createacct-continue-submit": "Наставите отварање налога", + "createacct-another-continue-submit": "Наставите отварање налога", "createacct-benefit-heading": "{{SITENAME}} је пројекат који стварају људи попут Вас.", "createacct-benefit-body1": "{{PLURAL:$1|измена}}", "createacct-benefit-body2": "{{PLURAL:$1|страница|странице}}", @@ -516,13 +524,28 @@ "changepassword-throttled": "Превише пута сте покушали да се пријавите.\nМолимо вас да сачекате $1 пре него што покушате поново.", "botpasswords": "Лозинке ботова", "botpasswords-disabled": "Лозинке ботова су онемогућене.", + "botpasswords-existing": "Постојећа лозинка бота", + "botpasswords-createnew": "Направи нову лозинку за бота", + "botpasswords-editexisting": "Измени постојећу лозинку за бота", "botpasswords-label-appid": "Име бота:", "botpasswords-label-create": "Направи", "botpasswords-label-update": "Ажурирај", "botpasswords-label-cancel": "Откажи", "botpasswords-label-delete": "Обриши", + "botpasswords-label-resetpassword": "Ресетуј лозинку", "botpasswords-label-grants-column": "Одобрено", + "botpasswords-bad-appid": "„$1” није валидан назив бота.", + "botpasswords-insert-failed": "Неуспешно додавање бота \"$1\". Да ли је већ додат?", + "botpasswords-update-failed": "Није могуће ажурирати бота \"$1\". Да ли је обрисан?", + "botpasswords-created-title": "Направљена лозинка бота", + "botpasswords-created-body": "Лозинка за бота \"$1\" корисника \"$2\" је направљена.", + "botpasswords-updated-title": "Лозинка бота промењена", + "botpasswords-updated-body": "Лозинка за бота \"$1\" корисника \"$2\" је ажурирана.", + "botpasswords-deleted-title": "Обрисана лозинка бота", + "botpasswords-deleted-body": "Лозинка за бота \"$1\" корисника \"$2\" је обрисана.", + "botpasswords-no-provider": "BotPasswordsSessionProvider није доступан.", "resetpass_forbidden": "Лозинка не може бити промењена", + "resetpass_forbidden-reason": "Лозинке није могуће променити: $1", "resetpass-no-info": "Морате бити пријављени да бисте приступили овој страници.", "resetpass-submit-loggedin": "Промени лозинку", "resetpass-submit-cancel": "Откажи", @@ -548,6 +571,10 @@ "passwordreset-emailelement": "Корисничко име: \n$1\n\nПривремена лозинка: \n$2", "passwordreset-emailsentemail": "Ако је ово имејл адреса повезана са Вашим налогом, подсетник о лозинци ће бити послат на имејл.", "passwordreset-emailsentusername": "Ако сте навели имејл адресу приликом регистрације, биће послат имејл за ресетовање лозинке.", + "passwordreset-nocaller": "Позивалац се мора навести", + "passwordreset-nosuchcaller": "Позивалац не постоји: $1", + "passwordreset-invalidemail": "Неисправна имејл адреса", + "passwordreset-nodata": "Корисничко име и адреса е-поште нису наведени", "changeemail": "Промени или уклони имејл адресу", "changeemail-header": "Попуните овај образац да би сте променили Вашу имејл адресу. Ако жели да ускратите приступ било којој имејл адреси Вашем налогу, оставите празно поље за нову имејл адресу приликом попуњавање обрасца.", "changeemail-no-info": "Морате бити пријављени да бисте приступили овој страници.", @@ -640,7 +667,7 @@ "previewnote": "Не заборавите да је ово само претпреглед.\nВаше измене још нису сачуване!", "continue-editing": "Иди на уређивачки оквир", "previewconflict": "Овај преглед осликава како ће текст у текстуалном оквиру изгледати.", - "session_fail_preview": "Извињавамо се! Нисмо могли да обрадимо Вашу измену због губитка података сесије.\n\nМожда сте одјављени. Проверите да ли сте пријављен и покушајте поново.\nАко и даље не ради, покушајте да се [[Special:UserLogout|одјавите]] и поново пријавите и проверите да ли су на Вашем претраживачу дозвољени колачићи са овог сајта.", + "session_fail_preview": "Извињавамо се! Нисмо могли да обрадимо Вашу измену због губитка података сесије.\n\nМожда сте одјављени. Проверите да ли сте пријављени и покушајте поново.\nАко и даље не ради, покушајте да се [[Special:UserLogout|одјавите]] и поново пријавите, те проверите да ли су на Вашем претраживачу дозвољени колачићи са овог сајта.", "session_fail_preview_html": "Нисмо могли да обрадимо вашу измену због губитка података сесије.\n\nБудући да је на овом викију омогућен унос HTML ознака, преглед је сакривен као мера предострожности против напада преко јаваскрипта.\n\nАко сте покушали да направите праву измену, покушајте поново.\nАко и даље не ради, покушајте да се [[Special:UserLogout|одјавите]] и поново пријавите и проверите да ли Ваш претраживач дозвољава колачиће са овог сајта.", "token_suffix_mismatch": "'''Ваша измена је одбачена јер је ваш прегледач убацио знакове интерпункције у новчић уређивања.\nТо се понекад догађа када се користи неисправан посредник.'''", "edit_form_incomplete": "Неки делови обрасца за уређивање нису стигли до сервера. Проверите да ли су ваше измене непромењене и покушајте поново.", @@ -706,6 +733,7 @@ "content-model-css": "CSS", "content-json-empty-object": "Празан објекат", "content-json-empty-array": "Празан низ", + "deprecated-self-close-category": "Странице које користе невалидне самозатварајуће HTML тагове", "duplicate-args-warning": "Упозорење: [[:$1]] позива [[:$2]] са више од једне вредности за параметар „$3“. Само последња наведена вредност ће бити коришћена.", "duplicate-args-category": "Странице с дуплираним аргументима код позива шаблона", "duplicate-args-category-desc": "Страница садржи позиве шаблона који користе двоструке аргументе, као што су {{foo|bar=1|bar=2}} или {{foo|bar|1=baz}}.", @@ -843,6 +871,11 @@ "mergehistory-empty": "Нема измена за спајање.", "mergehistory-done": "$3 {{PLURAL:$3|измена странице $1 је спојена|измене странице $1 су спојене|измена странице $1 је спојено}} у [[:$2]].", "mergehistory-fail": "Не могу да спојим историје. Проверите страницу и временске параметре.", + "mergehistory-fail-bad-timestamp": "Временска ознака није исправна.", + "mergehistory-fail-invalid-source": "Изворна страница није валидна.", + "mergehistory-fail-invalid-dest": "Одредишна страница није валидна.", + "mergehistory-fail-permission": "Немате овлашћење за спајање историје.", + "mergehistory-fail-self-merge": "Изворна и одредишна страница не могу бити исте.", "mergehistory-fail-toobig": "Није могуће спојити историје јер више од $1 {{PLURAL:$1|измене ће бити премештене|измена ће бити премештено}}.", "mergehistory-no-source": "Изворна страница $1 не постоји.", "mergehistory-no-destination": "Одредишна страница $1 не постоји.", @@ -902,6 +935,7 @@ "search-interwiki-caption": "Резултати са сестринских пројеката", "search-interwiki-default": "Резултати са $1:", "search-interwiki-more": "(више)", + "search-interwiki-more-results": "још резултата", "search-relatedarticle": "Повезано", "searchrelated": "повезано", "searchall": "све", @@ -909,6 +943,7 @@ "showingresultsinrange": "Испод {{PLURAL:$1|је приказан 1 резултат|су приказана $1 резултата|је приказано $1 резултата}}, у распону од $2 до $3.", "search-showingresults": "{{PLURAL:$4|Резултат $1 од $3|Резултати $1—$2 од $3}}", "search-nonefound": "Нема поклапања.", + "search-nonefound-thiswiki": "Нема резултата на овом сајту који се поклапају са термином претраге.", "powersearch-legend": "Напредна претрага", "powersearch-ns": "Претрага по именским просторима:", "powersearch-togglelabel": "Изабери:", @@ -918,6 +953,7 @@ "search-external": "Спољна претрага", "searchdisabled": "Претрага је онемогућена.\nУ међувремену можете тражити преко Гугла.\nУпамтите да његови пописи овог викија могу бити застарели.", "search-error": "Дошло је до грешке приликом претраге: $1", + "search-warning": "Упозорење приликом претраге: $1", "preferences": "Подешавања", "mypreferences": "Подешавања", "prefs-edits": "Број измена:", @@ -1053,6 +1089,7 @@ "userrights-expiry": "Истиче:", "userrights-expiry-existing": "Постојеће вријеме истека: $3, $2", "userrights-expiry-othertime": "Друго вријеме:", + "userrights-expiry-options": "1 дан:1 day,1 недеља:1 week,1 месец:1 month,3 месеца:3 months,6 месеци:6 months,1 година:1 year", "userrights-cannot-shorten-expiry": "Не можете убрзати истек чланства у групи „$1”. Само корисници са дозволом да додају или уклоне ову групу могу да убрзају рок истека.", "userrights-conflict": "Сукоб промена корисничких права! Молимо проверите ваше измене.", "group": "Група:", @@ -1080,6 +1117,7 @@ "right-createpage": "прављење страница (изузев страница за разговор)", "right-createtalk": "прављење страница за разговор", "right-createaccount": "отварање нових корисничких налога", + "right-autocreateaccount": "Пријавите се аутоматски са екстерним корисничким налогом", "right-minoredit": "означавање измена мањим", "right-move": "Премештање страница", "right-move-subpages": "премештање страница с њиховим подстраницама", @@ -1151,6 +1189,7 @@ "grant-group-file-interaction": "Уређивање датотека", "grant-group-watchlist-interaction": "Уређивање вашег списка надгледања", "grant-group-email": "Пошаљи имејл", + "grant-group-other": "Разне активности", "grant-blockusers": "Блокирање и деблокирање корисника", "grant-createaccount": "Отварање налога", "grant-createeditmovepage": "Прављење, уређивање и премештање страница", @@ -1163,6 +1202,7 @@ "grant-editprotected": "Уређивање заштићених страница", "grant-highvolume": "Масовно уређивање", "grant-patrol": "Патролирање измена", + "grant-privateinfo": "Приступи приватним информацијама", "grant-protect": "Закључавање и откључавање страница", "grant-rollback": "Враћање измена", "grant-sendemail": "Слање имејлова другим корисницима", @@ -1212,6 +1252,7 @@ "action-userrights-interwiki": "уређивање корисничких права на другим викијима", "action-siteadmin": "закључавање или откључавање базе података", "action-sendemail": "слање имејлова", + "action-editmyoptions": "уређивање ваших подешавања", "action-editmywatchlist": "измену сопственог списак надгледања", "action-viewmywatchlist": "преглед вашег списак надгледања", "action-viewmyprivateinfo": "прегледање ваших личних података", @@ -1220,12 +1261,13 @@ "action-managechangetags": "прављење и (де)активирање ознака", "action-applychangetags": "додавање ознака на ваше измене", "action-changetags": "додавање и уклањање разних ознака на појединачним изменама и уносима у дневницима", + "action-deletechangetags": "Обриши ознаке из базе података", "action-purge": "чишћење привремене меморије ове странице", "nchanges": "$1 {{PLURAL:$1|измена|измене|измена}}", "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|измена од ваше последње посете}}", "enhancedrc-history": "историја", "recentchanges": "Скорашње измене", - "recentchanges-legend": "Поставке скорашњих измена", + "recentchanges-legend": "Опције скорашњих измена", "recentchanges-summary": "Пратите скорашње измене на овој страници.", "recentchanges-noresult": "Нема промена у задатом времену за задате критеријуме.", "recentchanges-feed-description": "Пратите скорашње измене уз помоћ овог довода.", @@ -1237,30 +1279,45 @@ "recentchanges-legend-heading": "Легенда:", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|списак нових страница]])", "recentchanges-submit": "Прикажи", + "rcfilters-tag-remove": "Обриши $1", "rcfilters-legend-heading": "Списак скраћеница:", "rcfilters-other-review-tools": "Остали алати за преглед", + "rcfilters-group-results-by-page": "Групиши резултате по страницама", "rcfilters-grouping-title": "Груписање", "rcfilters-activefilters": "Активни филтери", "rcfilters-advancedfilters": "Напредни филтери", "rcfilters-limit-title": "Приказати измјена", "rcfilters-limit-shownum": "Прикажи посљедњих $1 измјена", + "rcfilters-days-title": "Претходних неколико дана", + "rcfilters-hours-title": "Претходних неколико сати", "rcfilters-days-show-days": "$1 {{PLURAL:$1|дан|дана}}", "rcfilters-days-show-hours": "$1 {{PLURAL:$1|сат|сата}}", + "rcfilters-highlighted-filters-list": "Истакнуто: $1", "rcfilters-quickfilters": "Сачувани филтери", + "rcfilters-quickfilters-placeholder-title": "Везе још увек нису упамћене", "rcfilters-savedqueries-defaultlabel": "Сачувани филтери", "rcfilters-savedqueries-rename": "Преименуј", "rcfilters-savedqueries-setdefault": "Постави као подразумевано", "rcfilters-savedqueries-unsetdefault": "Уклони као подразумевано", "rcfilters-savedqueries-remove": "Уклони", "rcfilters-savedqueries-new-name-label": "Име", + "rcfilters-savedqueries-new-name-placeholder": "Опиши сврху филтера", "rcfilters-savedqueries-apply-label": "Направи филтер", + "rcfilters-savedqueries-apply-and-setdefault-label": "Направи подразумевани филтер", "rcfilters-savedqueries-cancel-label": "Откажи", "rcfilters-savedqueries-add-new-title": "Сачувај тренутне поставке филтера", "rcfilters-restore-default-filters": "Враћање подразумеваних филтера", "rcfilters-clear-all-filters": "Уклони све филтере", "rcfilters-show-new-changes": "Погледајте најновије измене", "rcfilters-search-placeholder": "Филтер скорашњих измјена (претражите или почните куцати)", + "rcfilters-invalid-filter": "Невалидан филтер", "rcfilters-empty-filter": "Нема активних филтера. Сви доприноси су приказани.", + "rcfilters-filterlist-title": "Филтери", + "rcfilters-filterlist-whatsthis": "Како ово функционише?", + "rcfilters-filterlist-feedbacklink": "Дајте повратне информације о новим (бета) филтерима", + "rcfilters-highlightbutton-title": "Истакни резултате", + "rcfilters-highlightmenu-title": "Одабери боју", + "rcfilters-filterlist-noresults": "Нема пронађених филтера", "rcfilters-noresults-conflict": "Није пронађен ниједан резултат јер су критеријуми претраге сукобљени", "rcfilters-state-message-subset": "Овај филтер нема ефекта јер су његови резултати укључени са онима {{PLURAL:$2|следећег, ширег филтера|следећих, ширих филтера}} (покушајте са означавањем да бисте их распознали): $1", "rcfilters-state-message-fullcoverage": "Одабир свих филтера у групи је исто као и одабир ниједног, тако да овај филтер нема ефекта. Група укључује: $1", @@ -1269,6 +1326,7 @@ "rcfilters-filter-editsbyself-description": "Ваши доприноси.", "rcfilters-filter-editsbyother-label": "Измене других", "rcfilters-filter-editsbyother-description": "Све измене осим Ваших.", + "rcfilters-filtergroup-userExpLevel": "Корисничка регистрација и искуство", "rcfilters-filter-user-experience-level-registered-label": "Регистровани", "rcfilters-filter-user-experience-level-registered-description": "Пријављени уредници.", "rcfilters-filter-user-experience-level-unregistered-label": "Нерегистровани", @@ -1283,7 +1341,10 @@ "rcfilters-filter-humans-label": "Човјек (није бот)", "rcfilters-filter-patrolled-label": "Патролирано", "rcfilters-filter-unpatrolled-label": "Непатролирано", + "rcfilters-filtergroup-significance": "Значај", "rcfilters-filter-minor-label": "Мање измјене", + "rcfilters-filter-major-label": "Значајне промене", + "rcfilters-filter-major-description": "Промене означене као значајне.", "rcfilters-filtergroup-watchlist": "Странице на списку надгледања", "rcfilters-filter-watchlist-watched-label": "На списку надгледања", "rcfilters-filter-watchlist-watched-description": "Измене страница на Вашем списку надгледања", @@ -1291,6 +1352,7 @@ "rcfilters-filter-watchlist-watchednew-description": "Измене страница на списку надгледања које нисте посетили од када су направљене измене.", "rcfilters-filter-watchlist-notwatched-label": "Није на списку надгледања", "rcfilters-filter-watchlist-notwatched-description": "Све осим измена страница на Вашем списку надгледања.", + "rcfilters-filtergroup-changetype": "Тип измене", "rcfilters-filter-pageedits-label": "Измјене страница", "rcfilters-filter-pageedits-description": "Измјене вики садржаја, расправа, описа категорија…", "rcfilters-filter-newpages-label": "Стварање страница", @@ -1304,9 +1366,12 @@ "rcfilters-filter-lastrevision-description": "Само најновија измена на страници.", "rcfilters-filter-previousrevision-label": "Раније измене", "rcfilters-filter-previousrevision-description": "Све измене које нису најскорашњије измене странице.", + "rcfilters-filter-excluded": "Изостављено", + "rcfilters-tag-prefix-namespace-inverted": ":није $1", + "rcfilters-exclude-button-off": "Изостави означено", "rcfilters-view-advanced-filters-label": "Напредни филтери", "rcfilters-view-namespaces-tooltip": "Филтер резултата према именском простору", - "rcfilters-view-tags-tooltip": "Филтер резултата према ознаци измјене", + "rcfilters-view-tags-tooltip": "Филтер резултата према ознаци измене", "rcnotefrom": "Испод {{PLURAL:$5|је измена|су измене}} од $3, $4 (до $1 приказано).", "rclistfromreset": "Ресетуј одабир датума", "rclistfrom": "Прикажи нове измене почев од $2 $3", @@ -1667,6 +1732,8 @@ "pageswithprop-legend": "Стране с особином стране", "pageswithprop-text": "Ова страна излистава стране које имају одређену особину", "pageswithprop-prop": "Име особине:", + "pageswithprop-reverse": "Сортирај у супротном редоследу", + "pageswithprop-sortbyvalue": "Сортирај према својствима", "pageswithprop-submit": "Иди", "doubleredirects": "Двострука преусмерења", "doubleredirectstext": "Ова страница приказује странице које преусмеравају на друга преусмерења.\nСваки ред садржи везе према првом и другом преусмерењу, као и одредишну страницу другог преусмерења која је обично „прави“ чланак на кога прво преусмерење треба да упућује.\nПрецртани уноси су већ решени.", @@ -1768,12 +1835,32 @@ "apihelp": "API помоћ", "apihelp-no-such-module": "Модул „$1“ није пронађен.", "apisandbox": "API песак", + "apisandbox-jsonly": "JavaScript је неопходан за коришћење API песка.", "apisandbox-api-disabled": "АПИ је онемогућен на овом сајту.", + "apisandbox-fullscreen": "Прошири панел", + "apisandbox-fullscreen-tooltip": "Прошири панел до величине прозора.", "apisandbox-unfullscreen": "Прикажи страницу", - "apisandbox-submit": "Постави захтев", + "apisandbox-unfullscreen-tooltip": "Смањи панел, како би навигациони линкови били доступни.", + "apisandbox-submit": "Пошаљи захтев", "apisandbox-reset": "Очисти", "apisandbox-retry": "Покушај поново", + "apisandbox-loading": "Учитавање информација за API модул \"$1\"", + "apisandbox-load-error": "Дошло је до грешке приликом учитавања информација за API модул \"$1\": $2", + "apisandbox-no-parameters": "Овај API модул нема параметре.", + "apisandbox-helpurls": "Линкови за помоћ", + "apisandbox-examples": "Примери", + "apisandbox-dynamic-parameters": "Додатни параметри", + "apisandbox-dynamic-parameters-add-label": "Додај параметар:", + "apisandbox-dynamic-parameters-add-placeholder": "Назив параметра", + "apisandbox-dynamic-error-exists": "Параметар под називом \"$1\" већ постоји.", + "apisandbox-deprecated-parameters": "Застарели параметри", + "apisandbox-fetch-token": "Аутоматски попуни токен", + "apisandbox-submit-invalid-fields-title": "Нека поља нису валидна", + "apisandbox-submit-invalid-fields-message": "Молимо Вас поправите означена поља и покушајте поново.", "apisandbox-results": "Резултати", + "apisandbox-sending-request": "Слање API захтева...", + "apisandbox-loading-results": "Пријем API резултата...", + "apisandbox-results-error": "Дошло је до грешке приликом учитавања резултата API упита: $1.", "apisandbox-request-url-label": "Адреса захтева:", "apisandbox-continue": "Настави", "apisandbox-continue-clear": "Очисти", @@ -1895,7 +1982,7 @@ "emailccsubject": "Копија ваше поруке кориснику $1: $2", "emailsent": "Имејл је послат", "emailsenttext": "Ваша имејл порука је послата.", - "emailuserfooter": "Овај имејл је {{GENDER:$1|послао|послала}} $1 {{GENDER:$2|кориснику|корисници}} $2 помоћу „{{int:emailuser}}“ с викија {{SITENAME}}. Ако одговорите на овај имејл, {{GENDER:$2|Ваш}} имејл ће бити непосредно прослеђен ка {{GENDER:$1|првобитном пошиљаоцу}}, чиме ће те {{GENDER:$2|му|јој}} открити {{GENDER:$2|Вашу}} имејл адресу.", + "emailuserfooter": "Овај имејл је {{GENDER:$1|послао|послала}} $1 {{GENDER:$2|кориснику|корисници}} $2 помоћу опције „{{int:emailuser}}“ на викију {{SITENAME}}. Ако одговорите на овај имејл, {{GENDER:$2|Ваш}} имејл ће бити непосредно прослеђен ка {{GENDER:$1|првобитном пошиљаоцу}}, чиме ћете {{GENDER:$2|му|јој}} открити {{GENDER:$2|своју}} имејл адресу.", "usermessage-summary": "Слање системске поруке.", "usermessage-editor": "Уређивач системских порука", "usermessage-template": "MediaWiki:UserMessage", @@ -2091,6 +2178,7 @@ "undelete-search-title": "Претрага обрисаних страница", "undelete-search-box": "Претражи обрисане странице", "undelete-search-prefix": "Прикажи странице које почињу са:", + "undelete-search-full": "Прикажи наслове који садрже:", "undelete-search-submit": "Претражи", "undelete-no-results": "Одговарајућа страница у дневнику брисања није пронађена.", "undelete-filename-mismatch": "Не могу да вратим измену датотеке од $1: назив датотеке се не поклапа", diff --git a/languages/i18n/sr-el.json b/languages/i18n/sr-el.json index 1c752eb63a..64a73534a1 100644 --- a/languages/i18n/sr-el.json +++ b/languages/i18n/sr-el.json @@ -623,7 +623,7 @@ "previewnote": "Ne zaboravite da je ovo samo pretpregled.\nVaše izmene još nisu sačuvane!", "continue-editing": "Idi na uređivački okvir", "previewconflict": "Ovaj pregled oslikava kako će tekst u tekstualnom okviru izgledati.", - "session_fail_preview": "Izvinjavamo se! Nismo mogli da obradimo Vašu izmenu zbog gubitka podataka sesije.\n\nMožda ste odjavljeni. Proverite da li ste prijavljen i pokušajte ponovo.\nAko i dalje ne radi, pokušajte da se [[Special:UserLogout|odjavite]] i ponovo prijavite i proverite da li su na Vašem pretraživaču dozvoljeni kolačići sa ovog sajta.", + "session_fail_preview": "Izvinjavamo se! Nismo mogli da obradimo Vašu izmenu zbog gubitka podataka sesije.\n\nMožda ste odjavljeni. Proverite da li ste prijavljeni i pokušajte ponovo.\nAko i dalje ne radi, pokušajte da se [[Special:UserLogout|odjavite]] i ponovo prijavite, te proverite da li su na Vašem pretraživaču dozvoljeni kolačići sa ovog sajta.", "session_fail_preview_html": "'''Nismo mogli da obradimo vašu izmenu zbog gubitka podataka sesije.'''\n\n''Budući da je na ovom vikiju omogućen unos HTML oznaka, pregled je sakriven kao mera predostrožnosti protiv napada preko javaskripta.''\n\n'''Ako ste pokušali da napravite pravu izmenu, pokušajte ponovo.\nAko i dalje ne radi, pokušajte da se [[Special:UserLogout|odjavite]] i ponovo prijavite.'''", "token_suffix_mismatch": "'''Vaša izmena je odbačena jer je vaš pregledač ubacio znakove interpunkcije u novčić uređivanja.\nTo se ponekad događa kada se koristi neispravan posrednik.'''", "edit_form_incomplete": "Neki delovi obrasca za uređivanje nisu stigli do servera. Proverite da li su vaše izmene nepromenjene i pokušajte ponovo.", @@ -1169,7 +1169,7 @@ "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|izmena od vaše poslednje posete}}", "enhancedrc-history": "istorija", "recentchanges": "Skorašnje izmene", - "recentchanges-legend": "Postavke skorašnjih izmena", + "recentchanges-legend": "Opcije skorašnjih izmena", "recentchanges-summary": "Pratite skorašnje izmene na ovoj stranici.", "recentchanges-noresult": "Nema promena u zadatom vremenu za zadate kriterijume.", "recentchanges-feed-description": "Pratite skorašnje izmene uz pomoć ovog dovoda.", @@ -1783,7 +1783,7 @@ "emailccsubject": "Kopija vaše poruke korisniku $1: $2", "emailsent": "Imejl je poslat", "emailsenttext": "Vaša imejl poruka je poslata.", - "emailuserfooter": "Ovaj imejl je {{GENDER:$1|poslao|poslala}} $1 {{GENDER:$2|korisniku|korisnici}} $2 pomoću „{{int:emailuser}}“ s vikija {{SITENAME}}.", + "emailuserfooter": "Ovaj imejl je {{GENDER:$1|poslao|poslala}} $1 {{GENDER:$2|korisniku|korisnici}} $2 pomoću opcije „{{int:emailuser}}“ na vikiju {{SITENAME}}. Ako odgovorite na ovaj imejl, {{GENDER:$2|Vaš}} imejl će biti neposredno prosleđen ka {{GENDER:$1|prvobitnom pošiljaocu}}, čime ćete {{GENDER:$2|mu|joj}} otkriti {{GENDER:$2|svoju}} imejl adresu.", "usermessage-summary": "Slanje sistemske poruke.", "usermessage-editor": "Uređivač sistemskih poruka", "usermessage-template": "MediaWiki:UserMessage", diff --git a/languages/i18n/su.json b/languages/i18n/su.json index c0076c4461..54e449850c 100644 --- a/languages/i18n/su.json +++ b/languages/i18n/su.json @@ -44,7 +44,7 @@ "tog-shownumberswatching": "Témbongkeun jumlah nu ngawaskeun", "tog-oldsig": "Tawisan anjeun nu nyampak:", "tog-fancysig": "Témbongkeun tanda tangan salaku wikitext (tanpa tutumbu otomatis)", - "tog-uselivepreview": "Paké pratayang langsung", + "tog-uselivepreview": "Pidangkeun pramudan tanpa muat ulang kaca", "tog-forceeditsummary": "Mun kotak ringkesan éditan masih kosong, béjaan!", "tog-watchlisthideown": "Sumputkeun éditan kuring dina daptar awaskeuneun", "tog-watchlisthidebots": "Sumputkeun éditan bot dina daptar awaskeuneun", @@ -308,7 +308,7 @@ "laggedslavemode": "Awas: kandungan kaca bisa baé teu mutahir.", "readonly": "pangkalan data dikonci", "enterlockreason": "Asupkeun alesan pikeun ngonci, kaasup kira-kira iraha konci ieu rék dibuka", - "readonlytext": "pangkalan data kiwar keur di konci pikeun éntri anyar sarta parobahan séjénna, meureun pikeun pangropéa pangkalan datarutin, nu satutasna mah bakal normal deui. Kuncén nu ngonci ngécéskeun kieu:\n\n$1", + "readonlytext": "pangkalan data kiwar keur di konci pikeun éntri anyar sarta parobahan séjénna, meureun pikeun pangropéa pangkalan datarutin, nu satutasna mah bakal normal deui. Sistim kuncén nu ngonci ngécéskeun kieu:\n\n$1", "missing-article": "Pangkalan data teu manggihan téks tina kaca nu sakuduna aya, nyaéta \"$1\" $2.\n\nHal ieu biasana disababkeun ku ayana tutumbu béda atawa jujutan heubeul ka hiji kaca nu geus dihapus.\n\nLamun lain ieu sababna, Anjeun meureun geus manggihan bug dina pakakas lemes.\nMangga laporkeun ha ieu ka salasaurang [[Special:ListUsers/sysop|Kuncén]], bari jeung nyebutkeun alamat URL nu dituju.", "missingarticle-rev": "(révisi#: $1)", "missingarticle-diff": "(Béda: $1, $2)", @@ -347,14 +347,14 @@ "viewsource": "Témbongkeun sumber", "viewsource-title": "Témbongkeun sumber pikeun $1", "actionthrottled": "Peta diwates", - "actionthrottledtext": "Salaku tetengger anti-spam, anjeun teu diwenangkeun loba kitu peta dina jangka waktu anu sakitu heureutna. Mangga lajengkeun deui sanggeus sababaraha menit ka payun.", + "actionthrottledtext": "Anjeun diwatesan pikeun ngalakukeun ieu lalampahan nu loba teuing dina waktu sakeudeung, sarta anjeun geus kaleuleuwihi tina wates nu ditangtukeun. Pék coba deui sanggeus sawatara menit.", "protectedpagetext": "Ieu kaca dijaga tina éditan atawa peta lianna.", "viewsourcetext": "Anjeun bisa nempo sarta néplak sumber ieu kaca.", - "viewyourtext": "Anjeun bisa némbongkeun sarta nyalin sumber '''éditan anjeun''' ka ieu kaca:", + "viewyourtext": "Anjeun bisa némbongkeun sarta nyalin sumber éditan anjeun ka ieu kaca.", "protectedinterface": "Ieu kaca nyadiakeun téks antarmuka pikeun sopwér di ieu wiki, ku kkituna dikonci pikeun nyingkahan \nanu ngaruksak.\nPikeun nambahkeun atawa ngarobah tarjamahan pikeun sakabéh wiki, buka [https://translatewiki.net/ translatewiki.net], proyék lokalisasi MediaWiki.", "editinginterface": "Awas: Anjeun keur ngédit kaca nu dipaké pikeun nyadiakeun téks antarmuka pikeun sopwérna.\nParobahan kana ieu kaca bakal mangaruhan pidangan antarmuka pikeun pamaké séjén di ieu wiki.", "translateinterface": "Pikeun nambahkeun atawa ngarobah tarjamah keur sakabéh wiki, paké [https://translatewiki.net/ translatewiki.net], proyék lokalisasi MediaWiki.", - "cascadeprotected": "Kaca ieu geus dikonci ti éditan alatan disartakeun di {{PLURAL:$1|kaca|kaca-kaca}} katut anu geus dikonci kalawan pilihan \"runtun\": $2", + "cascadeprotected": "Kaca ieu geus dikonci ti éditan alatan ditransklusikeun dina {{PLURAL:$1|kaca|kaca-kaca}} katut anu geus dikonci kalawan pilihan \"runtun\": $2", "namespaceprotected": "Anjeun teu ngabogaan hak pikeun ngédit kaca di ngaranspasi '''$1'''.", "customcssprotected": "Anjeun teu teu diwenangkeun pikeun ngédit ieu kaca CSS, sabab ngandung setélan pribadi kontributor séjén.", "customjsprotected": "Anjeun teu teu diwenangkeun pikeun ngédit ieu kaca JavaScript, sabab ngandung setélan pribadi kontributor séjén.", @@ -364,7 +364,7 @@ "mypreferencesprotected": "Anjeun teu boga kawenangan pikeun ngédit préferénsi anjeun.", "ns-specialprotected": "Kaca dina ngaranspasi {{ns:special}} teu bisa di édit.", "titleprotected": "Ieu judul dikonci ku [[User:$1|$1]] kalawan alesan $2.", - "filereadonlyerror": "Berkas \"$1\" teu bisa dirobah kusabab répositori \"$2\" keur dina mode ukur-maca.\n\nKuncén anu ngonci méré alesan: \"$3\".", + "filereadonlyerror": "Berkas \"$1\" teu bisa dirobah kusabab répositori \"$2\" keur dina mode ukur-maca.\n\nSistim kuncén anu ngonci méré alesan: \"$3\".", "invalidtitle-knownnamespace": "Judul henteu sah kusabab ngandung ngaranspasi \"$2\" jeung téks \"$3\"", "invalidtitle-unknownnamespace": "Judul henteu sah kusabab ngandung angka ngaranspasi $1 jeung tulisan \"$2\"", "exception-nologin": "Henteu asup log", @@ -396,6 +396,7 @@ "cannotloginnow-title": "Teu bisa asup log ayeuna", "cannotloginnow-text": "Kaluar log teu mungkin bisa nalika keur ngagunakeun $1.", "cannotcreateaccount-title": "Teu bisa nyieun akun", + "cannotcreateaccount-text": "Nangtukeun akun langsung teu aktif di ieu wiki.", "yourdomainname": "Domain anjeun", "password-change-forbidden": "Anjeun teu bisa ngarobah kecap sandi dina ieu wiki.", "externaldberror": "Aya kasalahan dina pangkalan data oténtikasi luar, atawa anjeun mémang teu diwenangkeun pikeun ngaropéa akun luar anjeun.", @@ -411,12 +412,14 @@ "userlogin-resetpassword-link": "Poho kecap sandi?", "userlogin-helplink2": "Pitulung asup log", "userlogin-loggedin": "Anjeun geus asup log salaku {{GENDER:$1|$1}}.\nPaké pormulir di handap pikeun asup log salaku pamaké séjén.", + "userlogin-reauth": "Anjeun kudu asup log deui pikeun mariksa yén anjeun téh {{GENDER:$1|$1}}", "userlogin-createanother": "Jieun akun séjén", "createacct-emailrequired": "Alamat surélék:", "createacct-emailoptional": "Alamat surélék (teu wajib)", "createacct-email-ph": "Asupkeun alamat surélék anjeun", "createacct-another-email-ph": "Asupkeun alamat surélék", "createaccountmail": "Paké kecap sandi acak sarta kirim ka alamat surélék", + "createaccountmail-help": "Bisa dipaké pikeun nyieun akun jang batur tanpa kudu nyaho kecap sandina.", "createacct-realname": "Ngaran asli (teu wajib)", "createacct-reason": "Alesan", "createacct-reason-ph": "Naha bet nyieun akun séjén", @@ -438,6 +441,7 @@ "nocookiesnew": "Akun pamaké geus dijieun, tapi anjeun can asup log. {{SITENAME}} maké ''cookies'' pikeun ngalog pamaké. Anjeun boga ''cookies'' nu ditumpurkeun. Mangga fungsikeun, teras asup log migunakeun sandiasma sarta kecap sandi anu anyar.", "nocookieslogin": "{{SITENAME}} migunakeun ''cookies'' pikeun ngasupkeun pamaké kana log. Anjeun boga ''cookies'' nu ditumpurkeun. Mangga pungsikeun sarta cobian deui.", "nocookiesfornew": "Akun pamaké teu bisa dijieun, kusabab sumberna teu bisa dipastikeun.\nPariksa kukisna bisi tumpur, terus cobaan muat ulang ieu kaca.", + "createacct-loginerror": "Akun anjeun geu dijieun, ngan anjeun teu bisa langsung asup log sacara otomatis. Pék tuluykeun kana [[Special:UserLogin|asup log manual]].", "noname": "Anjeun teu nuliskeun ngaran pamaké nu sah.", "loginsuccesstitle": "Geus asup log", "loginsuccess": "Anjeun ayeuna geus asup log ka {{SITENAME}} salaku \"$1\".", @@ -449,6 +453,7 @@ "wrongpasswordempty": "Sandina can kaeusian. Cobaan deui!", "passwordtooshort": "Sandina kudu diwangun ku sahanteuna {{PLURAL:$1|1 karakter|$1 karakter}}.", "passwordtoolong": "Kecap sandi teu bisa leuwih ti {{PLURAL:$1|1 karakter|$1 karakter}}.", + "passwordtoopopular": "Kecap sandi nu guyub teu bisa dipaké. Mangga pilih kecap sandi nu béda.", "password-name-match": "Kecap sandi anjeun kudu béda ti sandiasma.", "password-login-forbidden": "Sandiasma jeung sandina teu bisa dipaké.", "mailmypassword": "Setél ulang kecap sandi", @@ -498,6 +503,7 @@ "changepassword-success": "Kecap sandi Anjeun geus laksana dirobah!", "changepassword-throttled": "Anjeun geus loba teuing nyobaan asup log.\nTungguan $1 méméh nyobaan deui.", "botpasswords": "Kecap sandi bot", + "botpasswords-summary": "Kecap sandi bot ngamumkinkeun aksés kana akun pamaké ngagunakeun API tanpa maké krédensial asup log utama éta akun. Hak pamaké nu nyangkaruk nalika asup log kalawn kecap sandi bot meureun bakal diwatesan.\n\nUpama anjeun teu apal kunaon anjeun mikahayang ieu lalampahan, alusna mah ulah dilakonan. Saenyana euweuh jalma lian nu digaékeun pikeun nyieun sarta nyumerahkeun kecap sandi ieu bot ka manéhna.", "botpasswords-disabled": "Kecap sandi bot dipareuman.", "botpasswords-no-central-id": "Pikeun migunakeun kecap sandi bot, anjeun kudu asup log ka akun museur heula.", "botpasswords-existing": "Kecap sandi bot sayaga", @@ -512,6 +518,7 @@ "botpasswords-label-grants": "Aksés nu dibikeun:", "botpasswords-label-grants-column": "Diwidian", "botpasswords-bad-appid": "Ngaran bot \"$1\" teu sah.", + "botpasswords-insert-failed": "Gagal nambahkeun ngaran bot \"$1\". Éta geus pernah ditambahkeun sugah?", "botpasswords-update-failed": "Gagal nganyarkeun ngaran bot \"$1\". Baheula pernah dipupus kitu?", "botpasswords-created-title": "Kecap sandi bot dijieun", "botpasswords-created-body": "Kecap sandi pikeun ngaran bot \"$1\" ti pamaké \"$2\" geus dijieun.", @@ -519,6 +526,10 @@ "botpasswords-updated-body": "Kecap sandi pikeun ngaran bot \"$1\" ti pamaké \"$2\" geus dianyarkeun.", "botpasswords-deleted-title": "Kecap sandi bot dihapus", "botpasswords-deleted-body": "Kecap sandi pikeun ngaran bot \"$1\" ti pamaké \"$2\" geus dipupus.", + "botpasswords-no-provider": "BotPasswordsSessionProvider teu sayaga.", + "botpasswords-restriction-failed": "Wates kecap sandi ngahalangan ieu asup log.", + "botpasswords-invalid-name": "Ngaran pamaké nu dibikeun teu ngandung pamisah kecap sandi bot (\"$1\").", + "botpasswords-not-exist": "Pamaké \"$1\" teu miboga kecap sandi bot nu ngaranna \"$2\".", "resetpass_forbidden": "Sandi henteu bisa dirobah", "resetpass_forbidden-reason": "Kecap sandi teu bisa diganti: $1", "resetpass-no-info": "Anjeun kudu asup log pkeun bisa muka ieu kaca sacara langsung.", @@ -545,8 +556,10 @@ "passwordreset-emailtext-user": "Pamaké $1 di {{SITENAME}} ménta nyetél ulang sandi anjeun di {{SITENAME}} ($4). {{PLURAL:$3|Akun}} di handap tumali jeung alamat surélék ieu:\n\n$2\n\n{{PLURAL:$3|Ieu sandi saheulaanan}} bakal kadaluwarsa dina témpo {{PLURAL:$5|sapoé|$5 poé}}.\nAnjeun kudu asup sarta milih sandi anyar ayeuna. Lamun henteu rumasa nyieun ieu pamundut atawa lamun geus inget sandi asli sarta moal ngarobah deui, ieu talatah teu kudu dipaliré.", "passwordreset-emailelement": "Sandiasma: \n$1\n\nSandi saheulaanan: \n$2", "passwordreset-emailsentemail": "Mun ieu alamat surélék patalian jeung akun anjeun, mangka surélék pikeun nyetél ulang kecap sandi bakal dikirim.", + "passwordreset-emailsentusername": "Mun ieu alamat surélék patalian jeung akun anjeun, mangka surélék pikeun nyetél ulang kecap sandi bakal dikirim.", "passwordreset-nocaller": "Panggero kudu dibikeun", "passwordreset-nosuchcaller": "Panggero can aya: $1", + "passwordreset-ignored": "Pamulangan kecap sandi teu kasiwer. Sugan panyadia can diatur?", "passwordreset-invalidemail": "Alamat surélék teu sah", "passwordreset-nodata": "Boh ngaran pamaké, boh alamat surélék teu dibéré", "changeemail": "Ganti atawa pupus alamat surélék", @@ -628,7 +641,7 @@ "userpage-userdoesnotexist": "Akun pamaké \"$1\" tacan kadaptar. Mangga riksa lamun anjeun hoyong ngadamel/ngédit ieu kaca.", "userpage-userdoesnotexist-view": "Akun pamaké \"$1\" teu aya dina daptar.", "blocked-notice-logextract": "Ieu pamaké keur dipeungpeuk.\nPikeun rujukan, éntri log panungtung dipidangkeun di handap:", - "clearyourcache": "Catet: Sanggeus nyimpen, anjeun kudu narabas singgahan panyungsi anjeun pikeun nempo parobahanana.\n* Firefox/Safari: Tahan Shift bari ngaklik Reload, atawa pencét boh Ctrl-F5 atawa Ctrl-R (⌘-R dina Mac)\n* Google Chrome: Pencét Ctrl-Shift-R (⌘-Shift-R dina Mac)\n* Internet Explorer: Tahan Ctrl bari ngaklik Refresh, atawa pencét Ctrl-F5\n* Opera: Kosongkeun singgahan dina Tools → Preferences", + "clearyourcache": "Catet: Sanggeus nyimpen, anjeun kudu narabas singgahan panyungsi anjeun pikeun nempo parobahanana.\n* Firefox/Safari: Tahan Shift bari ngaklik Reload, atawa pencét boh Ctrl-F5 atawa Ctrl-R (⌘-R dina Mac)\n* Google Chrome: Pencét Ctrl-Shift-R (⌘-Shift-R dina Mac)\n* Internet Explorer: Tahan Ctrl bari ngaklik Refresh, atawa pencét Ctrl-F5\n* Opera: Indit ka Menu → Settings (Opera → Preferences di Mac) tuluy ka Privacy & security → Clear browsing data → Cached images and files.", "usercssyoucanpreview": "Tip:''' Paké tombol \"{{int:showpreview}}\" pikeun nyobaan CSS anyar anjeun méméh nyimpen.", "userjsyoucanpreview": "Tip:''' Paké tombol \"{{int:showpreview}}\" pikeun nyobaan JavaScript anyar anjeun méméh nyimpen.", "usercsspreview": "'''Inget yén anjeun ukur nyawang css pamaké anjeun, can disimpen!'''", @@ -641,7 +654,7 @@ "previewnote": "'''Inget yén ieu ukur pratayang, can disimpen.'''\nÉditan anjeun can disimpen!", "continue-editing": "Miang ka bagian ngédit", "previewconflict": "Sawangan ieu mangrupa eunteung pikeun téks na rohangan ngédit sakumaha bakal katémbong mun ku anjeun disimpen.", - "session_fail_preview": "'''Punten! Kami teu bisa ngolah éditan anjeun alatan leungitna data rintakan. Mangga cobian deui. Mun tetep teu bisa, cobi kaluar log lajeng lebet deui.'''", + "session_fail_preview": "Hampura, kami teu bisa ngolah éditan anjeun alatan kapupusna data sési.\n\nAjeun meureun geus kaluar log. '''Wayahna riksakeun yén anjeun téh masih asup log kénéh atawa henteu sarta coba sakali deui.'''\nMun masih kénéh teu ngahasil, cobaan [[Special:UserLogout|kaluar log]] tuluy asup log deui, sarta riksakeun yén panyungsi wéb anjeun ngawidian panyimpenan kuki tina ieu situs.", "session_fail_preview_html": "Hampura! Kami teu bisa ngolah éditan anjeun lantaran leungitna data rintakan.\n\nKusabab {{SITENAME}} ngawenangkeun dipakéna HTML atah, pramidangna disumputkeun pikeun nyegah panarajang JavaScript.''\n\nMun ieu éditan bener, mangga cobian deui. Mun tetep teu metu, coba [[Special:UserLogout|kaluar log]] heula, terus asup deui.", "token_suffix_mismatch": "'''Éditan anjeun ditolak sabab aplikasi klien Anjeun ngarobah karakter tanda baca dina éditan. Éditan kasebut ditolak keur nyegah kasalahan dina artikel téks. Hal ieu kadang-kadang kajadian lamun Anjeun maké proksi anonim basis web nu masalah.'''", "edit_form_incomplete": "'''Sawatara bagian tina wangun éditan teu nepi ka sérver; pariksa deui naha éditan Anjeun tetep gembleng sarta cobaan deui.'''", @@ -660,10 +673,10 @@ "copyrightwarning2": "Catet yén sadaya kontribusi ka {{SITENAME}} bisa diédit, dirobah, atawa dihapus ku kontributor séjén. Mun anjeun teu miharep tulisan anjeun dirobah, ulah ngintunkeun ka dieu.
\nAnjeun ogé mastikeun yén ieu téh pituin tulisan anjeun, atawa salinan ti domain umum atawa sumberdaya bébas séjénna (tempo $1 pikeun écésna).\n'''ULAH NGINTUNKEUN KARYA NU MIBANDA HAK CIPTA TANPA WIDI!'''", "editpage-cannot-use-custom-model": "Modél kontén ieu kaca teu bisa dirobah.", "longpageerror": "Éror: téks anu dikirimkeun panjangna {{PLURAL:$1|hiji kilobit|$1 kilobit}}, leuwih ti maksimum {{PLURAL:$2|hiji kilobit|$2 kilobit}}.\nTeu bisa disimpen.", - "readonlywarning": "Awas: pangkalan data dikonci pikeun diropéa, anjeun moal bisa nyimpen éditan anjeun ayeuna.\nMun perlu, simpen heula téksna kana berkas téks pikeun diasupkeun deui séjén mangsa.\n\nKuncén anu ngonci pangkalan data méré katerangan: $1", + "readonlywarning": "Awas: pangkalan data dikonci pikeun diropéa, anjeun moal bisa nyimpen éditan anjeun ayeuna.\nMun perlu, simpen heula téksna kana berkas téks pikeun diasupkeun deui séjén mangsa.\n\nSistim kuncén anu ngonci pangkalan data méré katerangan: $1", "protectedpagewarning": "'''AWAS: ieu kaca dikonci sarta ngan bisa dirobah ku pamaké nu statusna kuncén.'''\nÉntri log panungtungan ditémbongkeun di handap:", "semiprotectedpagewarning": "'''Catetan''': ieu kaca dikonci sarta ukur bisa dirobah ku pamaké nu geus kadaptar.\nÉntri log panungtung dibéréndélkeun di handap:", - "cascadeprotectedwarning": "'''Awas''': ieu kaca dikonci sahingga ukur bisa dirobah ku kuncén, sabab kaasup {{PLURAL:$1|kaca|kaca}} dina panyalindungan-ngaruntuy di handap ieu:", + "cascadeprotectedwarning": "Mangkahadé: Ieu kaca geus ditangtayungan sangkan bisa diédit ku pamaké kalawan [[Special:ListGroupRights|hak aksés tinangtu]] wungkul lantaran ditransklusikeun dina {{PLURAL:$1|kaca|kaca-kaca}} nu ditangtayungan runtuy:", "titleprotectedwarning": "'''Awas: ieu kaca dikonci sarta ngan bisa dijieun ku pamaké anu boga [[Special:ListGroupRights|kawenangan husus]].'''\nÉntri log panungtung dibéréndélkeun di handap:", "templatesused": "{{PLURAL:$1|Citakan|Citakan}} nu dipaké dina ieu kaca:", "templatesusedpreview": "{{PLURAL:$1|Citakan|Citakan}} nu dipaké dina ieu pramidang:", @@ -680,7 +693,7 @@ "permissionserrorstext": "Anjeung teu boga kawenangan pikeun peta kitu, kalawan {{PLURAL:$1|alesan|alesan}} di handap ieu:", "permissionserrorstext-withaction": "Anjeun teu ngabogaan hak keur $2, kusabab {{PLURAL:$1|alesan|alesan}} katut:", "recreate-moveddeleted-warn": "'''Awas: anjeun keur nyieun deui kaca nu geus kungsi dihapus.'''\n\nMangga émutan deui perlu/henteuna nyieun deui ieu artikel.\nPikeun leuwih écés, di handap dibéréndélkeun logna:", - "moveddeleted-notice": "Ieu kaca geus dihapus.\nPikeun rujukan, logna tiasa ditingal di handap ieu.", + "moveddeleted-notice": "Ieu kaca geus dipupus.\nLog pamupusan, panangtayungan, sarta alihan ti éta kaca nyangkaruk di handap ieu minangka rujukan.", "log-fulllog": "Tempo log sakabéhna", "edit-hook-aborted": "Éditan dibolaykeun tanpa pedaran.", "edit-gone-missing": "Kaca teu bisa dianyarkeun,\nsigana kusabab geus dihapus.", @@ -696,6 +709,7 @@ "content-not-allowed-here": "Eusi \"$1\" teu diijinan di kaca [[$2]]", "editwarning-warning": "Ninggalkeun ieu kaca bakal ngaleungitkeun parobahan anu tas dijieun.\nUpama anjeun geus asup log, anjeun bisa numpurkeun ieu talatah dina bagian \"{{int:prefs-editing}}\" préferénsi anjeun.", "editpage-invalidcontentmodel-title": "Modél kontén teu dirojong", + "editpage-invalidcontentmodel-text": "Modél kontén \"$1\" teu dirojong.", "editpage-notsupportedcontentformat-title": "Format eusi teu dirojong", "editpage-notsupportedcontentformat-text": "Format eusi $1 teu dirojong ku modél eusi $2.", "content-model-wikitext": "wikitéks", @@ -717,6 +731,9 @@ "template-loop-category": "Kaca kawalan citakan bulak-balik", "parser-template-recursion-depth-warning": "Citakan patumpang tindih ngaleuwihan wates($1)", "language-converter-depth-warning": "Parobah basa ngaleuwihan wates jerona ($1)", + "node-count-exceeded-category": "Kaca di mana itungan-node kalampau", + "node-count-exceeded-category-desc": "Ieu kaca ngaleuwihan node maksimum.", + "node-count-exceeded-warning": "Kaca nu ngaleuwihan jumlah node", "expansion-depth-exceeded-category": "Kaca-kaca anu jero ékspansina leuwih ti wates", "expansion-depth-exceeded-category-desc": "Kacana ngaleuwihan wates jero ékspansina.", "expansion-depth-exceeded-warning": "Kaca ngaleuwihan jero ékspansi", @@ -832,6 +849,9 @@ "mergehistory-fail-bad-timestamp": "Stémpel waktu teu sah.", "mergehistory-fail-invalid-source": "Kaca sumber teu sah.", "mergehistory-fail-invalid-dest": "Kaca tujuan teu sah.", + "mergehistory-fail-permission": "Izin panggabungan jujutan kaca teu nyumponana.", + "mergehistory-fail-self-merge": "Kaca asal jeung tujulna sarua.", + "mergehistory-fail-timestamps-overlap": "Révisi asal tumpang tindih atawa leuwih anyar batan révisi tujul.", "mergehistory-no-source": "Sumber kaca $1 teu aya.", "mergehistory-no-destination": "Kaca nu dituju ($1) teu aya.", "mergehistory-invalid-source": "Kaca sumber kudu sohéh judulna.", @@ -884,7 +904,8 @@ "search-category": "(kategori $1)", "search-file-match": "(cocog jeung eusi berkas)", "search-suggest": "Meureun maksud Anjeun nyaéta: $1", - "search-interwiki-caption": "Proyék sawargi", + "search-rewritten": "Némbongkeun hasil pikeun $1. Paluruh lain pikeun $2.", + "search-interwiki-caption": "Hasil ti proyék sawargi", "search-interwiki-default": "Hasil ti $1:", "search-interwiki-more": "(saterusna)", "search-interwiki-more-results": "hasil lianna", @@ -895,13 +916,17 @@ "showingresultsinrange": "Di handap dipidangkeun nepi ka {{PLURAL:$1|1 hasil}} ti #$2 nepi ka #$3.", "search-showingresults": "{{PLURAL:$4|Hasil $1 ti $3|Hasil $1 - $2 ti $3}}", "search-nonefound": "Euweuh hasil nu cocog jeung kueri.", + "search-nonefound-thiswiki": "Euweuh hasil nu cocog jeung pamundutan di ieu situs.", "powersearch-legend": "Panéangan tuluy", "powersearch-ns": "Téangan di ngaranspasi:", "powersearch-togglelabel": "Pariksa:", "powersearch-toggleall": "Kabéh", "powersearch-togglenone": "Henteu aya", + "powersearch-remember": "Inget pilihan pikeun pamaluruhan satuluyna", "search-external": "Panéangan luar", "searchdisabled": "Punten! Néangan téks lengkep di {{SITENAME}} kanggo samentawis ditumpurkeun pikeun alesan kinerja. Jalaran kitu, saheulaanan anjeun bisa nyungsi di Google di handap ieu. Catet yén indéxna ngeunaan eusi {{SITENAME}} bisa jadi teu mutahir.", + "search-error": "Aya kesalahan nalika maluruh: $1", + "search-warning": "Aya panginget nalika maluruh: $1", "preferences": "Préferénsi", "mypreferences": "Préferénsi", "prefs-edits": "Jumlah éditan:", @@ -916,10 +941,12 @@ "prefs-watchlist": "Awaskeuneun", "prefs-editwatchlist": "Ropéa awaskeuneun", "prefs-editwatchlist-label": "Ropéa éntri anu aya dina awaskeuneun:", + "prefs-editwatchlist-edit": "Tempo jeung pupus judul di daptar awaskeuneun anjeun", + "prefs-editwatchlist-raw": "Édit daptar awaskeuneun atah", "prefs-editwatchlist-clear": "Bersihan aawaseun anjeun", "prefs-watchlist-days": "Jumlah poé anu ditémbongkeun dina daptar awaskeuneun:", "prefs-watchlist-days-max": "Panglilana $1 {{PLURAL:$1|poé|poé}}", - "prefs-watchlist-edits": "Jumlah parobahan maksimum nu ditémbongkeun dina daptar panjang awaskeuneun:", + "prefs-watchlist-edits": "Jumlah maksimum parobahan nu ditémbongkeun dina daptar awaskeuneun:", "prefs-watchlist-edits-max": "Panglobana: 1000", "prefs-watchlist-token": "Token awaskeuneun:", "prefs-misc": "Pangaturan rupa-rupa", @@ -978,12 +1005,12 @@ "prefs-help-signature": "Pamanggih dina kaca sawala/obrolan kudu ditandaan \"~~~~\" nu bakal robah jadi tanda tangan anjeun jeung titimangsana.", "badsig": "Parafna teu valid; pariksa tag HTML-na geura.", "badsiglength": "Tawis leungeun panjang teuing. Kuduna kurang ti $1 {{PLURAL:$1|karaktér|karaktér}}.", - "yourgender": "Jenis kelamin:", - "gender-unknown": "Moal béja-béja", + "yourgender": "Anjeun leuwih resep didéskripsikeunna kumaha?", + "gender-unknown": "Nalika nyebut anjeun, pakakas lemes bakal ngagunakeun kekecapan nu nétral waktu diperlukeun", "gender-male": "Manéhna ngédit kaca wiki", "gender-female": "Manéhna ngédit kaca wiki", "email": "Surélék", - "prefs-help-realname": "* Ngaran asli (pilihan): mun anjeun milih ngeusian, bakal dipaké pikeun nandaan kontribusi anjeun.", + "prefs-help-realname": "Ngaran asli miwatek opsional.\nMun disayagakeun, ieu ngaran bisa dipaké pikeun méré atribusi kana karya anjeun.", "prefs-help-email": "Surélék sipatna pilihan, tapi diperlukeun pikeun nyetél ulang sandi lamun anjeun poho.", "prefs-help-email-others": "Anjeun ogé bisa milih sangkan bisa disuratan ngaliwatan kaca pamaké atawa obrolan tanpa kudu ngedalkeun saha anjeun sabenerna.", "prefs-help-email-required": "Alamat surélék dibutuhkeun.", @@ -1003,16 +1030,17 @@ "prefs-displaywatchlist": "Pilihan pidangan", "prefs-tokenwatchlist": "Token", "prefs-diffs": "Béda", - "userrights": "Manajemén hak pamaké", - "userrights-lookup-user": "Atur gorombolan pamaké", + "userrights": "Hak pamaké", + "userrights-lookup-user": "Pilih saurang pamaké", "userrights-user-editname": "Asupkeun sandiasma:", "editusergroup": "Muat gorombolan pamaké", - "editinguser": "Ngarobah hak kontributor '''[[User:$1|$1]]''' $2", - "userrights-editusergroup": "Édit gorombolan pamaké", - "saveusergroups": "Simpen Grup Pamaké", + "editinguser": "Ngarobah hak pamaké pikeun {{GENDER:$1|pamaké}} [[User:$1|$1]] $2", + "userrights-editusergroup": "Édit gorombolan {{GENDER:$1|pamaké}}", + "userrights-viewusergroup": "Témbong gorombolan {{GENDER:$1|pamaké}}", + "saveusergroups": "Simpen gorombolan {{GENDER:$1|pamaké}}", "userrights-groupsmember": "Anggota ti:", "userrights-groupsmember-auto": "Anggota implisit ti:", - "userrights-groups-help": "Anjeun bisa ngarobah jumplukan pamaké ieu:\n* Kotak jeung tanda cék mangrupa jumplukan pamaké anu dimaksud\n* Kotak tanpa tanda cék hartosna pamaké ieu lain anggota jumplukan kasebut\n* Tanda * nandakeun yén Anjeun henteu bisa ngabolaykeun jumplukan kasebut lamun Anjeun geus nambahanana, atawa sabalikna.", + "userrights-groups-help": "Anjeun bisa ngarobah jumplukan pamaké ieu:\n* Kotak jeung tanda cék mangrupa jumplukan pamaké anu dimaksud\n* Kotak tanpa tanda cék hartosna pamaké ieu lain anggota jumplukan kasebut\n* Tanda * nandakeun yén Anjeun henteu bisa ngabolaykeun jumplukan kasebut lamun Anjeun geus nambahanana, atawa sabalikna.\n* Tanda # nandakeun yén anjeun ngan ukur bisa malikkeun waktu kadaluwarsa kaanggotaan ini gorombolan, tapi anjeun teu bisa majukeun waktu kadaluwarsana.", "userrights-reason": "Alesan:", "userrights-no-interwiki": "Anjeung teu diwenangkeun ngarobah hak pamaké dina wiki séjén.", "userrights-nodatabase": "Pangkalan data $1 euweuh atawa henteu lokal.", @@ -1021,6 +1049,7 @@ "userrights-expiry-current": "Kadaluwarsa $1", "userrights-expiry-none": "Teu kadaluwarsa", "userrights-expiry": "Kadaluwarsa:", + "userrights-expiry-existing": "Waktu kadaluwarsa kiwari: $3, $2", "userrights-expiry-othertime": "Séjén waktu:", "group": "Gorombolan:", "group-user": "Pamaké", @@ -1060,12 +1089,13 @@ "right-reupload-shared": "Nampik gambar-gambar dina média lokal babarengan", "right-upload_by_url": "Unjal berkas tina alamat URL", "right-purge": "Ngahapus sindangan tina kaca tanpa kaca konfirmasi", - "right-autoconfirmed": "Ngédit kaca nu semi dikonci", + "right-autoconfirmed": "Teu dipangaruhan rate limit nu basis IP", "right-bot": "Anggap salaku prosés otomatis", "right-apihighlimits": "Maké wates leuwih luhur dina kueri API", "right-writeapi": "Maké nulis API", "right-delete": "Ngahapus kaca", "right-bigdelete": "Ngahapus kaca nu loba vérsina", + "right-deletelogentry": "Pupus sarta bolaykeun pamupusan éntri log tinangtu", "right-deleterevision": "Ngahapus jeung ngabolaykeun hapusan révisi kaca", "right-deletedhistory": "Némbongkeun éntri jujutan anu geus dihapus tanpa téxna", "right-deletedtext": "Témbongkeun téks anu dihapus jeung parobahan antara révisi-révisi anu dihapus", @@ -1081,34 +1111,49 @@ "right-unblockself": "buka peungpeuk sorangan", "right-protect": "Ngarobah hambalan protéksi jeung édit kaca anu dikonci", "right-editprotected": "Edit kaca anu dikonci salaku \"{{int:protect-level-sysop}}\"", + "right-editcontentmodel": "Édit modél kontén kaca", "right-editinterface": "Édit antarbenget pamaké", "right-editusercss": "Édit berkas CSS pamaké séjén", "right-edituserjs": "Ngédit berkas JS pamaké séjén", + "right-editmyusercss": "Édit berkas CSS pamaké anjeun", + "right-editmyuserjs": "Édit berkas JavaScript pamaké anjeun", "right-viewmywatchlist": "Tempo awaskeuneun anjeun", "right-viewmyprivateinfo": "Tempo data pribadi anjeun (alamat surélék, ngaran asli)", "right-editmyprivateinfo": "Robah data pribadi anjeun (alamat surélék, ngaran asli)", "right-editmyoptions": "Robah préferénsi anjeun", + "right-markbotedits": "Nandaan pamalikan révisi minangka éditan bot", + "right-noratelimit": "Teu dipangaruhan ku wawatesan jumlah éditan", "right-import": "Ngimpor kaca ti wiki séjén", "right-importupload": "Ngimpor kaca tina hiji koropak nu dimuat", "right-patrol": "Nandaan éditan pamaké séjén minangka geus dipatroli", "right-autopatrol": "Ngédit kalayan status éditan sacara otomatis ditandaan geus dipatroli", "right-patrolmarks": "Tempo panandaan patroli nuanyar robah", + "right-unwatchedpages": "Tempo daptar kaca-kaca nu teu dipariksa", "right-mergehistory": "Ngagabungkeun jujutan kaca", "right-userrights": "Édit kabeh hak pamaké", "right-userrights-interwiki": "Ngédit hak kontributor di wiki lianna", "right-siteadmin": "Ngonci jeung muka konci databés", + "right-override-export-depth": "Ékspor kaca kaasup kaca-kaca patalian nepi ka kalaputan 5", "right-sendemail": "Kirim surélék ka pamaké séjén", + "right-managechangetags": "Jieun sarta pareuman [[Special:Tags|tag]]", + "right-applychangetags": "Tapelkeun [[Special:Tags|tag]] bareng jeun parobahan pamaké", + "right-changetags": "Tambah sarta pupus [[Special:Tags|tag]] arbitrari dina révisi masing-masing jeung éntri log", + "right-deletechangetags": "Pupus [[Special:Tags|tag]] tina basisdata", "grant-generic": "\"$1\" buntel hak aksés", "grant-group-page-interaction": "Interaksi jeung kaca", "grant-group-file-interaction": "Interaksi jeung média", "grant-group-watchlist-interaction": "Interaksi jeung aawaseun anjeun", "grant-group-email": "Kirim surélék", + "grant-group-high-volume": "Ngalampahan aktivitas nu loba pisan", + "grant-group-customization": "Kustomisasi jeung préférénsi", + "grant-group-administration": "Ngalakokan tarékah administratif", "grant-group-private-information": "Aksés data pribadi ngeunaan anjeun", "grant-group-other": "Lalampahan macem-macem", "grant-blockusers": "Peungpeuk sarta teu meungpeuk pamaké", "grant-createaccount": "Jieun akun", "grant-createeditmovepage": "Jieun, édit, jeung alihkeun kaca", "grant-delete": "Pupus kaca, révisi, jeung éntri log", + "grant-editinterface": "Ngédit ngaranspasi MediaWiki sarta CSS/JavaScript pamaké", "grant-editmycssjs": "Édit CSS/JavaScript pamaké anjeun", "grant-editmyoptions": "Édit préférénsi pamaké anjeun", "grant-editmywatchlist": "Édit awaskeuneun anjeun", @@ -1126,15 +1171,17 @@ "grant-basic": "Aksés dasar", "grant-viewdeleted": "Tempo berkas jeung kaca nu dihapus", "grant-viewmywatchlist": "Tempo aawaseun anjeun", + "grant-viewrestrictedlogs": "Tempo éntri log kawates", "newuserlogpage": "Log akun anyar", "newuserlogpagetext": "Di handap ieu béréndélan log pamaké anyar.", "rightslog": "Log hak pamaké", "rightslogtext": "Ieu mangrupa log parobahan hak-hak pamaké.", "action-read": "maca ieu kaca", "action-edit": "édit kaca ieu", - "action-createpage": "mitembeyan kaca anyar", - "action-createtalk": "mitembeyan kaca obrolan", + "action-createpage": "jieun ieu kaca", + "action-createtalk": "jieun ieu kaca sawala", "action-createaccount": "jieun ieu akun pamaké", + "action-autocreateaccount": "jieun otomatis akun pamaké luar", "action-history": "tempo jujutan ieu kaca", "action-minoredit": "nandaan ieu éditan salaku minor", "action-move": "mindahkeun ieu kaca", @@ -1150,14 +1197,17 @@ "action-delete": "ngahapus ieu kaca", "action-deleterevision": "mupus révisi", "action-deletelogentry": "pupus éntri log", - "action-deletedhistory": "nempo jujutan anu geus dihapus ti ieu kaca", + "action-deletedhistory": "nempo jujutan kaca anu geus dihapus", + "action-deletedtext": "témbong téks révisi anu dihapus", "action-browsearchive": "milari kaca nu geus dihapus", - "action-undelete": "ngabolaykeun hapusan ieu kaca", - "action-suppressrevision": "mariksa jeung nyimpen deui ieu révisi nyumput", + "action-undelete": "bolaykeun pamupusan kaca", + "action-suppressrevision": "riksa sarta balikkeun révisi nu disamunikeun", "action-suppressionlog": "nempo ieu log pribadi", "action-block": "meungpeuk ieu pamaké tina ngédit", "action-protect": "ngarobah hambalan konci ieu kaca", + "action-rollback": "geuwat malikkeun éditan-éditan pamaké panungtung nu ngédit kaca tinangtu", "action-import": "impor kaca ti wiki séjén", + "action-importupload": "ngimpor ieu kaca tina pamuatan berkas", "action-patrol": "Nandaan éditan séjén minangka geus diroris", "action-autopatrol": "tandaan éditan anjeun salaku geus diroris", "action-unwatchedpages": "témbongkeun béréndélan kaca nu teu diawaskeun", @@ -1166,11 +1216,18 @@ "action-userrights-interwiki": "ngarobah hak pamaké di wiki lianna", "action-siteadmin": "ngonci atawa muka konci databés", "action-sendemail": "ngirim surélék", + "action-editmyoptions": "édit préférénsi anjeun", "action-editmywatchlist": "robah awaskeuneun anjeun", + "action-viewmywatchlist": "Tempo aawaseun anjeun", "action-viewmyprivateinfo": "tempo émbaran pribadi anjeun", "action-editmyprivateinfo": "robah émbaran pribadi anjeun", + "action-editcontentmodel": "ngédit modél kontén hiji kaca", + "action-managechangetags": "jieun sarta pareuman tag", + "action-applychangetags": "larapkeun tag bareng jeung parobahan anjeun", + "action-deletechangetags": "pupus tag tina basis data", "action-purge": "hapus sindangan ieu kaca", "nchanges": "$1 {{PLURAL:$1|parobahan|parobahan}}", + "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|saprak sorang panungtung}}", "enhancedrc-history": "jujutan", "recentchanges": "Anyar robah", "recentchanges-legend": "Pilihan parobahan anyar", @@ -1185,17 +1242,42 @@ "recentchanges-legend-heading": "Pedaran:", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (tempo ogé [[Special:NewPages|béréndélan kaca anyar]])", "recentchanges-submit": "Témbongkeun", + "rcfilters-tag-remove": "Pupus '$1'", + "rcfilters-legend-heading": "Daptar singgetan:", + "rcfilters-other-review-tools": "Pakakas paninjauan lianna", + "rcfilters-group-results-by-page": "Gorombolkeun hasil dumasar kaca", + "rcfilters-grouping-title": "Gorombolkeun", "rcfilters-activefilters": "Panyaringan aktif", + "rcfilters-advancedfilters": "Panyaringan leuwih jero", + "rcfilters-limit-title": "Parobahan pidangkeuneun", + "rcfilters-limit-shownum": "Pidangkeun {{PLURAL:$1|parobahan|$1 parobahan}} panungtung", + "rcfilters-days-title": "Poé-poé panungtung", + "rcfilters-hours-title": "Jam-jam panungtung", + "rcfilters-days-show-days": "$1 {{PLURAL:$1|sapoé|poé}}", + "rcfilters-days-show-hours": "$1 {{PLURAL:$1|sajam|jam}}", + "rcfilters-highlighted-filters-list": "Disorot: $1", + "rcfilters-quickfilters": "Saringan kasimpen", + "rcfilters-quickfilters-placeholder-title": "Can aya tutumbu kasimpen", + "rcfilters-savedqueries-defaultlabel": "Saringan kasimpen", "rcfilters-savedqueries-rename": "Robah ngaran", + "rcfilters-savedqueries-setdefault": "Atur minangka baku", + "rcfilters-savedqueries-unsetdefault": "Pupus minangka baku", "rcfilters-savedqueries-remove": "Hapus", "rcfilters-savedqueries-new-name-label": "Ngaran", + "rcfilters-savedqueries-new-name-placeholder": "Émbarkeun tujuan ieu panyaringan", + "rcfilters-savedqueries-apply-label": "Nyieun panyaringan", + "rcfilters-savedqueries-apply-and-setdefault-label": "Jieun panyaringan baku", "rcfilters-savedqueries-cancel-label": "Bolay", + "rcfilters-savedqueries-add-new-title": "Simpen pangaturan ieu saringan", "rcfilters-restore-default-filters": "Balikeun panyaringan bawaan", "rcfilters-clear-all-filters": "Pupus sakumna panyaringan", - "rcfilters-search-placeholder": "Sarinh parobahan panganyarna (langlang atawa mimitian ngetik)", + "rcfilters-show-new-changes": "Témbongkeun parobahan panganyarna", + "rcfilters-search-placeholder": "Saring parobahan panganyarna (langlang atawa mimitian ngetik)", "rcfilters-invalid-filter": "Panyaringan teu sah", + "rcfilters-empty-filter": "Euweuh filter aktif. Sakumna kontribusi ditémbongkeun.", "rcfilters-filterlist-title": "Saringan", - "rcfilters-filterlist-whatsthis": "Naon ieu téh?", + "rcfilters-filterlist-whatsthis": "Kumaha bet bisa kieu?", + "rcfilters-filterlist-feedbacklink": "Béré eupan balik pikeun saringan uji coba anyar", "rcfilters-highlightbutton-title": "Hasil sorotan", "rcfilters-highlightmenu-title": "Pilih warna", "rcfilters-highlightmenu-help": "Pilih warna pikeun nyorot ieu properti", @@ -1205,15 +1287,17 @@ "rcfilters-filter-editsbyself-description": "Kontribusi anjeun.", "rcfilters-filter-editsbyother-label": "Éditan ku batur", "rcfilters-filter-editsbyother-description": "Sakumna éditan iwal nu kuring.", - "rcfilters-filtergroup-userExpLevel": "Undakan mahér (pikeun pamaké kadaptar hungkul)", + "rcfilters-filtergroup-userExpLevel": "Padaptaran sarta pangalaman pamaké", "rcfilters-filter-user-experience-level-registered-label": "Kadaptar", - "rcfilters-filter-user-experience-level-registered-description": "Éditor asup log", + "rcfilters-filter-user-experience-level-registered-description": "Éditor asup log.", "rcfilters-filter-user-experience-level-unregistered-label": "Teu kadaptar", "rcfilters-filter-user-experience-level-unregistered-description": "Éditor nu teu asup log.", "rcfilters-filter-user-experience-level-newcomer-label": "Padatang anyar", + "rcfilters-filter-user-experience-level-newcomer-description": "Éditor kadaptar nu miboga éditan kurang ti 10 éditan sarta aktivitas salila 4 poé.", "rcfilters-filter-user-experience-level-learner-label": "Palajar", + "rcfilters-filter-user-experience-level-learner-description": "Éditor kadaptar nu pangalamanna aya di antara \"padatang anyar\" jeung \"pamaké pangpangalaman\".", "rcfilters-filter-user-experience-level-experienced-label": "Pamaké pangpangalaman", - "rcfilters-filter-user-experience-level-experienced-description": "Leuwih ti 30 poé tina aktivitas jeung 500 éditan.", + "rcfilters-filter-user-experience-level-experienced-description": "Éditor kadaptar nu leuwih ti 500 éditan sarta aktivitas salila 30 poé.", "rcfilters-filtergroup-automated": "Kontribusi otomatis", "rcfilters-filter-bots-label": "Bot", "rcfilters-filter-bots-description": "Éditan dipigawé ku parabot otomatis.", @@ -1223,20 +1307,49 @@ "rcfilters-filter-patrolled-label": "Diaawas", "rcfilters-filter-patrolled-description": "Éditan ditandaan geus diaawas.", "rcfilters-filter-unpatrolled-label": "Teu kaawaskeun", - "rcfilters-filter-unpatrolled-description": "Éditan teu ditandaan geus diawaskeun.", + "rcfilters-filter-unpatrolled-description": "Éditan teu ditandaan geus diaawas.", "rcfilters-filtergroup-significance": "Kapentingan", "rcfilters-filter-minor-label": "Éditan minor", + "rcfilters-filter-minor-description": "Éditan nu ditandaan éditor minangka éditan minor.", "rcfilters-filter-major-label": "Lain éditan minor", "rcfilters-filter-major-description": "Éditan teu ditandaan minangka minor.", + "rcfilters-filtergroup-watchlist": "Kaca kaawas", + "rcfilters-filter-watchlist-watched-label": "Dina aawas", + "rcfilters-filter-watchlist-watched-description": "Parobahan kana kaca dina aawaseun anjeun", + "rcfilters-filter-watchlist-watchednew-label": "Parobahan Daptar awaseun anyar.", + "rcfilters-filter-watchlist-notwatched-label": "Teu dina daptar awaseun", + "rcfilters-filter-watchlist-notwatched-description": "Sakabéhna iwal parobahan kana kaca nu diaawas.", + "rcfilters-filtergroup-watchlistactivity": "Aktivitas daptar awaseun", + "rcfilters-filter-watchlistactivity-unseen-label": "Parobahan nu can ditempo", + "rcfilters-filter-watchlistactivity-seen-label": "Parobahan nu geus ditempo", + "rcfilters-filter-watchlistactivity-seen-description": "Parobahan kana kaca-kaca nu geus disorang ku anjeun saprak kajadianna parobahan.", "rcfilters-filtergroup-changetype": "Jinis parobahan", "rcfilters-filter-pageedits-label": "Éditan kaca", + "rcfilters-filter-pageedits-description": "Éditan kana kontén wiki, sawala, déskripsi kategori...", "rcfilters-filter-newpages-label": "Panyieunan kaca", "rcfilters-filter-newpages-description": "Éditan nu nyieun kaca anyar.", "rcfilters-filter-categorization-label": "Parobahan kategori", "rcfilters-filter-logactions-label": "Tarékah kacatet", - "rcfilters-filtergroup-lastRevision": "Révisi kiwari", - "rcfilters-filter-lastrevision-label": "Révisi kiwari", - "rcnotefrom": "Di handap ieu {{PLURAL:$5|parobahan|parobahan}} ti $3, $4 (nepi ka $1 ditémbongkeun).", + "rcfilters-filtergroup-lastRevision": "Révisi panganyarna", + "rcfilters-filter-lastrevision-label": "Révisi panganyarna", + "rcfilters-filter-lastrevision-description": "Ngan parobahan panganyarna di ieu kaca.", + "rcfilters-filter-previousrevision-label": "Lain révisi panganyarna", + "rcfilters-filter-previousrevision-description": "Sakabéh parobahan nu lain mangrupa \"révisi panganyarna\".", + "rcfilters-filter-excluded": "Diiwalkeun", + "rcfilters-tag-prefix-namespace-inverted": ":lain $1", + "rcfilters-exclude-button-off": "Iwalkeun nu dipilih", + "rcfilters-exclude-button-on": "Teu kaasup nu dipilih", + "rcfilters-view-advanced-filters-label": "Panyaringan leuwih jero", + "rcfilters-view-tags": "Éditan ditandaan", + "rcfilters-view-namespaces-tooltip": "Saring hasil dumasar ngarangspasi", + "rcfilters-view-tags-tooltip": "Saring hasil maké tag éditan", + "rcfilters-view-return-to-default-tooltip": "Balik ka menu panyaringan utama", + "rcfilters-liveupdates-button": "Parobahan langsung", + "rcfilters-liveupdates-button-title-on": "Pareuman parobahan langsung", + "rcfilters-liveupdates-button-title-off": "Témbongkeun parobahan anyar nalika éta parobahan prung", + "rcfilters-watchlist-markseen-button": "Tandaan sakumna parobahan minangka katémbong", + "rcfilters-watchlist-edit-watchlist-button": "Édit daptar kaca awaskeuneun anjeun", + "rcnotefrom": "Di handap ieu {{PLURAL:$5|parobahan}} ti $3, $4 (nepi ka $1 ditémbongkeun).", "rclistfromreset": "Rését pilihan kaping", "rclistfrom": "Témbongkeun nu anyar robah nepi ka $3 $2", "rcshowhideminor": "$1 éditan minor", @@ -1296,9 +1409,9 @@ "uploaderror": "Kasalahan muat", "upload-recreate-warning": "'''Awas: berkas nu ngaranna kitu geus kungsi dihapus atawa dipindahkeun.'''\n\nLog hahapus jeung pipindah pikeun ieu kaca dipidangkeun di handap:", "uploadtext": "Gunakeun formulir di handap pikeun ngunjal berkas.\nPikeun midangkeun atawa maluruh berkas anu saméméhna diunjal, sorang [[Special:FileList|daptar berkas]]. Unjalan (ulang) ogé kacatet kana [[Special:Log/upload|log unjalan]], sedengkeun pamupusan mah kacatetna dina [[Special:Log/delete|log pamupusan]].\n\nPikeun midangkeun atawa nerapkeun berkas kana kaca mah migunakeun tutumbu salah sahiji format di handap:\n* '''[[{{ns:file}}:Berkas.jpg]]''' pikeun midangkeun berkas dina ukuran aslina\n* '''[[{{ns:file}}:Berkas.png|200px|thumb|left|téks alternatif]]''' pikeun midangkeun berkas nu rubakna 200px na jero kotak, nitih di kéncaeun kaca bari aya tulisan 'téks alternatif' minangka kamandang gambar\n* '''[[{{ns:media}}:Berkas.ogg]]''' minangka tutumbu langsung kana berkas anu dimaksud tanpa kudu midangkeun éta berkas liwat wiki", - "upload-permitted": "Tipeu koropak nu diwidian: $1.", + "upload-permitted": "{{PLURAL:$2|Jinis}} berkas nu diheugbaékeun: $1.", "upload-preferred": "Tipeu koropak nu dianjurkeun: $1.", - "upload-prohibited": "Tipeu koropak nu dicaram: $1.", + "upload-prohibited": "{{PLURAL:$2|Jinis}} berkas nu dilarang: $1.", "uploadlogpage": "Log unggahan", "uploadlogpagetext": "Di handap mangrupa daptar muatan koropak nu panganyarna. Titimangsa nu katémbong dumasar titimangsa server.", "filename": "Ngaran koropak", @@ -1322,9 +1435,11 @@ "empty-file": "Berkas nu dikirim kosong.", "file-too-large": "Berkas nu dikirim gedé teuing.", "filename-tooshort": "Ngaran berkas pondok teuing.", - "filetype-banned": "Jenis berkas ieu dipahing.", + "filetype-banned": "Jinis berkas ieu dipahing.", "verification-error": "Ieu berkas teu lulus vérifikasi.", + "hookaborted": "Modifikasi nu coba dipilampah ku anjeun dibolaykeun ku hiji kaitan éksténsi.", "illegal-filename": "Ngaran berkas dipahing.", + "overwrite": "Teu diidinan pikeun ngalandih berkas nu geus aya.", "unknown-error": "Aya kasalahan anu teu dikanyahoankeun.", "tmp-create-error": "Teu bisa nyieun berkas sementara.", "tmp-write-error": "Éror nulis berkas sementara.", @@ -1345,6 +1460,7 @@ "copyuploaddisabled": "Unggahan dumasar URL ditumpurkeun.", "uploaddisabledtext": "Fungsi ngamuat koropak ditumpurkeun.", "uploadscripted": "Koropak ieu ngandung kode HTML atawa skrip nu bisa dibaca ngaco ku panyungsi ramat (''web browser'').", + "uploaded-setting-href-svg": "Maké tag \"sét\" pikeun nambahkeun atribut \"href\" kana élemén utama dipeungpeuk.", "uploadinvalidxml": "XML na berkas nu diunjal teu bisa didadarkeun.", "uploadvirus": "Koropakna ngandung virus! Katrangan: $1", "upload-source": "Koropak sumber", @@ -1359,7 +1475,10 @@ "upload-proto-error": "Salah protokol", "upload-file-error": "Kasalahan internal", "upload-misc-error": "Kasalahan muat anu teu kanyahoan", + "upload-too-many-redirects": "URL ngandung loba teuing alihan", "upload-http-error": "Aya galat HTTP: $1", + "upload-copy-upload-invalid-domain": "Unjalan téplakan teu sayaga ti ieu domain.", + "upload-foreign-cant-upload": "Ieu wiki teu diatur pikeun ngunjal berkas ka gudang panyindangan asing.", "upload-dialog-title": "Unjal berkas", "upload-dialog-button-cancel": "Bolay", "upload-dialog-button-back": "Balik deui", @@ -1377,6 +1496,7 @@ "backend-fail-stream": "Teu bisa malidkeun berkas \"$1\"", "backend-fail-backup": "Teu bisa nyadangkeun berkas \"$1\".", "backend-fail-notexists": "Berkas $1 euweuh.", + "backend-fail-hashes": "Teu bisa meunang hash berkas minangka babandingan.", "backend-fail-notsame": "Berkas anu teu-identik geus aya di $1.", "backend-fail-invalidpath": "$1 perenahna henteu absah.", "backend-fail-delete": "Teu bisa ngahapus berkas $1.", @@ -1391,13 +1511,17 @@ "backend-fail-read": "Teu bisa maca berkas $1.", "backend-fail-create": "Teu bisa nulis berkas \"$1\".", "backend-fail-maxsize": "Teu bisa nulis berkas \"$1\" kusabab leuwih ti {{PLURAL:$2|hiji bit|$2 bit}}.", + "backend-fail-connect": "Teu bisa nyambungkeun kana panyimpenan backend \"$1\".", + "backend-fail-internal": "Aya kasalahan nu teu dipikawanoh di backend panyimpenan \"$1\".", "backend-fail-contenttype": "Teu bisa nangtukeun tipeu eusi berkas anu badé disimpen di \"$1\".", "lockmanager-notlocked": "Teu bisa muka konci \"$1\" kusabab teu dikonci.", "lockmanager-fail-closelock": "Teu bisa nutup berkas konci pikeun \"$1\".", "lockmanager-fail-deletelock": "Teu bisa ngahapus berkas konci pikeun \"$1\".", + "lockmanager-fail-acquirelock": "Teu bisa meunang pangoncian pikeun \"$1\"", "lockmanager-fail-openlock": "Teu bisa muka berkas konci pikeun \"$1\".", "lockmanager-fail-releaselock": "Teu bisa ngaleupaskeun konci pikeun \"$1\".", "lockmanager-fail-db-release": "Teu bisa ngaleupaskeun konci dina databés $1.", + "lockmanager-fail-svr-acquire": "Gagal nyokot konci di servér $1.", "lockmanager-fail-svr-release": "Teu bisa ngaleupaskeun konci dina server $1.", "zip-wrong-format": "Berkas anu dipilih lain berkas ZIP.", "uploadstash": "Unjal engkeunan", @@ -1411,7 +1535,7 @@ "img-auth-streaming": "Palidan \"$1\".", "img-auth-noread": "Pamaké teu boga kawenangan maca \"$1\".", "http-invalid-url": "URL teu bener: $1", - "http-invalid-scheme": "URL anu skémana \"$1\" teu karojong", + "http-invalid-scheme": "URL kalawan skéma \"$1\" teu dirojong.", "http-read-error": "Kasalahan maca HTTP.", "http-timed-out": "Pamundutan HTTP béakeun waktu.", "http-curl-error": "Kasalahan keur nyokot URL: $1", @@ -1422,8 +1546,8 @@ "nolicense": "Taya nu dipilih", "licenses-edit": "Robah pilihan lisénsi", "license-nopreview": "(euweuh pramidang)", - "upload_source_url": "(URL nu sohéh sarta bisa dibuka ku umum)", - "upload_source_file": " (koropak dina komputer salira)", + "upload_source_url": "(Anjeun milih berkas ti URL valid nu bisa diaksés publik)", + "upload_source_file": "(berkas pinilih anjeun tina komputer anjeun)", "listfiles-delete": "hapus", "listfiles-summary": "Ieu kaca husus némbongkeun sakabéh berkas anu geus diunggah.", "listfiles_search_for": "Paluruh ngaran média:", @@ -1437,6 +1561,7 @@ "listfiles_size": "Badagna", "listfiles_description": "Pedaran", "listfiles_count": "Vérsi", + "listfiles-show-all": "Kaasup vérsi heubeul gambar", "listfiles-latestversion": "Vérsi ayeuna", "listfiles-latestversion-yes": "Enya", "listfiles-latestversion-no": "Henteu", @@ -1458,11 +1583,13 @@ "imagelinks": "Pamakéan berkas", "linkstoimage": "Kaca ieu {{PLURAL:$1|numbu|$1 numbu}} ka gambar ieu :", "nolinkstoimage": "Teu aya kaca anu nutumbu ka ieu berkas.", + "linkstoimage-redirect": "$1 (pangalihan berkas) $2", "sharedupload": "Ieu koropak téh ti $1 nu bisa jadi dipaké ku proyék-proyék lianna.", "sharedupload-desc-here": "Ieu berkas asalna ti $1 anu bisa jadi dipaké ku proyék séjén. \nPedaran ti [$2 kaca pedaranana] dipidangkeun di handap.", "filepage-nofile": "Taya berkas nu ngaranna kieu.", "uploadnewversion-linktext": "ngamuatkeun vérsi anyar koropak ieu", "shared-repo-from": "ti $1", + "shared-repo": "hiji répositori réréongan", "upload-disallowed-here": "Anjeun teu bisa nimpah ieu berkas.", "filerevert": "balikkeun $1", "filerevert-legend": "Balikkeun gambar", @@ -1494,11 +1621,15 @@ "unwatchedpages": "Kaca nu teu diawaskeun", "listredirects": "Daptar alihan", "listduplicatedfiles": "Daptar berkas duplikat.", + "listduplicatedfiles-summary": "Ieu téh daptar berkas nu mana vérsi panganyarna tina éta berkas mangrupa duplikat tina vérsi panganyarna ti sawatara berkas lian. Ngan berkas lokal nu dianggap mah.", "unusedtemplates": "Citakan nu teu kapaké", "unusedtemplatestext": "Ieu kaca ngabéréndélkeun sakabéh kaca dina rohang ngaran {{ns:template}} anu teu diwengku ku kaca séjén.\nSaméméh ngahapus, pariksa heula bisi aya tumbu ka ieu citakan.", "unusedtemplateswlh": "tutumbu lianna", "randompage": "Kaca acak", - "randompage-nopages": "Euweuh kaca dina ieu spasi ngaran \"$1\".", + "randompage-nopages": "Euweuh kaca dina {{PLURAL:$2|ngaranspasi}} di handap: $1.", + "randomincategory": "Kaca acak dina kategori", + "randomincategory-invalidcategory": "\"$1\" lain ngaran kategori nu lumaku.", + "randomincategory-nopages": "Euweuh kaca dina [[:Category:$1]].", "randomincategory-category": "Kategori:", "randomincategory-legend": "Kaca acak dina kategori", "randomincategory-submit": "Jung", @@ -1519,12 +1650,18 @@ "statistics-users-active": "Pamaké getol", "statistics-users-active-desc": "Kontributor nu ngoprék salila {{PLURAL:$1|poé|$1 poé}} panungtung", "pageswithprop": "Kaca ku kaca properti", + "pageswithprop-legend": "Kaca kalawan kaca properti", + "pageswithprop-text": "Ieu kaca eusina daptar kaca nu ngagunakeun properti kaca tinangtu.", "pageswithprop-prop": "Ngarab properti:", + "pageswithprop-reverse": "Susunkeun dina susunan tibalik", + "pageswithprop-sortbyvalue": "Susunkeun sumasar eusi properti", "pageswithprop-submit": "Jung", + "pageswithprop-prophidden-long": "eusi properti téks panjang nyamuni ($1)", + "pageswithprop-prophidden-binary": "eusi properti binér nyamuni ($1)", "doubleredirects": "Alihan ganda", "doubleredirectstext": "Ieu kaca ngabéréndélkeun kaca-kaca alihan ka kaca alihan lianna. Unggal baris ngandung tutumbu ka alihan kahiji jeung kadua, ogé tujul alihan kadua anu biasana tujul kaca anu \"bener\", anu sakuduna dituju ku alihan kahiji. Ëntri nu dicorét geus diropéa.", - "double-redirect-fixed-move": "[[$1]] geus pindah, dialihkeun ka [[$2]].", - "double-redirect-fixed-maintenance": "Ngoméan alihan ganda ti [[$1]] ka [[$2]].", + "double-redirect-fixed-move": "[[$1]] geus dipindahkeun.\nKami geus nganyarkeunna sacara otomatis jeung deuih kiwari mah jadi kaca alihan ka [[$2]].", + "double-redirect-fixed-maintenance": "Ngomékeun alihan ganda ti [[$1]] ka [[$2]] dina hiji pamulasaraan.", "double-redirect-fixer": "Pangomé alihan", "brokenredirects": "Alihan buntu", "brokenredirectstext": "Alihan di handap numbu ka kaca nu teu aya:", @@ -1557,21 +1694,26 @@ "wantedpages": "Kaca nu dipikabutuh", "wantedpages-badtitle": "Judul teu sah dina kumpulan hasil: $1", "wantedfiles": "Berkas nu dipikabutuh", + "wantedfiletext-nocat-noforeign": "Berkas-berkas di handap téh dipaké, ngan euweuh.", "wantedtemplates": "Citakan nu dipikabutuh", "mostlinked": "Nu panglobana numbu ka kaca séjén", "mostlinkedcategories": "Paling loba ditumbukeun ka kategori", - "mostlinkedtemplates": "Citakan nu panglobana ditumbu", + "mostlinkedtemplates": "Citakan nu panglobana dipaké (ditransklusikeun)", "mostcategories": "Artikel nu paling loba ngandung kategori", "mostimages": "Berkas anu panglobana ditumbukeun", + "mostinterwikis": "Kaca kalawan interwiki panglobana", "mostrevisions": "Artikel nu pangmindengna dirévisi", "prefixindex": "Kabeh kaca maké awalan", + "prefixindex-namespace": "Sakum kaca kalawan awalan (ngaranspasi $1)", "prefixindex-submit": "Témbongkeun", + "prefixindex-strip": "Strip awalan dina daptar", "shortpages": "Kaca-kaca parondok", "longpages": "Kaca-kaca paranjang", "deadendpages": "Kaca buntu", "deadendpagestext": "Kaca-kaca di handap ieu teu numbu ka kaca séjén di {{SITENAME}}:", "protectedpages": "Kaca-kaca nu dikonci", "protectedpages-indef": "Ngan pikeun panangtayungan kalawan waktu nuteu kawates", + "protectedpages-cascade": "Ngan raksaan runtuy", "protectedpages-noredirect": "Sumputkeun pangalihan", "protectedpagesempty": "Dina danget ieu, teu aya kaca nu dikonci dumasar kana ieu paraméter.", "protectedpages-timestamp": "Cap titimangsa", @@ -1611,33 +1753,51 @@ "apihelp": "Pitulung API", "apihelp-no-such-module": "Modul \"$1\" teu kapanggih.", "apisandbox": "Kotrétan API", + "apisandbox-jsonly": "JavaScript diperlukeun pikeun maké kotrétan API.", + "apisandbox-api-disabled": "API dipareuman dina ieu situs.", "apisandbox-fullscreen": "Mekarkeun panél", + "apisandbox-fullscreen-tooltip": "Kembangkeun panel kotrétan pikeun ngeusian jandéla panyungsi.", "apisandbox-unfullscreen": "Témbongkeun kaca", "apisandbox-submit": "Jieun pundutan", "apisandbox-reset": "Bersihan", "apisandbox-retry": "Cobaan deui", "apisandbox-loading": "Muatkeun info pikeun modul API \"$1\"...", + "apisandbox-no-parameters": "Ieu Modul API teu mibanda paraméter.", "apisandbox-helpurls": "Tutumbu pitulung", "apisandbox-examples": "Conto", + "apisandbox-dynamic-parameters": "Paraméter tatambah", "apisandbox-dynamic-parameters-add-label": "Tambah paraméter:", "apisandbox-dynamic-parameters-add-placeholder": "Ngaran paraméter", + "apisandbox-dynamic-error-exists": "Parametér nu ngaranna \"$1\" geus sayaga.", "apisandbox-deprecated-parameters": "Paraméter basi", "apisandbox-fetch-token": "Eusi token kalayan otomatis", "apisandbox-submit-invalid-fields-title": "Sawatara kolom teu sah", + "apisandbox-submit-invalid-fields-message": "Mangga oméan kolom nu ditandaan sarta coba deui.", "apisandbox-results": "Hasil", "apisandbox-sending-request": "Ngirim pundutan API...", "apisandbox-loading-results": "Nampa hasil API...", "apisandbox-request-selectformat-label": "Témbongkeun pundutan data minangka:", + "apisandbox-request-format-url-label": "String kuéri URL", "apisandbox-request-url-label": "URL pundutan:", "apisandbox-request-json-label": "Pundut JSON:", + "apisandbox-request-time": "Wayah pamundutan: {{PLURAL:$1|$1 ms}}", + "apisandbox-results-fixtoken": "Oméan token sarta kirim deui", + "apisandbox-results-fixtoken-fail": "Gagal meunangkeun token \"$1\".", + "apisandbox-alert-page": "Kolom jeung ieu kaca téh teu valid.", + "apisandbox-alert-field": "Niléy dina ieu kolom téh teu valid.", "apisandbox-continue": "Tuluykeun", "apisandbox-continue-clear": "Bersihan", + "apisandbox-param-limit": "Asupkeun max pikeun ngagunakeun wates maksimum.", + "apisandbox-multivalue-all-namespaces": "$1 (Sakum ngaranspasi)", "apisandbox-multivalue-all-values": "$1 (Kabéh ajén)", "booksources": "Sumber pustaka", "booksources-search-legend": "Paluruh sumber buku", "booksources-search": "Paluruh", "booksources-text": "Di handap ieu ngabéréndélkeun tutumbu ka loka-loka nu ngical buku, boh nu anyar atawa loakan, nu sugan uninga kana buku anu nuju dipilari:", "booksources-invalid-isbn": "Sigana ISBN-na teu bener; pariksa deui bisi aya salah téplak ti sumber aslina.", + "magiclink-tracking-rfc": "Kaca ngagunakeun tutumbu magis RFC", + "magiclink-tracking-pmid": "Kaca ngagunakeun tutumbu magis PMID", + "magiclink-tracking-isbn": "Kaca ngagunakeun tutumbu magis ISBN", "specialloguserlabel": "Palaku:", "speciallogtitlelabel": "Sasaran (judul atawa {{ns:user}}:sandiasma pikeun pamaké):", "log": "Log", @@ -1646,6 +1806,8 @@ "alllogstext": "Béréndélan sakabéh log nu aya di {{SITENAME}}.\nBisa dipondokkeun ku cara milih tipe log, ngaran pamaké, atawa kaca nu dimaksud.", "logempty": "Taya item nu cocog dina log.", "log-title-wildcard": "Téangan judul nu dimimitian ku tulisan ieu", + "showhideselectedlogentries": "Robah katempo henteuna éntri log pinilih", + "log-edit-tags": "Édit tag tina éntri log pinilih", "checkbox-select": "Pilih: $1", "checkbox-all": "Sakumna", "checkbox-none": "Kosong", @@ -1662,6 +1824,8 @@ "allpagesbadtitle": "Judul kaca nu dibikeun teu bener atawa mibanda awalan antarbasa atawa antarwiki, nu ngandung karakter nu teu bisa dipaké dina judul.", "allpages-bad-ns": "{{SITENAME}} teu boga spasi ngaran \"$1\".", "allpages-hide-redirects": "Sumputkeun pangalihan", + "cachedspecial-viewing-cached-ttl": "Anjeun nempo vérsi kés ieu kaca, nya meureun geus lilana $1.", + "cachedspecial-viewing-cached-ts": "Anjeun nempo vérsi kés ieu kaca, nya meureun moal bener-bener aktual.", "cachedspecial-refresh-now": "Tempo nu panganyarna.", "categories": "Kategori", "categories-submit": "Témbongkeun", @@ -1674,7 +1838,7 @@ "linksearch-pat": "Pola pamaluruhan:", "linksearch-ns": "Spasi ngaran:", "linksearch-ok": "Paluruh", - "linksearch-text": "''Wildcard'' sarupaning \"*.wikipedia.org\" bisa dipaké.
Protokol nu dirojong: $1", + "linksearch-text": "Tanda béntang kayaning \"*.wikipedia.org\" bisa dipaké.\nPerlu saeutikna hiji domain undak luhur, misalna \"*.org\".
\n{{PLURAL:$2|Protokol}} anu dirojong: $1 (ngagunakeun http:// mun protokol teu ditangtukeun)", "linksearch-line": "$1 ditumbu ti $2", "linksearch-error": "''Wildcard'' ngan bisa némbongan dina awal ngaran indung (''host'').", "listusersfrom": "Témbongkeun kontributor dimimitian ku:", @@ -1683,12 +1847,15 @@ "listusers-blocked": "(diblokir)", "activeusers": "Béréndélan pamaké nu getol", "activeusers-intro": "Ieu béréndélan kontributor anu geus ngoprék $1 {{PLURAL:$1|poé|poé}} panungtung.", - "activeusers-count": "$1 {{PLURAL:$1|édit|édit}}an salila {{PLURAL:$3|poé|$3 poé}} panungtung", + "activeusers-count": "$1 {{PLURAL:$1|aktivitas}} dina {{PLURAL:$3|1 hari|$3 hari}} panungtung", "activeusers-from": "Témbongkeun kontributor dimimitian ku:", + "activeusers-groups": "Témbongkeun pamaké nu kaasup gorombolan:", + "activeusers-excludegroups": "Samunikeun pamaké nu kaasup gorombolan:", "activeusers-noresult": "Teu kapendak.", + "activeusers-submit": "Témbongkun pamaké aktif", "listgrouprights": "Hak-hak grup pamaké", "listgrouprights-summary": "Ieu mangrupa daptar jumplukan pamaké anu aya di wiki ieu, kalawan daptar hak aksés maranéhanana.\nÉmbaran leuwih luyu ngeunaan hak pamaké bisa ditingali di [[{{MediaWiki:Listgrouprights-helppage}}|dieu]].", - "listgrouprights-key": "* Hak anu dipimilik\n* Hak anu dicabut", + "listgrouprights-key": "Jujutan:\n* Hak anu dipimilik\n* Hak anu dicabut", "listgrouprights-group": "Jumplukan", "listgrouprights-rights": "Hak", "listgrouprights-helppage": "Help:Hak Jumplukan", @@ -1701,6 +1868,9 @@ "listgrouprights-removegroup-self": "Piceun {{PLURAL:$2|grup|grups}} ti akun sorangan: $1", "listgrouprights-addgroup-self-all": "Tambahkeun sakabéh grup ka akun sorangan", "listgrouprights-removegroup-self-all": "Piceun sakabéh grup ti akun sorangan", + "listgrouprights-namespaceprotection-header": "Watesan ngaranspasi", + "listgrouprights-namespaceprotection-namespace": "Ngaranspasi", + "listgrouprights-namespaceprotection-restrictedto": "Hak nu ngawidian pamaké pikeun ngédit", "listgrants": "Idin", "listgrants-grant": "Idin", "listgrants-rights": "Hak", @@ -1708,6 +1878,7 @@ "trackingcategories-msg": "Kategori palacak", "trackingcategories-name": "Ngaran talatah", "trackingcategories-desc": "Kritéria inklusi kategori", + "restricted-displaytitle-ignored": "Kaca-kaca kalawan pangantepan pidangan judul", "trackingcategories-nodesc": "Taya pedaran nu sayaga", "trackingcategories-disabled": "Kategori dipareuman", "mailnologin": "Euweuh alamat ngirim", @@ -1737,7 +1908,7 @@ "emailsent": "Surélék geus dikirim", "emailsenttext": "Surélék anjeun geus dikirim.", "emailuserfooter": "Ieu surélék dikirim ku $1 ka $2 migunakeun fungsi \"Surélékan pamaké ieu\" di {{SITENAME}}.", - "usermessage-summary": "Ninggalkeun talatah sistem.", + "usermessage-summary": "Ninggalkeun talatah sistim.", "usermessage-editor": "Talatah sistim", "watchlist": "Awaskeuneun", "mywatchlist": "Awaskeuneun", @@ -1747,6 +1918,7 @@ "watchnologin": "Can asup log", "addwatch": "Tambahkeun ka aawaseun", "addedwatchtext": "Kaca \"[[:$1]]\" geus ditambahkeun ka [[Special:Watchlist|awaskeuneun]] anjeun.\nJaga, parobahan na kaca ieu katut kaca obrolanana bakal dibéréndélkeun di dinya, sarta kacana bakal katémbong '''dikandelan''' dina kaca [[Special:RecentChanges|Nu anyar robah]] sangkan leuwih gampang ngawaskeunana.\n\n

Mun jaga anjeun moal deui ngawaskeun parobahan na kaca éta, klik tumbu \"Eureun ngawaskeun\" na lajursisi.", + "addedwatchtext-short": "Kaca \"$1\" geus ditambahkeun kana daptar aawaseun anjeun.", "removewatch": "Piceun tina béréndélan awaskeuneun", "removedwatchtext": "Kaca \"[[:$1]]\" geus dikaluarkeun tina [[Special:Watchlist|daptar awaskeuneun]] anjeun.", "removedwatchtext-short": "Kaca \"$1\" geus dipiceun tina béréndélan awaskeuneun.", @@ -1757,10 +1929,10 @@ "notanarticle": "Sanés kaca eusi", "notvisiblerev": "Révisi geus dihapus", "watchlist-details": "Aya {{PLURAL:$1|$1 kaca|$1 kaca}} dina béréndélan awaskeuneun, teu kaasup kaca obrolan/sawala.", - "wlheader-enotif": "Pangémbar surélék difungsikeun.", + "wlheader-enotif": "Iber surélék diaktifkeun.", "wlheader-showupdated": "Kaca nu robah ti panungtungan anjeun sindang ditémbongkeun kalawan '''kandel'''", "wlnote": "Di handap ieu mangrupa $1 {{PLURAL:$1|robahan|robahan}} ahir salila '''$2''' jam.", - "wlshowlast": "Témbongkeun $1 jam $2 poé ahir", + "wlshowlast": "Témbongkeun $1 jam $2 poé panungtung", "watchlist-hide": "Sumputkeun", "watchlist-submit": "Témbongkeun", "wlshowtime": "Periodeu waktu ajang dipidangkeun:", @@ -1781,12 +1953,13 @@ "enotif_lastdiff": "Pikeun nempo parobahan, ilikan $1", "enotif_anon_editor": "pamaké anonim $1", "enotif_body": "Sadérék $WATCHINGUSERNAME,\n\nKaca $PAGETITLE na {{SITENAME}} geus $CHANGEDORCREATED tanggal $PAGEEDITDATE ku $PAGEEDITOR. Mangga tingal {{SERVER}}{{localurl:$PAGETITLE}} pikeun vérsi kiwari.\n\n$NEWPAGE\n\nRingkesan éditor: $PAGESUMMARY $PAGEMINOREDIT\n\nKontak éditor:\nsurat {{SERVER}}{{localurl:Husus:Emailuser|target=$PAGEEDITOR}}\nwiki {{SERVER}}{{localurl:Pamaké:$PAGEEDITOR}}\n\nMun anjeun teu sindang deui ka ieu kaca, parobahan salajengna moal diémbarkeun. Anjeun bisa ogé nyetél deui umbul-umbul pikeun sadaya kaca nu aya na daptar awaseun anjeun.\n\n Sistim émbaran {{SITENAME}} pikeun anjeun\n\n--\nPikeun ngarobah setélan dabtar awaseun anjeun, sindang ka {{SERVER}}{{localurl:Husus:Watchlist|edit=yes}}\n\nAsupan jeung bantuan salajengna:\n$HELPPAGE", + "enotif_minoredit": "Ieu mah éditan minor", "created": "geus dijieun", "changed": "geus robah", "deletepage": "Hapus kaca", "confirm": "Konfirmasi", "excontent": "eusina nu heubeul: '$1'", - "excontentauthor": "eusina: \"$1\" (nu ditulis ku \"[[Special:Contributions/$2|$2]]\" wungkul)", + "excontentauthor": "eusina ngan mangrupa: \"$1\", sarta hiji-hijina kontributor téh nyaéta \"[[Special:Contributions/$2|$2]]\" ([[User talk:$2|obrolan]])", "exbeforeblank": "eusi méméh dikosongkeun nyéta: '$1'", "delete-confirm": "Hapus \"$1\"", "delete-legend": "Hapus", @@ -1807,10 +1980,13 @@ "delete-edit-reasonlist": "Alesan ngahapus éditan", "delete-toobig": "Jujutan édit ieu kaca panjang pisan, leuwih ti {{PLURAL:$1|révisi|révisi}}.\nHal ieu teu diwenangkeun pikeun nyegah karuksakan {{SITENAME}} nu teu dihaja.", "delete-warning-toobig": "Jujutan ieu kaca panjang pisan, leuwih ti{{PLURAL:$1|révisi|révisi}}. Dihapusna ieu kaca bisa ngaruksak jalanna pangkalan data {{SITENAME}}; sing ati-ati.", + "deleteprotected": "Anjeun teu bisa mupus ieu kaca lantaran geus ditangtayungan.", "rollback": "Balikkeun éditan", "rollbacklink": "balikkeun", "rollbacklinkcount": "balikkeun $1 {{PLURAL:$1|éditan}}", + "rollbacklinkcount-morethan": "balikkeun leuwih ti $1 {{PLURAL:$1|saéditan|éditan}}", "rollbackfailed": "Gagal malikkeun", + "rollback-missingparam": "Paraméter diperlukeun nalika dupundut teu sayaga.", "rollback-missingrevision": "Teu bisa muatkeun révisi data.", "cantrollback": "Éditan teu bisa dibalikkeun; kontribusi panungtung ngarupakeun hiji-hijina panulis kaca ieu.", "alreadyrolled": "Teu bisa mulangkeun édit ahir [[$1]] ku [[User:$2|$2]] ([[User talk:$2|Obrolan]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); geus aya nu ngédit atawa mulangkeun kacana.\n\nÉdit ahir ku [[User:$3|$3]] ([[User talk:$3|Obrolan]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).", @@ -1819,13 +1995,17 @@ "rollback-success": "Mulangkeun éditan $1; balik deui ka vérsi panungtung ku $2.", "sessionfailure-title": "Kagagalan sési", "sessionfailure": "Sigana aya masalah jeung termin log anjeun; peta ieu geus dibolaykeun salaku pépéling pikeun ngalawan ayana pangbajak. Mangga pencét \"back\" jeung muat ulang ti kaca asal anjeun, lajeng cobaan deui.", + "changecontentmodel": "Robah modél kontén hiji kaca", "changecontentmodel-legend": "Robah modél kontén", "changecontentmodel-title-label": "Judul kaca", "changecontentmodel-model-label": "Modél kontén anyar", "changecontentmodel-reason-label": "Alesan:", "changecontentmodel-submit": "Parobahan", "changecontentmodel-success-title": "Modél ieu kontén geus dirobah", + "changecontentmodel-success-text": "Jinis kontén [[:$1]] geus dirobah", + "changecontentmodel-nodirectediting": "Modél kontén $1 teu ngarojong éditan langsung", "changecontentmodel-emptymodels-title": "Taya modél kontén nu sayaga", + "changecontentmodel-emptymodels-text": "Kontén dina [[:$1]] teu bisa dirobah kana jinis lian.", "log-name-contentmodel": "Log parobahan modél kontén", "logentry-contentmodel-change-revertlink": "balikkeun", "logentry-contentmodel-change-revert": "balikkeun", @@ -1836,13 +2016,16 @@ "unprotectedarticle": "muka konci tina \"[[$1]]\"", "protectedarticle-comment": "{{GENDER:$2|Nangtayungan}} \"[[$1]]\"", "protect-title": "Ngonci \"$1\"", + "protect-title-notallowed": "Tempo undak panangtayungan ti \"$1\"", "prot_1movedto2": "mindahkeun [[$1]] ka [[$2]]", + "protect-badnamespace-title": "Ngaranspasi nu teu bisa ditangtayungan", "protect-norestrictiontypes-title": "Kaca nu teu karaksa", "protect-legend": "Konfirmasi ngonci", "protectcomment": "Alesan:", "protectexpiry": "Kadaluwarsa", "protect_expiry_invalid": "Waktu kadaluwarsa teu sah.", "protect_expiry_old": "Waktu kadaluwarsa geus kaliwat.", + "protect-unchain-permissions": "Aktifkeun opsi panangtayungan lanjutan", "protect-text": "Di dieu anjeun bisa nempo sarta ngarobah hambalan pangonci pikeun kaca '''$1'''.", "protect-locked-blocked": "Anjeun teu bisa ngarobah hambalan koncian sabab keur dipeungpeuk. Setélan ayeuna pikeun kaca '''$1''' nyaéta:", "protect-locked-access": "Akun anjeun teu wenang ngarobah hambalan pangonci kaca.\nSetélan kiwari pikeun kaca $1:", @@ -1850,7 +2033,7 @@ "protect-default": "Bisa ku sakabeh pamaké", "protect-fallback": "Ngan pikeun pamaké kalawan idin \"$1\"", "protect-level-autoconfirmed": "Peungpeuk pamaké anyar jeung nu teu daptar", - "protect-level-sysop": "Ngan bisa ku kuncén", + "protect-level-sysop": "Ngan pikeun kuncén", "protect-summary-cascade": "ngaruntuykeun", "protect-expiring": "kadaluwarsa $1", "protect-expiring-local": "kadaluwarsa $1", @@ -1900,6 +2083,7 @@ "undelete-search-title": "Paluruh kaca kahapus", "undelete-search-box": "Téang kaca nu dihapus", "undelete-search-prefix": "Témbongkeun kaca dimimitian ku", + "undelete-search-full": "Témbongkeun judul kaca nu ngandung:", "undelete-search-submit": "Téang", "undelete-no-results": "Euweuh kaca nu cocog dina arsip hapusan.", "undelete-filename-mismatch": "Hanteu bisa ngabolaykeun hapusan révisi berkas titimangsa $1: ngaran berkas teu cocog.", @@ -1986,23 +2170,28 @@ "ipb-unblock-addr": "Buka peungpeuk $1", "ipb-unblock": "Nyabut peungpeuk pamaké atawa alamat IP", "ipb-blocklist": "Tempo peungpeuk nu diteurapkeun", - "ipb-blocklist-contribs": "Ilubiung $1", + "ipb-blocklist-contribs": "Kontribusi pikeun {{GENDER:$1|$1}}", "ipb-blocklist-duration-left": "Nyésa $1", "unblockip": "Buka peungpeuk pamaké", "unblockiptext": "Paké formulir di handap pikeun mulangkeun aksés nulis ka alamat IP atawa ngaran pamaké nu saméméhna dipeungpeuk.", - "ipusubmit": "Buka peungpeuk pikeun pamaké ieu", + "ipusubmit": "Pupus ieu peungpeukan", "unblocked": "peungpeuk ka [[User:$1|$1]] geus dicabut", "unblocked-range": "$1 geus teu dipeungpeuk", "unblocked-id": "peungpeuk $1 geus dicabut", + "unblocked-ip": "Pameungpeukan [[Special:Contributions/$1|$1]] geus dicabut.", "blocklist": "Kontributor nu dipeungpeuk", "autoblocklist": "Otomatis peungpeuk", "autoblocklist-submit": "Paluruh", "autoblocklist-legend": "Daptar otomatis peungpeuk", "autoblocklist-localblocks": "{{PLURAL:$1|Otomatis peungpeuk}} lokal", + "autoblocklist-total-autoblocks": "Total peungeukan otomatis: $1", + "autoblocklist-empty": "Daptar peungpeukan otomatis kosong.", + "autoblocklist-otherblocks": "{{PLURAL:$1|Sapeungpeukan otomatis|Peungpeukan otomatis}} lianna", "ipblocklist": "Pamaké nu dipeungpeuk", "ipblocklist-legend": "Téang pamaké nu dipeungpeuk", "blocklist-userblocks": "Sumputkeun peungpeukan akun", "blocklist-tempblocks": "Sumputkeun peungpeukan saheulaanan", + "blocklist-addressblocks": "Sumputkeun pameungpeukan IP tunggal", "blocklist-timestamp": "Cap titimangsa", "blocklist-target": "Udagan", "blocklist-expiry": "Kadaluwarsa", @@ -2037,20 +2226,24 @@ "block-log-flags-noautoblock": "meungpeuk otomatis dipaéhan", "block-log-flags-noemail": "surélek di peungpeuk", "block-log-flags-nousertalk": "teu bisa ngédit kaca obrolan sorangan", + "block-log-flags-angry-autoblock": "ronjatan sistim pameungpeukan otomatis geus dihurungkeun", "block-log-flags-hiddenname": "sandiasma disumputkeun", "range_block_disabled": "Pangabisa kuncén pikeun nyieun sarupaning peungpeuk geus ditumpurkeun.", "ipb_expiry_invalid": "Wanci daluwarsa teu bener.", + "ipb_expiry_old": "Waktu kadaluwarsana mah baheula.", "ipb_already_blocked": "\"$1\" geus dipeungpeuk", "ipb-needreblock": "$1 geus dipeungpeuk. Rék dirobah sétinganana?", "ipb-otherblocks-header": "{{PLURAL:$1|Peungpeuk|Peungpeuk}} lianna", "unblock-hideuser": "Anjeun teu bisa muka peungpeuk ieu pamaké, kusabab landihanan keur disumputkeun.", "ipb_cant_unblock": "Éror: ID peungpeuk $1 teu kapanggih. Sigana mah geus dibuka.", "ip_range_invalid": "Angka IP teu bener.", + "ip_range_toolarge": "Panteng blok leuwih badag tibatan /$1 teu diheugbaékeun.", "proxyblocker": "Pameungpeuk proxy", "proxyblockreason": "Alamat IP anjeun dipeungpeuk sabab mangrupa proxy muka. Mangga tepungan ''Internet service provider'' atanapi ''tech support'' anjeun, béjakeun masalah serius ieu.", "sorbsreason": "Alamat IP anjeun kadaptar salaku ''open proxy'' dina DNSBL anu dipaké ku {{SITENAME}}.", "sorbs_create_account_reason": "Alamat IP anjeun kadaptar salaku ''open proxy'' dina DNSBL. Anjeun teu bisa nyieun akun", "ipbblocked": "Anjeun teu bisa meungpeuk atawa muka peungpeuk séjén kontributor ku sabab anjeun sorangan keur dipeungpeuk", + "ipbnounblockself": "Anjeun teu diidinan pikeun muka peungpeukan sorangan.", "lockdb": "Konci pangkalan data", "unlockdb": "Buka konci pangkalan data", "lockdbtext": "Ngonci gudang data bakal numpurkeun kabisa sakabéh pamaké pikeun ngédit kaca, ngarobah préferénsina, ngédit awaskeuneunana, sarta hal séjén nu merlukeun parobahan na gudang data. Konfirmasikeun yén ieu nu dimaksud ku anjeun, sarta anjeun bakal muka konci gudang data nalika pangropéa anjeun geus réngsé.", @@ -2073,12 +2266,19 @@ "movenologintext": "Anjeun kudu jadi pamaké nu kadaptar tur [[Special:UserLogin|asup log]] pikeun mindahkeun kaca.", "movenotallowed": "Anjeung teu boga kawenangan mindahkeun kaca.", "movenotallowedfile": "Anjeung teu boga kawenangan mindahkeun kaca.", + "cant-move-user-page": "Anjeun teu miboga hak aksés pikeun ngalihkeun kaca pamaké (misah ti subkaca).", + "cant-move-to-user-page": "Anjeun teu miboga hak aksés pikeun ngalihkeun kaca ka hiji kaca pamaké (iwal ka subkaca pamaké).", + "cant-move-category-page": "Anjeun teu miboga hak aksés pikeun ngalihkeun kaca kategori.", + "cant-move-to-category-page": "Anjeun teu miboga hak aksés pikeun ngalihkeun kaca ka kaca kategori.", + "cant-move-subpages": "Anjeun teu miboga hak aksés pikeun ngalihkeun subkaca.", + "namespace-nosubpages": "Ngaranspasi \"$1\" teu ngidinan subkaca.", "newtitle": "Judul anyar:", "move-watch": "Awaskeuneun kaca ieu", "movepagebtn": "Pindahkeun kaca", "pagemovedsub": "Mindahkeun geus hasil!", "movepage-moved": "'''\"$1\" geus dipindahkeun ka \"$2\"'''", "movepage-moved-redirect": "Alihan geus dijieunkeun.", + "movepage-moved-noredirect": "Panyieunan alihan geus diteken.", "articleexists": "Kaca nu ngaranna kitu geus aya, atawa ngaran nu dipilih ku anjeun teu sah. Mangga pilih ngaran séjén.", "cantmove-titleprotected": "Anjeun teu bisa mindahkeun kaca ka dieu, sabab éta judul dikonci", "movetalk": "Mun bisa, kaca \"obrolan\" ogé pindahkeun.", @@ -2103,6 +2303,7 @@ "immobile-source-page": "Ieu kaca teu bisa dipindahkeun.", "immobile-target-page": "Teu bisa mindahkeun ka judul nu ditujul.", "imagenocrossnamespace": "Teu bisa mindahkeun gambar ka rohangan ngaran nu lain gambar", + "nonfile-cannot-move-to-file": "Teu bisa ngalihkeun non-berkas ka ngaranspasi", "imagetypemismatch": "Éksténsi berkas anyar teu cocog jeung tipena", "imageinvalidfilename": "Ngaran berkas tujuan teu sah", "fix-double-redirects": "Hadéan sakabéh alihan ganda nu mungkin kajadian", @@ -2117,9 +2318,11 @@ "export-submit": "Ékspor", "export-addcattext": "Tambahkeun kaca tina kategori:", "export-addcat": "Tambahkeun", + "export-addnstext": "Tambahkeun kaca ti ngaranspasi:", "export-addns": "Tambahkeun", "export-download": "Simpen salaku berkas", "export-templates": "Kaasup citakan", + "export-pagelinks": "Sartakeun kaca patali nepi ka kajeroan:", "export-manual": "Tambahkeun kaca manual:", "allmessages": "Talatah sistim", "allmessagesname": "Ngaran", @@ -2128,6 +2331,7 @@ "allmessagestext": "Ieu mangrupa daptar talatah sistim nu aya na spasi ngaran MediaWiki:.", "allmessagesnotsupportedDB": "Kaca ieu teu dirojong sabab '''$wgUseDatabaseMessages''' pareum.", "allmessages-filter-legend": "Ayakan", + "allmessages-filter": "Saring ku kaayaan kustomisasi:", "allmessages-filter-unmodified": "Teu diropéa", "allmessages-filter-all": "Kabéh", "allmessages-filter-modified": "Diropéa", @@ -2138,20 +2342,25 @@ "thumbnail-more": "Gedéan", "filemissing": "Berkas leungit", "thumbnail_error": "Kasalahan sawaktu nyieun gambar leutik (thumbnail): $1", + "thumbnail_error_remote": "Talatah kasalahan ti $1:\n$2", "djvu_page_error": "Kaca DjVu teu kawadahan", "djvu_no_xml": "Hanteu bisa nyokot XML pikeun berkas DjVu", + "thumbnail-temp-create": "Teu bisa nyieun berkas leutik témporer", "thumbnail_invalid_params": "Kasalahan paraméter miniatur", + "thumbnail_toobigimagearea": "Berkas kalawan diménsi leuwih badag batan $1", "thumbnail_dest_directory": "Diréktori nu dituju teu bisa dijieun", - "thumbnail_image-type": "Jenis gambar teu dirojong", + "thumbnail_image-type": "Jinis gambar teu dirojong", "thumbnail_image-missing": "Berkas anu sigana leungit: $1", "import": "Impor kaca", - "importinterwiki": "Impor transwiki", + "importinterwiki": "Impor tina wiki lianna", "import-interwiki-text": "Pilih wiki jeung judul kaca nu rék diimpor.\nTanggal révisi katut ngaran nu ngédit bakal dipertahankeun.\nSadaya aktivitas impor transwiki baris kacatet dina [[Special:Log/import|log impor]].", "import-interwiki-sourcewiki": "Wiki sumber:", "import-interwiki-sourcepage": "Kaca sumber:", "import-interwiki-history": "Téplak sakabéh vérsi jujutan pikeun ieu kaca", "import-interwiki-templates": "Kaasup sakabéh citakan", "import-interwiki-submit": "Impor", + "import-mapping-default": "Impor ka lokasi standar", + "import-mapping-namespace": "Impor ka ngaranspasi:", "import-upload-filename": "Ngaran berkas:", "import-comment": "Ringkesan:", "importtext": "Mangga ékspor koropakna ti sumber nu dipaké ku wiki migunakeun fungsi Special:Export, simpen na piringan anjeun, teras muatkeun di dieu.", @@ -2170,15 +2379,15 @@ "importuploaderrortemp": "Koropak impor gagal dimuat. Folder samentarana leungit.", "import-parse-failure": "Prosés impor XML teu hasil", "import-noarticle": "Euweuh kaca imporeun!", - "import-nonewrevisions": "Sakabéh révisi geus kungsi diimpor saméméhna.", + "import-nonewrevisions": "Euweuh révisi nu diimpor (sakum révisi geus aya atawa diliwatan lantaran kasalahan).", "xml-error-string": "$1 dina baris $2, kolom $3 (bit $4): $5", "import-upload": "Ngamuat data XML", "import-invalid-interwiki": "Teu bisa ngimpor ti wiki nu dipilih.", "import-rootpage-invalid": "Kaca turunan nu dibikeun judulna salah.", "importlogpage": "Log impor", "importlogpagetext": "Impor administratif kaca-kaca ti wiki séjén katut jujutanana.", - "import-logentry-upload-detail": "$1 {{PLURAL:$1|vérsi heubeul}}", - "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|vérsi heubel}} ti $2", + "import-logentry-upload-detail": "$1 {{PLURAL:$1|sarévisi|révisi}} diimpor", + "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|sarévisi|révisi}} diimpor ti $2", "javascripttest": "Nguji JavaScript", "javascripttest-pagetext-unknownaction": "Tarékah \"$1\" teu dipikanyaho.", "tooltip-pt-userpage": "Kaca {{GENDER:|pamaké anjeun}}", @@ -2188,6 +2397,7 @@ "tooltip-pt-preferences": "Préferénsi {{GENDER:|anjeun}}", "tooltip-pt-watchlist": "Daptar kaca nu diawaskeun ku anjeun parobahanana.", "tooltip-pt-mycontris": "Béréndélan kontribusi {{GENDER:|anjeun}}", + "tooltip-pt-anoncontribs": "Daptar éditan nu dijieun ti ieu alamat IP", "tooltip-pt-login": "Leuwih hadé asup log, sok sanajan teu wajib", "tooltip-pt-login-private": "Anjeun perlu asup log pikeun migunakeun ieu wiki", "tooltip-pt-logout": "Kaluar log", @@ -2221,6 +2431,7 @@ "tooltip-feed-atom": "Asupan atom pikeun kaca ieu", "tooltip-t-contributions": "Béréndélan kontribusi ti {{GENDER:$1|ieu pamaké}}", "tooltip-t-emailuser": "Kirim surélék ka {{GENDER:$1|ieu kontributor}}", + "tooltip-t-info": "Informasi leuwih jero ngeunaan ieu kaca", "tooltip-t-upload": "Unjal berkas", "tooltip-t-specialpages": "Daptar sadaya kaca husus", "tooltip-t-print": "Vérsi citakeun ieu kaca", @@ -2244,6 +2455,7 @@ "tooltip-watch": "Tambahkeun kaca ieu kana awaskeuneun kuring", "tooltip-watchlistedit-normal-submit": "Pupus judul", "tooltip-watchlistedit-raw-submit": "Anyarkeun aawaseun", + "tooltip-recreate": "Jieun deui kaca sanajan sabenerna mah geus dipupus", "tooltip-upload": "Prung unjalkeun", "tooltip-rollback": "Mulangkeun éditan ka panulis panungtung dina sakali klik", "tooltip-undo": "\"Bolay\" malikkeun ieu éditan sarta muka kotak édit dina modeu pramidang.\nCara kieu bisa nambahkeun alesan dina ringkesanana.", @@ -2257,11 +2469,14 @@ "lastmodifiedatby": "Kaca ieu panungtungan diédit $2, $1 ku $3.", "othercontribs": "Dumasar karya $1.", "others": "Séjénna", - "siteusers": "{{PLURAL:$2|Pamaké|Pamaké-pamaké}} {{SITENAME}} $1", + "siteusers": "{{PLURAL:$2|pamaké|para pamaké}} {{SITENAME}} $1", + "anonusers": "{{PLURAL:$2|pamaké|para pamaké}} anonim {{SITENAME}} $1", "creditspage": "Pangajén kaca", "nocredits": "Teu aya émbaran pangajén pikeun kaca ieu.", "spamprotectiontitle": "Saringan spam", "spamprotectiontext": "Kaca anu rék disimpen dipeungpeuk ku saringan spam.\nSigana mah ieu téh alatan tutumbu ka loka luar anu dibléklis.", + "spamprotectionmatch": "Teks di handap ieu mancing saringan spam kami: $1", + "spambot_username": "Pamersihan spam MediaWiki", "simpleantispam-label": "Pamariksaan anti-spam.\nAnu ieu ulah dieusian!", "pageinfo-title": "Émbaran pikeun \"$1\"", "pageinfo-header-basic": "Émbaran dasar", @@ -2269,6 +2484,7 @@ "pageinfo-header-restrictions": "Protéksi kaca", "pageinfo-header-properties": "Properti kaca", "pageinfo-display-title": "Judul pidangan", + "pageinfo-default-sort": "Konci susun baku", "pageinfo-length": "Panjang kaca (dina bit)", "pageinfo-article-id": "ID kaca", "pageinfo-language": "Basa eusi kaca", @@ -2279,12 +2495,18 @@ "pageinfo-robot-index": "Digaékeun", "pageinfo-robot-noindex": "Dicaram", "pageinfo-watchers": "Jumlah paroris kaca", + "pageinfo-visiting-watchers": "Jumlah pamariksa kaca nu nyorang éditan kiwari", "pageinfo-few-watchers": "Kurang ti $1 {{PLURAL:$1|pangawas}}", + "pageinfo-few-visiting-watchers": "Rék aya atawa henteuna pamariksa kaca nu nyorang éditan kiwari", "pageinfo-redirects-name": "Jumlah pindahan ka ieu kaca", + "pageinfo-subpages-name": "Nomor subkaca ieu kaca", "pageinfo-firstuser": "Panyieun kaca", + "pageinfo-firsttime": "Tanggal panyieunan kaca", "pageinfo-lastuser": "Pangédit panungtung", + "pageinfo-lasttime": "Tanggal éditan panungtung", "pageinfo-edits": "Jumlah éditan", "pageinfo-authors": "Jumlah kontributor nu béda", + "pageinfo-recent-edits": "Jumlah éditan kiwari (dina $1 panungtung)", "pageinfo-toolboxlink": "Émbaran kaca", "pageinfo-redirectsto": "Alihkeun ka", "pageinfo-redirectsto-info": "info", @@ -2319,7 +2541,7 @@ "filedelete-current-unregistered": "Koropak \"$1\" euweuh dina pangkalan data.", "previousdiff": "← Éditan saméméhna", "nextdiff": "Éditan salajengna →", - "imagemaxsize": "Watesan gambar na kaca dadaran gambar nepi ka:", + "imagemaxsize": "Wates ukuran gambar:
''(pikeun kaca déskripsi berkas)''", "thumbsize": "Ukuran miniatur:", "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|kaca|kaca}}", "file-info": "ukuran koropak: $1, tipeu MIME: $2", @@ -2344,6 +2566,10 @@ "newimages-legend": "Saringan", "newimages-label": "Ngaran berkas (atawa sawaréh tina ngaranna):", "newimages-user": "Alamat IP atawa sandiasma", + "newimages-newbies": "Témbongkeun kontribusi ti akun anyar wungkul", + "newimages-showbots": "Témbongkeun unjalan ku bot", + "newimages-hidepatrolled": "Sumputkeun unjalan nu geus diriksa", + "newimages-mediatype": "Tipeu média:", "noimages": "Taya nanaon.", "gallery-slideshow-toggle": "''Toggle'' miniatur", "ilsubmit": "Paluruh", @@ -2383,12 +2609,18 @@ "exif-orientation": "Oriéntasi", "exif-samplesperpixel": "Jumlah komponén", "exif-planarconfiguration": "Susunan data", + "exif-ycbcrsubsampling": "Rasio subsampling Y ka C", "exif-ycbcrpositioning": "Perenah Y jeung C", "exif-xresolution": "Résolusi horizontal", "exif-yresolution": "Résolusi tangtung", "exif-stripoffsets": "Perenah data gambar", + "exif-rowsperstrip": "Jumlah baris per strip", + "exif-stripbytecounts": "Bita per strip komprési", "exif-jpeginterchangeformat": "Ofset ka JPEG SOI", "exif-jpeginterchangeformatlength": "Bit data JPEG", + "exif-whitepoint": "Kromatisitas titik bodas", + "exif-primarychromaticities": "Kromatisitas warna primér", + "exif-ycbcrcoefficients": "Koéfisién matriks transformasi rohang warna", "exif-referenceblackwhite": "Pasangan ajen rujukan hideung jeung bodas", "exif-datetime": "Wanci jeung titimangsa parobahan koropak", "exif-imagedescription": "Judul gambar", @@ -2398,14 +2630,19 @@ "exif-artist": "Pangarang", "exif-copyright": "Nu nyepeng hak cipta", "exif-exifversion": "Vérsi Exif", + "exif-flashpixversion": "Pangrojong vérsi Flashpix", "exif-colorspace": "Rohangan warna", "exif-componentsconfiguration": "Harti unggak komponén", "exif-compressedbitsperpixel": "Mode komprési gambar", "exif-pixelxdimension": "Lébar gambar", "exif-pixelydimension": "Jangkung gambar", "exif-usercomment": "Koméntar pamaké", + "exif-relatedsoundfile": "Berkas audio nu patali", "exif-datetimeoriginal": "Titimangsa jeung wanci dijieunna data", "exif-datetimedigitized": "Titimangsa jeung wanci digitisasi", + "exif-subsectime": "Subdetik DateTime", + "exif-subsectimeoriginal": "Subdetik DateTimeOriginal", + "exif-subsectimedigitized": "Subdetik DateTimeDigitized", "exif-exposuretime": "Waktu pajanan", "exif-exposuretime-format": "$1 detik ($2)", "exif-fnumber": "Nomer F", @@ -2437,22 +2674,46 @@ "exif-whitebalance": "Kasaimbangan bodas", "exif-digitalzoomratio": "Rasio zum digital", "exif-focallengthin35mmfilm": "Panjang fokus dina film 35 mm", + "exif-scenecapturetype": "Tipeu panéwakan", + "exif-gaincontrol": "Kontrol layar", "exif-contrast": "Kontras", "exif-saturation": "Saturasi", "exif-sharpness": "Seukeutna", + "exif-devicesettingdescription": "Déskripsi pangaturan alat", + "exif-subjectdistancerange": "Lolongkrang jarak subyék", "exif-imageuniqueid": "ID unik gambar", "exif-gpsversionid": "Vérsi tag GPS", "exif-gpslatituderef": "Gurat Kalér atawa Kidul", "exif-gpslatitude": "Gurat Lintang", "exif-gpslongituderef": "Gurat Wétan atawa Kulon", "exif-gpslongitude": "Gurat Bujur", + "exif-gpsaltituderef": "Référénsi jangkung", + "exif-gpsaltitude": "Jangkung", "exif-gpstimestamp": "Wanci GPS (jam atomik)", + "exif-gpssatellites": "Satelit pikeun pangukuran", "exif-gpsstatus": "Status panampa", + "exif-gpsmeasuremode": "Modeu pangukuran", + "exif-gpsdop": "Katepatan pangukuran", "exif-gpsspeedref": "Unit kecepatan", + "exif-gpsspeed": "Gancangna panarima GPS", + "exif-gpstrackref": "Référénsi arah obahan", + "exif-gpstrack": "Arah obahan", + "exif-gpsimgdirectionref": "Référénsi arah gambar", + "exif-gpsimgdirection": "Arah gambar", + "exif-gpsmapdatum": "Data survéi géodési", + "exif-gpsdestlatituderef": "Référénsi lintang ti tujuan", + "exif-gpsdestlatitude": "Lintang tujuan", + "exif-gpsdestlongituderef": "Référénsi bujur ti tujuan", + "exif-gpsdestlongitude": "Bujur tujuan", + "exif-gpsdestbearingref": "Référénsi bearing tujuan", + "exif-gpsdestbearing": "Bearing tujuan", + "exif-gpsdestdistanceref": "Référénsi jarak ti tujuan", + "exif-gpsdestdistance": "Jarak ti tujuan", "exif-gpsprocessingmethod": "Ngaran métodeu olah GPS", "exif-gpsareainformation": "Ngaran wewengkon GPS", "exif-gpsdatestamp": "Titimangsa GPS", "exif-gpsdifferential": "Koréksi diferensial GPS", + "exif-jpegfilecomment": "Koméntar berkas JPEG", "exif-keywords": "Kecap konci", "exif-worldregioncreated": "Wewengkon dunya tempat moto", "exif-countrycreated": "Nagara tempat moto", @@ -2468,9 +2729,12 @@ "exif-sublocationdest": "Sublokasi kota nu ditémbongkeun", "exif-objectname": "Judul pondok", "exif-specialinstructions": "Paréntah husus", + "exif-headline": "Lulugu", + "exif-credit": "Krédit/Panyadia", "exif-source": "Sumber", "exif-editstatus": "Status éditorial gambar", "exif-urgency": "Urgensi", + "exif-fixtureidentifier": "Ngaran fikstur", "exif-locationdest": "Lokasi nu digambarkeun", "exif-locationdestcode": "Kodeu lokasi nu digambarkeun", "exif-writer": "Nu nulis", @@ -2503,7 +2767,7 @@ "exif-disclaimer": "Bantahan", "exif-contentwarning": "Pépéling eusi", "exif-giffilecomment": "Koméntar berkas GIF", - "exif-intellectualgenre": "Jenis objék", + "exif-intellectualgenre": "Jinis objék", "exif-subjectnewscode": "Kodeu subjék", "exif-scenecode": "Sandi adegan IPTC", "exif-event": "Kajaadian anu ditémbongkan", @@ -2513,7 +2777,7 @@ "exif-originalimagewidth": "Lébar gambar saméméh diteukteuk", "exif-compression-1": "Teu kakompres", "exif-copyrighted-true": "Mihak cipta", - "exif-copyrighted-false": "Domain publik", + "exif-copyrighted-false": "Status hak cipta can diatur", "exif-unknowndate": "Titimangsa teu kanyahoan", "exif-orientation-1": "Normal", "exif-orientation-2": "Dibalikkeun horizontal", @@ -2522,11 +2786,18 @@ "exif-orientation-5": "Diputer 90° CCW jeung dibalikkeun vértikal", "exif-orientation-6": "Diputer 90° CCW", "exif-orientation-7": "Diputer 90° CW jeung dibalikkeun vértikal", - "exif-orientation-8": "Diputer 90° CCW", + "exif-orientation-8": "Diputer 90° CW", + "exif-planarconfiguration-1": "format chunky", "exif-planarconfiguration-2": "format datar", + "exif-colorspace-65535": "Teu dikalibrasi", "exif-componentsconfiguration-0": "euweuh", + "exif-exposureprogram-0": "Teu kadéfinisi", "exif-exposureprogram-1": "Manual", "exif-exposureprogram-2": "Program normal", + "exif-exposureprogram-3": "Prioritas bukaan", + "exif-exposureprogram-4": "Prioritas panutup", + "exif-exposureprogram-5": "Program kréatif (condong ka jejeroan ruang)", + "exif-exposureprogram-6": "Program aksi (condong ka gagancangna rana)", "exif-exposureprogram-7": "Modeu potrét (pikeun poto deukeut nu tukangna di luar fokus)", "exif-exposureprogram-8": "Modeu Lanskap (pikeun poto lanskap nu tukangna asup fokus)", "exif-subjectdistance-value": "$1 méter", @@ -2609,21 +2880,24 @@ "exif-gpsdirection-t": "Arah sajati", "exif-gpsdirection-m": "Arah magnétik", "exif-ycbcrpositioning-1": "Nengah", + "exif-ycbcrpositioning-2": "Atas (co-sited)", "exif-dc-contributor": "Kontributor", "exif-dc-date": "Titimangsa", "exif-dc-publisher": "Pamedal", "exif-dc-relation": "Média anu tumali", "exif-dc-rights": "Hak", "exif-dc-source": "Média sumber", - "exif-dc-type": "Jenis média", + "exif-dc-type": "Jinis média", "exif-rating-rejected": "Ditolak", "exif-isospeedratings-overflow": "Leuwih ti 65535", "exif-iimcategory-ace": "Seni, budaya, jeung hiburan", "exif-iimcategory-clj": "Hukum jeung kajahatan", "exif-iimcategory-dis": "Bencana jeung kacilakaan", + "exif-iimcategory-fin": "Ékonomi jeung bisnis", "exif-iimcategory-edu": "Atikan", "exif-iimcategory-evn": "Lingkungan", "exif-iimcategory-hth": "Kawaluyaan", + "exif-iimcategory-hum": "Minat jalma", "exif-iimcategory-lab": "Katanagakerjaan", "exif-iimcategory-lif": "Gaya hirup jeung rékréasi", "exif-iimcategory-pol": "Politik", @@ -2631,6 +2905,7 @@ "exif-iimcategory-sci": "Sayen jeung téknologi", "exif-iimcategory-soi": "Isu sosial", "exif-iimcategory-spo": "Olahraga", + "exif-iimcategory-war": "Perang, konflik, jeung karesahan", "exif-iimcategory-wea": "Cuaca", "exif-urgency-normal": "Normal ($1)", "exif-urgency-low": "Landeuh ($1)", @@ -2716,12 +2991,16 @@ "version-specialpages": "Kaca husus", "version-parserhooks": "Kait parser", "version-variables": "Variabel", + "version-antispam": "Panyegahan spam", "version-other": "Séjén", + "version-mediahandlers": "Pananganan média", "version-hooks": "Kait", "version-parser-extensiontags": "Tag éksténsi parser", + "version-parser-function-hooks": "Kait fungsi parser", "version-hook-name": "Ngaran kait", "version-hook-subscribedby": "Didaptarkeun ku", "version-version": "($1)", + "version-no-ext-name": "[tanpa ngaran]", "version-license": "Lisénsi MediaWiki", "version-ext-license": "Lisénsi", "version-ext-colheader-name": "Éksténsi", @@ -2737,6 +3016,8 @@ "version-software": "Sopwér nu geus diinstal", "version-software-product": "Produk", "version-software-version": "Vérsi", + "version-entrypoints": "URL titik éntri", + "version-entrypoints-header-entrypoint": "Titik éntri", "version-entrypoints-header-url": "URL", "version-libraries": "Pabukon kapasang", "version-libraries-library": "Pabukon", @@ -2760,6 +3041,7 @@ "fileduplicatesearch-info": "$1 × $2 piksel
Ukuran koropak: $3
Tipeu MIME: $4", "fileduplicatesearch-result-1": "Koropak \"$1\" teu boga duplikat idéntik.", "fileduplicatesearch-result-n": "Koropak \"$1\" mibanda {{PLURAL:$2|1 duplikat idéntik|$2 duplikat idéntik}}.", + "fileduplicatesearch-noresults": "Teu manggihan berkas nu ngaranna \"$1\".", "specialpages": "Kaca husus", "specialpages-note-top": "Kamandang", "specialpages-group-maintenance": "Laporan pigawéeun", @@ -2785,10 +3067,14 @@ "tags-tag": "Ngaran tag", "tags-source-header": "Sumber", "tags-active-header": "Hurung?", + "tags-hitcount-header": "Parobahan kalawan tag", "tags-actions-header": "Tarékah", "tags-active-yes": "Enya", "tags-active-no": "Teu", + "tags-source-extension": "Ditangtukeun ku pakakas lemes", + "tags-source-none": "Teu dipaké deui", "tags-edit": "édit", + "tags-delete": "pupus", "tags-activate": "hurungkeun", "tags-deactivate": "pareuman", "tags-hitcount": "$1 {{PLURAL:$1|parobahan|parobahan}}", @@ -2796,6 +3082,8 @@ "tags-create-tag-name": "Ngaran tag:", "tags-create-reason": "Alesan:", "tags-create-submit": "Jieun", + "tags-create-already-exists": "Tag \"$1\" geus aya.", + "tags-create-warnings-below": "Anjeun rék nuluykeun panyieunan ieu tag?", "tags-delete-title": "Pupus tag", "tags-delete-reason": "Alesan:", "tags-activate-title": "Hurungkeun tag", @@ -2805,18 +3093,32 @@ "tags-deactivate-reason": "Alesan:", "tags-deactivate-submit": "Pareuman", "tags-edit-title": "Édit tag", + "tags-edit-existing-tags": "Tag nu aya:", "tags-edit-existing-tags-none": "Taya", "tags-edit-new-tags": "Tag anyar:", + "tags-edit-add": "Tambahkeun ieu tag-tag:", + "tags-edit-remove": "Pupus ieu tag-tag:", + "tags-edit-remove-all-tags": "(pupus sakum tag)", + "tags-edit-chosen-placeholder": "Pilih sawatara tag", + "tags-edit-chosen-no-results": "Euweuh tag nu luyu", "tags-edit-reason": "Alesan:", + "tags-edit-revision-submit": "Larapkeun parobahan kana {{PLURAL:$1|ieu révisi|$1 révisi}}", "comparepages": "Bandinkeun kaca", "compare-page1": "Kaca 1", "compare-page2": "Kaca 2", "compare-rev1": "Révisi 1", "compare-rev2": "Révisi 2", "compare-submit": "Bandingkeun", + "diff-form": "Béda", + "diff-form-oldid": "ID révisi heubeul (opsional)", + "diff-form-submit": "Témbongkeun bédana", + "permanentlink": "Tutumbu permanén", + "permanentlink-revid": "ID révisi", + "permanentlink-submit": "Tojo ka révisi", "dberr-problems": "Punten! Nuju aya gangguan téhnis.", "dberr-again": "Cobi antos sababaraha menit, lajeng dimuat ulang.", - "dberr-info": "(Teu bisa nyambung jeung server pangkalan data: $1)", + "dberr-info": "(Teu bisa ngaksés basis data: $1)", + "dberr-info-hidden": "(Teu bisa ngaksés basis data)", "dberr-usegoogle": "Kanggo samentawis, tiasa dicobi milari di Google.", "htmlform-select-badoption": "Niléy anu diasupkeun teu bener.", "htmlform-float-invalid": "Niléy anu diasupkeun lain angka.", @@ -2828,7 +3130,9 @@ "htmlform-no": "Henteu", "htmlform-yes": "Enya", "htmlform-chosen-placeholder": "Pilih opsi", + "htmlform-cloner-create": "Tambahkeun leuwih loba", "htmlform-cloner-delete": "Pupus", + "htmlform-cloner-required": "Saeutikna hiji niléy diperlukeun.", "htmlform-date-placeholder": "TTTT-BB-HH", "htmlform-time-placeholder": "JJ:MM:DD", "htmlform-datetime-placeholder": "TTTT-BB-HH JJ:MM:DD", @@ -2856,7 +3160,9 @@ "logentry-newusers-create": "Akun pamaké $1 geus {{GENDER:$2|dijieun}}", "logentry-newusers-autocreate": "Akun pamaké $1 {{GENDER:$2|dijieun}} otomatis", "logentry-upload-upload": "$1 {{GENDER:$2|ngamuat}} $3", + "log-name-tag": "Log tag", "rightsnone": "(euweuh)", + "feedback-adding": "Nambahkeun eupan balik kana kaca...", "feedback-back": "Balik deui", "feedback-cancel": "Bolay", "feedback-close": "Anggeus", @@ -2877,20 +3183,31 @@ "duration-decades": "$1 {{PLURAL:$1|dékadeu|dékadeu}}", "duration-centuries": "$1 {{PLURAL:$1|abad|abad}}", "duration-millennia": "$1 {{PLURAL:$1|milénium|milénium}}", + "limitreport-walltime": "Pamakéan waktu nyaan", "expandtemplates": "Mekarkeun citakan", "expand_templates_input": "Téks input:", "expand_templates_output": "Hasil:", "expand_templates_xml_output": "Output XML", + "expand_templates_html_output": "Kaluaran HTML atah", "expand_templates_ok": "Heug", + "expand_templates_remove_comments": "Pupus koméntar", + "expand_templates_generate_xml": "Témbongkeun tangkal parser XML", + "expand_templates_generate_rawhtml": "Témbongkeun HTML atah", "expand_templates_preview": "Pramidang", + "pagelanguage": "Robah basa kaca", "pagelang-name": "Kaca", "pagelang-language": "Basa", + "pagelang-use-default": "Paké basa baku", "pagelang-select-lang": "Pilih basa", "pagelang-reason": "Alesan", "pagelang-submit": "Kirim", "pagelang-nonexistent-page": "Kaca $1 euweuh.", + "right-pagelang": "Robah basa kaca", + "action-pagelang": "ngarobah basa kaca", + "log-name-pagelang": "Log parobahan basa", "mediastatistics": "Statistik média", "mediastatistics-table-mimetype": "Tipeu MIME", + "mediastatistics-table-extensions": "Éksténsi ngamumkinkeun", "mediastatistics-table-count": "Jumlah berkas", "mediastatistics-table-totalbytes": "Ukuran gabungan", "mediastatistics-header-unknown": "Teu dipikanyaho", @@ -2899,25 +3216,150 @@ "mediastatistics-header-audio": "Audio", "mediastatistics-header-video": "Vidio", "mediastatistics-header-multimedia": "Média beunghar", + "mediastatistics-header-office": "Aplikasi Office", "mediastatistics-header-text": "Tékstual", + "mediastatistics-header-executable": "Program", + "mediastatistics-header-archive": "Format komprési", "mediastatistics-header-total": "Sakumna berkas", + "json-error-state-mismatch": "JSON teu sah atawa cacat", + "json-error-syntax": "Kasalahan sintaks", + "headline-anchor-title": "Tutumbu ka bagéan ieu", "special-characters-group-latin": "Latin", + "special-characters-group-latinextended": "Éksténsi Latin", "special-characters-group-ipa": "IPA", "special-characters-group-symbols": "Lambang", "special-characters-group-greek": "Yunani", + "special-characters-group-greekextended": "Éksténsi Yunani", "special-characters-group-cyrillic": "Sirilik", "special-characters-group-arabic": "Arab", + "special-characters-group-arabicextended": "Éksténsi Arab", "special-characters-group-persian": "Parsi", "special-characters-group-hebrew": "Ibrani", "special-characters-group-bangla": "Bangla", + "special-characters-group-tamil": "Tamil", "special-characters-group-telugu": "Telugu", "special-characters-group-sinhala": "Sinhala", "special-characters-group-gujarati": "Gujarati", + "special-characters-group-devanagari": "Dewanagari", "special-characters-group-thai": "Thai", "special-characters-group-lao": "Lao", "special-characters-group-khmer": "Khmer", + "special-characters-group-canadianaboriginal": "Aborigin Kanada", + "special-characters-title-endash": "gurat en", + "special-characters-title-emdash": "gurat em", + "special-characters-title-minus": "tanda kurang", + "mw-widgets-dateinput-no-date": "Euweuh tanggal pinilih", + "mw-widgets-mediasearch-input-placeholder": "Paluruh média", + "mw-widgets-mediasearch-noresults": "Euweuh hasil nu kapanggih.", + "mw-widgets-titleinput-description-new-page": "kaca can aya", + "mw-widgets-titleinput-description-redirect": "ngalihkeun ka $1", + "mw-widgets-categoryselector-add-category-placeholder": "Tambahkeun kategori...", + "mw-widgets-usersmultiselect-placeholder": "Tambahkeun leuwih loba...", + "date-range-from": "Ti ping:", + "date-range-to": "Nepi ping:", + "sessionprovider-generic": "sési $1", + "sessionprovider-mediawiki-session-cookiesessionprovider": "sési dumasar kuki", + "sessionprovider-nocookies": "Kuki meureun dipareuman. Pastikeun anjeun geus ngahurungkeun kuki sarta coba balikan deui.", + "randomrootpage": "Kaca dasar acak", + "log-action-filter-block": "Jinis pameungpeukan:", + "log-action-filter-contentmodel": "Jinis parobahan modél kontén:", + "log-action-filter-delete": "Jinis pamupusan:", + "log-action-filter-import": "Jinis impor:", + "log-action-filter-managetags": "Jinis tarékah ménéjemén tag:", + "log-action-filter-move": "Jinis alihan:", + "log-action-filter-newusers": "Jinis panyieunan akun:", + "log-action-filter-patrol": "Jinis riksaan:", + "log-action-filter-protect": "Jinis panangtayungan:", + "log-action-filter-rights": "Jinis parobahan hak aksés:", + "log-action-filter-suppress": "Jinis panyamunian:", + "log-action-filter-upload": "Jinis unjalan:", "log-action-filter-all": "Sakumna", "log-action-filter-block-block": "Peungpeuk", + "log-action-filter-block-reblock": "Modifikasi peungpeuk", + "log-action-filter-block-unblock": "Bolay peungpeukan", + "log-action-filter-contentmodel-change": "Robah modél kontén", + "log-action-filter-delete-delete": "Pamupusan kaca", + "log-action-filter-delete-delete_redir": "Ngalihkeun pangalihan", + "log-action-filter-delete-restore": "Bolayan pamupusan", + "log-action-filter-delete-event": "Log pamupusan", + "log-action-filter-delete-revision": "Pamupusan révisi", + "log-action-filter-import-interwiki": "Impor transwiki", + "log-action-filter-import-upload": "Impor kalawan unjalan XML", + "log-action-filter-managetags-create": "Panyieunan tag", + "log-action-filter-managetags-delete": "Pamupusan tag", + "log-action-filter-managetags-activate": "Pangaktifan tag", + "log-action-filter-managetags-deactivate": "Pamareuman tag", + "log-action-filter-move-move": "Alihkeun tanpa ngalandih pangalihan", + "log-action-filter-move-move_redir": "Alihkeun kalawan ngalandih pangalihan", + "log-action-filter-newusers-create": "Jijieunan ku pamaké anonim", + "log-action-filter-newusers-create2": "Jijieunan ku pamaké kadaptar", + "log-action-filter-newusers-autocreate": "Panyieunan otomatis", + "log-action-filter-newusers-byemail": "Panyieunan kalawan kecap sandi nu dikirimkeun liwat surélék", + "log-action-filter-patrol-patrol": "Riksaan manual", + "log-action-filter-patrol-autopatrol": "Riksaan otomatis", + "log-action-filter-protect-protect": "Panangtayungan", + "log-action-filter-protect-modify": "Modifikasi panangtayungan", + "log-action-filter-protect-unprotect": "Bolay panangtayungan", + "log-action-filter-protect-move_prot": "Pangalihan panangtayungan", + "log-action-filter-rights-rights": "Parobahan manual", + "log-action-filter-rights-autopromote": "Parobahan otomatis", + "log-action-filter-suppress-event": "Log samunian", + "log-action-filter-suppress-revision": "Panyamunian révisi", + "log-action-filter-suppress-delete": "Panyamunian kaca", + "log-action-filter-upload-upload": "Unjalan anyar", + "log-action-filter-upload-overwrite": "Unjal deui", + "authmanager-create-disabled": "Panyieunan akun ditumpurkeun", + "authmanager-authplugin-setpass-failed-title": "Parobahan kecap sandi gagal", + "authmanager-authplugin-setpass-bad-domain": "Domain teu sah.", + "authmanager-autocreate-noperm": "Panyieunan akun otomatis teu diidinan.", + "authmanager-userdoesnotexist": "Akun pamaké \"$1\" teu kadaptar.", + "authmanager-username-help": "Sandiasma pikeun oténtikasi.", + "authmanager-password-help": "Kecap sandi pikeun oténtikasi.", + "authmanager-domain-help": "Domain pikeun oténtikasi éksternal.", + "authmanager-retype-help": "Kecap sandi deui pikeun konfirmasi.", + "authmanager-email-label": "Surélék", + "authmanager-email-help": "Alamat surélék", + "authmanager-realname-label": "Ngaran asli", + "authmanager-realname-help": "Ngaran asli pamaké", + "authmanager-provider-password": "Oténtikasi dumasar kecap sandi", + "authprovider-resetpass-skip-label": "Liwatan", + "authprovider-resetpass-skip-help": "Liwatan pamulangan kecap sandi", + "authform-newtoken": "Token leungit. $1", + "authform-notoken": "Token leungit", + "authform-wrongtoken": "Token salah", + "specialpage-securitylevel-not-allowed-title": "Teu diidinan", + "specialpage-securitylevel-not-allowed": "Hampura, anjeun teu diidinan pikeun maké ieu kaca lantaran idéntitas anjeun teu bisa divérifikasi.", + "authpage-cannot-login": "Teu bisa ngamimitian asup log.", + "authpage-cannot-login-continue": "Teu bisa neruskeun asup log. Sési anjeun jigana geus kadaluwarsa.", + "authpage-cannot-create": "Teu bisa ngamimitian nyieun akun.", + "authpage-cannot-create-continue": "Teu bisa nuluykeun nyieun akun. Sési anjeun jigana geus kadaluwarsa.", + "authpage-cannot-link": "Teu bisa ngamimitian numbukeun akun.", + "authpage-cannot-link-continue": "Teu bisa nulurkeun numbukeun akun. Sési anjeun jigana geus kadaluwarsa.", + "cannotauth-not-allowed-title": "Idin ditolak", + "cannotauth-not-allowed": "Anjeun teu diidinan pikeun maké ieu kaca", + "changecredentials": "Robah krédensial", + "changecredentials-submit": "Robah krédensial", + "removecredentials": "Pupus krédensial", + "removecredentials-submit": "Pupus krédensial", + "removecredentials-success": "Krédensial Anda geus dipupus.", + "credentialsform-provider": "Jinis krédensial:", + "credentialsform-account": "Ngaran akun:", + "cannotlink-no-provider-title": "Euweuh akun nu bisa ditumbukeun", + "cannotlink-no-provider": "Euweuh akun nu bisa ditumbukeun", + "linkaccounts": "Tumbukeun akun", + "linkaccounts-success-text": "Akun geus ditumbukeun.", + "linkaccounts-submit": "Tumbukeun akun", + "unlinkaccounts": "Buka tumbuan akun", + "unlinkaccounts-success": "Akun geus teu ditumbukeun", + "restrictionsfield-badip": "Alamat IP atawa pantengan IP teu sah: $1", + "restrictionsfield-label": "Pantengan IP nu diheugbaékeun:", + "restrictionsfield-help": "Hiji alamat IP atawa pantengan CIDR per baris. Pikeun ngahurungkeun sakumna, paké:\n

0.0.0.0/0\n::/0
", + "revid": "révisi $1", + "pageid": "ID kaca $1", "gotointerwiki": "Ninggalkeun{{SITENAME}}", - "gotointerwiki-invalid": "Judul spésipik henteu valid" + "gotointerwiki-invalid": "Judul nu ditangtukeun teu sah.", + "undelete-cantedit": "Anjeun teu bisa ngabolaykeun pamupusan ieu kaca lantaran anjeun teu bisa ngédit ieu kaca.", + "pagedata-title": "Data kaca", + "pagedata-not-acceptable": "Teu kapanggih format nu luyu. Jinis MIME nu dirojong: $1", + "pagedata-bad-title": "Judul teu sah: $1." } diff --git a/languages/i18n/sv.json b/languages/i18n/sv.json index 5671525aa3..909b2a6762 100644 --- a/languages/i18n/sv.json +++ b/languages/i18n/sv.json @@ -114,6 +114,7 @@ "tog-watchlisthideminor": "Dölj mindre ändringar i bevakningslistan", "tog-watchlisthideliu": "Visa inte redigeringar av inloggade användare i bevakningslistan", "tog-watchlistreloadautomatically": "Uppdatera bevakningslistan automatiskt när ett filter ändras (JavaScript krävs)", + "tog-watchlistunwatchlinks": "Lägg till länkar för att bevaka och sluta bevaka artiklar i bevakningslistan (JavaScript krävs)", "tog-watchlisthideanons": "Dölj redigeringar av anonyma användare i bevakningslistan", "tog-watchlisthidepatrolled": "Dölj patrullerade redigeringar i bevakningslistan", "tog-watchlisthidecategorization": "Dölj kategorisering av sidor", @@ -1349,6 +1350,7 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (se även [[Special:NewPages|listan över nya sidor]])", "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Visa", + "rcfilters-tag-remove": "Ta bort \"$1\"", "rcfilters-legend-heading": "Lista över förkortningar:", "rcfilters-other-review-tools": "Andra granskningsverktyg", "rcfilters-group-results-by-page": "Gruppera resultat efter sida", @@ -1361,6 +1363,7 @@ "rcfilters-hours-title": "Senaste timmarna", "rcfilters-days-show-days": "$1 {{PLURAL:$1|dag|dagar}}", "rcfilters-days-show-hours": "$1 {{PLURAL:$1|timme|timmar}}", + "rcfilters-highlighted-filters-list": "Markerade: $1", "rcfilters-quickfilters": "Sparade filter", "rcfilters-quickfilters-placeholder-title": "Inga länkar har sparats ännu", "rcfilters-quickfilters-placeholder-description": "För att spara dina filterinställningar och återanvända dem senare, klicka på bokmärkesikonen under \"Aktiva filter\" nedan.", @@ -1383,14 +1386,14 @@ "rcfilters-empty-filter": "Inga aktiva filter. Alla bidrag visas.", "rcfilters-filterlist-title": "Filter", "rcfilters-filterlist-whatsthis": "Hur fungerar desse?", - "rcfilters-filterlist-feedbacklink": "Ge återkoppling på nya (beta)filter", + "rcfilters-filterlist-feedbacklink": "Berätta vad du tycker om dessa (nya) filtreringsverktyg", "rcfilters-highlightbutton-title": "Markera resultat", "rcfilters-highlightmenu-title": "Välj en färg", "rcfilters-highlightmenu-help": "Välj en färg att markera denna egenskap", "rcfilters-filterlist-noresults": "Inga filter hittades", "rcfilters-noresults-conflict": "Inga resultat hittades eftersom sökkriterierna är i konflikt", "rcfilters-state-message-subset": "Detta filter har ingen effekt, eftersom resultaten inkluderar följande, bredare {{PLURAL:$2|filter}} (försök att markera för att särskilja det): $1", - "rcfilters-state-message-fullcoverage": "Att markera alla filter i en grupp är detsamma som att markera inget alls, så detta filter har igen effekt. Grupper som inkluderas: $1", + "rcfilters-state-message-fullcoverage": "Att markera alla filter i denna grupp är detsamma som att markera inget alls, så detta filter har ingen effekt. Grupper som inkluderas: $1", "rcfilters-filtergroup-authorship": "Författarskap av bidrag", "rcfilters-filter-editsbyself-label": "Redigeringar av dig", "rcfilters-filter-editsbyself-description": "Dina egna bidrag.", @@ -1429,6 +1432,11 @@ "rcfilters-filter-watchlist-watchednew-description": "Ändringar i bevakade sidor som du inte har besökt sedan ändringarna ägde rum.", "rcfilters-filter-watchlist-notwatched-label": "Inte i bevakningslistan", "rcfilters-filter-watchlist-notwatched-description": "Allting förutom ändringar i sidor på din bevakningslista.", + "rcfilters-filtergroup-watchlistactivity": "Aktivitet för bevakningslista", + "rcfilters-filter-watchlistactivity-unseen-label": "Osedda ändringar", + "rcfilters-filter-watchlistactivity-unseen-description": "Ändringar i sidor som du inte har besökt sedan ändringarna ägde rum.", + "rcfilters-filter-watchlistactivity-seen-label": "Sedda ändringar", + "rcfilters-filter-watchlistactivity-seen-description": "Ändringar i sidor som du har besökt sedan ändringarna ägde rum.", "rcfilters-filtergroup-changetype": "Typ av ändring", "rcfilters-filter-pageedits-label": "Sidredigeringar", "rcfilters-filter-pageedits-description": "Redigeringar till wikiinnehåll, diskussioner, kategoribeskrivningar…", @@ -1458,6 +1466,9 @@ "rcfilters-liveupdates-button": "Liveuppdateringar", "rcfilters-liveupdates-button-title-on": "Stäng av live-uppdateringar", "rcfilters-liveupdates-button-title-off": "Visa nya ändringar när de händer", + "rcfilters-watchlist-markseen-button": "Markera alla ändringar som sedda", + "rcfilters-watchlist-edit-watchlist-button": "Redigera din lista över bevakade sidor", + "rcfilters-watchlist-showupdated": "Sidor som har ändrats sedan ditt senaste besök visas i fetstil med färgmarkering.", "rcnotefrom": "Nedan visas {{PLURAL:$5|ändringen|ändringar}} sedan $3, $4 (upp till $1 ändringar visas).", "rclistfromreset": "Återställ datumval", "rclistfrom": "Visa nya ändringar från och med $2 $3", @@ -2142,7 +2153,7 @@ "unwatchthispage": "Sluta bevaka", "notanarticle": "Inte en artikel", "notvisiblerev": "Sidversionen har raderats", - "watchlist-details": "Du har {{PLURAL:$1|en sida|$1 sidor}} på din bevakningslista (diskussionssidor är inte separat medräknade).", + "watchlist-details": "{{PLURAL:$1|$1 sida|$1 sidor}} är på din bevakningslista (inklusive diskussionssidor).", "wlheader-enotif": "E-postmeddelanden är aktiverade.", "wlheader-showupdated": "Sidor som har ändrats sedan ditt senaste besök visas i '''fetstil.'''", "wlnote": "Nedan finns {{PLURAL:$1|den senaste ändringen|de senaste $1 ändringarna}} under {{PLURAL:$2|den senaste timmen|de senaste $2 timmarna}} från den $3 kl. $4.", @@ -2247,7 +2258,7 @@ "modifiedarticleprotection": "ändrade skyddsnivån för \"[[$1]]\"", "unprotectedarticle": "tog bort skrivskydd från \"[[$1]]\"", "movedarticleprotection": "flyttade skrivskyddsinställningar från \"[[$2]]\" till \"[[$1]]\"", - "protectedarticle-comment": "{{GENDER:$2|Skyddad}} \"[[$1]]\"", + "protectedarticle-comment": "{{GENDER:$2|Skyddade}} \"[[$1]]\"", "modifiedarticleprotection-comment": "{{GENDER:$2|Ändrade skyddsnivå}} för \"[[$1]]\"", "unprotectedarticle-comment": "{{GENDER:$2|Tog bort skydd}} från \"[[$1]]\"", "protect-title": "Ändra skrivskyddsnivå för \"$1\"", diff --git a/languages/i18n/tay.json b/languages/i18n/tay.json index 941e483147..b882534d89 100644 --- a/languages/i18n/tay.json +++ b/languages/i18n/tay.json @@ -80,18 +80,18 @@ "category-subcat-count": "{{PLURAL:$2|pintbcyan qaniy ga nanak yaquw qutux uzyuk na pintbcyan quw spgluw niya’.| pintbcyan qaniy ga kwara’ kin na $1 uzyuk na pintbcyan sawn niya uziy, $2 kwara’.}}", "category-article-count": "{{PLURAL:$2| pintbcyan qaniy ga ginkwara’ zngazyan tay suruw. | pintbcyan qaniy ga kwara’ kin $1 pintbcyan tay suruw, $2 kwara’.}}", "category-file-count": "{{PLURAL:$2|Pintbcyan niya’ qaniy ga nanak yaquw nyux niya’ sbiru’ sa hugal qaniy|Pintbcyan niya’ qaniy ga kwara’ kin na biru’ ka $1, psqunun kwara\nga $2 .}}", - "listingcontinuesabbrev": "pin’ubuy sa", + "listingcontinuesabbrev": "luhing", "about": "Nanu’ quw", "newwindow": "(gyahiy na giqas na kktan)", "cancel": "laxan", - "moredotdotdot": "pzyux na’...", - "mypage": "qutux qutux gnyahan", + "moredotdotdot": "Pzyux na’...", + "mypage": "Zzngayan", "mytalk": "mpkal", "anontalk": "mpkal", "navigation": "Pglaing pzyangay", "and": " squw ", "faq": "FAQ", - "namespaces": "Sslalu’ sa kung cyen", + "namespaces": "Kungcyen na sslalu’", "variants": "Qbuci’ pinsbahan", "navigation-heading": "Biru’ na bzyagan pglaing pzyangay", "returnto": " ’bzinah $1", @@ -106,10 +106,11 @@ "history_small": "Pinhknyan sraral", "printableversion": "Kinbalay sa musa’ blaq sp’isat", "permalink": "Mrayrhuw na pin’ubuy", - "view": "view", + "print": "Re’in", + "view": "Psbaybzih minblaq mita’", "view-foreign": "Psbzih mita’ squ$1", "edit": "Smr’zyut miru’smr’zyut miru’", - "create": "ps’rux", + "create": "Ps’rux", "create-local": "Tnwang sa kay’ na rhzyal qasa", "delete": "’muyut", "protect": "mlahang", @@ -119,15 +120,17 @@ "specialpage": "Mnanak na bbrwan", "personaltools": "Qayqaya’ nanak saxa’", "talk": "Spkayal", - "views": "Cyens’", + "views": "Psbaybzih minblaq mita’", "toolbox": "Qayqaya’", "otherlanguages": "Kay’ bzinah", "redirectedfrom": "(wal niya’ t’ringun paykura’ squ $1)", + "redirectpagesub": "t’ringun pawsa’ sa zngayan", "redirectto": "T’ringun pawsa’ sa", "lastmodifiedat": "Zzngayan qaniy gasinr’zyut niya’ squ pucing balay tay$1 $2.", + "protectedpage": "Zngyan na Cwan’an", "jumpto": "Musa’", "jumptonavigation": "Pglaing pzyangay", - "jumptosearch": "Hkangi’", + "jumptosearch": "Hhkangi’", "aboutsite": "Nanu’ quw {{SITENAME}}", "aboutpage": "Project: Nanu’ quw", "copyrightpage": "{{ns:project}}:pancyuen", @@ -144,18 +147,20 @@ "portal-url": "Project:kkzyup secyun", "privacy": "Gaga’ na zyuwaw nanak", "privacypage": "Project: Gaga’ na zyuwaw nanak", - "ok": "OK", + "ok": "Wal balay", "retrievedfrom": "’Nagal sa \"$1\"", - "editsection": "Smr’zyut miru’", + "editsection": "smr’zyut miru’", "editold": "Smr’zyut miru’", - "editlink": "Smr’zyut miru’", + "editlink": "smr’zyut miru’", "viewsourcelink": "Kta quw llpgan aring sa cin’ringan", "editsectionhint": "Smr’zyut miru’ gnaygay binrwan:$1", "toc": "bnrwan tay qsahuy", "showtoc": "Pkaykita’", - "hidetoc": "smbbaq", + "hidetoc": "lqing", + "collapsible-collapse": "Psqunun", "confirmable-yes": "Aw’", "confirmable-no": "Iyat", + "feedlinks": "Pcyumung kktan:", "site-atom-feed": "$1 na tkhulan Atom", "page-atom-feed": "inkhulan na Atom tay $1", "red-link-title": "$1 (ungat zzngayan)", @@ -166,11 +171,15 @@ "nstab-image": "biru’ na zayzyuwaw", "nstab-mediawiki": "pintkaykay’", "nstab-template": "Mopan", - "nstab-category": "pintbcyan na mlmlamu’", + "nstab-category": "Ps’anak sa mkgluw", "mainpage-nstab": "T’ringan na zzngayan", + "databaseerror-function": "Pptzyuwaw:$1", + "missingarticle-diff": "(Kin’ini’ ptnaq:$1, $2)", + "internalerror": "pin’qwan tay qsahuy", "badtitle": "Ungat zyuwaw na lalu’ na spzyang kkayal", "badtitletext": "Sni’ su’ lalu’ na spzyang kkayal su’ qasa ga ungat zyuwaw niya’, ungat ana nanu’ qsahuy niya’, ini’ ga ini’ su’ ’nblayqiy p’ubuy quw pin’ubuy su’ squw bzinah na kay’, ini’ ga ’mubuy sa sni’ naha’ lalu’ sa Wiki’. \nKuna kya wal su’ syun ka biru’ qasa ga kya’a cyux ’magan sa biru’ na ini’ baqiy mita’ hazi’.", "viewsource": "Kta quw llpgan aring sa cin’ringan", + "exception-nologin": "Ini’ su’ kzyup na’", "yourname": "Lalu’ na pptzyuwaw:", "userlogin-yourname": "Lalu’ na pptzyuwaw", "userlogin-yourname-ph": "Brwaniy lalu’ na pptzyuwaw su’", @@ -181,6 +190,7 @@ "login": "mzyup", "logout": "mshriq", "userlogout": "mshriq", + "notloggedin": "Ini’ su’ kzyup na’", "userlogin-noaccount": "Ungat canghaw?", "userlogin-joinproject": "Twangiy {{SITENAME}}", "createaccount": "Ps’rux canghaw", @@ -190,6 +200,8 @@ "createacct-emailoptional": "Zyusyo na e-meyo’ (bruwiy)", "createacct-email-ph": "Brwaniy zyusyo na e-meyo’ su’", "createacct-another-email-ph": "Brwaniy zyusyo na e-meyo’ su’", + "createacct-reason": "’ringan", + "createacct-another-submit": "Ps’rux canghaw", "createacct-benefit-heading": "{{SITENAME}} hya’ ga ’nagal squw yan isu’ psr’zyut miru’ na squliq pins’rux.", "createacct-benefit-body1": "{{PLURAL:$1|smr’zyut miru’ }}", "createacct-benefit-body2": "{{PLURAL:$1|zzngayan}}", @@ -199,7 +211,7 @@ "pt-login-button": "mzyup", "pt-createaccount": "Ps’rux canghaw", "pt-userlogout": "mshriq", - "botpasswords-label-create": "ps’rux", + "botpasswords-label-create": "Ps’rux", "botpasswords-label-update": "Sbahun giqas", "botpasswords-label-cancel": "laxan", "botpasswords-label-delete": "’muyut", @@ -207,6 +219,9 @@ "resetpass-submit-cancel": "laxan", "passwordreset": "T’aring lawziy smi’ mima’", "passwordreset-username": "Lalu’ na pptzyuwaw:", + "passwordreset-email": "Zyusyo na e-meyo’:", + "changeemail-none": "(ungat)", + "resettokens-tokens": "Niwan sawsu’:", "bold_sample": "Qthuy na biru’", "bold_tip": "Qthuy na biru’", "italic_sample": "Mtkkiy na biru’", @@ -223,16 +238,18 @@ "media_tip": "’ubuy sa biru’ na kwara’ zayzyuwaw", "sig_tip": "Cyux pglgan bnrwan zikang ru ryax nquw binrwan lalu’", "hr_tip": "Swe ping syen (laxiy brwaniy iyal)", - "summary": "Lalu’ na spzyang bbiru’ su’", - "subject": "spzyang na ptzyuwaw", + "summary": "Lalu’ na spzyang bbiru’ su’:", + "subject": "Spzyang na ptzyuwaw:", "minoredit": "Iyat spzyang balay ssr’tun miru’ balay qaniy hya’", "watchthis": "Kmyagal mita’ sa zngayan qaniy", "savearticle": "Cucun qu zngazyan", + "preview": "Pnaynama’ mita’", "showpreview": "Pnaynama’ pkita’ sa misa spkita’ na zayzyuwaw", "showdiff": "Pkaykita’ sinbah", "anoneditwarning": "Smrhuw kmal: Ini’ su’ kzyup na’. Maha iy wal su’ sbahun ana inu’ ga, nanu’ quw cyux ki’an na IP su’ ga musa’ ktan kwara’ squliq. Maha iy [$1 wal mzyup] ini’ ga [$2 ps’rux Canghaw],sinr’zyut su’ miru’ qaniy ga musa’ niya’ s’agal sa lalu’ su’ ka nyux mmiru’ qaniy smbbaq, ru musa’ magal sa kwara’ ka qqblayqan na hway naha’.", "loginreqlink": "mzyup", "noarticletext-nopermission": "Ungat ana cikuy knayal sa zyuwaw na qsahuy na lalu’ na kay’ squw nyux ktan sa zngayan qaniy.\nAna su’ s’usa’ sa zngayan tay bzinah \n[[Special:Search/{{PAGENAME}}|hmkangi’ sa puqing lalu’ na zngayan qaniy]], ini’ ga [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} hmkangi’ sa m’ubuy sa zyuwaw na bbrwan qutux qutux ryax],ga ungat kinri’ su’ ms’rux sa zngayan qaniy.", + "updated": "(Sinbahan)", "note": " pinkita’ niya’ sa pinzga’ :", "editing": "Nyuw smr’zyut miru’ $1", "editingsection": "smr’zyut miru’ $1 (gnaygay binrwan)", @@ -242,6 +259,9 @@ "hiddencategories": "zngayan qaniy hya’ ga gluw na {{PLURAL:$1|1 lnqing na pintbcyan|$1 lnqing pintbcyan}}na qutux bluw na squliq naha’:", "moveddeleted-notice": "Wal pzyutan quw zngayan qaniy.\nNyux sbiru’ hugal quw wal pzyutan na zngazyan squw sinhzyuwan bniru’ sa qutux qutux ryax aki’ baqun sa ggalan pspngan mita’.", "content-model-wikitext": "Wikitext", + "content-model-text": "biru’ mlmlux", + "content-json-empty-object": "Ungat ana nanu’ quw nnanu’ niya’", + "content-json-empty-array": "Ungat ana nanu’ sni’ binrwan naha’", "viewpagelogs": "Inblaq mita’ quw bniru’ sa zngazyan qaniy", "currentrev-asof": "Spzyang balay giqas sinbahan squw $1", "revisionasof": "Gaga’ na pptzyuwaw sa qutux qutux binkgan gaga’", @@ -250,11 +270,19 @@ "nextrevision": "Ssbahun babaw nya’→", "currentrevisionlink": "Pzyang giqas na sinhzi’", "cur": "misuw qaniy ga", + "next": "tay suruw", "last": "tay glaing", + "page_first": "t’ringan balay na llpgan", + "page_last": "pucing balay llpgan", + "histlast": "giqas balay", "historysize": "({{PLURAL:$1|$1 bzyaqan kkayal na llpgan}})", "rev-delundel": "Smbah sa musa’ slwan mita’", "rev-showdeleted": "Pkaykita’", "revdelete-show-file-submit": "Aw’", + "revdelete-radio-set": "Lqing", + "revdelete-radio-unset": "Pkaykita’", + "revdelete-log": "’ringan:", + "mergehistory-reason": "’ringan:", "history-title": "Tay \"$1\" na sinbah bniru’ sraral", "difference-title": "Kin ini’ ptnaq sinbahan squw \"$1\"", "lineno": "Tuqiy binkgan binrwan$1:", @@ -264,6 +292,8 @@ "searchresults-title": "$1 na babaw hinkangi", "prevn": "tay glaing {{PLURAL:$1|$1}}", "nextn": "tay suruw {{PLURAL:$1|$1}}", + "prev-page": "llpgan tay glaing", + "next-page": "llpgan tay suruw", "nextn-title": "Pimkaykita’ sa babaw tay {{PLURAL:$1|na pinspngan ktan qasa}}", "shown-title": "Pinkita’ $1 {{PLURAL:$1|babaw nya’| babaw niya’}}squw qutux qutux zzngayan", "viewprevnext": "Psbzih mita’ ($1 {{int:pipe-separator}} $2) ($3)", @@ -279,29 +309,70 @@ "search-result-size": "$1 ({{PLURAL:$2|1 binrwan|$2 binrwan}})", "search-redirect": "(t’aring pglaing squw $1)", "search-section": "(binkgan sa lalu’ na puqing kkayal squw uzyuk na kkayal tay $1)", + "search-category": "(ps’anak sa mkgluw $1)", "search-suggest": "Imi’ na kay’ su’ ga yasa qasa: $1", "search-interwiki-more": "(pzyux na’)", + "search-relatedarticle": "Ubuy na", "searchall": "kwara’", "search-showingresults": "{{PLURAL:$4|tay $1pucing niya’, psqunun lga $3 |tay $1 - $2 pucing nya’, psqunun lga $3 pucing nya’}}", "search-nonefound": "Ktan qu bniru’ niya’ ga ungat quw musa’ mtnaq sa tthuzyay sa awsa’ hmkangi’.", + "powersearch-toggleall": "Kwara’", + "powersearch-togglenone": "Ungat", "mypreferences": "Sni’ maku’", + "prefs-skin": "Ktan na rawziq", + "skin-preview": "Pnaynama’ mita’", + "prefs-rc": "Sbahun misuw qaniy", + "prefs-misc": "Mzinah", "prefs-email": "bbzagan sa e-meyo’", + "prefs-rendering": "Ktan na rawziq", "saveprefs": "Cucun", - "prefs-editing": "smr’zyut miru’", - "searchresultshead": "hhkangi’", - "prefs-searchoptions": "hhkangi’", + "prefs-editing": "Smr’zyut miru’", + "searchresultshead": "Hhkangi’", + "timezonelegend": "Zikang na ini’ ptanaq rhzyal", + "timezoneregion-africa": "Xweco", + "timezoneregion-america": "Meco", + "timezoneregion-antarctica": "Nancicow", + "timezoneregion-arctic": "Peci’", + "timezoneregion-asia": "Aziya’", + "timezoneregion-australia": "Ostoraliya", + "timezoneregion-europe": "Oco", + "timezoneregion-indian": "Itoyo", + "timezoneregion-pacific": "Tayheyo", + "prefs-searchoptions": "Hhkangi’", + "prefs-namespaces": "Kungcyen na sslalu’", + "default": "pinnama’ smi’", "prefs-files": "biru’ na zayzyuwaw", + "prefs-custom-css": "Sinpung nanak CSS", "youremail": "e-meyo’:", "username": "{{GENDER:$1|Lalu’ na pptzyuwaw}}:", + "yourlanguage": "Kay’:", "email": "e-meyo’", + "prefs-i18n": "Koksayka", + "prefs-dateformat": "Ksu’ na ryax", + "prefs-timeoffset": "Kinini’ ptnaq na zikang", + "prefs-advancedediting": "Kwara’ hya’ g a syensyang", + "prefs-preview": "Pnaynama’ mita’", + "prefs-tokenwatchlist": "Niwan sawsu’", + "prefs-diffs": "Kin’ini’ ptnaq", + "userrights-reason": "’ringan:", + "userrights-expiry-current": "Sinpngan ryax $1", + "userrights-expiry": "Sinpngan ryax:", "group-user": "kwara’ ka cyux mbing ka qutux qutux ngasal", - "group-bot": "squliq na kikay", - "group-sysop": "pklahang", + "group-bot": "Squliq na kikay", + "group-sysop": "Pklahang", + "group-bureaucrat": "Gyose’ning", + "group-suppress": "Pkyagal", + "group-all": "(kwara’)", "group-user-member": "{{GENDER:$1|kwara’ ka cyux mbing ka qutux qutux ngasal}}", + "group-bot-member": "{{GENDER:$1|squliq na kikay}}", "grouppage-user": "{{ns:project}}: kwara’ ka cyux mbing ka qutux qutux ngasal", - "grouppage-bot": "{{ns:project}}:squliq na kikay", + "grouppage-bot": "{{ns:project}}:Squliq na kikay", + "grouppage-sysop": "{{ns:project}}:Pklahang", + "grouppage-bureaucrat": "{{ns:project}}:Gyose’ning", "right-writeapi": "Sptzyuwaw squw API", + "grant-createaccount": "Ps’rux canghaw", "newuserlogpage": "Ps’rux sa bbiru’ krayryax na pbing nasquliq", + "action-edit": "sr’zyut squw zzngayan tay sqaniy", "enhancedrc-history": "kwara’ binrwan sraral", "recentchanges": "Sinbahan misuw qaniy", "recentchanges-legend": "Misan sinbahan wwazyaw misuw", @@ -314,26 +385,36 @@ "recentchanges-legend-heading": " pinkita’ niya’ sa pinzga’ :", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (aniy mita’ sa[[Special:NewPages|giqas na zzngayan]])", "recentchanges-submit": "Pkaykita’", + "rcfilters-filterlist-title": "Hhkangi’", + "rcfilters-filter-user-experience-level-registered-label": "Pinbiru’", + "rcfilters-filter-user-experience-level-unregistered-label": "Iyat pinbiru’ na’", + "rcfilters-filter-user-experience-level-learner-label": "Misan mqbaq", "rcfilters-filter-bots-label": "squliq na kikay", + "rcfilters-filter-unpatrolled-label": "Iyat gnawzyagan mita’ na’", + "rcfilters-filtergroup-significance": "Spzyang krhun na zyuwaw", + "rcfilters-filter-categorization-label": "Pintbcyan na sinbahan", "rclistfrom": "Inkahul misan sinbahan sa $2, $3", "rcshowhideminor": "$1 mszik sa ssr’tun", "rcshowhideminor-show": "Pkaykita’", - "rcshowhideminor-hide": "smbbaq", + "rcshowhideminor-hide": "Lqing", "rcshowhidebots": "$1 squliq na kikay", "rcshowhidebots-show": "Pkaykita’", - "rcshowhidebots-hide": "smbbaq", + "rcshowhidebots-hide": "Lqing", "rcshowhideliu": "$1 wal pbiru’ na pptzyuwaw", "rcshowhideliu-show": "Pkaykita’", - "rcshowhideliu-hide": "smbbaq", + "rcshowhideliu-hide": "Lqing", "rcshowhideanons": "$1 ini’ sbbqan lalu’ na mintzyuwaw", "rcshowhideanons-show": "Pkaykita’", - "rcshowhideanons-hide": "smbbaq", + "rcshowhideanons-hide": "Lqing", "rcshowhidepatr-show": "Pkaykita’", + "rcshowhidepatr-hide": "Lqing", "rcshowhidemine": "$1 sinr’zyut maku’ miru’", "rcshowhidemine-show": "Pkaykita’", - "rcshowhidemine-hide": "smbbaq", + "rcshowhidemine-hide": "Lqing", + "rcshowhidecategorization-show": "Pkaykita’", + "rcshowhidecategorization-hide": "Lqing", "rclinks": "Pinkaykita’ sinbah sa $1 smbah squw $2 misuw qaniy", - "diff": "Kin’ini’ ptnaq", + "diff": "kin’ini’ ptnaq", "hist": "Pinhknyan sraral", "hide": "Lqing", "show": "pkaykita’", @@ -346,17 +427,36 @@ "recentchangeslinked-toolbox": "M’ubuy quw zyuwaw na sinbahan", "recentchangeslinked-title": "Wal m’ubuy squw sinbahan na \"$1\"", "recentchangeslinked-summary": "ani mkuw quw cyux niya’ spsbaq ssyansa zngayan tay sqaniy aniy p‘ubuy sa qsahuy kwara’ zzngayan (ini’ ga kwara’ nyux maki’ sqaniy kawayal niya’ s’nakun) ka wayal niya’ bkgun kwara’ qu zngayan ka wayal sbahun.\ncyux maki’ sa qsahuy na [[Special:Watchlist|bnkuw su’ ka cyux su’ ktan]] ka zngayan ga musa’ niya’ biru’ qthuyburu’.", - "recentchangeslinked-page": "Palu’ na zzngayan", + "recentchangeslinked-page": "Lalu’ na zzngayan:", "recentchangeslinked-to": "Sbah squw m’ay’ubuy zngayan sqaniy ka sinbahan na pinkaykita’ niya’ squw m’ay’ubuy sa sngayan sqaniy", "upload": "Pawsa’ sa kktan zayzyuwaw na biru’", + "uploadnologin": "Ini’ su’ kzyup na’", "filename": "Lalu’ na tang’an", "filedesc": "Lalu’ na spzyang bbiru’ su’", + "fileuploadsummary": "Lalu’ na spzyang bbiru’ su’:", + "filesource": "Tkhulan:", + "upload-file-error": "pin’qwan tay qsahuy", + "upload-dialog-button-back": "’bzinah", + "upload-dialog-button-done": "Tmasuq", + "upload-dialog-button-save": "Cucun", + "upload-form-label-infoform-description": "Miblaq pnqzyu’ sa zyuwaw", + "upload-form-label-usage-title": "Pptzyuwaw", + "upload-form-label-infoform-date": "Ryax", + "license": "Biru’ na gaga’ nqu snwayal hmriq sa kinri’:", "license-header": "Biru’ na gaga’ nqu snwayal hmriq sa kinri’", + "listfiles-delete": "’muyut", "imgfile": "biru’ na zayzyuwaw", + "listfiles_date": "Ryax", "listfiles_user": "kwara’ ka cyux mbing ka qutux qutux ngasal", + "listfiles_size": "Sspngan kinkrahu’", + "listfiles_description": "Miblaq pnqzyu’ sa zyuwaw", + "listfiles_count": "Ubuy gluw bbiru’ ni", + "listfiles-latestversion-yes": "Aw’", + "listfiles-latestversion-no": "iyat", "file-anchor-link": "biru’ na zayzyuwaw", "filehist": "Bniru’ naha’ sa sinr’zyutan na biru’", "filehist-help": "Pphtan ryax/zikang sa kkita’ squw kinblayan biru’ na zayzyuwaw.", + "filehist-revert": "psbzih", "filehist-current": "misuw qaniy", "filehist-datetime": "ryax/zikang", "filehist-thumb": "Swotu’", @@ -369,40 +469,96 @@ "nolinkstoimage": "Ungat ana qutux wal ’mubuy sa biru’ na ana nanu’ zyuwaw qaniy.", "sharedupload-desc-here": "Tang’an qaniy hya’ ga kahul squw$1 ruw hazi’ ana wal sptzyuwaw na cwan’an bbzinah. \nTay kyahu’ cyux spkita’ sa Tang’an qaniy hya’ ga cyux squw [$2 Tang’an pinqzyu’ zngayan ] na qsahuy pinqzyuwan.", "upload-disallowed-here": "Iyat su’ bauqn ’mumuk quw biru’ na zayzyuwaw qaniy.", + "filerevert": "Psbzih $1", + "filerevert-comment": "’ringan:", + "filedelete-comment": "’ringan:", + "filedelete-submit": "’muyut", + "download": "syacay", "randompage": "Random page", + "randomincategory-submit": "Musa’", "statistics": "Sinqunan plpuw", + "pageswithprop-submit": "Musa’", "brokenredirects-edit": "Smr’zyut miru’", + "brokenredirects-delete": "’muyut", + "withoutinterwiki-legend": "T’ringan na biru’", + "withoutinterwiki-submit": "Pkaykita’", "nbytes": "$1 {{PLURAL:$1|qutux llpgan na bzyaqan kkayal}}", "nmembers": "$1 {{PLURAL:$1|pinglgan}}", + "prefixindex-submit": "Pkaykita’", + "protectedpages-timestamp": "Ryax zikang", + "protectedpages-page": "Zzngayan", + "protectedpages-expiry": "Sinpngan ryax", + "protectedpages-reason": "’ringan", + "protectedpages-unknown-timestamp": "Ini’ bqbaqiy ginlaylwan", "usereditcount": "$1 {{PLURAL:$1|smr’zyut miru’}}", "newpages": "Giqas na zzngzyan", + "newpages-submit": "Pkaykita’", "newpages-username": "Lalu’ na pptzyuwaw:", - "move": "smhzi’", + "move": "Smhzi’", + "notargettitle": "Ungat sinngusan niya’", "pager-older-n": "{{PLURAL:$1|smural hazi’ quw $1}}", + "suppress": "Shtuy", + "apisandbox-retry": "Talam lawziy", + "apisandbox-results": "Pcingan balay", + "apisandbox-continue": "Siy lhingiy", "booksources": "Brbiru’ na inkhulan na pila’", "booksources-search-legend": "Hkangi’ tkhulan pila’ na brbiru’", "booksources-search": "Hkangi’", - "log": "Bniru", + "log": "Pinhknyan sraral", + "logeventslist-submit": "Pkaykita’", + "checkbox-all": "Kwara’", + "checkbox-none": "Ungat", + "checkbox-invert": "Pssyuk mwazyaw", + "allpages": "Kwara’ biru’ na zngyan", + "nextpage": "Llpgan tay suruw ($1)", + "prevpage": "Llpgan tay glaing ($1)", "allarticles": "Kwara’ biru’ na zngyan", - "allpagessubmit": "mtzyuwaw", + "allpagessubmit": "Mtzyuwaw", "categories": "Pintbcyan", - "linksearch-ok": "hhkangi’", + "categories-submit": "Pkaykita’", + "linksearch-ns": "Kungcyen na sslalu’:", + "linksearch-ok": "Hhkangi’", + "listusers-submit": "Pkaykita’", + "listgrouprights-rights": "Pcingan na sinpngan", + "listgrants-rights": "Pcingan na sinpngan", "emailusername": "Lalu’ na pptzyuwaw:", + "emailusernamesubmit": "Pawsun", + "emailto": "Sginbang a:", + "emailsubject": "Spzyang na ptzyuwaw:", + "emailmessage": "Pintkaykay’:", "watchlist": "Cyes’ cingtan", "mywatchlist": "Kta quw binkgan biru’", + "watchnologin": "Ini’ su’ kzyup na’", "watch": "Kita’", + "watchlist-hide": "Lqing", + "watchlist-submit": "Pkaykita’", "wlshowhidebots": "squliq na kikay", "wlshowhideanons": "inqing lalu’ nqu squliq cyux mbing", "enotif_impersonal_salutation": "{{SITENAME}} kwara’ ka cyux mbing ka qutux qutux ngasal", "enotif_anon_editor": "inqing lalu’ nqu squliq cyux mbing $1", + "delete-confirm": "’muyut \"$1\"", + "historyaction-submit": "Pkaykita’", "dellogpage": "Wayal pzyutan ka bniru’ qasa", + "deletecomment": "’ringan:", "rollbacklink": "psbnahun", "rollbacklinkcount": "psbzinah squw {{PLURAL:sinr’zyut miru’ sa|$1}}", + "changecontentmodel-reason-label": "’ringan:", + "changecontentmodel-submit": "Smbah", + "logentry-contentmodel-change-revertlink": "psbzih", "protectlogpage": "Kklahang sa bniru’", + "protectcomment": "’ringan:", + "protectexpiry": "Sinpngan ryax:", + "protect-expiring": "Sinpngan ryax $1 (UTC)", + "restriction-type": "Pcingan na sinpngan:", "pagesize": "(bzyaqan kkayal na llpgan)", "restriction-edit": "Smr’zyut miru’", - "restriction-move": "smhzi’", - "undelete-search-submit": "hhkangi’", + "restriction-move": "Smhzi’", + "restriction-create": "Ps’rux", + "undeletebtn": "Psbzih", + "undeleteinvert": "Pssyuk mwazyaw", + "undeletecomment": "’ringan:", + "undelete-search-submit": "Hhkangi’", + "undelete-show-file-submit": "Aw’", "namespace": "Kung cyen na sslalu’:", "invert": "Mssyuk mwazyaw", "tooltip-invert": "Prawngan mwazyaw squw “bbzyagan” qaniy ga lqingun niya’ quw sinbahan zngazyan na wnwazyaw sa “kungcyen na sslalu’ ” (maha iy prawngan su’ mwazyaw quw gluw na “kungcyen na sslalu’ ” lga, mutuw niya’ siy ptnaqiy lmqing uziy kwara’ quw gluw na “kungcyen na sslalu’.”)", @@ -414,15 +570,15 @@ "anoncontribs": "Snli’ sa binrwan", "month": "Pcingan na sniyan naha’ ryax na byacing:", "year": "Pcingan na sniyan naha’ ryax na kawas", - "sp-contributions-logs": "bniru", + "sp-contributions-logs": "pinhknyan sraral", "sp-contributions-talk": "mpkal", - "sp-contributions-submit": "hhkangi’", + "sp-contributions-submit": "Hhkangi’", "whatlinkshere": "Aniy p’ubuy tay lpgan sqaniy", "whatlinkshere-title": "Aniy ’mubuy sa zngayan tay \"$1\"", "whatlinkshere-page": "Zngayan", "linkshere": "Zngayan tay suruw qaniy ga aniy p’ubuy sa [[:$1]]:", "isredirect": "t’ringun pawsa’ sa zngayan", - "istemplate": " ’nagal sa", + "istemplate": "’nagal sa", "isimage": "’ubuy sa biru’ na ana nanu’ zayzyuwaw", "whatlinkshere-prev": "{{PLURAL:$1|glaing tay|glaing tay $1 }}", "whatlinkshere-next": "{{PLURAL:$1|tay suruw|’mubuy sa $1 }}", @@ -431,14 +587,31 @@ "whatlinkshere-hidetrans": "’ nagal sa $1", "whatlinkshere-hidelinks": "$1 p’ubuy", "whatlinkshere-filters": "Hmkangi’", - "autoblocklist-submit": "hhkangi’", - "ipblocklist-submit": "hhkangi’", + "whatlinkshere-submit": "Musa’", + "ipbreason": "’ringan:", + "autoblocklist-submit": "Hhkangi’", + "blocklist-timestamp": "Ryax zikang", + "blocklist-target": "Sinpngan na sinngusan", + "blocklist-expiry": "Sinpngan ryax", + "blocklist-reason": "’ringan", + "ipblocklist-submit": "Hhkangi’", "blocklink": "qmhut", "contribslink": "wal miq sa pincyuwagan", + "move-page": "Smhzi’ $1", "movelogpage": "Sinhzyan sa bniru’", + "movereason": "’ringan:", + "revertmove": "psbzih", "export": "Pawsa’ sa bzinah quwzngayan", + "export-submit": "Pawsa’", + "allmessages-filter-legend": "Hhkangi’", + "allmessages-filter-unmodified": "Iyat sinbah", + "allmessages-filter-all": "Kwara’ biru’ na zngyan", + "allmessages-language": "Kay’:", + "allmessages-filter-submit": "Mtzyuwaw", + "allmessages-filter-translate": "Gmbang miru’", "thumbnail-more": "Pkrahu’", "import-upload-filename": "Lalu’ na tang’an:", + "import-comment": "Tnwang smbbaq miru’", "tooltip-pt-userpage": "{{GENDER:|Lalu’ su’ sa pptzyuwaw}}sinr’zyut miru’", "tooltip-pt-mytalk": "{{GENDER:|Rwa su’}} zngayan sa spkayal", "tooltip-pt-preferences": "{{GENDER:|Rwa su’}}sni’ maku’ ktan krayryax", @@ -455,9 +628,9 @@ "tooltip-search": "Hmkangi’ sa {{SITENAME}}", "tooltip-search-go": "Maha maki’ balay mtnaq lalu’ sa zzngayan qaniy ga, hala ta’ sa zzngayan qasa.", "tooltip-search-fulltext": "Hhkangi’ sa mtntnaq kay’ niya’ sa zzngayan qaniy", - "tooltip-p-logo": "Musa’ sa t’ringan zzngayan", + "tooltip-p-logo": "Usa’ sa t’ringan zzngayan", "tooltip-n-mainpage": "Musa’ sa t’ringan zzngayan", - "tooltip-n-mainpage-description": "Musa’ sa t’ringan zzngayan", + "tooltip-n-mainpage-description": "Usa’ sa t’ringan zzngayan", "tooltip-n-portal": "Maki’ sa Cwan’an(sinpngan naha’ zyuwaw) qaniy ga, nanu’ quw musa’ su’ thzyazyun mtzyuwaw, cyux tay inu’ quw musa’ su’ ’lwan ka musa’ su’ sawyan na pcyuwagun", "tooltip-n-currentevents": "Maki’ sa qsahuy sinbung ga, ktan kya quw mtnaq sa zyuwaw cyux sbiru’ gluw na zyuwaw qasa", "tooltip-n-recentchanges": "Aniy paybkuw sa kktan qu misan wal sbahun misuw qaniy ka nyux qsahuy na beki’ qaniy", @@ -484,25 +657,39 @@ "tooltip-rollback": "ssbu’ sa ’ubuy squ “Psbznahan” lga musa’ baq mbzinah squw sinr’ztan binrwan na misan mniru’ sa wayal qasa", "tooltip-undo": "\"Psbzinah\"hya’ ga mutuw niya’ baqun psbzinah quw sinr’zyut miru’, ruw kahul sa yuran mosu’ gmyah sa pcyuawag na smr’zyut miru’, ana su’ twangan miru’ sa nanu’ quw stwang squw sslalu’ na kkayal qaniy.", "tooltip-summary": "Brwaniy quw lalu’ na spzyang bbiru’ su’", + "others": "bzinah", "simpleantispam-label": "Kmyagal sa kana ptayqihiy na niwan saysyup na kay’ na nnanu.\nLaxiy brwaniy sa bbrwan qaniy!", + "pageinfo-language-change": "smbah", + "pageinfo-content-model-change": "smbah", + "pageinfo-robot-index": "Snwalan", "pageinfo-watchers": "Number of page watchers", "pageinfo-toolboxlink": "Zzngayan na ggalan qqbaqan", "pageinfo-contentpage-yes": "Aw’", + "pageinfo-protect-cascading-yes": "Aw’", + "pageinfo-user-id": "Mning ID", + "confirm-markpatrolled-button": "Wal balay", "nextdiff": "Giqas hazi’ sinr’zyut→", "file-info-size": "$1 × $2 qqblayqan zzyangay, zayzyuwaw biru’ na sspngan kinkrahu’: $3, gluw na mmntnaq MIME: $4", "file-nohires": "Ungat qbaqan miq qutux sa musa’ tthuzyay iyal pkaykita’ sa kinslwan iyal na qayqaya’.", "svg-long-desc": "SVG biru’ na cyux slyan ana nanu’ zayzyuwaw,kinkrahu’ ktan tay babaw\n$1 × $2 tay babaw na Syangsu’,\nsspngan kinkrahu’ kkita’ syasing:$3", "show-big-image": "Spzyang puqing balay na Tang’an", "show-big-image-preview": "Squw tay $1 tay glaing", - "show-big-image-other": "Kinbaqun iyal mita’ na kwara’ tay bbzinah na {{PLURAL:$2||}}:$1", + "show-big-image-other": "Kwara’ tay bbzinah na {{PLURAL:$2|kinbaqun iyal mita’ na}}:$1", "show-big-image-size": "$1 × $2 qqblayqan zzyangay", - "ilsubmit": "hhkangi’", + "file-info-gif-looped": "syunxwan", + "file-info-png-looped": "syunxwan", + "newimages-legend": "Hhkangi’", + "gallery-slideshow-toggle": "Sbah mita' sa syasing bzinah", + "ilsubmit": "Hhkangi’", + "bydate": "skahul sa ryax", "metadata": "Cyuens’cryaw", "metadata-help": "Taki’ sa biru’ na kwara’ zayzyuwaw qaniy ga kwara’ kin na zayzyuwaw bbzinah, kwara’ quw zyuwaw sqaniy ga hazi’ na kahul sa pins’rux na Suwe syangciy ini’ ga tmrang squw cyux ps’rux squw Sken ini’ ga cyux tmrang smr’zyut sa Suwe . \nMaha iy wal sbahun squw puqing balay na biru’ cyux syan squw ana nanu’ zyuwaw lga, iyat hazi’ baqun minblaq ppwah kruma’ quw wal minblayqun miru’ na wayal sbahun na zyuwaw hya’ la.", "metadata-fields": "maki’ squw bnaykgan na pintkaykay’ ka qsahuy na Cyens’cryaw EXIF ga, syun niya’ sa zzngazyan kwara’ kin na Syasing, nanu’ iy mhiriq quw binrwan niya’ Cyens’cryaw lga nanak yaquw nyux sbiru’ hugal ka pintkaykay’ qaniy msthay.\ncyuens’ cryaw bzinah hya’ lga skun niya’ sa llqingun qasa hya’. \n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude", + "exif-imagewidth": "Kinglabang", "exif-orientation": "Ppiray sa iyat ptkkiy ktan quw syasing", "exif-xresolution": "Sweping Cyesitu’", "exif-yresolution": "Cwec’ Cyesitu’", + "exif-primarychromaticities": "Spzyang balay na iro’", "exif-datetime": "Ryax na sinbah Tang’an squw zikang na sinbahan Tang’an", "exif-make": "Squliq ka pkbalay squw Syasinki’", "exif-model": "Lalu’ na kinblayan Syasingki’", @@ -511,28 +698,177 @@ "exif-colorspace": "Hhalan mwazyaw sa qqlah sa ini’ ptnaq kktan na bbiru’", "exif-datetimeoriginal": "Ryax na sni’ sa Craw squw zikang na sni’ sa Craw", "exif-datetimedigitized": "Ryax na minsuwexwa’ squw zikang na minsuwexwa’", + "exif-fnumber": "Kinsmyaxan na syasingki’", + "exif-subjectdistance": "Kintwahiq zyuwaw na sinngusan ppsingan", + "exif-lightsource": "Puqing na syax", + "exif-flash": "Pnilaw na pyax pyax", + "exif-subjectarea": "Rhzyal cyux ki'an na spzyang kkayal", + "exif-subjectlocation": "Cyux ki'an na spzyang kkayal", + "exif-whitebalance": "Wayt belns", + "exif-sharpness": "Srp nes", + "exif-keywords": "Biru’ na Galan sa hhkangi qsahuy na tenaw", + "exif-headline": "Lalu’", + "exif-source": "Tkhulan", + "exif-writer": "Sinmung miru’", + "exif-languagecode": "Kay’:", + "exif-iimcategory": "Ps’anak sa mkgluw", + "exif-identifier": "Biru’ na sinbbaq sa cyux naha’ ptcyuwagun", + "exif-label": "Qinlah lalu’", + "exif-compression-1": "Ini’ aniy pkcikuy na’", + "exif-unknowndate": "Ini’ bqbaqiy ginlaylwan na ryax", "exif-orientation-1": "Mutuw galan sa puqing pspngan kwara’ na squliq", + "exif-orientation-2": "Ptbangun pssyuk", + "exif-exposureprogram-0": "Ini’ syaniy kay’ na’", + "exif-exposureprogram-1": "Szyuwi’ na qba’", + "exif-meteringmode-0": "Ini’ bqbaqiy ginlaylwan", + "exif-meteringmode-1": "Pinqsugan", + "exif-meteringmode-4": "Multi-Spot", + "exif-meteringmode-255": "Bzinah", + "exif-lightsource-0": "Ini’ bqbaqiy ginlaylwan", + "exif-lightsource-1": "Snyaxan wagi’", + "exif-lightsource-2": "Pnilaw na inkwang", + "exif-lightsource-4": "Pnilaw na pyax pyax", + "exif-lightsource-10": "Mzyulung", + "exif-lightsource-11": "Tay minkum", + "exif-focalplaneresolutionunit-2": "incun", + "exif-sensingmethod-1": "Ini’ syaniy kay’ na’", + "exif-customrendered-0": "Kwara’ hya’ ga cngsyu’", + "exif-exposuremode-1": "Pinspsyax na squliq", + "exif-scenecapturetype-0": "Galan pspngan", + "exif-scenecapturetype-2": "Syasing na squliq", + "exif-scenecapturetype-3": "Knita’ sa mlhngan na qlqalang", + "exif-gaincontrol-0": "Ungat", + "exif-gaincontrol-1": "Kcikuy cikay tmwang", + "exif-gaincontrol-2": "Kpzyux cikay tmwang", + "exif-gaincontrol-3": "Kcikuy cikay hmhuwi’", + "exif-gaincontrol-4": "Kpzyux cikay hmhuwi’", + "exif-contrast-0": "Galan pspngan", + "exif-contrast-2": "lawkah/mhitu’", + "exif-saturation-0": "Galan pspngan", + "exif-sharpness-0": "Galan pspngan", + "exif-sharpness-2": "lawkah/mhitu’", + "exif-subjectdistancerange-0": "Ini’ bqbaqiy ginlaylwan", + "exif-subjectdistancerange-1": "Mekro", + "exif-gpslatitude-n": "Pewe’", + "exif-gpslatitude-s": "Nanwe’", + "exif-gpslongitude-e": "Ist longzicyut", + "exif-gpslongitude-w": "Sicing", + "exif-gpsdestdistance-k": "Kirometa’", + "exif-gpsdestdistance-m": "Inri’", + "exif-gpsdestdistance-n": "Hayri’", + "exif-ycbcrpositioning-1": "Kska’", + "exif-dc-contributor": "Minniq", + "exif-dc-date": "Ryax", + "exif-dc-rights": "Pcingan na sinpngan", + "exif-iimcategory-hth": "Blaq hi’", + "exif-iimcategory-spo": "Tayyok", + "exif-iimcategory-wea": "Kayal", + "exif-urgency-normal": "Galan pspngan ($1)", "namespacesall": "kwara’", "monthsall": "kwara’", + "confirm_purge_button": "Wal balay", + "confirm-watch-button": "Wal balay", + "confirm-unwatch-button": "Wal balay", + "confirm-rollback-button": "Wal balay", + "quotation-marks": "\"$1\"", + "imgmultipageprev": "←llpgan tay glaing", + "imgmultipagenext": "llpgan tay suruw →", + "imgmultigo": "Aw’!", + "img-lang-go": "Musa’", + "ascending_abbrev": "pskkrawn paybkuw", + "table_pager_next": "Llpgan tay suruw", + "table_pager_prev": "Llpgan tay glaing", + "table_pager_first": "T’ringan balay na llpgan", + "table_pager_last": "Pucing balay llpgan", + "table_pager_limit_submit": "Pawsun", + "watchlistedit-raw-titles": "Lalu’:", + "watchlistedit-clear-titles": "Lalu’:", "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|mpkal]])", - "redirect-submit": "Ptzyuwaw", + "version": "Ubuy gluw bbiru’ ni", + "version-other": "Bzinah", + "version-skin-colheader-name": "Ktan na rawziq", + "version-ext-colheader-version": "Ubuy gluw bbiru’ ni", + "version-ext-colheader-license": "Biru’ na gaga’ nqu snwayal hmriq sa kinri’", + "version-ext-colheader-description": "Miblaq pnqzyu’ sa zyuwaw", + "version-poweredby-others": "bzinah", + "version-software-version": "Ubuy gluw bbiru’ ni", + "version-entrypoints": "Kkzyup URL", + "version-entrypoints-header-url": "URL", + "version-libraries-library": "Layblari’", + "version-libraries-version": "Ubuy gluw bbiru’ ni", + "version-libraries-license": "biru’ na gaga’ nqu snwayal hmriq sa kinri’", + "version-libraries-description": "Miblaq pnqzyu’ sa zyuwaw", + "redirect-submit": "Mtzyuwaw", + "redirect-lookup": "Hmkangi’:", + "redirect-user": "Mning ID", "redirect-file": "Lalu’ na tang’an", + "redirect-not-exists": "Ini' ’luwiy biru’ na llpgan", "fileduplicatesearch-filename": "Lalu’ na tang’an:", - "fileduplicatesearch-submit": "hhkangi’", + "fileduplicatesearch-submit": "Hhkangi’", "specialpages": "Mnanak na zzngayan", "tag-filter": "[[Special:Tags|qinlah lalu’]]hhkangi’:", "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|qinlah lalu’}}]]: $2)", + "tags-title": "Qinlah lalu’", + "tags-source-header": "Tkhulan", + "tags-active-header": "Gyahiy?", "tags-active-yes": "Aw’", "tags-active-no": "Iyat", "tags-edit": "Smr’zyut miru’", + "tags-delete": "’muyut", + "tags-deactivate": "phngagun", + "tags-create-reason": "’ringan:", + "tags-create-submit": "Ps’rux", + "tags-delete-reason": "’ringan:", + "tags-activate-reason": "’ringan:", + "tags-deactivate-reason": "’ringan:", + "tags-edit-existing-tags-none": "Ungat", + "tags-edit-reason": "’ringan:", + "comparepages": "Pspung sa zzngazyan", + "compare-page2": "Zzngayan 2", + "compare-submit": "Pspngun", + "diff-form": "Kin’ini’ ptnaq", "permanentlink": "Mrayrhuw na pin’ubuy", + "htmlform-submit": "Pawsun", + "htmlform-selectorother-other": "Bzinah", + "htmlform-no": "iyat", + "htmlform-yes": "Aw’", "logentry-delete-delete": "$1 {{GENDER:$2|wal laxan}}zngayan $3", "logentry-move-move": "$1 {{GENDER:$2|wal shzyun}}zngyan $3 squw $4", "logentry-newusers-create": "Wayal tmasuq {{GENDER:$2|ps’rux sq }} quw cin canghaw $1", "logentry-upload-upload": "$1 {{GENDER:$2|wal pawsun }} $3", + "rightsnone": "(ungat)", + "feedback-back": "’bzinah", + "feedback-close": "Tmasuq", + "feedback-message": "Pintkaykay’:", + "feedback-subject": "Spzyang na ptzyuwaw:", + "feedback-submit": "Pawsun", "searchsuggest-search": "Hhkangi’ {{SITENAME}}", + "searchsuggest-containing": "kwara’ kin na...", "limitreport-postexpandincludesize-value": "$1/$2 {{PLURAL:$2|bzyaqan kkayal na llpgan}}", "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|bzyaqan kkayal na llpgan}}", + "expand_templates_output": "Pcingan balay", + "expand_templates_ok": "Wal balay", + "expand_templates_preview": "Pnaynama’ mita’", + "pagelang-language": "Kay’:", + "pagelang-reason": "’ringan", + "pagelang-submit": "Pawsun", "mediastatistics-nbytes": "{{PLURAL:$1|$1 bzyaqan kkayal na llpgan}} ($2; $3%)", - "authmanager-email-label": "e-meyo’" + "mediastatistics-header-unknown": "Ini’ bqbaqiy ginlaylwan", + "mediastatistics-header-text": "Biru’ mlmlux", + "special-characters-group-latin": "Biru’ na lating", + "special-characters-group-symbols": "Sni’ naha’ sa gaga’ na bbiru’", + "special-characters-group-greek": "Biru’ na Grisya’", + "special-characters-group-persian": "Przn", + "special-characters-group-bangla": "Biru’ na Bengr", + "special-characters-group-thai": "Biru’ na Taykok", + "special-characters-group-khmer": "Biru' na Khmer", + "mw-widgets-titleinput-description-new-page": "ungat zzngayan", + "mw-widgets-categoryselector-add-category-placeholder": "Twangiy sa pintbcyan...", + "log-action-filter-all": "Kwara’ biru’ na zngyan", + "log-action-filter-block-block": "Qmhut", + "log-action-filter-delete-event": "Pzyutan binrwan", + "log-action-filter-patrol-patrol": "hkangyun na qba’", + "log-action-filter-rights-rights": "Sbah na qba’", + "authmanager-email-label": "e-meyo’", + "authmanager-email-help": "Zyusyo na e-meyo’" } diff --git a/languages/i18n/th.json b/languages/i18n/th.json index 3f2177856f..cf24b3716a 100644 --- a/languages/i18n/th.json +++ b/languages/i18n/th.json @@ -939,7 +939,7 @@ "search-showingresults": "{{PLURAL:$4|ผลลัพธ์ $1 จากทั้งหมด $3|ผลลัพธ์ $1 - $2 จากทั้งหมด $3}}", "search-nonefound": "ไม่มีผลลัพธ์ตรงกับคำค้น", "search-nonefound-thiswiki": "ไม่พบผลลัพธ์ตรงกับคำค้นในเว็บไซต์นี้", - "powersearch-legend": "ค้นหาขั้นสูง", + "powersearch-legend": "การค้นหาขั้นสูง", "powersearch-ns": "ค้นหาในเนมสเปซ:", "powersearch-togglelabel": "เลือก:", "powersearch-toggleall": "ทั้งหมด", @@ -2508,11 +2508,11 @@ "pageinfo-header-edits": "ประวัติการแก้ไข", "pageinfo-header-restrictions": "การล็อกหน้า", "pageinfo-header-properties": "คุณสมบัติหน้า", - "pageinfo-display-title": "ชื่อหน้าที่แสดงผล", + "pageinfo-display-title": "หัวเรื่องของหน้าเมื่อแสดงผล", "pageinfo-default-sort": "ค่าปริยายของคำหลักในการเรียงลำดับ", "pageinfo-length": "ความยาวหน้า (ไบต์)", "pageinfo-article-id": "หมายเลขประจำหน้า", - "pageinfo-language": "ภาษาเนื้อหาของหน้า", + "pageinfo-language": "ภาษาของเนื้อหาของหน้า", "pageinfo-content-model": "รูปแบบเนื้อหาของหน้า", "pageinfo-robot-policy": "การทำดัชนีโดยบอต", "pageinfo-robot-index": "อนุญาต", @@ -2532,6 +2532,7 @@ "pageinfo-authors": "จำนวนผู้เขียนทั้งหมด", "pageinfo-recent-edits": "การแก้ไขล่าสุด (ในช่วง $1ที่ผ่านมา)", "pageinfo-recent-authors": "จำนวนผู้เขียนล่าสุด", + "pageinfo-magic-words": "{{PLURAL:$1|คำสั่งพิเศษ}} ($1)", "pageinfo-hidden-categories": "หมวดหมู่ที่ซ่อนอยู่ ($1)", "pageinfo-templates": "แม่แบบที่ใช้ ($1)", "pageinfo-toolboxlink": "สารสนเทศหน้า", diff --git a/languages/i18n/uk.json b/languages/i18n/uk.json index cb1e5c819d..c4ffd629c0 100644 --- a/languages/i18n/uk.json +++ b/languages/i18n/uk.json @@ -108,6 +108,7 @@ "tog-watchlisthideminor": "Приховати незначні редагування у списку спостереження", "tog-watchlisthideliu": "Приховати редагування зареєстрованих дописувачів у списку спостереження", "tog-watchlistreloadautomatically": "Перезавантажувати список спостереження автоматично кожного разу, коли зміниться фільтр (вимагається JavaScript)", + "tog-watchlistunwatchlinks": "Додати можливість для виключення сторінок прямо зі сторінки списку спостереження (потрібен JavaScript для функціонування)", "tog-watchlisthideanons": "Приховати редагування анонімних користувачів у списку спостереження", "tog-watchlisthidepatrolled": "Приховати відпатрульовані редагування у списку спостереження", "tog-watchlisthidecategorization": "Приховати категоризацію сторінок", @@ -837,7 +838,7 @@ "last": "попер.", "page_first": "перша", "page_last": "остання", - "histlegend": "Вибір версії: позначте у кружечках версії для порівняння і натисніть «Enter» або кнопку внизу.\n\nПояснення: (поточн.) = відмінності від поточної версії,\n(ост.) = відмінності від попередньої версії, '''м''' = незначне редагування", + "histlegend": "Вибір версії: позначте у кружечках версії для порівняння і натисніть «Enter» або кнопку внизу.\n\nПояснення: ({{int:cur}}) = відмінності від поточної версії,\n({{int:last}}) = відмінності від попередньої версії, {{int:minoreditletter}} = незначне редагування", "history-fieldset-title": "Пошук версій", "history-show-deleted": "Лише вилучені версії", "histfirst": "найдавніші", @@ -1352,6 +1353,7 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (див. також [[Special:NewPages|список нових сторінок]])", "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Показати", + "rcfilters-tag-remove": "Вилучити «$1»", "rcfilters-legend-heading": "Список скорочень:", "rcfilters-other-review-tools": "Інші інструменти перевірки", "rcfilters-group-results-by-page": "Групувати результати за сторінкою", @@ -1364,6 +1366,7 @@ "rcfilters-hours-title": "Останні години", "rcfilters-days-show-days": "$1 {{PLURAL:$1|день|дні|днів}}", "rcfilters-days-show-hours": "$1 {{PLURAL:$1|година|години|годин}}", + "rcfilters-highlighted-filters-list": "Виділено: $1", "rcfilters-quickfilters": "Збережені фільтри", "rcfilters-quickfilters-placeholder-title": "Ще немає збережених посилань", "rcfilters-quickfilters-placeholder-description": "Щоб зберегти Ваші налаштування фільтрів та використати їх пізніше, клацніть на іконку закладки в ділянці активних фільтрів нижче.", @@ -1386,14 +1389,14 @@ "rcfilters-empty-filter": "Без фільтрів. Показано всі зміни.", "rcfilters-filterlist-title": "Фільтри", "rcfilters-filterlist-whatsthis": "Як це працює?", - "rcfilters-filterlist-feedbacklink": "Надайте відгук про нові (бета) фільтри", + "rcfilters-filterlist-feedbacklink": "Розкажіть нам, що Ви думаєте про ці (нові) інструменти фільтрування", "rcfilters-highlightbutton-title": "Виділити результати", "rcfilters-highlightmenu-title": "Вибрати колір", "rcfilters-highlightmenu-help": "Вибрати колір, щоб виділити цю властивість", "rcfilters-filterlist-noresults": "Фільтри не знайдено", "rcfilters-noresults-conflict": "Результатів не знайдено через конфлікт у пошукових критеріях", "rcfilters-state-message-subset": "Цей фільтр не має впливу, оскільки його результати включені в результати {{PLURAL:$2|цього, ширшого, фільтра|цих, ширших, фільтрів}} (спробуйте увімкнути виділення, щоб вирізнити їх): $1", - "rcfilters-state-message-fullcoverage": "Вибір усіх фільтрів у групі — це все одно, що не вибирати жодного з них, тобто таке фільтрування не має впливу. Гупа містить: $1", + "rcfilters-state-message-fullcoverage": "Вибрати всі фільтри в цій групі — це все одно, що не вибирати жодного з них, тобто таке фільтрування не має впливу. Група містить: $1", "rcfilters-filtergroup-authorship": "Авторство внеску", "rcfilters-filter-editsbyself-label": "Зміни, здійснені Вами", "rcfilters-filter-editsbyself-description": "Ваш власний внесок.", @@ -1432,6 +1435,11 @@ "rcfilters-filter-watchlist-watchednew-description": "Зміни до сторінок зі списку спостереження, які Ви не відвідували з моменту здійснення змін.", "rcfilters-filter-watchlist-notwatched-label": "Не в списку спостереження", "rcfilters-filter-watchlist-notwatched-description": "Усе, за винятком змін до сторінок з Вашого списку спостереження", + "rcfilters-filtergroup-watchlistactivity": "Активність у списку спостереження", + "rcfilters-filter-watchlistactivity-unseen-label": "Непереглянуті зміни", + "rcfilters-filter-watchlistactivity-unseen-description": "Зміни до сторінок, які Ви не відвідували з моменту здійснення цих змін.", + "rcfilters-filter-watchlistactivity-seen-label": "Переглянуті зміни", + "rcfilters-filter-watchlistactivity-seen-description": "Зміни до сторінок, які Ви відвідували з моменту здійснення цих змін.", "rcfilters-filtergroup-changetype": "Вид зміни", "rcfilters-filter-pageedits-label": "Редагування сторінок", "rcfilters-filter-pageedits-description": "Редагування вікі-вмісту, обговорень, опису категорій тощо.", @@ -1461,6 +1469,9 @@ "rcfilters-liveupdates-button": "Оновлення наживо", "rcfilters-liveupdates-button-title-on": "Вимкнути оновлення наживо", "rcfilters-liveupdates-button-title-off": "Показувати нові зміни одразу ж після їх здійснення", + "rcfilters-watchlist-markseen-button": "Позначити всі зміни як переглянуті", + "rcfilters-watchlist-edit-watchlist-button": "Редагувати Ваш список сторінок, за якими Ви спостерігаєте", + "rcfilters-watchlist-showupdated": "Зміни до сторінок, які Ви не відвідували з моменту здійснення змін, виділені жирним, із цілісними маркерами.", "rcnotefrom": "Нижче знаходяться {{PLURAL:$5|редагування}} з $3, $4 (відображено до $1).", "rclistfromreset": "Скинути вибір дати", "rclistfrom": "Показати редагування починаючи з $3 $2.", @@ -2151,7 +2162,7 @@ "unwatchthispage": "Скасувати спостереження", "notanarticle": "Не стаття", "notvisiblerev": "Версія була вилучена", - "watchlist-details": "У вашому списку спостереження $1 {{PLURAL:$1|сторінка|сторінки|сторінок}} (не враховуючи сторінок обговорення).", + "watchlist-details": "У Вашому списку спостереження $1 {{PLURAL:$1|сторінка|сторінки|сторінок}} (плюс сторінки обговорення).", "wlheader-enotif": "Сповіщення електронною поштою ввімкнено.", "wlheader-showupdated": "Сторінки, що змінилися після Вашого останнього їх відвідування, виділені '''жирним''' шрифтом.", "wlnote": "Нижче наведено {{PLURAL:$1|останнє $1 редагування|останні $1 редагування|останні $1 редагувань}} за {{PLURAL:$2|останню|останні|останні}} $2 {{PLURAL:$2|годину|години|годин}}, на час $3 $4.", diff --git a/languages/i18n/ur.json b/languages/i18n/ur.json index d844fb8769..6497dfa831 100644 --- a/languages/i18n/ur.json +++ b/languages/i18n/ur.json @@ -1269,7 +1269,10 @@ "recentchanges-legend-heading": "اختصارات:", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (نیز [[Special:NewPages|جدید صفحات کی فہرست]]) ملاحظہ فرمائیں", "recentchanges-submit": "دکھائیں", + "rcfilters-filterlist-feedbacklink": "ہمیں بتایئے کہ آپ آپ ان (نئے) چھننی والے آلات کے بارے میں کیا سوچتے ہیں", "rcfilters-filter-user-experience-level-experienced-label": "تجربہ کار صارف", + "rcfilters-watchlist-edit-watchlist-button": "اپنی زیرنظر صفحات کی فہرست ترمیم کیجیے", + "rcfilters-watchlist-showupdated": "تبدیلیوں کے رونما ہونے کے بعد جن صفحات کا آپ دورہ نہیں کیے ہیں وہ جلی میں، ٹھوس مارکروں کے ساتھ ہیں۔", "rcnotefrom": "ذیل میں $2 سے کی گئی {{PLURAL:$5|تبدیلی|تبدیلیاں}} $1 تک دکھائی جا رہی ہیں۔", "rclistfrom": "$2، $3ء سے ہونے والی نئی تبدیلیاں دکھائیں", "rcshowhideminor": "معمولی ترامیم $1", diff --git a/languages/i18n/vi.json b/languages/i18n/vi.json index 9ab3d48554..21185415e0 100644 --- a/languages/i18n/vi.json +++ b/languages/i18n/vi.json @@ -68,13 +68,14 @@ "tog-shownumberswatching": "Hiển thị số người đang xem", "tog-oldsig": "Chữ ký hiện tại của bạn:", "tog-fancysig": "Xem chữ ký là mã wiki (không có liên kết tự động)", - "tog-uselivepreview": "Xem trước trực tiếp", + "tog-uselivepreview": "Tránh tải lại trang khi xem trước", "tog-forceeditsummary": "Nhắc tôi khi tôi quên tóm lược sửa đổi", "tog-watchlisthideown": "Ẩn các sửa đổi của tôi khỏi danh sách theo dõi", "tog-watchlisthidebots": "Ẩn các sửa đổi của robot khỏi danh sách theo dõi", "tog-watchlisthideminor": "Ẩn các sửa đổi nhỏ khỏi danh sách theo dõi", "tog-watchlisthideliu": "Ẩn sửa đổi của thành viên đã đăng nhập khỏi danh sách theo dõi", "tog-watchlistreloadautomatically": "Tự động tải lại danh sách theo dõi khi nào bộ lọc được thay đổi (cần JavaScript)", + "tog-watchlistunwatchlinks": "Thêm liên kết ngừng theo dõi/theo dõi trực tiếp vào mục trong danh sách theo dõi (cần JavaScript để bật/tắt)", "tog-watchlisthideanons": "Ẩn sửa đổi của người dùng vô danh khỏi danh sách theo dõi", "tog-watchlisthidepatrolled": "Ẩn sửa đổi đã tuần tra trong danh sách theo dõi", "tog-watchlisthidecategorization": "Ẩn việc xếp thể loại", @@ -725,8 +726,8 @@ "permissionserrorstext-withaction": "Bạn không được quyền $2, vì {{PLURAL:$1|lý do|các lý do}} sau:", "contentmodelediterror": "Bạn không thể sửa đổi phiên bản này vì kiểu nội dung của nó là $1, trong khi kiểu nội dung của trang là $2.", "recreate-moveddeleted-warn": "'''Cảnh báo: Bạn sắp tạo lại một trang từng bị xóa trước đây.'''\n\nBạn nên cân nhắc trong việc tiếp tục soạn thảo trang này.\nCác nhật trình xóa và di chuyển của trang được đưa ra dưới đây để tiện theo dõi:", - "moveddeleted-notice": "Trang này đã bị xóa.\nCác nhật trình xóa và di chuyển của trang được đưa ra dưới đây để tiện theo dõi.", - "moveddeleted-notice-recent": "Rất tiếc, trang này vừa bị xóa (trong vòng 24 giờ trước).\nCác nhật trình xóa và di chuyển của trang được đưa ra dưới đây để tiện theo dõi.", + "moveddeleted-notice": "Trang này đã bị xóa.\nCác nhật trình xóa, khóa, và di chuyển của trang được đưa ra dưới đây để tiện theo dõi.", + "moveddeleted-notice-recent": "Rất tiếc, trang này vừa bị xóa (trong vòng 24 giờ trước).\nCác nhật trình xóa, khóa, và di chuyển của trang được đưa ra dưới đây để tiện theo dõi.", "log-fulllog": "Xem nhật trình đầy đủ", "edit-hook-aborted": "Một phần bổ trợ phần mềm đã bỏ qua sửa đổi này.\nKhông có lý do nào được đưa ra.", "edit-gone-missing": "Không thể cập nhật trang.\nDường như trang này đã bị xóa.", @@ -737,12 +738,12 @@ "postedit-confirmation-saved": "Sửa đổi của bạn đã được lưu.", "edit-already-exists": "Không thể tạo trang mới.\nNó đã tồn tại.", "defaultmessagetext": "Nội dung mặc định", - "content-failed-to-parse": "Thất bại phân tích nội dung $2 cho mô hình $1: $3", + "content-failed-to-parse": "Thất bại phân tích nội dung $2 cho kiểu $1: $3", "invalid-content-data": "Dữ liệu nội dung không hợp lệ", "content-not-allowed-here": "Không cho phép đưa nội dung “$1” vào trang [[$2]]", "editwarning-warning": "Rời khỏi trang này sẽ khiến bạn mất các sửa đổi đã thực hiện.\nNếu đã đăng nhập, bạn có thể tắt cảnh báo này tại mục “{{int:prefs-editing}}” trong tùy chọn cá nhân.", - "editpage-invalidcontentmodel-title": "Không hỗ trợ mô hình nội dung", - "editpage-invalidcontentmodel-text": "Mô hình nội dung “$1” không được hỗ trợ.", + "editpage-invalidcontentmodel-title": "Không hỗ trợ kiểu nội dung", + "editpage-invalidcontentmodel-text": "Kiểu nội dung “$1” không được hỗ trợ.", "editpage-notsupportedcontentformat-title": "Không hỗ trợ định dạng nội dung", "editpage-notsupportedcontentformat-text": "Kiểu nội dung $2 không hỗ trợ định dạng nội dung $1.", "content-model-wikitext": "mã wiki", @@ -1085,7 +1086,7 @@ "prefs-help-prefershttps": "Đăng xuất và đăng nhập lại để áp dụng tùy chọn này.", "prefswarning-warning": "Bạn chưa lưu những thay đổi tùy chọn đã thực hiện.\nNếu bạn rời khỏi trang này mà không bấm “$1”, các tùy chọn của bạn sẽ không được cập nhật.", "prefs-tabs-navigation-hint": "Mẹo: Bạn có thể bấm các phím mũi tên trái phải để luân chuyển qua các thẻ trong danh sách thẻ.", - "userrights": "Quản lý quyền thành viên", + "userrights": "Quyền thành viên", "userrights-lookup-user": "Chọn thành viên", "userrights-user-editname": "Nhập tên thành viên:", "editusergroup": "Tải nhóm người dùng", @@ -1110,7 +1111,7 @@ "userrights-expiry-options": "1 ngày:1 day,1 tuần:1 week,1 tháng:1 month,3 tháng:3 months,6 tháng:6 months,1 năm:1 year", "userrights-invalid-expiry": "Thời hạn của nhóm “$1” không hợp lệ.", "userrights-expiry-in-past": "Thời hạn của nhóm “$1” đã xảy ra ở quá khứ.", - "userrights-cannot-shorten-expiry": "Bạn không thể đẩy sớm thời hạn của nhóm “$1”. Chỉ có những người dùng có quyền thêm hay xóa nhóm này có thể đẩy sớm thời hạn.", + "userrights-cannot-shorten-expiry": "Bạn không thể đẩy sớm thời hạn thuộc nhóm “$1”. Chỉ có những người dùng có quyền thêm hay xóa nhóm này có thể đẩy sớm thời hạn.", "userrights-conflict": "Mâu thuẫn thay đổi sửa nhóm thành viên! Xin vui lòng xem lại và xác nhận các thay đổi của bạn.", "group": "Nhóm:", "group-user": "Thành viên thông thường", @@ -1310,37 +1311,66 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (xem thêm [[Special:NewPages|danh sách các trang mới]])", "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Xem", + "rcfilters-tag-remove": "Loại bỏ “$1”", + "rcfilters-legend-heading": "Danh sách chữ viết tắt:", + "rcfilters-other-review-tools": "Công cụ duyệt khác", + "rcfilters-group-results-by-page": "Nhóm kết quả theo trang", + "rcfilters-grouping-title": "Nhóm", "rcfilters-activefilters": "Bộ lọc hiện hành", + "rcfilters-advancedfilters": "Bộ lọc nâng cao", + "rcfilters-limit-title": "Số kết quả để hiển thị", + "rcfilters-limit-shownum": "Xem {{PLURAL:$1|thay đổi|$1 thay đổi}} cuối cùng", "rcfilters-days-title": "Những ngày gần đây", + "rcfilters-hours-title": "Số giờ gần đây", + "rcfilters-days-show-days": "$1 ngày", + "rcfilters-days-show-hours": "$1 giờ", + "rcfilters-highlighted-filters-list": "Tô màu: $1", + "rcfilters-quickfilters": "Bộ lọc đã lưu", + "rcfilters-quickfilters-placeholder-title": "Chưa lưu liên kết", + "rcfilters-quickfilters-placeholder-description": "Để lưu thiết lập bộ lọc để dùng lại sau, bấm hình dấu trang trong hộp “Bộ lọc hiện hành” bên dưới.", + "rcfilters-savedqueries-defaultlabel": "Bộ lọc đã lưu", + "rcfilters-savedqueries-rename": "Đổi tên", "rcfilters-savedqueries-setdefault": "Đặt làm mặc định", "rcfilters-savedqueries-unsetdefault": "Loại bỏ mặc định", + "rcfilters-savedqueries-remove": "Loại bỏ", + "rcfilters-savedqueries-new-name-label": "Tên", + "rcfilters-savedqueries-new-name-placeholder": "Miêu tả mục đích của bộ lọc", + "rcfilters-savedqueries-apply-label": "Tạo bộ lọc", + "rcfilters-savedqueries-apply-and-setdefault-label": "Tạo bộ lọc mặc định", + "rcfilters-savedqueries-cancel-label": "Hủy bỏ", + "rcfilters-savedqueries-add-new-title": "Lưu thiết lập bộ lọc hiện tại", "rcfilters-restore-default-filters": "Mặc định lại các bộ lọc", "rcfilters-clear-all-filters": "Xóa sạch các bộ lọc", + "rcfilters-show-new-changes": "Xem các thay đổi mới nhất", "rcfilters-search-placeholder": "Lọc các thay đổi gần đây (duyệt hoặc bắt đầu đánh chữ)", "rcfilters-invalid-filter": "Bộ lọc không hợp lệ", "rcfilters-empty-filter": "Không có bộ lọc hiện hành. Tất cả các đóng góp được hiển thị.", "rcfilters-filterlist-title": "Bộ lọc", + "rcfilters-filterlist-whatsthis": "Chúng hoạt động làm sao?", + "rcfilters-filterlist-feedbacklink": "Cho chúng tôi biết bạn cảm thấy sao về các công cụ bộ lọc mới này", "rcfilters-highlightbutton-title": "Làm nổi bật kết quả", "rcfilters-highlightmenu-title": "Chọn màu", "rcfilters-highlightmenu-help": "Chọn màu để làm nổi bật thuộc tính này", "rcfilters-filterlist-noresults": "Không tìm thấy bộ lọc", "rcfilters-noresults-conflict": "Không tìm thấy kết quả nào do tiêu chí tìm kiếm đang bị mâu thuẫn", - "rcfilters-filtergroup-authorship": "Người sửa đổi", + "rcfilters-state-message-subset": "Bộ lọc này không có hiệu lực vì kết quả của nó cũng có trong kết quả của {{PLURAL:$2|bộ lọc|các bộ lọc}} rộng hơn này (thử tô màu để phân biệt): $1", + "rcfilters-state-message-fullcoverage": "Chọn tất cả các bộ lọc trong nhóm này có cùng kết quả bằng không chọn gì, nên bộ lọc này không có hiệu lực. Nhóm này bao gồm: $1", + "rcfilters-filtergroup-authorship": "Người đóng góp", "rcfilters-filter-editsbyself-label": "Sửa đổi của bạn", "rcfilters-filter-editsbyself-description": "Các sửa đổi do bạn tạo ra.", "rcfilters-filter-editsbyother-label": "Sửa đổi của người khác", "rcfilters-filter-editsbyother-description": "Các sửa đổi của người khác.", - "rcfilters-filtergroup-userExpLevel": "Trình độ (chỉ người dùng đã đăng ký)", + "rcfilters-filtergroup-userExpLevel": "Trạng thái đăng nhập và trình độ của người dùng", "rcfilters-filter-user-experience-level-registered-label": "Đã đăng ký", "rcfilters-filter-user-experience-level-registered-description": "Người dùng đã đăng nhập.", "rcfilters-filter-user-experience-level-unregistered-label": "Vô danh", "rcfilters-filter-user-experience-level-unregistered-description": "Người dùng chưa đăng nhập.", "rcfilters-filter-user-experience-level-newcomer-label": "Người mới đến", - "rcfilters-filter-user-experience-level-newcomer-description": "Chưa tới 10 sửa đổi và 4 ngày hoạt động.", + "rcfilters-filter-user-experience-level-newcomer-description": "Người dùng đã đăng nhập có ít hơn 10 sửa đổi và 4 ngày hoạt động.", "rcfilters-filter-user-experience-level-learner-label": "Người đang tập", - "rcfilters-filter-user-experience-level-learner-description": "Nhiều ngày hoạt động và sửa đổi hơn “Người mới đến” mà ít hơn “Người có kinh nghiệm”.", + "rcfilters-filter-user-experience-level-learner-description": "Người dùng đã đăng nhập có nhiều kinh nghiệm hơn “Người mới đến” mà ít hơn “Người có kinh nghiệm”.", "rcfilters-filter-user-experience-level-experienced-label": "Người có kinh nghiệm", - "rcfilters-filter-user-experience-level-experienced-description": "Hơn 30 ngày hoạt động và 500 sửa đổi.", + "rcfilters-filter-user-experience-level-experienced-description": "Người dùng đã đăng nhập có hơn 500 sửa đổi và 30 ngày hoạt động.", "rcfilters-filtergroup-automated": "Đóng góp tự động", "rcfilters-filter-bots-label": "Bot", "rcfilters-filter-bots-description": "Các sửa đổi của công cụ tự động.", @@ -1363,6 +1393,11 @@ "rcfilters-filter-watchlist-watchednew-description": "Thay đổi mới trên các trang nằm trong danh sách theo dõi kể từ lần cuối bạn xem trang đó.", "rcfilters-filter-watchlist-notwatched-label": "Không trong danh sách theo dõi", "rcfilters-filter-watchlist-notwatched-description": "Sửa đổi trên các trang không nằm trong danh sách theo dõi của bạn.", + "rcfilters-filtergroup-watchlistactivity": "Hành động trong danh sách theo dõi", + "rcfilters-filter-watchlistactivity-unseen-label": "Thay đổi chưa xem", + "rcfilters-filter-watchlistactivity-unseen-description": "Thay đổi mới trên các trang kể từ lần cuối bạn xem trang đó.", + "rcfilters-filter-watchlistactivity-seen-label": "Thay đổi đã xem", + "rcfilters-filter-watchlistactivity-seen-description": "Thay đổi mới trên các trang mà bạn đã xem kể từ lần cuối trang được thay đổi.", "rcfilters-filtergroup-changetype": "Kiểu thay đổi", "rcfilters-filter-pageedits-label": "Sửa đổi trang", "rcfilters-filter-pageedits-description": "Các sửa đổi đối với nội dung wiki, các trang thảo luận, các miêu tả thể loại…", @@ -1377,9 +1412,24 @@ "rcfilters-typeofchange-conflicts-hideminor": "Bộ lọc Loại sửa đổi này mâu thuẫn với bộ lọc \"Các sửa đổi nhỏ\". Có một số loại sửa đổi không thể được đánh dấu là \"nhỏ\".", "rcfilters-filtergroup-lastRevision": "Phiên bản mới nhất", "rcfilters-filter-lastrevision-label": "Phiên bản mới nhất", - "rcfilters-filter-lastrevision-description": "Sửa đổi mới nhất trên một trang.", - "rcfilters-filter-previousrevision-label": "Các sửa đổi trước", - "rcfilters-filter-previousrevision-description": "Tất cả các sửa đổi không phải là sửa đổi mới nhất của trang.", + "rcfilters-filter-lastrevision-description": "Chỉ sửa đổi mới nhất trên một trang.", + "rcfilters-filter-previousrevision-label": "Không phải phiên bản mới nhất", + "rcfilters-filter-previousrevision-description": "Tất cả các sửa đổi không phải là “phiên bản mới nhất”.", + "rcfilters-filter-excluded": "Loại trừ", + "rcfilters-tag-prefix-namespace-inverted": ":không $1", + "rcfilters-exclude-button-off": "Loại trừ lựa chọn", + "rcfilters-exclude-button-on": "Đang trừ lựa chọn", + "rcfilters-view-advanced-filters-label": "Bộ lọc nâng cao", + "rcfilters-view-tags": "Sửa đổi được gắn thẻ", + "rcfilters-view-namespaces-tooltip": "Lọc kết quả theo không gian tên", + "rcfilters-view-tags-tooltip": "Lọc kết quả theo thẻ đánh dấu", + "rcfilters-view-return-to-default-tooltip": "Quay lại trình đơn bộ lọc chính", + "rcfilters-liveupdates-button": "Cập nhật trực tiếp", + "rcfilters-liveupdates-button-title-on": "Tắt cập nhật trực tiếp", + "rcfilters-liveupdates-button-title-off": "Hiển thị các thay đổi mới lúc khi xảy ra", + "rcfilters-watchlist-markseen-button": "Đánh dấu tất cả thay đổi là đã xem", + "rcfilters-watchlist-edit-watchlist-button": "Sửa danh sách trang theo dõi", + "rcfilters-watchlist-showupdated": "Thay đổi mới trên các trang kể lần cuối bạn xem trang được in đậm và có dấu tô màu.", "rcnotefrom": "Dưới đây là {{PLURAL:$5|thay đổi duy nhất|các thay đổi}} từ $3 $4 (hiển thị tối đa $1 thay đổi).", "rclistfromreset": "Đặt lại lựa chọn ngày", "rclistfrom": "Xem các thay đổi từ $2 $3 trở về sau", @@ -1760,6 +1810,8 @@ "pageswithprop-legend": "Các trang có thuộc tính trang", "pageswithprop-text": "Trang này liệt kê các trang sử dụng một thuộc tính trang nào đó.", "pageswithprop-prop": "Tên thuộc tính:", + "pageswithprop-reverse": "Sắp xếp chiều ngược", + "pageswithprop-sortbyvalue": "Sắp xếp theo giá trị thuộc tính", "pageswithprop-submit": "Xem", "pageswithprop-prophidden-long": "giá trị thuộc tính văn bản dài dòng bị ẩn ($1)", "pageswithprop-prophidden-binary": "giá trị thuộc tính nhị phân bị ẩn ($1)", @@ -1892,6 +1944,7 @@ "apisandbox-sending-request": "Đang gửi yêu cầu API...", "apisandbox-loading-results": "Nhận kết quả API...", "apisandbox-results-error": "Một lỗi xuất hiện khi tải các đáp ứng truy vấn API: $1.", + "apisandbox-results-login-suppressed": "Yêu cầu này đã được xử lý giống như thể người dùng chưa đăng nhập yêu cầu, nếu không thì có thể vượt qua chính sách bảo mật cùng gốc (Same-Origin) của trình duyệt. Lưu ý rằng chức năng tự động xử lý dấu hiệu của chỗ thử API không hoạt động tốt đối với những yêu cầu này, nên bạn phải điền thủ công.", "apisandbox-request-selectformat-label": "Hiển thị dữ liệu yêu cầu dưới dạng:", "apisandbox-request-format-url-label": "Chuỗi truy vấn URL", "apisandbox-request-url-label": "URL của yêu cầu:", @@ -2060,9 +2113,9 @@ "unwatchthispage": "Ngừng theo dõi", "notanarticle": "Không phải trang có nội dung", "notvisiblerev": "Phiên bản bị xóa", - "watchlist-details": "Bạn đang theo dõi {{PLURAL:$1}}$1 trang, không kể riêng các trang thảo luận.", + "watchlist-details": "Bạn đang theo dõi $1 trang, không kể các trang thảo luận.", "wlheader-enotif": "Đã bật thông báo qua thư điện tử.", - "wlheader-showupdated": "Các trang đã thay đổi kể từ lần cuối bạn xem chúng được in '''đậm'''", + "wlheader-showupdated": "Các trang đã thay đổi kể từ lần cuối bạn xem chúng được in đậm.", "wlnote": "Dưới đây là {{PLURAL:$1|thay đổi duy nhất|$1 thay đổi gần nhất}} trong {{PLURAL:$2|giờ|$2 giờ}} qua, tính tới $3 lúc $4.", "wlshowlast": "Hiển thị $1 giờ $2 ngày gần đây", "watchlist-hide": "Ẩn", @@ -2091,10 +2144,11 @@ "enotif_body_intro_moved": "Trang $1 tại {{SITENAME}} đã được $2 di chuyển vào $PAGEEDITDATE. Xem phiên bản hiện hành tại $3 .", "enotif_body_intro_restored": "Trang $1 tại {{SITENAME}} đã được $2 phục hồi vào $PAGEEDITDATE. Xem phiên bản hiện hành tại $3 .", "enotif_body_intro_changed": "Trang $1 tại {{SITENAME}} đã được $2 thay đổi vào $PAGEEDITDATE. Xem phiên bản hiện hành tại $3 .", - "enotif_lastvisited": "Xem $1 để biết các thay đổi diễn ra từ lần xem cuối cùng của bạn.", - "enotif_lastdiff": "Vào $1 để xem sự thay đổi này.", + "enotif_lastvisited": "Xem $1 để biết các thay đổi diễn ra từ lần xem cuối cùng của bạn", + "enotif_lastdiff": "Vào $1 để xem sự thay đổi này", "enotif_anon_editor": "người dùng vô danh $1", "enotif_body": "Xin chào $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nTóm lược sửa đổi: $PAGESUMMARY $PAGEMINOREDIT\n\nLiên lạc với người viết trang qua:\nthư: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nSẽ không có thông báo nào khác nếu có sự thay đổi tiếp theo trừ khi bạn xem trang đó lúc khi đăng nhập. Bạn cũng có thể thiết lập lại việc nhắc nhở cho tất cả các trang nằm trong danh sách theo dõi của bạn.\n\nHệ thống báo tin {{SITENAME}} thân thiện của bạn\n\n--\nĐể thay đổi các thiết lập thư điện tử thông báo, mời xem:\n{{canonicalurl:{{#special:Preferences}}}}\n\nĐể thay đổi các thiết lập danh sách theo dõi, mời xem:\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nĐể xóa trang ra khỏi danh sách theo dõi của bạn, mời xem:\n$UNWATCHURL\n\nPhản hồi và cần sự hỗ trợ:\n$HELPPAGE", + "enotif_minoredit": "Sửa đổi nhỏ", "created": "viết mới", "changed": "thay đổi", "deletepage": "Xóa trang", @@ -2123,6 +2177,7 @@ "delete-warning-toobig": "Trang này có lịch sử sửa đổi lớn, đến hơn $1 lần sửa đổi.\nViệc xóa các trang có thể làm tổn hại đến hoạt động của cơ sở dữ liệu {{SITENAME}};\nhãy cẩn trọng khi thực hiện.", "deleteprotected": "Bạn không thể xóa trang này vì nó đã được khóa lại.", "deleting-backlinks-warning": "Cảnh báo: Có [[Special:WhatLinksHere/{{FULLPAGENAME}}|trang khác]] liên kết đến hoặc nhúng trang mà bạn sắp xóa.", + "deleting-subpages-warning": "Cảnh báo: Bạn sắp sửa xóa trang có [[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|trang con|$1 trang con|51=hơn 50 trang con}}]].", "rollback": "Lùi tất cả sửa đổi", "rollbacklink": "lùi tất cả", "rollbacklinkcount": "lùi tất cả $1 sửa đổi", @@ -2135,7 +2190,7 @@ "editcomment": "Tóm lược sửa đổi: $1.", "revertpage": "Đã lùi lại sửa đổi của [[Special:Contributions/$2|$2]] ([[User talk:$2|Thảo luận]]) quay về phiên bản cuối của [[User:$1|$1]]", "revertpage-nouser": "Đã lùi lại sửa đổi của người dùng ẩn quay về phiên bản cuối của {{GENDER:$1}}[[User:$1|$1]]", - "rollback-success": "Đã hủy sửa đổi của $1;\nquay về phiên bản cuối của $2.", + "rollback-success": "Đã hủy sửa đổi của {{GENDER:$3}}$1;\nquay về phiên bản cuối của {{GENDER:$4}}$2.", "rollback-success-notify": "Đã hủy sửa đổi của $1;\nquay về phiên bản cuối của $2. [$3 Xem thay đổi]", "sessionfailure-title": "Phiên thất bại", "sessionfailure": "Dường như có trục trặc với phiên đăng nhập của bạn; thao tác này đã bị hủy để tránh việc cướp quyền đăng nhập. Xin hãy nhấn nút “Back”, tải lại trang đó, rồi thử lại.", @@ -2241,6 +2296,7 @@ "undelete-search-title": "Tìm kiếm trang đã bị xóa", "undelete-search-box": "Tìm kiếm trang đã bị xóa", "undelete-search-prefix": "Hiển thị trang có tiền tố:", + "undelete-search-full": "Hiển thị các tên trang chứa:", "undelete-search-submit": "Tìm kiếm", "undelete-no-results": "Không tìm thấy trang đã bị xóa nào khớp với từ khóa.", "undelete-filename-mismatch": "Không thể phục hồi phiên bản tập tin vào thời điểm $1: không có tập tin trùng tên", @@ -2278,7 +2334,7 @@ "sp-contributions-uploads": "tập tin tải lên", "sp-contributions-logs": "nhật trình", "sp-contributions-talk": "thảo luận", - "sp-contributions-userrights": "quản lý quyền thành viên", + "sp-contributions-userrights": "quản lý quyền {{GENDER:$1}}thành viên", "sp-contributions-blocked-notice": "Thành viên này hiện đang bị cấm sửa đổi. Nhật trình cấm gần nhất được ghi ở dưới để tiện theo dõi:", "sp-contributions-blocked-notice-anon": "Địa chỉ IP này đang bị cấm. Hãy tham khảo mục mới nhất trong nhật trình cấm IP này:", "sp-contributions-search": "Tìm kiếm đóng góp", @@ -2347,8 +2403,13 @@ "unblocked-id": "$1 đã hết bị cấm", "unblocked-ip": "[[Special:Contributions/$1|$1]] đã được bỏ cấm.", "blocklist": "Người dùng bị cấm", - "autoblocklist": "Các lệnh cấm tự động", + "autoblocklist": "Tác vụ cấm tự động", "autoblocklist-submit": "Tìm kiếm", + "autoblocklist-legend": "Xem danh sách các tác vụ cấm tự động", + "autoblocklist-localblocks": "{{PLURAL:$1}}Tác vụ cấm tự động cục bộ", + "autoblocklist-total-autoblocks": "Tổng số cấm tự động: $1", + "autoblocklist-empty": "Danh sách cấm tự động hiện đang trống.", + "autoblocklist-otherblocks": "{{PLURAL:$1}}Tác vụ cấm tự động khác", "ipblocklist": "Người dùng bị cấm", "ipblocklist-legend": "Tìm một thành viên bị cấm", "blocklist-userblocks": "Ẩn tác vụ cấm tài khoản", @@ -2570,7 +2631,7 @@ "import-nonewrevisions": "Không nhập phiên bản nào (tất cả các phiên bản đều đã có sẵn hoặc bị bỏ qua do lỗi).", "xml-error-string": "$1 tại dòng $2, cột $3 (byte $4): $5", "import-upload": "Tải lên dữ liệu XML", - "import-token-mismatch": "Mất dữ liệu phiên làm việc.\n\nCó thể bạn đã được đăng xuất. Xin hãy xác nhận rằng bạn vẫn được đăng nhập và thử lại.\nNếu vẫn không được, hãy thử [[Special:UserLogout|đăng xuất]] rồi đăng nhập lại, và kiểm tra rằng trình duyệt của bạn cho phép các cookie của trang Web này.", + "import-token-mismatch": "Mất dữ liệu phiên làm việc.\n\nCó thể bạn đã được đăng xuất. '''Xin hãy xác nhận rằng bạn vẫn được đăng nhập và thử lại.'''\nNếu vẫn không được, hãy thử [[Special:UserLogout|đăng xuất]] rồi đăng nhập lại, và kiểm tra rằng trình duyệt của bạn cho phép các cookie của trang Web này.", "import-invalid-interwiki": "Không thể nhập trang từ wiki được chỉ định.", "import-error-edit": "Trang “$1” không được nhập tại vì bạn không được phép sửa đổi nó.", "import-error-create": "Trang “$1” không được nhập tại vì bạn không được phép tạo ra nó.", @@ -2598,6 +2659,7 @@ "tooltip-pt-mycontris": "Danh sách các đóng góp của tôi", "tooltip-pt-anoncontribs": "Danh sách các sửa đổi được thực hiện qua địa chỉ IP này", "tooltip-pt-login": "Đăng nhập sẽ có lợi hơn, tuy nhiên không bắt buộc.", + "tooltip-pt-login-private": "Bạn cần phải đăng nhập để sử dụng wiki này", "tooltip-pt-logout": "Đăng xuất", "tooltip-pt-createaccount": "Khuyến khích bạn mở tài khoản và đăng nhập; tuy nhiên, không phải bắt buộc phải có tài khoản", "tooltip-ca-talk": "Thảo luận về trang này", @@ -2646,7 +2708,7 @@ "tooltip-ca-nstab-category": "Xem trang thể loại", "tooltip-minoredit": "Đánh dấu đây là sửa đổi nhỏ", "tooltip-save": "Lưu lại những thay đổi của bạn", - "tooltip-publish": "Xuất bản các thay đổi của bạn", + "tooltip-publish": "Đăng các thay đổi của bạn", "tooltip-preview": "Xem trước những thay đổi, hãy dùng nó trước khi lưu!", "tooltip-diff": "Xem thay đổi bạn đã thực hiện.", "tooltip-compareselectedversions": "Xem khác biệt giữa hai phiên bản đã chọn của trang này.", @@ -2677,7 +2739,7 @@ "anonymous": "{{PLURAL:$1}}Người dùng vô danh của {{SITENAME}}", "siteuser": "thành viên $1 của {{SITENAME}}", "anonuser": "người dùng vô danh $1 tại {{SITENAME}}", - "lastmodifiedatby": "Trang này được $3 cập nhật lần cuối lúc $2 $1.", + "lastmodifiedatby": "Trang này được $3 sửa đổi lần cuối lúc $2 $1.", "othercontribs": "Dựa trên công trình của $1.", "others": "những người khác", "siteusers": "{{SITENAME}} {{PLURAL:$2|{{GENDER:$1|người dùng}}|users}} $1", @@ -2799,8 +2861,11 @@ "newimages-summary": "Trang đặc biệt này hiển thị các tập tin được tải lên gần đây nhất.", "newimages-legend": "Bộ lọc", "newimages-label": "Tên tập tin (hoặc một phần tên):", + "newimages-user": "Địa chỉ IP hoặc tên người dùng", + "newimages-newbies": "Chỉ hiển thị đóng góp của tài khoản mới", "newimages-showbots": "Xem các tập tin do bot tải lên", "newimages-hidepatrolled": "Ẩn tập tin tải lên đã tuần tra", + "newimages-mediatype": "Kiểu phương tiện:", "noimages": "Chưa có hình.", "gallery-slideshow-toggle": "Bật/tắt hình nhỏ", "ilsubmit": "Tìm kiếm", @@ -3433,6 +3498,7 @@ "fileduplicatesearch-noresults": "Không tìm thấy tập tin nào tên “$1”.", "specialpages": "Các trang đặc biệt", "specialpages-note-top": "Chú giải", + "specialpages-note-restricted": "* Trang đặc biệt thông thường.\n* Trang đặc biệt được hạn chế.", "specialpages-group-maintenance": "Báo cáo bảo quản", "specialpages-group-other": "Trang đặc biệt khác", "specialpages-group-login": "Đăng nhập / Mở tài khoản", @@ -3453,8 +3519,8 @@ "tag-filter": "Bộ lọc [[Special:Tags|thẻ]]:", "tag-filter-submit": "Bộ lọc", "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1}}Thẻ]]: $2)", - "tag-mw-contentmodelchange": "thay đổi mô hình nội dung", - "tag-mw-contentmodelchange-description": "Sửa đổi [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:ChangeContentModel thay đổi mô hình nội dung] của trang", + "tag-mw-contentmodelchange": "thay đổi kiểu nội dung", + "tag-mw-contentmodelchange-description": "Sửa đổi [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:ChangeContentModel thay đổi kiểu nội dung] của trang", "tags-title": "Thẻ đánh dấu", "tags-intro": "Trang này liệt kê các thẻ đánh dấu mà phần mềm dùng nó để đánh dấu một sửa đổi, và ý nghĩa của nó.", "tags-tag": "Tên thẻ", @@ -3482,7 +3548,7 @@ "tags-create-reason": "Lý do:", "tags-create-submit": "Tạo mới", "tags-create-no-name": "Bạn phải chỉ định một tên thẻ.", - "tags-create-invalid-chars": "Tên thẻ không được chứa dấu phẩy (,) hoặc dấu gạch chéo lên (/).", + "tags-create-invalid-chars": "Tên thẻ không được chứa dấu phẩy (,), dấu sổ (|), hoặc dấu gạch chéo lên (/).", "tags-create-invalid-title-chars": "Tên thẻ không được chứa các ký tự mà không thể được sử dụng trong tiêu đề của trang .", "tags-create-already-exists": "Các từ khóa “$1” đã tồn tại.", "tags-create-warnings-above": "{{PLURAL:$2|Cảnh báo|Các cảnh báo}} sau gặp phải khi cố gắng để tạo ra thẻ “$1”:", @@ -3551,7 +3617,13 @@ "compare-invalid-title": "Tên trang chỉ định không hợp lệ.", "compare-title-not-exists": "Tên trang chỉ định không tồn tại.", "compare-revision-not-exists": "Phiên bản chỉ định không tồn tại.", - "diff-form": "'''biểu mẫu'''", + "diff-form": "Khác biệt", + "diff-form-oldid": "Số phiên bản cũ (tùy chọn)", + "diff-form-revid": "Số phiên bản của khác biệt", + "diff-form-submit": "Trình bày khác biệt", + "permanentlink": "Liên kết thường trực", + "permanentlink-revid": "Số phiên bản", + "permanentlink-submit": "Đi đến phiên bản", "dberr-problems": "Xin lỗi! Trang này đang gặp phải những khó khăn về kỹ thuật.", "dberr-again": "Xin thử đợi vài phút rồi tải lại trang.", "dberr-info": "(Không thể liên lạc với máy chủ cơ sở dữ liệu: $1)", @@ -3595,6 +3667,9 @@ "logentry-delete-delete": "$1 {{GENDER:$2}}đã xóa trang “$3”", "logentry-delete-delete_redir": "$1 {{GENDER:$2}}đã xóa trang đổi hướng $3 bằng cách ghi đè", "logentry-delete-restore": "$1 {{GENDER:$2}}đã phục hồi trang $3 ($4)", + "logentry-delete-restore-nocount": "$1 {{GENDER:$2}}đã phục hồi trang $3", + "restore-count-revisions": "$1 phiên bản", + "restore-count-files": "$1 tập tin", "logentry-delete-event": "$1 {{GENDER:$2}}đã thay đổi mức hiển thị của {{PLURAL:$5|một mục nhật trình|$5 mục nhật trình}} về $3: $4", "logentry-delete-revision": "$1 {{GENDER:$2}}đã thay đổi mức hiển thị của {{PLURAL:$5|một phiên bản|$5 phiên bản}} trang $3: $4", "logentry-delete-event-legacy": "$1 {{GENDER:$2}}đã thay đổi mức hiển thị của các mục nhật trình về $3", @@ -3801,6 +3876,7 @@ "special-characters-group-thai": "Thái", "special-characters-group-lao": "Lào", "special-characters-group-khmer": "Khơ-me", + "special-characters-group-canadianaboriginal": "Thổ dân Canada", "special-characters-title-endash": "dấu gạch en", "special-characters-title-emdash": "dấu gạch em", "special-characters-title-minus": "dấu trừ", @@ -3949,9 +4025,14 @@ "restrictionsfield-help": "Mỗi dòng một địa chỉ IP hoặc dải CIDR. Để kích hoạt tất cả mọi địa chỉ IP, sử dụng:
0.0.0.0/0\n::/0
", "revid": "phiên bản $1", "pageid": "số trang $1", + "rawhtml-notallowed": "Không thể sử dụng thẻ <html> bên ngoài trang bình thường.", "gotointerwiki": "Rời khỏi {{SITENAME}}", "gotointerwiki-invalid": "Tên trang chỉ định không hợp lệ.", + "gotointerwiki-external": "Bạn sắp sửa thoát {{SITENAME}} để đi đến [[$2]], đó là trang Web riêng.\n\n'''[$1 Tiếp tục đi đến $1]'''", + "undelete-cantedit": "Bạn không thể phục hồi trang này vì bạn không có quyền sửa đổi trang.", + "undelete-cantcreate": "Bạn không thể phục hồi trang này vì không có trang nào với tên này và bạn không có quyền tạo ra trang này.", "pagedata-title": "Dữ liệu về trang", + "pagedata-text": "Trang này cung cấp giao diện dữ liệu cho các trang. Xin hãy cung cấp tên trang trong URL dùng cú pháp trang con.\n* Chế độ đàm phán nội dung được áp dụng tùy theo đầu đề Accept (chấp nhận) của trình khách của bạn. Điều này có nghĩa rằng dữ liệu trang được cung cấp dưới định dạng thích hợp nhất đối với trình khác của bạn.", "pagedata-not-acceptable": "Không tìm thấy định dạng phù hợp. Các kiểu MIME được hỗ trợ: $1", "pagedata-bad-title": "Tiêu đề không hợp lệ: $1." } diff --git a/languages/i18n/wuu.json b/languages/i18n/wuu.json index 0c75fc587c..d921498b83 100644 --- a/languages/i18n/wuu.json +++ b/languages/i18n/wuu.json @@ -22,7 +22,8 @@ "反共复国", "姑苏小恐龙", "飞舞回堂前", - "Macofe" + "Macofe", + "Dcljr" ] }, "tog-underline": "鏈接下橫線:", @@ -167,13 +168,7 @@ "anontalk": "讲张", "navigation": "导航", "and": "搭仔", - "qbfind": "尋", - "qbbrowse": "浏览", - "qbedit": "编辑", - "qbpageoptions": "箇頁", - "qbmyoptions": "我个页面", "faq": "FAQ", - "faqpage": "Project:FAQ", "actions": "动作", "namespaces": "名字空间", "variants": "变量", @@ -198,29 +193,19 @@ "edit-local": "编辑本地说明", "create": "创建", "create-local": "添加本地说明", - "editthispage": "编辑该只页面", - "create-this-page": "建箇頁", "delete": "删除", - "deletethispage": "刪箇頁", - "undeletethispage": "还原箇页", "undelete_short": "还原{{PLURAL:$1|一趟编辑|$1趟编辑}}", "viewdeleted_short": "望{{PLURAL:$1|一只删脱个编辑|$1只删脱个编辑}}", "protect": "保", "protect_change": "改", - "protectthispage": "保护该个页面", "unprotect": "更改保护", - "unprotectthispage": "更改此页个保护", "newpage": "新页", - "talkpage": "探討箇頁", "talkpagelinktext": "讲张", "specialpage": "特別頁", "personaltools": "私人家伙", - "articlepage": "望内容页", "talk": "讨论", "views": "望", "toolbox": "家生", - "userpage": "望用戶頁", - "projectpage": "望計劃頁", "imagepage": "望文件頁", "mediawikipage": "望信息頁", "templatepage": "望模板頁", @@ -1267,6 +1252,7 @@ "watchlist-options": "关注表选项", "watching": "监控……", "unwatching": "解除监控……", + "enotif_body_intro_deleted": "{{SITENAME}}页面$1已于$PAGEEDITDATE被$2{{GENDER:$2|删除}},请见<$3>。", "created": "建立哉", "changed": "改变哉", "deletepage": "删脱页面", diff --git a/languages/i18n/yi.json b/languages/i18n/yi.json index 986f6d3d3d..5008d741b8 100644 --- a/languages/i18n/yi.json +++ b/languages/i18n/yi.json @@ -1274,6 +1274,7 @@ "rcfilters-savedqueries-new-name-label": "נאָמען", "rcfilters-savedqueries-apply-label": "שאפן פילטער", "rcfilters-savedqueries-cancel-label": "אַנולירן", + "rcfilters-show-new-changes": "ווייזן די נייעסטע ענדערונגען", "rcfilters-search-placeholder": "פֿילטערן לעצטיקע ענדערונגען (דורכקוקן אדער אָנהייבן אַריינקלאַפן)", "rcfilters-invalid-filter": "אומגילטיגער פֿילטער", "rcfilters-empty-filter": "קיין אַקטיווע פילטערס. אלע ביישטייערונגען געוויזן.", @@ -1308,6 +1309,7 @@ "rcfilters-filter-previousrevision-label": "נישט די לעצטע ווערסיעס", "rcfilters-filter-excluded": "אויסגעשלאסן", "rcfilters-tag-prefix-namespace-inverted": ":נישט $1", + "rcfilters-view-advanced-filters-label": "פֿארגעשריטענע פֿילטערס", "rcfilters-liveupdates-button": "לעבעדיקע דערהיינטיקונגען", "rcnotefrom": "פֿאלגנד {{PLURAL:$5|איז די ענדערונג| זענען די ענדערונגען}} זײַט $3, $4 (ביז $1).", "rclistfrom": "װײַזן נײַע ענדערונגען פֿון $3 $2", diff --git a/languages/i18n/zh-hans.json b/languages/i18n/zh-hans.json index 3ad8e1fcd8..b34927e601 100644 --- a/languages/i18n/zh-hans.json +++ b/languages/i18n/zh-hans.json @@ -1371,6 +1371,7 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}}(见[[Special:NewPages|新页面列表]])", "recentchanges-legend-plusminus": "(±123)", "recentchanges-submit": "显示", + "rcfilters-tag-remove": "移除“$1”", "rcfilters-legend-heading": "缩写列表:", "rcfilters-other-review-tools": "其他复核工具", "rcfilters-group-results-by-page": "按页面分组结果", @@ -1383,6 +1384,7 @@ "rcfilters-hours-title": "最近几个小时", "rcfilters-days-show-days": "$1{{PLURAL:$1|天}}", "rcfilters-days-show-hours": "$1{{PLURAL:$1|小时}}", + "rcfilters-highlighted-filters-list": "已高亮:$1", "rcfilters-quickfilters": "已保存过滤器", "rcfilters-quickfilters-placeholder-title": "尚未保存链接", "rcfilters-quickfilters-placeholder-description": "要保存您的过滤器设置并供日后再利用,点击下方激活的过滤器区域内的书签图标。", @@ -1405,14 +1407,14 @@ "rcfilters-empty-filter": "没有激活的过滤器。已显示所有贡献。", "rcfilters-filterlist-title": "过滤器", "rcfilters-filterlist-whatsthis": "这些是怎样工作的?", - "rcfilters-filterlist-feedbacklink": "在新(测试版)过滤器中提供反馈", + "rcfilters-filterlist-feedbacklink": "告诉我们您对这些(新)过滤工具有什么想法", "rcfilters-highlightbutton-title": "高亮结果", "rcfilters-highlightmenu-title": "选择颜色", "rcfilters-highlightmenu-help": "选择颜色来高亮该属性", "rcfilters-filterlist-noresults": "找不到过滤器", "rcfilters-noresults-conflict": "找不到结果,因为搜索条件不一致", "rcfilters-state-message-subset": "该过滤器没有影响,因为其结果已包含在以下影响更广的{{PLURAL:$2|过滤器}}中(尝试高亮来区别它):$1", - "rcfilters-state-message-fullcoverage": "组中选择的所有过滤器与选定过滤器相同,因此该过滤器没有影响。组包含:$1", + "rcfilters-state-message-fullcoverage": "此组中选择的所有过滤器与选定过滤器相同,因此该过滤器没有影响。组包含:$1", "rcfilters-filtergroup-authorship": "贡献的作者", "rcfilters-filter-editsbyself-label": "您的更改", "rcfilters-filter-editsbyself-description": "您自己的贡献。", @@ -1451,6 +1453,11 @@ "rcfilters-filter-watchlist-watchednew-description": "自从更改发生以来,对您没有访问的监视页面做出的更改。", "rcfilters-filter-watchlist-notwatched-label": "未在监视列表上", "rcfilters-filter-watchlist-notwatched-description": "除了对您监视的页面做出更改以外的任何事项。", + "rcfilters-filtergroup-watchlistactivity": "监视列表活动", + "rcfilters-filter-watchlistactivity-unseen-label": "未查看更改", + "rcfilters-filter-watchlistactivity-unseen-description": "自从更改发生以来,对您没有访问的页面做出的更改。", + "rcfilters-filter-watchlistactivity-seen-label": "已查看更改", + "rcfilters-filter-watchlistactivity-seen-description": "自从更改发生以来,对您已访问的页面做出的更改。", "rcfilters-filtergroup-changetype": "更改类型", "rcfilters-filter-pageedits-label": "页面编辑", "rcfilters-filter-pageedits-description": "对wiki内容、讨论、分类描述等的编辑", @@ -1480,6 +1487,9 @@ "rcfilters-liveupdates-button": "实时更新", "rcfilters-liveupdates-button-title-on": "关闭实时更新", "rcfilters-liveupdates-button-title-off": "显示新更改(如有)", + "rcfilters-watchlist-markseen-button": "标记所有更改为已查看", + "rcfilters-watchlist-edit-watchlist-button": "编辑您的监视页面的列表", + "rcfilters-watchlist-showupdated": "自更改发生以来,对您尚未访问的页面做出的更改以粗体显示,并带有立体标记。", "rcnotefrom": "下面{{PLURAL:$5|是}}$3 $4之后的更改(最多显示$1个)。", "rclistfromreset": "重置时间选择", "rclistfrom": "显示$3 $2之后的新更改", @@ -2165,7 +2175,7 @@ "unwatchthispage": "停止监视", "notanarticle": "非内容页面", "notvisiblerev": "上次由不同用户所作的版本已经删除", - "watchlist-details": "不计讨论页,您的监视列表中有$1个页面。", + "watchlist-details": "您的监视列表中有{{PLURAL:$1|$1个页面}}(外加讨论页)。", "wlheader-enotif": "已启用电子邮件通知。", "wlheader-showupdated": "您上次访问后发生更改的页面加粗显示。", "wlnote": "下面是{{PLURAL:$2|过去$2小时}}的{{PLURAL:$1|最后$1个更改}},截至$3 $4。", @@ -2902,10 +2912,10 @@ "show-big-image-other": "其他{{PLURAL:$2|分辨率}}:$1。", "show-big-image-size": "$1×$2像素", "file-info-gif-looped": "循环", - "file-info-gif-frames": "$1帧", + "file-info-gif-frames": "$1{{PLURAL:$1|帧}}", "file-info-png-looped": "循环", "file-info-png-repeat": "已播放$1遍", - "file-info-png-frames": "$1帧", + "file-info-png-frames": "$1{{PLURAL:$1|帧}}", "file-no-thumb-animation": "'''注意:由于技术限制,该文件的缩略图无法进行动画处理。'''", "file-no-thumb-animation-gif": "'''注意:由于技术限制,高分辨率GIF图像的缩略图无法进行动画处理。'''", "newimages": "新文件图库", @@ -3771,7 +3781,7 @@ "limitreport-expansiondepth": "最高扩展深度", "limitreport-expensivefunctioncount": "高开销解析函数数量", "expandtemplates": "展开模板", - "expand_templates_intro": "此特殊页面可以递归地展开所给文本中的模板。\n它同时还可展开诸如{{#language:...}}的解析器函数和诸如{{CURRENTDAY}}的变量。\n实际上,几乎所有在双重花括号中的内容都会被展开。", + "expand_templates_intro": "此特殊页面可以递归地展开所给文本中的模板。它同时还可展开像{{#language:…}}这样的解析器函数和像{{CURRENTDAY}}这样的变量。实际上,几乎所有在双重花括号中的内容都会被展开。", "expand_templates_title": "上下文标题,用于{{FULLPAGENAME}}等:", "expand_templates_input": "输入文本:", "expand_templates_output": "结果", diff --git a/languages/i18n/zh-hant.json b/languages/i18n/zh-hant.json index 342ccef518..46fdcf4ec6 100644 --- a/languages/i18n/zh-hant.json +++ b/languages/i18n/zh-hant.json @@ -2647,7 +2647,7 @@ "import-nonewrevisions": "未匯入任何修訂 (修訂已存在,或因錯誤跳過)。", "xml-error-string": "$1 於行 $2,欄 $3 ($4 位元組):$5", "import-upload": "上傳 XML 資料", - "import-token-mismatch": "連線階段資料遺失。\n\n您可能已被登出。請確認您是否仍在登入狀態並再試一次。\n若仍無法運作,請嘗試[[Special:UserLogout|登出]]再登入一次,並檢查您的瀏覽器是否允許本站使用 cookie。", + "import-token-mismatch": "連線階段資料遺失。\n\n您可能已被登出。'''請確認您是否仍在登入狀態並再試一次'''。\n若仍無法運作,請嘗試[[Special:UserLogout|登出]]再登入一次,並檢查您的瀏覽器是否允許本站使用 cookie。", "import-invalid-interwiki": "不能從指定的 Wiki 匯入。", "import-error-edit": "您沒有權限編輯頁面 \"$1\",無法匯入。", "import-error-create": "您沒有權限建立頁面 \"$1\",無法匯入。", @@ -3548,7 +3548,11 @@ "compare-invalid-title": "您所指定的標題無效。", "compare-title-not-exists": "您所指定的標題不存在。", "compare-revision-not-exists": "您所指定的修訂不存在。", - "diff-form": "表", + "diff-form": "差異", + "diff-form-oldid": "舊修訂版本ID(可選)", + "diff-form-revid": "差異的修訂版本ID", + "permanentlink": "固定連結", + "permanentlink-revid": "修訂版本ID", "dberr-problems": "抱歉!這個網站出現了一些技術上的問題。", "dberr-again": "請稍後數分鐘後再試。", "dberr-info": "(無法存取資料庫:$1)", diff --git a/languages/messages/MessagesTay.php b/languages/messages/MessagesTay.php new file mode 100644 index 0000000000..11b5b984ec --- /dev/null +++ b/languages/messages/MessagesTay.php @@ -0,0 +1,10 @@ +output( "Deleting..." ); $dbw->delete( 'revision', [ 'rev_id' => $oldRevs ], __METHOD__ ); + $dbw->delete( 'ip_changes', [ 'ipc_rev_id' => $oldRevs ], __METHOD__ ); $this->output( "done.\n" ); } diff --git a/maintenance/deleteOrphanedRevisions.php b/maintenance/deleteOrphanedRevisions.php index e99f2b0d5b..4d6007063a 100644 --- a/maintenance/deleteOrphanedRevisions.php +++ b/maintenance/deleteOrphanedRevisions.php @@ -92,6 +92,9 @@ class DeleteOrphanedRevisions extends Maintenance { $id = [ $id ]; } $dbw->delete( 'revision', [ 'rev_id' => $id ], __METHOD__ ); + + // Delete from ip_changes should a record exist. + $dbw->delete( 'ip_changes', [ 'ipc_rev_id' => $id ], __METHOD__ ); } } diff --git a/maintenance/deleteRevision.php b/maintenance/deleteRevision.php deleted file mode 100644 index 3abbdab99b..0000000000 --- a/maintenance/deleteRevision.php +++ /dev/null @@ -1,110 +0,0 @@ -addDescription( 'Delete one or more revisions by moving them to the archive table' ); - } - - public function execute() { - if ( count( $this->mArgs ) == 0 ) { - $this->error( "No revisions specified", true ); - } - - $this->output( "Deleting revision(s) " . implode( ',', $this->mArgs ) . - " from " . wfWikiID() . "...\n" ); - $dbw = $this->getDB( DB_MASTER ); - - $affected = 0; - foreach ( $this->mArgs as $revID ) { - $dbw->insertSelect( 'archive', [ 'page', 'revision' ], - [ - 'ar_namespace' => 'page_namespace', - 'ar_title' => 'page_title', - 'ar_page_id' => 'page_id', - 'ar_comment' => 'rev_comment', - 'ar_user' => 'rev_user', - 'ar_user_text' => 'rev_user_text', - 'ar_timestamp' => 'rev_timestamp', - 'ar_minor_edit' => 'rev_minor_edit', - 'ar_rev_id' => 'rev_id', - 'ar_text_id' => 'rev_text_id', - 'ar_deleted' => 'rev_deleted', - 'ar_len' => 'rev_len', - ], - [ - 'rev_id' => $revID, - 'page_id = rev_page' - ], - __METHOD__ - ); - if ( !$dbw->affectedRows() ) { - $this->output( "Revision $revID not found\n" ); - } else { - $affected += $dbw->affectedRows(); - $pageID = $dbw->selectField( - 'revision', - 'rev_page', - [ 'rev_id' => $revID ], - __METHOD__ - ); - $pageLatest = $dbw->selectField( - 'page', - 'page_latest', - [ 'page_id' => $pageID ], - __METHOD__ - ); - $dbw->delete( 'revision', [ 'rev_id' => $revID ] ); - if ( $pageLatest == $revID ) { - $newLatest = $dbw->selectField( - 'revision', - 'rev_id', - [ 'rev_page' => $pageID ], - __METHOD__, - [ 'ORDER BY' => 'rev_timestamp DESC' ] - ); - $dbw->update( - 'page', - [ 'page_latest' => $newLatest ], - [ 'page_id' => $pageID ], - __METHOD__ - ); - } - } - } - $this->output( "Deleted $affected revisions\n" ); - } -} - -$maintClass = "DeleteRevision"; -require_once RUN_MAINTENANCE_IF_MAIN; diff --git a/maintenance/doMaintenance.php b/maintenance/doMaintenance.php index 53a317a7c2..e87e024918 100644 --- a/maintenance/doMaintenance.php +++ b/maintenance/doMaintenance.php @@ -55,26 +55,7 @@ $maintenance->setup(); // to $maintenance->mSelf. Keep that here for b/c $self = $maintenance->getName(); -# Start the autoloader, so that extensions can derive classes from core files -require_once "$IP/includes/AutoLoader.php"; -# Grab profiling functions -require_once "$IP/includes/profiler/ProfilerFunctions.php"; - -# Start the profiler -$wgProfiler = []; -if ( file_exists( "$IP/StartProfiler.php" ) ) { - require "$IP/StartProfiler.php"; -} - -// Some other requires -require_once "$IP/includes/Defines.php"; -require_once "$IP/includes/DefaultSettings.php"; -require_once "$IP/includes/GlobalFunctions.php"; - -# Load composer's autoloader if present -if ( is_readable( "$IP/vendor/autoload.php" ) ) { - require_once "$IP/vendor/autoload.php"; -} +require_once "$IP/includes/PreConfigSetup.php"; if ( defined( 'MW_CONFIG_CALLBACK' ) ) { # Use a callback function to configure MediaWiki diff --git a/maintenance/dumpCategoriesAsRdf.php b/maintenance/dumpCategoriesAsRdf.php new file mode 100644 index 0000000000..ff50498f0a --- /dev/null +++ b/maintenance/dumpCategoriesAsRdf.php @@ -0,0 +1,158 @@ +addDescription( "Generate RDF dump of categories in a wiki." ); + + $this->setBatchSize( 200 ); + $this->addOption( 'output', "Output file (default is stdout). Will be overwritten.", + false, true ); + $this->addOption( 'format', "Set the dump format.", false, true ); + } + + /** + * Produce row iterator for categories. + * @param IDatabase $dbr Database connection + * @return RecursiveIterator + */ + public function getCategoryIterator( IDatabase $dbr ) { + $it = new BatchRowIterator( + $dbr, + 'page', + [ 'page_title' ], + $this->mBatchSize + ); + $it->addConditions( [ + 'page_namespace' => NS_CATEGORY, + ] ); + $it->setFetchColumns( [ 'page_title', 'page_id' ] ); + return $it; + } + + /** + * Get iterator for links for categories. + * @param IDatabase $dbr + * @param array $ids List of page IDs + * @return Traversable + */ + public function getCategoryLinksIterator( IDatabase $dbr, array $ids ) { + $it = new BatchRowIterator( + $dbr, + 'categorylinks', + [ 'cl_from', 'cl_to' ], + $this->mBatchSize + ); + $it->addConditions( [ + 'cl_type' => 'subcat', + 'cl_from' => $ids + ] ); + $it->setFetchColumns( [ 'cl_from', 'cl_to' ] ); + return new RecursiveIteratorIterator( $it ); + } + + public function addDumpHeader( $timestamp ) { + global $wgRightsUrl; + $licenseUrl = $wgRightsUrl; + if ( substr( $licenseUrl, 0, 2 ) == '//' ) { + $licenseUrl = 'https:' . $licenseUrl; + } + $this->rdfWriter->about( wfExpandUrl( '/categoriesDump', PROTO_CANONICAL ) ) + ->a( 'schema', 'Dataset' ) + ->a( 'owl', 'Ontology' ) + ->say( 'cc', 'license' )->is( $licenseUrl ) + ->say( 'schema', 'softwareVersion' )->value( CategoriesRdf::FORMAT_VERSION ) + ->say( 'schema', 'dateModified' ) + ->value( wfTimestamp( TS_ISO_8601, $timestamp ), 'xsd', 'dateTime' ) + ->say( 'schema', 'isPartOf' )->is( wfExpandUrl( '/', PROTO_CANONICAL ) ) + ->say( 'owl', 'imports' )->is( CategoriesRdf::OWL_URL ); + } + + public function execute() { + $outFile = $this->getOption( 'output', 'php://stdout' ); + + if ( $outFile === '-' ) { + $outFile = 'php://stdout'; + } + + $output = fopen( $outFile, 'w' ); + $this->rdfWriter = $this->createRdfWriter( $this->getOption( 'format', 'ttl' ) ); + $this->categoriesRdf = new CategoriesRdf( $this->rdfWriter ); + + $this->categoriesRdf->setupPrefixes(); + $this->rdfWriter->start(); + + $this->addDumpHeader( time() ); + fwrite( $output, $this->rdfWriter->drain() ); + + $dbr = $this->getDB( DB_REPLICA, [ 'vslow' ] ); + + foreach ( $this->getCategoryIterator( $dbr ) as $batch ) { + $pages = []; + foreach ( $batch as $row ) { + $this->categoriesRdf->writeCategoryData( $row->page_title ); + $pages[$row->page_id] = $row->page_title; + } + + foreach ( $this->getCategoryLinksIterator( $dbr, array_keys( $pages ) ) as $row ) { + $this->categoriesRdf->writeCategoryLinkData( $pages[$row->cl_from], $row->cl_to ); + } + fwrite( $output, $this->rdfWriter->drain() ); + } + fflush( $output ); + if ( $outFile !== '-' ) { + fclose( $output ); + } + } + + /** + * @param string $format Writer format + * @return RdfWriter + */ + private function createRdfWriter( $format ) { + $factory = new RdfWriterFactory(); + return $factory->getWriter( $factory->getFormatName( $format ) ); + } +} + +$maintClass = "DumpCategoriesAsRdf"; +require_once RUN_MAINTENANCE_IF_MAIN; diff --git a/maintenance/fixExtLinksProtocolRelative.php b/maintenance/fixExtLinksProtocolRelative.php index 0fae63c3bf..97cd37e07e 100644 --- a/maintenance/fixExtLinksProtocolRelative.php +++ b/maintenance/fixExtLinksProtocolRelative.php @@ -68,13 +68,11 @@ class FixExtLinksProtocolRelative extends LoggedUpdateMaintenance { $db->insert( 'externallinks', [ [ - 'el_id' => $db->nextSequenceValue( 'externallinks_el_id_seq' ), 'el_from' => $row->el_from, 'el_to' => $row->el_to, 'el_index' => "http:{$row->el_index}", ], [ - 'el_id' => $db->nextSequenceValue( 'externallinks_el_id_seq' ), 'el_from' => $row->el_from, 'el_to' => $row->el_to, 'el_index' => "https:{$row->el_index}", diff --git a/maintenance/importDump.php b/maintenance/importDump.php index 802619e573..206c7ee6ae 100644 --- a/maintenance/importDump.php +++ b/maintenance/importDump.php @@ -37,6 +37,7 @@ class BackupReader extends Maintenance { public $revCount = 0; public $dryRun = false; public $uploads = false; + protected $uploadCount = 0; public $imageBasePath = false; public $nsFilter = false; diff --git a/maintenance/migrateComments.php b/maintenance/migrateComments.php new file mode 100644 index 0000000000..431380647a --- /dev/null +++ b/maintenance/migrateComments.php @@ -0,0 +1,291 @@ +addDescription( 'Migrates comments from pre-1.30 columns to the \'comment\' table' ); + $this->setBatchSize( 100 ); + } + + protected function getUpdateKey() { + return __CLASS__; + } + + protected function updateSkippedMessage() { + return 'comments already migrated.'; + } + + protected function doDBUpdates() { + global $wgCommentTableSchemaMigrationStage; + + if ( $wgCommentTableSchemaMigrationStage < MIGRATION_WRITE_NEW ) { + $this->output( + "...cannot update while \$wgCommentTableSchemaMigrationStage < MIGRATION_WRITE_NEW\n" + ); + return false; + } + + $this->migrateToTemp( + 'revision', 'rev_id', 'rev_comment', 'revcomment_rev', 'revcomment_comment_id' + ); + $this->migrate( 'archive', 'ar_id', 'ar_comment' ); + $this->migrate( 'ipblocks', 'ipb_id', 'ipb_reason' ); + $this->migrateToTemp( + 'image', 'img_name', 'img_description', 'imgcomment_name', 'imgcomment_description_id' + ); + $this->migrate( 'oldimage', [ 'oi_name', 'oi_timestamp' ], 'oi_description' ); + $this->migrate( 'filearchive', 'fa_id', 'fa_deleted_reason' ); + $this->migrate( 'filearchive', 'fa_id', 'fa_description' ); + $this->migrate( 'recentchanges', 'rc_id', 'rc_comment' ); + $this->migrate( 'logging', 'log_id', 'log_comment' ); + $this->migrate( 'protected_titles', [ 'pt_namespace', 'pt_title' ], 'pt_reason' ); + return true; + } + + /** + * Fetch comment IDs for a set of comments + * @param IDatabase $dbw + * @param array &$comments Keys are comment names, values will be set to IDs. + * @return int Count of added comments + */ + private function loadCommentIDs( IDatabase $dbw, array &$comments ) { + $count = 0; + $needComments = $comments; + + while ( true ) { + $where = []; + foreach ( $needComments as $need => $dummy ) { + $where[] = $dbw->makeList( + [ + 'comment_hash' => CommentStore::hash( $need, null ), + 'comment_text' => $need, + ], + LIST_AND + ); + } + + $res = $dbw->select( + 'comment', + [ 'comment_id', 'comment_text' ], + [ + $dbw->makeList( $where, LIST_OR ), + 'comment_data' => null, + ], + __METHOD__ + ); + foreach ( $res as $row ) { + $comments[$row->comment_text] = $row->comment_id; + unset( $needComments[$row->comment_text] ); + } + + if ( !$needComments ) { + break; + } + + $dbw->insert( + 'comment', + array_map( function ( $v ) { + return [ + 'comment_hash' => CommentStore::hash( $v, null ), + 'comment_text' => $v, + ]; + }, array_keys( $needComments ) ), + __METHOD__ + ); + $count += $dbw->affectedRows(); + } + return $count; + } + + /** + * Migrate comments in a table. + * + * Assumes any row with the ID field non-zero have already been migrated. + * Assumes the new field name is the same as the old with '_id' appended. + * Blanks the old fields while migrating. + * + * @param string $table Table to migrate + * @param string|string[] $primaryKey Primary key of the table. + * @param string $oldField Old comment field name + */ + protected function migrate( $table, $primaryKey, $oldField ) { + $newField = $oldField . '_id'; + $primaryKey = (array)$primaryKey; + $pkFilter = array_flip( $primaryKey ); + $this->output( "Beginning migration of $table.$oldField to $table.$newField\n" ); + + $dbw = $this->getDB( DB_MASTER ); + $next = '1=1'; + $countUpdated = 0; + $countComments = 0; + while ( true ) { + // Fetch the rows needing update + $res = $dbw->select( + $table, + array_merge( $primaryKey, [ $oldField ] ), + [ + $newField => 0, + $next, + ], + __METHOD__, + [ + 'ORDER BY' => $primaryKey, + 'LIMIT' => $this->mBatchSize, + ] + ); + if ( !$res->numRows() ) { + break; + } + + // Collect the distinct comments from those rows + $comments = []; + foreach ( $res as $row ) { + $comments[$row->$oldField] = 0; + } + $countComments += $this->loadCommentIDs( $dbw, $comments ); + + // Update the existing rows + foreach ( $res as $row ) { + $dbw->update( + $table, + [ + $newField => $comments[$row->$oldField], + $oldField => '', + ], + array_intersect_key( (array)$row, $pkFilter ) + [ + $newField => 0 + ], + __METHOD__ + ); + $countUpdated += $dbw->affectedRows(); + } + + // Calculate the "next" condition + $next = ''; + $prompt = []; + for ( $i = count( $primaryKey ) - 1; $i >= 0; $i-- ) { + $field = $primaryKey[$i]; + $prompt[] = $row->$field; + $value = $dbw->addQuotes( $row->$field ); + if ( $next === '' ) { + $next = "$field > $value"; + } else { + $next = "$field > $value OR $field = $value AND ($next)"; + } + } + $prompt = join( ' ', array_reverse( $prompt ) ); + $this->output( "... $prompt\n" ); + } + + $this->output( + "Completed migration, updated $countUpdated row(s) with $countComments new comment(s)\n" + ); + } + + /** + * Migrate comments in a table to a temporary table. + * + * Assumes any row with the ID field non-zero have already been migrated. + * Assumes the new table is named "{$table}_comment_temp", and it has two + * columns, in order, being the primary key of the original table and the + * comment ID field. + * Blanks the old fields while migrating. + * + * @param string $oldTable Table to migrate + * @param string $primaryKey Primary key of the table. + * @param string $oldField Old comment field name + * @param string $newPrimaryKey Primary key of the new table. + * @param string $newField New comment field name + */ + protected function migrateToTemp( $table, $primaryKey, $oldField, $newPrimaryKey, $newField ) { + $newTable = $table . '_comment_temp'; + $this->output( "Beginning migration of $table.$oldField to $newTable.$newField\n" ); + + $dbw = $this->getDB( DB_MASTER ); + $next = []; + $countUpdated = 0; + $countComments = 0; + while ( true ) { + // Fetch the rows needing update + $res = $dbw->select( + [ $table, $newTable ], + [ $primaryKey, $oldField ], + [ $newPrimaryKey => null ] + $next, + __METHOD__, + [ + 'ORDER BY' => $primaryKey, + 'LIMIT' => $this->mBatchSize, + ], + [ $newTable => [ 'LEFT JOIN', "{$primaryKey}={$newPrimaryKey}" ] ] + ); + if ( !$res->numRows() ) { + break; + } + + // Collect the distinct comments from those rows + $comments = []; + foreach ( $res as $row ) { + $comments[$row->$oldField] = 0; + } + $countComments += $this->loadCommentIDs( $dbw, $comments ); + + // Update rows + $inserts = []; + $updates = []; + foreach ( $res as $row ) { + $inserts[] = [ + $newPrimaryKey => $row->$primaryKey, + $newField => $comments[$row->$oldField] + ]; + $updates[] = $row->$primaryKey; + } + $this->beginTransaction( $dbw, __METHOD__ ); + $dbw->insert( $newTable, $inserts, __METHOD__ ); + $dbw->update( $table, [ $oldField => '' ], [ $primaryKey => $updates ], __METHOD__ ); + $countUpdated += $dbw->affectedRows(); + $this->commitTransaction( $dbw, __METHOD__ ); + + // Calculate the "next" condition + $next = [ $primaryKey . ' > ' . $dbw->addQuotes( $row->$primaryKey ) ]; + $this->output( "... {$row->$primaryKey}\n" ); + } + + $this->output( + "Completed migration, updated $countUpdated row(s) with $countComments new comment(s)\n" + ); + } +} + +$maintClass = "MigrateComments"; +require_once RUN_MAINTENANCE_IF_MAIN; diff --git a/maintenance/namespaceDupes.php b/maintenance/namespaceDupes.php index 4a2b49ae93..84d45335ec 100644 --- a/maintenance/namespaceDupes.php +++ b/maintenance/namespaceDupes.php @@ -459,10 +459,10 @@ class NamespaceConflictChecker extends Maintenance { /** * Get the preferred destination title for a given target page. - * @param integer $ns The destination namespace ID + * @param int $ns The destination namespace ID * @param string $name The conflicting prefix - * @param integer $sourceNs The source namespace - * @param integer $sourceDbk The source DB key (i.e. page_title) + * @param int $sourceNs The source namespace + * @param int $sourceDbk The source DB key (i.e. page_title) * @param array $options Associative array of validated command-line options * @return Title|false */ diff --git a/maintenance/oracle/archives/patch-auto_increment_triggers.sql b/maintenance/oracle/archives/patch-auto_increment_triggers.sql new file mode 100644 index 0000000000..6b471b04b7 --- /dev/null +++ b/maintenance/oracle/archives/patch-auto_increment_triggers.sql @@ -0,0 +1,144 @@ +define mw_prefix='{$wgDBprefix}'; + +-- Package to help with making Oracle more like other DBs with respect to +-- auto-incrementing columns. +/*$mw$*/ +CREATE PACKAGE &mw_prefix.lastval_pkg IS + lastval NUMBER; + PROCEDURE setLastval(val IN NUMBER, field OUT NUMBER); + FUNCTION getLastval RETURN NUMBER; +END; +/*$mw$*/ + +/*$mw$*/ +CREATE PACKAGE BODY &mw_prefix.lastval_pkg IS + PROCEDURE setLastval(val IN NUMBER, field OUT NUMBER) IS BEGIN + lastval := val; + field := val; + END; + + FUNCTION getLastval RETURN NUMBER IS BEGIN + RETURN lastval; + END; +END; +/*$mw$*/ + +/*$mw$*/ +CREATE TRIGGER &mw_prefix.mwuser_default_user_id BEFORE INSERT ON &mw_prefix.mwuser + FOR EACH ROW WHEN (new.user_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(user_user_id_seq.nextval, :new.user_id); +END; +/*$mw$*/ + +/*$mw$*/ +CREATE TRIGGER &mw_prefix.page_default_page_id BEFORE INSERT ON &mw_prefix.page + FOR EACH ROW WHEN (new.page_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(page_page_id_seq.nextval, :new.page_id); +END; +/*$mw$*/ + +/*$mw$*/ +CREATE TRIGGER &mw_prefix.revision_default_rev_id BEFORE INSERT ON &mw_prefix.revision + FOR EACH ROW WHEN (new.rev_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(revision_rev_id_seq.nextval, :new.rev_id); +END; +/*$mw$*/ + +/*$mw$*/ +CREATE TRIGGER &mw_prefix.text_default_old_id BEFORE INSERT ON &mw_prefix.text + FOR EACH ROW WHEN (new.old_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(text_old_id_seq.nextval, :new.old_id); +END; +/*$mw$*/ + +/*$mw$*/ +CREATE TRIGGER &mw_prefix.archive_default_ar_id BEFORE INSERT ON &mw_prefix.archive + FOR EACH ROW WHEN (new.ar_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(archive_ar_id_seq.nextval, :new.ar_id); +END; +/*$mw$*/ + +/*$mw$*/ +CREATE TRIGGER &mw_prefix.category_default_cat_id BEFORE INSERT ON &mw_prefix.category + FOR EACH ROW WHEN (new.cat_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(category_cat_id_seq.nextval, :new.cat_id); +END; +/*$mw$*/ + +/*$mw$*/ +CREATE TRIGGER &mw_prefix.externallinks_default_el_id BEFORE INSERT ON &mw_prefix.externallinks + FOR EACH ROW WHEN (new.el_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(externallinks_el_id_seq.nextval, :new.el_id); +END; +/*$mw$*/ + +/*$mw$*/ +CREATE TRIGGER &mw_prefix.ipblocks_default_ipb_id BEFORE INSERT ON &mw_prefix.ipblocks + FOR EACH ROW WHEN (new.ipb_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(ipblocks_ipb_id_seq.nextval, :new.ipb_id); +END; +/*$mw$*/ + +/*$mw$*/ +CREATE TRIGGER &mw_prefix.filearchive_default_fa_id BEFORE INSERT ON &mw_prefix.filearchive + FOR EACH ROW WHEN (new.fa_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(filearchive_fa_id_seq.nextval, :new.fa_id); +END; +/*$mw$*/ + +/*$mw$*/ +CREATE TRIGGER &mw_prefix.uploadstash_default_us_id BEFORE INSERT ON &mw_prefix.uploadstash + FOR EACH ROW WHEN (new.us_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(uploadstash_us_id_seq.nextval, :new.us_id); +END; +/*$mw$*/ + +/*$mw$*/ +CREATE TRIGGER &mw_prefix.recentchanges_default_rc_id BEFORE INSERT ON &mw_prefix.recentchanges + FOR EACH ROW WHEN (new.rc_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(recentchanges_rc_id_seq.nextval, :new.rc_id); +END; +/*$mw$*/ + +/*$mw$*/ +CREATE TRIGGER &mw_prefix.logging_default_log_id BEFORE INSERT ON &mw_prefix.logging + FOR EACH ROW WHEN (new.log_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(logging_log_id_seq.nextval, :new.log_id); +END; +/*$mw$*/ + +/*$mw$*/ +CREATE TRIGGER &mw_prefix.job_default_job_id BEFORE INSERT ON &mw_prefix.job + FOR EACH ROW WHEN (new.job_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(job_job_id_seq.nextval, :new.job_id); +END; +/*$mw$*/ + +/*$mw$*/ +CREATE TRIGGER &mw_prefix.page_restrictions_default_pr_id BEFORE INSERT ON &mw_prefix.page_restrictions + FOR EACH ROW WHEN (new.pr_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(page_restrictions_pr_id_seq.nextval, :new.pr_id); +END; +/*$mw$*/ + +/*$mw$*/ +CREATE TRIGGER &mw_prefix.sites_default_site_id BEFORE INSERT ON &mw_prefix.sites + FOR EACH ROW WHEN (new.site_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(sites_site_id_seq.nextval, :new.site_id); +END; +/*$mw$*/ diff --git a/maintenance/oracle/tables.sql b/maintenance/oracle/tables.sql index fc3c696a6c..44c907c4d4 100644 --- a/maintenance/oracle/tables.sql +++ b/maintenance/oracle/tables.sql @@ -1,6 +1,28 @@ -- defines must comply with ^define\s*([^\s=]*)\s*=\s?'\{\$([^\}]*)\}'; define mw_prefix='{$wgDBprefix}'; +-- Package to help with making Oracle more like other DBs with respect to +-- auto-incrementing columns. +/*$mw$*/ +CREATE PACKAGE &mw_prefix.lastval_pkg IS + lastval NUMBER; + PROCEDURE setLastval(val IN NUMBER, field OUT NUMBER); + FUNCTION getLastval RETURN NUMBER; +END; +/*$mw$*/ + +/*$mw$*/ +CREATE PACKAGE BODY &mw_prefix.lastval_pkg IS + PROCEDURE setLastval(val IN NUMBER, field OUT NUMBER) IS BEGIN + lastval := val; + field := val; + END; + + FUNCTION getLastval RETURN NUMBER IS BEGIN + RETURN lastval; + END; +END; +/*$mw$*/ CREATE SEQUENCE user_user_id_seq; CREATE TABLE &mw_prefix.mwuser ( -- replace reserved word 'user' @@ -25,6 +47,13 @@ ALTER TABLE &mw_prefix.mwuser ADD CONSTRAINT &mw_prefix.mwuser_pk PRIMARY KEY (u CREATE UNIQUE INDEX &mw_prefix.mwuser_u01 ON &mw_prefix.mwuser (user_name); CREATE INDEX &mw_prefix.mwuser_i01 ON &mw_prefix.mwuser (user_email_token); CREATE INDEX &mw_prefix.mwuser_i02 ON &mw_prefix.mwuser (user_email, user_name); +/*$mw$*/ +CREATE TRIGGER &mw_prefix.mwuser_default_user_id BEFORE INSERT ON &mw_prefix.mwuser + FOR EACH ROW WHEN (new.user_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(user_user_id_seq.nextval, :new.user_id); +END; +/*$mw$*/ -- Create a dummy user to satisfy fk contraints especially with revisions INSERT INTO &mw_prefix.mwuser @@ -86,6 +115,13 @@ CREATE UNIQUE INDEX &mw_prefix.page_u01 ON &mw_prefix.page (page_namespace,page_ CREATE INDEX &mw_prefix.page_i01 ON &mw_prefix.page (page_random); CREATE INDEX &mw_prefix.page_i02 ON &mw_prefix.page (page_len); CREATE INDEX &mw_prefix.page_i03 ON &mw_prefix.page (page_is_redirect, page_namespace, page_len); +/*$mw$*/ +CREATE TRIGGER &mw_prefix.page_default_page_id BEFORE INSERT ON &mw_prefix.page + FOR EACH ROW WHEN (new.page_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(page_page_id_seq.nextval, :new.page_id); +END; +/*$mw$*/ -- Create a dummy page to satisfy fk contraints especially with revisions INSERT INTO &mw_prefix.page @@ -125,6 +161,13 @@ CREATE INDEX &mw_prefix.revision_i02 ON &mw_prefix.revision (rev_page,rev_timest CREATE INDEX &mw_prefix.revision_i03 ON &mw_prefix.revision (rev_user,rev_timestamp); CREATE INDEX &mw_prefix.revision_i04 ON &mw_prefix.revision (rev_user_text,rev_timestamp); CREATE INDEX &mw_prefix.revision_i05 ON &mw_prefix.revision (rev_page,rev_user,rev_timestamp); +/*$mw$*/ +CREATE TRIGGER &mw_prefix.revision_default_rev_id BEFORE INSERT ON &mw_prefix.revision + FOR EACH ROW WHEN (new.rev_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(revision_rev_id_seq.nextval, :new.rev_id); +END; +/*$mw$*/ CREATE SEQUENCE text_old_id_seq; CREATE TABLE &mw_prefix.pagecontent ( -- replaces reserved word 'text' @@ -133,6 +176,13 @@ CREATE TABLE &mw_prefix.pagecontent ( -- replaces reserved word 'text' old_flags VARCHAR2(255) ); ALTER TABLE &mw_prefix.pagecontent ADD CONSTRAINT &mw_prefix.pagecontent_pk PRIMARY KEY (old_id); +/*$mw$*/ +CREATE TRIGGER &mw_prefix.text_default_old_id BEFORE INSERT ON &mw_prefix.text + FOR EACH ROW WHEN (new.old_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(text_old_id_seq.nextval, :new.old_id); +END; +/*$mw$*/ CREATE SEQUENCE archive_ar_id_seq; CREATE TABLE &mw_prefix.archive ( @@ -161,6 +211,13 @@ ALTER TABLE &mw_prefix.archive ADD CONSTRAINT &mw_prefix.archive_fk1 FOREIGN KEY CREATE INDEX &mw_prefix.archive_i01 ON &mw_prefix.archive (ar_namespace,ar_title,ar_timestamp); CREATE INDEX &mw_prefix.archive_i02 ON &mw_prefix.archive (ar_user_text,ar_timestamp); CREATE INDEX &mw_prefix.archive_i03 ON &mw_prefix.archive (ar_rev_id); +/*$mw$*/ +CREATE TRIGGER &mw_prefix.archive_default_ar_id BEFORE INSERT ON &mw_prefix.archive + FOR EACH ROW WHEN (new.ar_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(archive_ar_id_seq.nextval, :new.ar_id); +END; +/*$mw$*/ CREATE TABLE &mw_prefix.pagelinks ( pl_from NUMBER NOT NULL, @@ -215,6 +272,13 @@ CREATE TABLE &mw_prefix.category ( ALTER TABLE &mw_prefix.category ADD CONSTRAINT &mw_prefix.category_pk PRIMARY KEY (cat_id); CREATE UNIQUE INDEX &mw_prefix.category_u01 ON &mw_prefix.category (cat_title); CREATE INDEX &mw_prefix.category_i01 ON &mw_prefix.category (cat_pages); +/*$mw$*/ +CREATE TRIGGER &mw_prefix.category_default_cat_id BEFORE INSERT ON &mw_prefix.category + FOR EACH ROW WHEN (new.cat_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(category_cat_id_seq.nextval, :new.cat_id); +END; +/*$mw$*/ CREATE SEQUENCE externallinks_el_id_seq; CREATE TABLE &mw_prefix.externallinks ( @@ -231,6 +295,13 @@ CREATE INDEX &mw_prefix.externallinks_i02 ON &mw_prefix.externallinks (el_to, el CREATE INDEX &mw_prefix.externallinks_i03 ON &mw_prefix.externallinks (el_index); CREATE INDEX &mw_prefix.externallinks_i04 ON &mw_prefix.externallinks (el_index_60, el_id); CREATE INDEX &mw_prefix.externallinks_i05 ON &mw_prefix.externallinks (el_from, el_index_60, el_id); +/*$mw$*/ +CREATE TRIGGER &mw_prefix.externallinks_default_el_id BEFORE INSERT ON &mw_prefix.externallinks + FOR EACH ROW WHEN (new.el_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(externallinks_el_id_seq.nextval, :new.el_id); +END; +/*$mw$*/ CREATE TABLE &mw_prefix.langlinks ( ll_from NUMBER NOT NULL, @@ -290,6 +361,13 @@ CREATE INDEX &mw_prefix.ipblocks_i02 ON &mw_prefix.ipblocks (ipb_range_start, ip CREATE INDEX &mw_prefix.ipblocks_i03 ON &mw_prefix.ipblocks (ipb_timestamp); CREATE INDEX &mw_prefix.ipblocks_i04 ON &mw_prefix.ipblocks (ipb_expiry); CREATE INDEX &mw_prefix.ipblocks_i05 ON &mw_prefix.ipblocks (ipb_parent_block_id); +/*$mw$*/ +CREATE TRIGGER &mw_prefix.ipblocks_default_ipb_id BEFORE INSERT ON &mw_prefix.ipblocks + FOR EACH ROW WHEN (new.ipb_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(ipblocks_ipb_id_seq.nextval, :new.ipb_id); +END; +/*$mw$*/ CREATE TABLE &mw_prefix.image ( img_name VARCHAR2(255) NOT NULL, @@ -374,6 +452,13 @@ CREATE INDEX &mw_prefix.filearchive_i02 ON &mw_prefix.filearchive (fa_storage_gr CREATE INDEX &mw_prefix.filearchive_i03 ON &mw_prefix.filearchive (fa_deleted_timestamp); CREATE INDEX &mw_prefix.filearchive_i04 ON &mw_prefix.filearchive (fa_user_text,fa_timestamp); CREATE INDEX &mw_prefix.filearchive_i05 ON &mw_prefix.filearchive (fa_sha1); +/*$mw$*/ +CREATE TRIGGER &mw_prefix.filearchive_default_fa_id BEFORE INSERT ON &mw_prefix.filearchive + FOR EACH ROW WHEN (new.fa_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(filearchive_fa_id_seq.nextval, :new.fa_id); +END; +/*$mw$*/ CREATE SEQUENCE uploadstash_us_id_seq; CREATE TABLE &mw_prefix.uploadstash ( @@ -400,6 +485,13 @@ ALTER TABLE &mw_prefix.uploadstash ADD CONSTRAINT &mw_prefix.uploadstash_fk1 FOR CREATE INDEX &mw_prefix.uploadstash_i01 ON &mw_prefix.uploadstash (us_user); CREATE INDEX &mw_prefix.uploadstash_i02 ON &mw_prefix.uploadstash (us_timestamp); CREATE UNIQUE INDEX &mw_prefix.uploadstash_u01 ON &mw_prefix.uploadstash (us_key); +/*$mw$*/ +CREATE TRIGGER &mw_prefix.uploadstash_default_us_id BEFORE INSERT ON &mw_prefix.uploadstash + FOR EACH ROW WHEN (new.us_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(uploadstash_us_id_seq.nextval, :new.us_id); +END; +/*$mw$*/ CREATE SEQUENCE recentchanges_rc_id_seq; CREATE TABLE &mw_prefix.recentchanges ( @@ -440,6 +532,13 @@ CREATE INDEX &mw_prefix.recentchanges_i05 ON &mw_prefix.recentchanges (rc_ip); CREATE INDEX &mw_prefix.recentchanges_i06 ON &mw_prefix.recentchanges (rc_namespace, rc_user_text); CREATE INDEX &mw_prefix.recentchanges_i07 ON &mw_prefix.recentchanges (rc_user_text, rc_timestamp); CREATE INDEX &mw_prefix.recentchanges_i08 ON &mw_prefix.recentchanges (rc_namespace, rc_type, rc_patrolled, rc_timestamp); +/*$mw$*/ +CREATE TRIGGER &mw_prefix.recentchanges_default_rc_id BEFORE INSERT ON &mw_prefix.recentchanges + FOR EACH ROW WHEN (new.rc_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(recentchanges_rc_id_seq.nextval, :new.rc_id); +END; +/*$mw$*/ CREATE TABLE &mw_prefix.watchlist ( wl_id NUMBER NOT NULL, @@ -518,6 +617,13 @@ CREATE INDEX &mw_prefix.logging_i04 ON &mw_prefix.logging (log_timestamp); CREATE INDEX &mw_prefix.logging_i05 ON &mw_prefix.logging (log_type, log_action, log_timestamp); CREATE INDEX &mw_prefix.logging_i06 ON &mw_prefix.logging (log_user_text, log_type, log_timestamp); CREATE INDEX &mw_prefix.logging_i07 ON &mw_prefix.logging (log_user_text, log_timestamp); +/*$mw$*/ +CREATE TRIGGER &mw_prefix.logging_default_log_id BEFORE INSERT ON &mw_prefix.logging + FOR EACH ROW WHEN (new.log_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(logging_log_id_seq.nextval, :new.log_id); +END; +/*$mw$*/ CREATE TABLE &mw_prefix.log_search ( ls_field VARCHAR2(32) NOT NULL, @@ -548,6 +654,13 @@ CREATE INDEX &mw_prefix.job_i02 ON &mw_prefix.job (job_timestamp); CREATE INDEX &mw_prefix.job_i03 ON &mw_prefix.job (job_sha1); CREATE INDEX &mw_prefix.job_i04 ON &mw_prefix.job (job_cmd,job_token,job_random); CREATE INDEX &mw_prefix.job_i05 ON &mw_prefix.job (job_attempts); +/*$mw$*/ +CREATE TRIGGER &mw_prefix.job_default_job_id BEFORE INSERT ON &mw_prefix.job + FOR EACH ROW WHEN (new.job_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(job_job_id_seq.nextval, :new.job_id); +END; +/*$mw$*/ CREATE TABLE &mw_prefix.querycache_info ( qci_type VARCHAR2(32) NOT NULL, @@ -593,6 +706,13 @@ CREATE UNIQUE INDEX &mw_prefix.page_restrictions_u01 ON &mw_prefix.page_restrict CREATE INDEX &mw_prefix.page_restrictions_i01 ON &mw_prefix.page_restrictions (pr_type,pr_level); CREATE INDEX &mw_prefix.page_restrictions_i02 ON &mw_prefix.page_restrictions (pr_level); CREATE INDEX &mw_prefix.page_restrictions_i03 ON &mw_prefix.page_restrictions (pr_cascade); +/*$mw$*/ +CREATE TRIGGER &mw_prefix.page_restrictions_default_pr_id BEFORE INSERT ON &mw_prefix.page_restrictions + FOR EACH ROW WHEN (new.pr_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(page_restrictions_pr_id_seq.nextval, :new.pr_id); +END; +/*$mw$*/ CREATE TABLE &mw_prefix.protected_titles ( pt_namespace NUMBER DEFAULT 0 NOT NULL, @@ -701,6 +821,13 @@ CREATE INDEX &mw_prefix.sites_i04 ON &mw_prefix.sites (site_language); CREATE INDEX &mw_prefix.sites_i05 ON &mw_prefix.sites (site_protocol); CREATE INDEX &mw_prefix.sites_i06 ON &mw_prefix.sites (site_domain); CREATE INDEX &mw_prefix.sites_i07 ON &mw_prefix.sites (site_forward); +/*$mw$*/ +CREATE TRIGGER &mw_prefix.sites_default_site_id BEFORE INSERT ON &mw_prefix.sites + FOR EACH ROW WHEN (new.site_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(sites_site_id_seq.nextval, :new.site_id); +END; +/*$mw$*/ CREATE TABLE &mw_prefix.site_identifiers ( si_site NUMBER NOT NULL, diff --git a/maintenance/orphans.php b/maintenance/orphans.php index e36c5b67dd..644fb958df 100644 --- a/maintenance/orphans.php +++ b/maintenance/orphans.php @@ -75,20 +75,24 @@ class Orphans extends Maintenance { */ private function checkOrphans( $fix ) { $dbw = $this->getDB( DB_MASTER ); - $page = $dbw->tableName( 'page' ); - $revision = $dbw->tableName( 'revision' ); + $commentStore = new CommentStore( 'rev_comment' ); if ( $fix ) { $this->lockTables( $dbw ); } + $commentQuery = $commentStore->getJoin(); + $this->output( "Checking for orphan revision table entries... " . "(this may take a while on a large wiki)\n" ); - $result = $dbw->query( " - SELECT * - FROM $revision LEFT OUTER JOIN $page ON rev_page=page_id - WHERE page_id IS NULL - " ); + $result = $dbw->select( + [ 'revision', 'page' ] + $commentQuery['tables'], + [ 'rev_id', 'rev_page', 'rev_timestamp', 'rev_user_text' ] + $commentQuery['fields'], + [ 'page_id' => null ], + __METHOD__, + [], + [ 'page' => [ 'LEFT JOIN', [ 'rev_page=page_id' ] ] ] + $commentQuery['joins'] + ); $orphans = $result->numRows(); if ( $orphans > 0 ) { global $wgContLang; @@ -100,9 +104,10 @@ class Orphans extends Maintenance { ) ); foreach ( $result as $row ) { - $comment = ( $row->rev_comment == '' ) - ? '' - : '(' . $wgContLang->truncate( $row->rev_comment, 40 ) . ')'; + $comment = $commentStore->getComment( $row )->text; + if ( $comment !== '' ) { + $comment = '(' . $wgContLang->truncate( $comment, 40 ) . ')'; + } $this->output( sprintf( "%10d %10d %14s %20s %s\n", $row->rev_id, $row->rev_page, diff --git a/maintenance/populateIpChanges.php b/maintenance/populateIpChanges.php new file mode 100644 index 0000000000..eb60f801cd --- /dev/null +++ b/maintenance/populateIpChanges.php @@ -0,0 +1,122 @@ +addDescription( <<addOption( 'rev-id', 'The rev_id to start copying from. Default: 0', false, true ); + $this->addOption( + 'throttle', + 'Wait this many milliseconds after copying each batch of revisions. Default: 0', + false, + true + ); + $this->addOption( 'force', 'Run regardless of whether the database says it\'s been run already' ); + } + + public function doDBUpdates() { + $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory(); + $dbw = $this->getDB( DB_MASTER ); + $throttle = intval( $this->getOption( 'throttle', 0 ) ); + $start = $this->getOption( 'rev-id', 0 ); + $end = $dbw->selectField( 'revision', 'MAX(rev_id)', false, __METHOD__ ); + $blockStart = $start; + $revCount = 0; + + $this->output( "Copying IP revisions to ip_changes, from rev_id $start to rev_id $end\n" ); + + while ( $blockStart <= $end ) { + $cond = "rev_id >= $blockStart AND rev_user = 0 ORDER BY rev_id ASC LIMIT " . $this->mBatchSize; + $rows = $dbw->select( + 'revision', + [ 'rev_id', 'rev_timestamp', 'rev_user_text' ], + $cond, + __METHOD__ + ); + + if ( !$rows || $rows->numRows() === 0 ) { + break; + } + + $this->output( "...checking $this->mBatchSize revisions for IP edits that need copying, " . + "starting with rev_id $blockStart\n" ); + + foreach ( $rows as $row ) { + // Double-check to make sure this is an IP, e.g. not maintenance user or imported revision. + if ( IP::isValid( $row->rev_user_text ) ) { + $dbw->insert( + 'ip_changes', + [ + 'ipc_rev_id' => $row->rev_id, + 'ipc_rev_timestamp' => $row->rev_timestamp, + 'ipc_hex' => IP::toHex( $row->rev_user_text ), + ], + __METHOD__, + 'IGNORE' + ); + + $revCount++; + } + + $blockStart = (int)$row->rev_id; + } + + $blockStart++; + + $lbFactory->waitForReplication(); + usleep( $throttle * 1000 ); + } + + $this->output( "$revCount IP revisions copied.\n" ); + + return true; + } + + protected function getUpdateKey() { + return 'populate ip_changes'; + } +} + +$maintClass = "PopulateIpChanges"; +require_once RUN_MAINTENANCE_IF_MAIN; diff --git a/maintenance/postgres/archives/patch-comment-table.sql b/maintenance/postgres/archives/patch-comment-table.sql new file mode 100644 index 0000000000..243a3b3144 --- /dev/null +++ b/maintenance/postgres/archives/patch-comment-table.sql @@ -0,0 +1,27 @@ +-- +-- patch-comment-table.sql +-- +-- T166732. Add a `comment` table, and temporary tables to reference it. + +CREATE SEQUENCE comment_comment_id_seq; +CREATE TABLE comment ( + comment_id INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('comment_comment_id_seq'), + comment_hash INTEGER NOT NULL, + comment_text TEXT NOT NULL, + comment_data TEXT +); +CREATE INDEX comment_hash ON comment (comment_hash); + +CREATE TABLE revision_comment_temp ( + revcomment_rev INTEGER NOT NULL, + revcomment_comment_id INTEGER NOT NULL, + PRIMARY KEY (revcomment_rev, revcomment_comment_id) +); +CREATE UNIQUE INDEX revcomment_rev ON revision_comment_temp (revcomment_rev); + +CREATE TABLE image_comment_temp ( + imgcomment_name TEXT NOT NULL, + imgcomment_description_id INTEGER NOT NULL, + PRIMARY KEY (imgcomment_name, imgcomment_description_id) +); +CREATE UNIQUE INDEX imgcomment_name ON image_comment_temp (imgcomment_name); diff --git a/maintenance/postgres/tables.sql b/maintenance/postgres/tables.sql index 03fd03a2ff..eea9e68514 100644 --- a/maintenance/postgres/tables.sql +++ b/maintenance/postgres/tables.sql @@ -12,6 +12,7 @@ SET client_min_messages = 'ERROR'; DROP SEQUENCE IF EXISTS user_user_id_seq CASCADE; DROP SEQUENCE IF EXISTS page_page_id_seq CASCADE; DROP SEQUENCE IF EXISTS revision_rev_id_seq CASCADE; +DROP SEQUENCE IF EXISTS comment_comment_id_seq CASCADE; DROP SEQUENCE IF EXISTS text_old_id_seq CASCADE; DROP SEQUENCE IF EXISTS page_restrictions_pr_id_seq CASCADE; DROP SEQUENCE IF EXISTS ipblocks_ipb_id_seq CASCADE; @@ -132,7 +133,7 @@ CREATE TABLE revision ( rev_id INTEGER NOT NULL UNIQUE DEFAULT nextval('revision_rev_id_seq'), rev_page INTEGER NULL REFERENCES page (page_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, rev_text_id INTEGER NULL, -- FK - rev_comment TEXT, + rev_comment TEXT NOT NULL DEFAULT '', rev_user INTEGER NOT NULL REFERENCES mwuser(user_id) ON DELETE RESTRICT DEFERRABLE INITIALLY DEFERRED, rev_user_text TEXT NOT NULL, rev_timestamp TIMESTAMPTZ NOT NULL, @@ -150,6 +151,12 @@ CREATE INDEX rev_timestamp_idx ON revision (rev_timestamp); CREATE INDEX rev_user_idx ON revision (rev_user); CREATE INDEX rev_user_text_idx ON revision (rev_user_text); +CREATE TABLE revision_comment_temp ( + revcomment_rev INTEGER NOT NULL, + revcomment_comment_id INTEGER NOT NULL, + PRIMARY KEY (revcomment_rev, revcomment_comment_id) +); +CREATE UNIQUE INDEX revcomment_rev ON revision_comment_temp (revcomment_rev); CREATE SEQUENCE text_old_id_seq; CREATE TABLE pagecontent ( -- replaces reserved word 'text' @@ -159,6 +166,16 @@ CREATE TABLE pagecontent ( -- replaces reserved word 'text' ); +CREATE SEQUENCE comment_comment_id_seq; +CREATE TABLE comment ( + comment_id INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('comment_comment_id_seq'), + comment_hash INTEGER NOT NULL, + comment_text TEXT NOT NULL, + comment_data TEXT +); +CREATE INDEX comment_hash ON comment (comment_hash); + + CREATE SEQUENCE page_restrictions_pr_id_seq; CREATE TABLE page_restrictions ( pr_id INTEGER NOT NULL UNIQUE DEFAULT nextval('page_restrictions_pr_id_seq'), @@ -191,7 +208,8 @@ CREATE TABLE archive ( ar_page_id INTEGER NULL, ar_parent_id INTEGER NULL, ar_sha1 TEXT NOT NULL DEFAULT '', - ar_comment TEXT, + ar_comment TEXT NOT NULL DEFAULT '', + ar_comment_id INTEGER NOT NULL DEFAULT 0, ar_user INTEGER NULL REFERENCES mwuser(user_id) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED, ar_user_text TEXT NOT NULL, ar_timestamp TIMESTAMPTZ NOT NULL, @@ -296,7 +314,8 @@ CREATE TABLE ipblocks ( ipb_user INTEGER NULL REFERENCES mwuser(user_id) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED, ipb_by INTEGER NOT NULL REFERENCES mwuser(user_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, ipb_by_text TEXT NOT NULL DEFAULT '', - ipb_reason TEXT NOT NULL, + ipb_reason TEXT NOT NULL DEFAULT '', + ipb_reason_id INTEGER NOT NULL DEFAULT 0, ipb_timestamp TIMESTAMPTZ NOT NULL, ipb_auto SMALLINT NOT NULL DEFAULT 0, ipb_anon_only SMALLINT NOT NULL DEFAULT 0, @@ -327,7 +346,7 @@ CREATE TABLE image ( img_media_type TEXT, img_major_mime TEXT DEFAULT 'unknown', img_minor_mime TEXT DEFAULT 'unknown', - img_description TEXT NOT NULL, + img_description TEXT NOT NULL DEFAULT '', img_user INTEGER NULL REFERENCES mwuser(user_id) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED, img_user_text TEXT NOT NULL, img_timestamp TIMESTAMPTZ, @@ -337,6 +356,13 @@ CREATE INDEX img_size_idx ON image (img_size); CREATE INDEX img_timestamp_idx ON image (img_timestamp); CREATE INDEX img_sha1 ON image (img_sha1); +CREATE TABLE image_comment_temp ( + imgcomment_name TEXT NOT NULL, + imgcomment_description_id INTEGER NOT NULL, + PRIMARY KEY (imgcomment_name, imgcomment_description_id) +); +CREATE UNIQUE INDEX imgcomment_name ON image_comment_temp (imgcomment_name); + CREATE TABLE oldimage ( oi_name TEXT NOT NULL, oi_archive_name TEXT NOT NULL, @@ -344,7 +370,8 @@ CREATE TABLE oldimage ( oi_width INTEGER NOT NULL, oi_height INTEGER NOT NULL, oi_bits SMALLINT NULL, - oi_description TEXT, + oi_description TEXT NOT NULL DEFAULT '', + oi_description_id INTEGER NOT NULL DEFAULT 0, oi_user INTEGER NULL REFERENCES mwuser(user_id) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED, oi_user_text TEXT NOT NULL, oi_timestamp TIMESTAMPTZ NULL, @@ -370,7 +397,8 @@ CREATE TABLE filearchive ( fa_storage_key TEXT, fa_deleted_user INTEGER NULL REFERENCES mwuser(user_id) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED, fa_deleted_timestamp TIMESTAMPTZ NOT NULL, - fa_deleted_reason TEXT, + fa_deleted_reason TEXT NOT NULL DEFAULT '', + fa_deleted_reason_id INTEGER NOT NULL DEFAULT 0, fa_size INTEGER NOT NULL, fa_width INTEGER NOT NULL, fa_height INTEGER NOT NULL, @@ -379,7 +407,8 @@ CREATE TABLE filearchive ( fa_media_type TEXT, fa_major_mime TEXT DEFAULT 'unknown', fa_minor_mime TEXT DEFAULT 'unknown', - fa_description TEXT NOT NULL, + fa_description TEXT NOT NULL DEFAULT '', + fa_description_id INTEGER NOT NULL DEFAULT 0, fa_user INTEGER NULL REFERENCES mwuser(user_id) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED, fa_user_text TEXT NOT NULL, fa_timestamp TIMESTAMPTZ, @@ -429,7 +458,8 @@ CREATE TABLE recentchanges ( rc_user_text TEXT NOT NULL, rc_namespace SMALLINT NOT NULL, rc_title TEXT NOT NULL, - rc_comment TEXT, + rc_comment TEXT NOT NULL DEFAULT '', + rc_comment_id INTEGER NOT NULL DEFAULT 0, rc_minor SMALLINT NOT NULL DEFAULT 0, rc_bot SMALLINT NOT NULL DEFAULT 0, rc_new SMALLINT NOT NULL DEFAULT 0, @@ -528,7 +558,8 @@ CREATE TABLE logging ( log_user INTEGER REFERENCES mwuser(user_id) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED, log_namespace SMALLINT NOT NULL, log_title TEXT NOT NULL, - log_comment TEXT, + log_comment TEXT NOT NULL DEFAULT '', + log_comment_id INTEGER NOT NULL DEFAULT 0, log_params TEXT, log_deleted SMALLINT NOT NULL DEFAULT 0, log_user_text TEXT NOT NULL DEFAULT '', @@ -635,7 +666,8 @@ CREATE TABLE protected_titles ( pt_namespace SMALLINT NOT NULL, pt_title TEXT NOT NULL, pt_user INTEGER NULL REFERENCES mwuser(user_id) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED, - pt_reason TEXT NULL, + pt_reason TEXT NOT NULL DEFAULT '', + pt_reason_id INTEGER NOT NULL DEFAULT 0, pt_timestamp TIMESTAMPTZ NOT NULL, pt_expiry TIMESTAMPTZ NULL, pt_create_perm TEXT NOT NULL DEFAULT '' diff --git a/maintenance/rebuildrecentchanges.php b/maintenance/rebuildrecentchanges.php index 5df432eb7a..a2cf3c5bca 100644 --- a/maintenance/rebuildrecentchanges.php +++ b/maintenance/rebuildrecentchanges.php @@ -32,9 +32,9 @@ use MediaWiki\MediaWikiServices; * @ingroup Maintenance */ class RebuildRecentchanges extends Maintenance { - /** @var integer UNIX timestamp */ + /** @var int UNIX timestamp */ private $cutoffFrom; - /** @var integer UNIX timestamp */ + /** @var int UNIX timestamp */ private $cutoffTo; public function __construct() { @@ -80,6 +80,8 @@ class RebuildRecentchanges extends Maintenance { */ private function rebuildRecentChangesTablePass1() { $dbw = $this->getDB( DB_MASTER ); + $revCommentStore = new CommentStore( 'rev_comment' ); + $rcCommentStore = new CommentStore( 'rc_comment' ); if ( $this->hasOption( 'from' ) && $this->hasOption( 'to' ) ) { $this->cutoffFrom = wfTimestamp( TS_UNIX, $this->getOption( 'from' ) ); @@ -113,13 +115,14 @@ class RebuildRecentchanges extends Maintenance { } $this->output( "Loading from page and revision tables...\n" ); + + $commentQuery = $revCommentStore->getJoin(); $res = $dbw->select( - [ 'page', 'revision' ], + [ 'revision', 'page' ] + $commentQuery['tables'], [ 'rev_timestamp', 'rev_user', 'rev_user_text', - 'rev_comment', 'rev_minor_edit', 'rev_id', 'rev_deleted', @@ -127,19 +130,22 @@ class RebuildRecentchanges extends Maintenance { 'page_title', 'page_is_new', 'page_id' - ], + ] + $commentQuery['fields'], [ 'rev_timestamp > ' . $dbw->addQuotes( $dbw->timestamp( $this->cutoffFrom ) ), - 'rev_timestamp < ' . $dbw->addQuotes( $dbw->timestamp( $this->cutoffTo ) ), - 'rev_page=page_id' + 'rev_timestamp < ' . $dbw->addQuotes( $dbw->timestamp( $this->cutoffTo ) ) ], __METHOD__, - [ 'ORDER BY' => 'rev_timestamp DESC' ] + [ 'ORDER BY' => 'rev_timestamp DESC' ], + [ + 'page' => [ 'JOIN', 'rev_page=page_id' ], + ] + $commentQuery['joins'] ); $this->output( "Inserting from page and revision tables...\n" ); $inserted = 0; foreach ( $res as $row ) { + $comment = $revCommentStore->getComment( $row ); $dbw->insert( 'recentchanges', [ @@ -148,7 +154,6 @@ class RebuildRecentchanges extends Maintenance { 'rc_user_text' => $row->rev_user_text, 'rc_namespace' => $row->page_namespace, 'rc_title' => $row->page_title, - 'rc_comment' => $row->rev_comment, 'rc_minor' => $row->rev_minor_edit, 'rc_bot' => 0, 'rc_new' => $row->page_is_new, @@ -156,10 +161,9 @@ class RebuildRecentchanges extends Maintenance { 'rc_this_oldid' => $row->rev_id, 'rc_last_oldid' => 0, // is this ok? 'rc_type' => $row->page_is_new ? RC_NEW : RC_EDIT, - 'rc_source' => $row->page_is_new ? RecentChange::SRC_NEW : RecentChange::SRC_EDIT - , + 'rc_source' => $row->page_is_new ? RecentChange::SRC_NEW : RecentChange::SRC_EDIT, 'rc_deleted' => $row->rev_deleted - ], + ] + $rcCommentStore->insert( $dbw, $comment ), __METHOD__ ); if ( ( ++$inserted % $this->mBatchSize ) == 0 ) { @@ -266,25 +270,27 @@ class RebuildRecentchanges extends Maintenance { global $wgLogTypes, $wgLogRestrictions; $dbw = $this->getDB( DB_MASTER ); + $logCommentStore = new CommentStore( 'log_comment' ); + $rcCommentStore = new CommentStore( 'rc_comment' ); $this->output( "Loading from user, page, and logging tables...\n" ); + $commentQuery = $logCommentStore->getJoin(); $res = $dbw->select( - [ 'user', 'logging', 'page' ], + [ 'user', 'logging', 'page' ] + $commentQuery['tables'], [ 'log_timestamp', 'log_user', 'user_name', 'log_namespace', 'log_title', - 'log_comment', 'page_id', 'log_type', 'log_action', 'log_id', 'log_params', 'log_deleted' - ], + ] + $commentQuery['fields'], [ 'log_timestamp > ' . $dbw->addQuotes( $dbw->timestamp( $this->cutoffFrom ) ), 'log_timestamp < ' . $dbw->addQuotes( $dbw->timestamp( $this->cutoffTo ) ), @@ -298,13 +304,14 @@ class RebuildRecentchanges extends Maintenance { [ 'page' => [ 'LEFT JOIN', [ 'log_namespace=page_namespace', 'log_title=page_title' ] ] - ] + ] + $commentQuery['joins'] ); $field = $dbw->fieldInfo( 'recentchanges', 'rc_cur_id' ); $inserted = 0; foreach ( $res as $row ) { + $comment = $logCommentStore->getComment( $row ); $dbw->insert( 'recentchanges', [ @@ -313,7 +320,6 @@ class RebuildRecentchanges extends Maintenance { 'rc_user_text' => $row->user_name, 'rc_namespace' => $row->log_namespace, 'rc_title' => $row->log_title, - 'rc_comment' => $row->log_comment, 'rc_minor' => 0, 'rc_bot' => 0, 'rc_patrolled' => 1, @@ -330,7 +336,7 @@ class RebuildRecentchanges extends Maintenance { 'rc_logid' => $row->log_id, 'rc_params' => $row->log_params, 'rc_deleted' => $row->log_deleted - ], + ] + $rcCommentStore->insert( $dbw, $comment ), __METHOD__ ); diff --git a/maintenance/resources/update-oojs-ui.sh b/maintenance/resources/update-oojs-ui.sh index bfa359fad0..799af4ca47 100755 --- a/maintenance/resources/update-oojs-ui.sh +++ b/maintenance/resources/update-oojs-ui.sh @@ -59,6 +59,7 @@ cp -R ./node_modules/oojs-ui/dist/themes/wikimediaui/images "$REPO_DIR/$TARGET_D cp ./node_modules/oojs-ui/src/themes/wikimediaui/*.json "$REPO_DIR/$TARGET_DIR/themes/wikimediaui" cp -R ./node_modules/oojs-ui/dist/themes/apex/images "$REPO_DIR/$TARGET_DIR/themes/apex" cp ./node_modules/oojs-ui/src/themes/apex/*.json "$REPO_DIR/$TARGET_DIR/themes/apex" +cp ./node_modules/oojs-ui/dist/wikimedia-ui-base.less "$REPO_DIR/$TARGET_DIR" # Clean up temporary area rm -rf "$NPM_DIR" diff --git a/maintenance/sqlite/archives/patch-categorylinks-fix-pk.sql b/maintenance/sqlite/archives/patch-categorylinks-fix-pk.sql new file mode 100644 index 0000000000..13a75a36f9 --- /dev/null +++ b/maintenance/sqlite/archives/patch-categorylinks-fix-pk.sql @@ -0,0 +1,60 @@ +CREATE TABLE /*_*/categorylinks_tmp ( + -- Key to page_id of the page defined as a category member. + cl_from int unsigned NOT NULL default 0, + + -- Name of the category. + -- This is also the page_title of the category's description page; + -- all such pages are in namespace 14 (NS_CATEGORY). + cl_to varchar(255) binary NOT NULL default '', + + -- A binary string obtained by applying a sortkey generation algorithm + -- (Collation::getSortKey()) to page_title, or cl_sortkey_prefix . "\n" + -- . page_title if cl_sortkey_prefix is nonempty. + cl_sortkey varbinary(230) NOT NULL default '', + + -- A prefix for the raw sortkey manually specified by the user, either via + -- [[Category:Foo|prefix]] or {{defaultsort:prefix}}. If nonempty, it's + -- concatenated with a line break followed by the page title before the sortkey + -- conversion algorithm is run. We store this so that we can update + -- collations without reparsing all pages. + -- Note: If you change the length of this field, you also need to change + -- code in LinksUpdate.php. See T27254. + cl_sortkey_prefix varchar(255) binary NOT NULL default '', + + -- This isn't really used at present. Provided for an optional + -- sorting method by approximate addition time. + cl_timestamp timestamp NOT NULL, + + -- Stores $wgCategoryCollation at the time cl_sortkey was generated. This + -- can be used to install new collation versions, tracking which rows are not + -- yet updated. '' means no collation, this is a legacy row that needs to be + -- updated by updateCollation.php. In the future, it might be possible to + -- specify different collations per category. + cl_collation varbinary(32) NOT NULL default '', + + -- Stores whether cl_from is a category, file, or other page, so we can + -- paginate the three categories separately. This never has to be updated + -- after the page is created, since none of these page types can be moved to + -- any other. + cl_type ENUM('page', 'subcat', 'file') NOT NULL default 'page', + PRIMARY KEY (cl_from,cl_to) +) /*$wgDBTableOptions*/; + +INSERT INTO /*_*/categorylinks_tmp + SELECT * + FROM /*_*/categorylinks; + +DROP TABLE /*_*/categorylinks; + +ALTER TABLE /*_*/categorylinks_tmp RENAME TO /*_*/categorylinks; + +-- We always sort within a given category, and within a given type. FIXME: +-- Formerly this index didn't cover cl_type (since that didn't exist), so old +-- callers won't be using an index: fix this? +CREATE INDEX /*i*/cl_sortkey ON /*_*/categorylinks (cl_to,cl_type,cl_sortkey,cl_from); + +-- Used by the API (and some extensions) +CREATE INDEX /*i*/cl_timestamp ON /*_*/categorylinks (cl_to,cl_timestamp); + +-- Used when updating collation (e.g. updateCollation.php) +CREATE INDEX /*i*/cl_collation_ext ON /*_*/categorylinks (cl_collation, cl_to, cl_type, cl_from); \ No newline at end of file diff --git a/maintenance/sqlite/archives/patch-comment-table.sql b/maintenance/sqlite/archives/patch-comment-table.sql new file mode 100644 index 0000000000..f743b55c1e --- /dev/null +++ b/maintenance/sqlite/archives/patch-comment-table.sql @@ -0,0 +1,332 @@ +-- +-- patch-comment-table.sql +-- +-- T166732. Add a `comment` table and various columns (and temporary tables) to reference it. +-- Sigh, sqlite, such trouble just to change the default value of a column. + +CREATE TABLE /*_*/comment ( + comment_id bigint unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT, + comment_hash INT NOT NULL, + comment_text BLOB NOT NULL, + comment_data BLOB +) /*$wgDBTableOptions*/; +CREATE INDEX /*i*/comment_hash ON /*_*/comment (comment_hash); + +CREATE TABLE /*_*/revision_comment_temp ( + revcomment_rev int unsigned NOT NULL, + revcomment_comment_id bigint unsigned NOT NULL, + PRIMARY KEY (revcomment_rev, revcomment_comment_id) +) /*$wgDBTableOptions*/; +CREATE UNIQUE INDEX /*i*/revcomment_rev ON /*_*/revision_comment_temp (revcomment_rev); + +CREATE TABLE /*_*/image_comment_temp ( + imgcomment_name varchar(255) binary NOT NULL, + imgcomment_description_id bigint unsigned NOT NULL, + PRIMARY KEY (imgcomment_name, imgcomment_description_id) +) /*$wgDBTableOptions*/; +CREATE UNIQUE INDEX /*i*/imgcomment_name ON /*_*/image_comment_temp (imgcomment_name); + +ALTER TABLE /*_*/recentchanges + ADD COLUMN rc_comment_id bigint unsigned NOT NULL DEFAULT 0; + +ALTER TABLE /*_*/logging + ADD COLUMN log_comment_id bigint unsigned NOT NULL DEFAULT 0; + +BEGIN; + +DROP TABLE IF EXISTS /*_*/revision_tmp; +CREATE TABLE /*_*/revision_tmp ( + rev_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT, + rev_page int unsigned NOT NULL, + rev_text_id int unsigned NOT NULL, + rev_comment varbinary(767) NOT NULL default '', + rev_user int unsigned NOT NULL default 0, + rev_user_text varchar(255) binary NOT NULL default '', + rev_timestamp binary(14) NOT NULL default '', + rev_minor_edit tinyint unsigned NOT NULL default 0, + rev_deleted tinyint unsigned NOT NULL default 0, + rev_len int unsigned, + rev_parent_id int unsigned default NULL, + rev_sha1 varbinary(32) NOT NULL default '', + rev_content_model varbinary(32) DEFAULT NULL, + rev_content_format varbinary(64) DEFAULT NULL +) /*$wgDBTableOptions*/ MAX_ROWS=10000000 AVG_ROW_LENGTH=1024; + +INSERT OR IGNORE INTO /*_*/revision_tmp ( + rev_id, rev_page, rev_text_id, rev_comment, rev_user, rev_user_text, + rev_timestamp, rev_minor_edit, rev_deleted, rev_len, rev_parent_id, + rev_sha1, rev_content_model, rev_content_format) + SELECT + rev_id, rev_page, rev_text_id, rev_comment, rev_user, rev_user_text, + rev_timestamp, rev_minor_edit, rev_deleted, rev_len, rev_parent_id, + rev_sha1, rev_content_model, rev_content_format + FROM /*_*/revision; + +DROP TABLE /*_*/revision; +ALTER TABLE /*_*/revision_tmp RENAME TO /*_*/revision; +CREATE INDEX /*i*/rev_page_id ON /*_*/revision (rev_page, rev_id); +CREATE INDEX /*i*/rev_timestamp ON /*_*/revision (rev_timestamp); +CREATE INDEX /*i*/page_timestamp ON /*_*/revision (rev_page,rev_timestamp); +CREATE INDEX /*i*/user_timestamp ON /*_*/revision (rev_user,rev_timestamp); +CREATE INDEX /*i*/usertext_timestamp ON /*_*/revision (rev_user_text,rev_timestamp); +CREATE INDEX /*i*/page_user_timestamp ON /*_*/revision (rev_page,rev_user,rev_timestamp); + +COMMIT; + +BEGIN; + +DROP TABLE IF EXISTS /*_*/archive_tmp; +CREATE TABLE /*_*/archive_tmp ( + ar_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT, + ar_namespace int NOT NULL default 0, + ar_title varchar(255) binary NOT NULL default '', + ar_text mediumblob NOT NULL, + ar_comment varbinary(767) NOT NULL default '', + ar_comment_id bigint unsigned NOT NULL DEFAULT 0, + ar_user int unsigned NOT NULL default 0, + ar_user_text varchar(255) binary NOT NULL, + ar_timestamp binary(14) NOT NULL default '', + ar_minor_edit tinyint NOT NULL default 0, + ar_flags tinyblob NOT NULL, + ar_rev_id int unsigned, + ar_text_id int unsigned, + ar_deleted tinyint unsigned NOT NULL default 0, + ar_len int unsigned, + ar_page_id int unsigned, + ar_parent_id int unsigned default NULL, + ar_sha1 varbinary(32) NOT NULL default '', + ar_content_model varbinary(32) DEFAULT NULL, + ar_content_format varbinary(64) DEFAULT NULL +) /*$wgDBTableOptions*/; + +INSERT OR IGNORE INTO /*_*/archive_tmp ( + ar_id, ar_namespace, ar_title, ar_text, ar_comment, ar_user, ar_user_text, + ar_timestamp, ar_minor_edit, ar_flags, ar_rev_id, ar_text_id, ar_deleted, + ar_len, ar_page_id, ar_parent_id, ar_sha1, ar_content_model, + ar_content_format) + SELECT + ar_id, ar_namespace, ar_title, ar_text, ar_comment, ar_user, ar_user_text, + ar_timestamp, ar_minor_edit, ar_flags, ar_rev_id, ar_text_id, ar_deleted, + ar_len, ar_page_id, ar_parent_id, ar_sha1, ar_content_model, + ar_content_format + FROM /*_*/archive; + +DROP TABLE /*_*/archive; +ALTER TABLE /*_*/archive_tmp RENAME TO /*_*/archive; +CREATE INDEX /*i*/name_title_timestamp ON /*_*/archive (ar_namespace,ar_title,ar_timestamp); +CREATE INDEX /*i*/ar_usertext_timestamp ON /*_*/archive (ar_user_text,ar_timestamp); +CREATE INDEX /*i*/ar_revid ON /*_*/archive (ar_rev_id); + +COMMIT; + +BEGIN; + +DROP TABLE IF EXISTS ipblocks_tmp; +CREATE TABLE /*_*/ipblocks_tmp ( + ipb_id int NOT NULL PRIMARY KEY AUTO_INCREMENT, + ipb_address tinyblob NOT NULL, + ipb_user int unsigned NOT NULL default 0, + ipb_by int unsigned NOT NULL default 0, + ipb_by_text varchar(255) binary NOT NULL default '', + ipb_reason varbinary(767) NOT NULL default '', + ipb_reason_id bigint unsigned NOT NULL DEFAULT 0, + ipb_timestamp binary(14) NOT NULL default '', + ipb_auto bool NOT NULL default 0, + ipb_anon_only bool NOT NULL default 0, + ipb_create_account bool NOT NULL default 1, + ipb_enable_autoblock bool NOT NULL default '1', + ipb_expiry varbinary(14) NOT NULL default '', + ipb_range_start tinyblob NOT NULL, + ipb_range_end tinyblob NOT NULL, + ipb_deleted bool NOT NULL default 0, + ipb_block_email bool NOT NULL default 0, + ipb_allow_usertalk bool NOT NULL default 0, + ipb_parent_block_id int default NULL +) /*$wgDBTableOptions*/; + +INSERT OR IGNORE INTO /*_*/ipblocks_tmp ( + ipb_id, ipb_address, ipb_user, ipb_by, ipb_by_text, ipb_reason, + ipb_timestamp, ipb_auto, ipb_anon_only, ipb_create_account, + ipb_enable_autoblock, ipb_expiry, ipb_range_start, ipb_range_end, + ipb_deleted, ipb_block_email, ipb_allow_usertalk, ipb_parent_block_id) + SELECT + ipb_id, ipb_address, ipb_user, ipb_by, ipb_by_text, ipb_reason, + ipb_timestamp, ipb_auto, ipb_anon_only, ipb_create_account, + ipb_enable_autoblock, ipb_expiry, ipb_range_start, ipb_range_end, + ipb_deleted, ipb_block_email, ipb_allow_usertalk, ipb_parent_block_id + FROM /*_*/ipblocks; + +DROP TABLE /*_*/ipblocks; +ALTER TABLE /*_*/ipblocks_tmp RENAME TO /*_*/ipblocks; +CREATE UNIQUE INDEX /*i*/ipb_address ON /*_*/ipblocks (ipb_address(255), ipb_user, ipb_auto, ipb_anon_only); +CREATE INDEX /*i*/ipb_user ON /*_*/ipblocks (ipb_user); +CREATE INDEX /*i*/ipb_range ON /*_*/ipblocks (ipb_range_start(8), ipb_range_end(8)); +CREATE INDEX /*i*/ipb_timestamp ON /*_*/ipblocks (ipb_timestamp); +CREATE INDEX /*i*/ipb_expiry ON /*_*/ipblocks (ipb_expiry); +CREATE INDEX /*i*/ipb_parent_block_id ON /*_*/ipblocks (ipb_parent_block_id); + +COMMIT; + +BEGIN; + +DROP TABLE IF EXISTS /*_*/image_tmp; +CREATE TABLE /*_*/image_tmp ( + img_name varchar(255) binary NOT NULL default '' PRIMARY KEY, + img_size int unsigned NOT NULL default 0, + img_width int NOT NULL default 0, + img_height int NOT NULL default 0, + img_metadata mediumblob NOT NULL, + img_bits int NOT NULL default 0, + img_media_type ENUM("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE") default NULL, + img_major_mime ENUM("unknown", "application", "audio", "image", "text", "video", "message", "model", "multipart", "chemical") NOT NULL default "unknown", + img_minor_mime varbinary(100) NOT NULL default "unknown", + img_description varbinary(767) NOT NULL default '', + img_user int unsigned NOT NULL default 0, + img_user_text varchar(255) binary NOT NULL, + img_timestamp varbinary(14) NOT NULL default '', + img_sha1 varbinary(32) NOT NULL default '' +) /*$wgDBTableOptions*/; + +INSERT OR IGNORE INTO /*_*/image_tmp ( + img_name, img_size, img_width, img_height, img_metadata, img_bits, + img_media_type, img_major_mime, img_minor_mime, img_description, img_user, + img_user_text, img_timestamp, img_sha1) + SELECT + img_name, img_size, img_width, img_height, img_metadata, img_bits, + img_media_type, img_major_mime, img_minor_mime, img_description, img_user, + img_user_text, img_timestamp, img_sha1 + FROM /*_*/image; + +DROP TABLE /*_*/image; +ALTER TABLE /*_*/image_tmp RENAME TO /*_*/image; +CREATE INDEX /*i*/img_user_timestamp ON /*_*/image (img_user,img_timestamp); +CREATE INDEX /*i*/img_usertext_timestamp ON /*_*/image (img_user_text,img_timestamp); +CREATE INDEX /*i*/img_size ON /*_*/image (img_size); +CREATE INDEX /*i*/img_timestamp ON /*_*/image (img_timestamp); +CREATE INDEX /*i*/img_sha1 ON /*_*/image (img_sha1(10)); +CREATE INDEX /*i*/img_media_mime ON /*_*/image (img_media_type,img_major_mime,img_minor_mime); + +COMMIT; + +BEGIN; + +DROP TABLE IF EXISTS /*_*/oldimage_tmp; +CREATE TABLE /*_*/oldimage_tmp ( + oi_name varchar(255) binary NOT NULL default '', + oi_archive_name varchar(255) binary NOT NULL default '', + oi_size int unsigned NOT NULL default 0, + oi_width int NOT NULL default 0, + oi_height int NOT NULL default 0, + oi_bits int NOT NULL default 0, + oi_description varbinary(767) NOT NULL default '', + oi_description_id bigint unsigned NOT NULL DEFAULT 0, + oi_user int unsigned NOT NULL default 0, + oi_user_text varchar(255) binary NOT NULL, + oi_timestamp binary(14) NOT NULL default '', + oi_metadata mediumblob NOT NULL, + oi_media_type ENUM("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE") default NULL, + oi_major_mime ENUM("unknown", "application", "audio", "image", "text", "video", "message", "model", "multipart", "chemical") NOT NULL default "unknown", + oi_minor_mime varbinary(100) NOT NULL default "unknown", + oi_deleted tinyint unsigned NOT NULL default 0, + oi_sha1 varbinary(32) NOT NULL default '' +) /*$wgDBTableOptions*/; + +INSERT OR IGNORE INTO /*_*/oldimage_tmp ( + oi_name, oi_archive_name, oi_size, oi_width, oi_height, oi_bits, + oi_description, oi_user, oi_user_text, oi_timestamp, oi_metadata, + oi_media_type, oi_major_mime, oi_minor_mime, oi_deleted, oi_sha1) + SELECT + oi_name, oi_archive_name, oi_size, oi_width, oi_height, oi_bits, + oi_description, oi_user, oi_user_text, oi_timestamp, oi_metadata, + oi_media_type, oi_major_mime, oi_minor_mime, oi_deleted, oi_sha1 + FROM /*_*/oldimage; + +DROP TABLE /*_*/oldimage; +ALTER TABLE /*_*/oldimage_tmp RENAME TO /*_*/oldimage; +CREATE INDEX /*i*/oi_usertext_timestamp ON /*_*/oldimage (oi_user_text,oi_timestamp); +CREATE INDEX /*i*/oi_name_timestamp ON /*_*/oldimage (oi_name,oi_timestamp); +CREATE INDEX /*i*/oi_name_archive_name ON /*_*/oldimage (oi_name,oi_archive_name(14)); +CREATE INDEX /*i*/oi_sha1 ON /*_*/oldimage (oi_sha1(10)); + +COMMIT; + +BEGIN; + +DROP TABLE IF EXISTS /*_*/filearchive_tmp; +CREATE TABLE /*_*/filearchive_tmp ( + fa_id int NOT NULL PRIMARY KEY AUTO_INCREMENT, + fa_name varchar(255) binary NOT NULL default '', + fa_archive_name varchar(255) binary default '', + fa_storage_group varbinary(16), + fa_storage_key varbinary(64) default '', + fa_deleted_user int, + fa_deleted_timestamp binary(14) default '', + fa_deleted_reason varbinary(767) default '', + fa_deleted_reason_id bigint unsigned NOT NULL DEFAULT 0, + fa_size int unsigned default 0, + fa_width int default 0, + fa_height int default 0, + fa_metadata mediumblob, + fa_bits int default 0, + fa_media_type ENUM("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE") default NULL, + fa_major_mime ENUM("unknown", "application", "audio", "image", "text", "video", "message", "model", "multipart", "chemical") default "unknown", + fa_minor_mime varbinary(100) default "unknown", + fa_description varbinary(767) default '', + fa_description_id bigint unsigned NOT NULL DEFAULT 0, + fa_user int unsigned default 0, + fa_user_text varchar(255) binary, + fa_timestamp binary(14) default '', + fa_deleted tinyint unsigned NOT NULL default 0, + fa_sha1 varbinary(32) NOT NULL default '' +) /*$wgDBTableOptions*/; + +INSERT OR IGNORE INTO /*_*/filearchive_tmp ( + fa_id, fa_name, fa_archive_name, fa_storage_group, fa_storage_key, + fa_deleted_user, fa_deleted_timestamp, fa_deleted_reason, fa_size, + fa_width, fa_height, fa_metadata, fa_bits, fa_media_type, fa_major_mime, + fa_minor_mime, fa_description, fa_user, fa_user_text, fa_timestamp, + fa_deleted, fa_sha1) + SELECT + fa_id, fa_name, fa_archive_name, fa_storage_group, fa_storage_key, + fa_deleted_user, fa_deleted_timestamp, fa_deleted_reason, fa_size, + fa_width, fa_height, fa_metadata, fa_bits, fa_media_type, fa_major_mime, + fa_minor_mime, fa_description, fa_user, fa_user_text, fa_timestamp, + fa_deleted, fa_sha1 + FROM /*_*/filearchive; + +DROP TABLE /*_*/filearchive; +ALTER TABLE /*_*/filearchive_tmp RENAME TO /*_*/filearchive; +CREATE INDEX /*i*/fa_name ON /*_*/filearchive (fa_name, fa_timestamp); +CREATE INDEX /*i*/fa_storage_group ON /*_*/filearchive (fa_storage_group, fa_storage_key); +CREATE INDEX /*i*/fa_deleted_timestamp ON /*_*/filearchive (fa_deleted_timestamp); +CREATE INDEX /*i*/fa_user_timestamp ON /*_*/filearchive (fa_user_text,fa_timestamp); +CREATE INDEX /*i*/fa_sha1 ON /*_*/filearchive (fa_sha1(10)); + +COMMIT; + +BEGIN; + +DROP TABLE IF EXISTS /*_*/protected_titles_tmp; +CREATE TABLE /*_*/protected_titles_tmp ( + pt_namespace int NOT NULL, + pt_title varchar(255) binary NOT NULL, + pt_user int unsigned NOT NULL, + pt_reason varbinary(767) default '', + pt_reason_id bigint unsigned NOT NULL DEFAULT 0, + pt_timestamp binary(14) NOT NULL, + pt_expiry varbinary(14) NOT NULL default '', + pt_create_perm varbinary(60) NOT NULL +) /*$wgDBTableOptions*/; + +INSERT OR IGNORE INTO /*_*/protected_titles_tmp ( + pt_namespace, pt_title, pt_user, pt_reason, pt_timestamp, pt_expiry, pt_create_perm) + SELECT + pt_namespace, pt_title, pt_user, pt_reason, pt_timestamp, pt_expiry, pt_create_perm + FROM /*_*/protected_titles; + +DROP TABLE /*_*/protected_titles; +ALTER TABLE /*_*/protected_titles_tmp RENAME TO /*_*/protected_titles; +CREATE UNIQUE INDEX /*i*/pt_namespace_title ON /*_*/protected_titles (pt_namespace,pt_title); +CREATE INDEX /*i*/pt_timestamp ON /*_*/protected_titles (pt_timestamp); + +COMMIT; diff --git a/maintenance/sqlite/archives/patch-imagelinks-fix-pk.sql b/maintenance/sqlite/archives/patch-imagelinks-fix-pk.sql new file mode 100644 index 0000000000..b48bea5323 --- /dev/null +++ b/maintenance/sqlite/archives/patch-imagelinks-fix-pk.sql @@ -0,0 +1,25 @@ +CREATE TABLE /*_*/imagelinks_tmp ( + -- Key to page_id of the page containing the image / media link. + il_from int unsigned NOT NULL default 0, + -- Namespace for this page + il_from_namespace int NOT NULL default 0, + + -- Filename of target image. + -- This is also the page_title of the file's description page; + -- all such pages are in namespace 6 (NS_FILE). + il_to varchar(255) binary NOT NULL default '', + PRIMARY KEY (il_from,il_to) +) /*$wgDBTableOptions*/; + +INSERT INTO /*_*/imagelinks_tmp + SELECT * FROM /*_*/imagelinks; + +DROP TABLE /*_*/imagelinks; + +ALTER TABLE /*_*/imagelinks_tmp RENAME TO /*_*/imagelinks; + +-- Reverse index, for Special:Whatlinkshere and file description page local usage +CREATE INDEX /*i*/il_to ON /*_*/imagelinks (il_to,il_from); + +-- Index for Special:Whatlinkshere with namespace filter +CREATE INDEX /*i*/il_backlinks_namespace ON /*_*/imagelinks (il_from_namespace,il_to,il_from); \ No newline at end of file diff --git a/maintenance/sqlite/archives/patch-iwlinks-fix-pk.sql b/maintenance/sqlite/archives/patch-iwlinks-fix-pk.sql new file mode 100644 index 0000000000..91ce25196d --- /dev/null +++ b/maintenance/sqlite/archives/patch-iwlinks-fix-pk.sql @@ -0,0 +1,24 @@ +CREATE TABLE /*_*/iwlinks_tmp ( + -- page_id of the referring page + iwl_from int unsigned NOT NULL default 0, + + -- Interwiki prefix code of the target + iwl_prefix varbinary(20) NOT NULL default '', + + -- Title of the target, including namespace + iwl_title varchar(255) binary NOT NULL default '', + PRIMARY KEY (iwl_from,iwl_prefix,iwl_title) +) /*$wgDBTableOptions*/; + +INSERT INTO /*_*/iwlinks_tmp + SELECT * FROM /*_*/iwlinks; + +DROP TABLE /*_*/iwlinks; + +ALTER TABLE /*_*/iwlinks_tmp RENAME TO /*_*/iwlinks; + +-- Index for ApiQueryIWBacklinks +CREATE INDEX /*i*/iwl_prefix_title_from ON /*_*/iwlinks (iwl_prefix, iwl_title, iwl_from); + +-- Index for ApiQueryIWLinks +CREATE INDEX /*i*/iwl_prefix_from_title ON /*_*/iwlinks (iwl_prefix, iwl_from, iwl_title); \ No newline at end of file diff --git a/maintenance/sqlite/archives/patch-l10n_cache-primary-key.sql b/maintenance/sqlite/archives/patch-l10n_cache-primary-key.sql new file mode 100644 index 0000000000..55df392cdf --- /dev/null +++ b/maintenance/sqlite/archives/patch-l10n_cache-primary-key.sql @@ -0,0 +1,12 @@ +-- +-- patch-l10n_cache-primary-key.sql +-- +-- Bug T146591. Add l10n_cache primary key +DROP TABLE IF EXISTS /*_*/l10n_cache; + +CREATE TABLE /*$wgDBprefix*/l10n_cache ( + lc_lang varbinary(32) NOT NULL, + lc_key varchar(255) NOT NULL, + lc_value mediumblob NOT NULL, + PRIMARY KEY (lc_lang, lc_key) +) /*$wgDBTableOptions*/; diff --git a/maintenance/sqlite/archives/patch-langlinks-fix-pk.sql b/maintenance/sqlite/archives/patch-langlinks-fix-pk.sql new file mode 100644 index 0000000000..da096aceb0 --- /dev/null +++ b/maintenance/sqlite/archives/patch-langlinks-fix-pk.sql @@ -0,0 +1,21 @@ +CREATE TABLE /*_*/langlinks_tmp ( + -- page_id of the referring page + ll_from int unsigned NOT NULL default 0, + + -- Language code of the target + ll_lang varbinary(20) NOT NULL default '', + + -- Title of the target, including namespace + ll_title varchar(255) binary NOT NULL default '', + PRIMARY KEY (ll_from,ll_lang) +) /*$wgDBTableOptions*/; + +INSERT INTO /*_*/langlinks_tmp + SELECT * FROM /*_*/langlinks; + +DROP TABLE /*_*/langlinks; + +ALTER TABLE /*_*/langlinks_tmp RENAME TO /*_*/langlinks; + +-- Index for ApiQueryLangbacklinks +CREATE INDEX /*i*/ll_lang ON /*_*/langlinks (ll_lang, ll_title); \ No newline at end of file diff --git a/maintenance/sqlite/archives/patch-log_search-fix-pk.sql b/maintenance/sqlite/archives/patch-log_search-fix-pk.sql new file mode 100644 index 0000000000..153e415014 --- /dev/null +++ b/maintenance/sqlite/archives/patch-log_search-fix-pk.sql @@ -0,0 +1,18 @@ +CREATE TABLE /*_*/log_search_tmp ( + -- The type of ID (rev ID, log ID, rev timestamp, username) + ls_field varbinary(32) NOT NULL, + -- The value of the ID + ls_value varchar(255) NOT NULL, + -- Key to log_id + ls_log_id int unsigned NOT NULL default 0, + PRIMARY KEY (ls_field,ls_value,ls_log_id) +) /*$wgDBTableOptions*/; + +INSERT INTO /*_*/log_search_tmp + SELECT * FROM /*_*/log_search; + +DROP TABLE /*_*/log_search; + +ALTER TABLE /*_*/log_search_tmp RENAME TO /*_*/log_search; + +CREATE INDEX /*i*/ls_log_id ON /*_*/log_search (ls_log_id); \ No newline at end of file diff --git a/maintenance/sqlite/archives/patch-log_search-rename-index.sql b/maintenance/sqlite/archives/patch-log_search-rename-index.sql deleted file mode 100644 index 4b98a0f2ef..0000000000 --- a/maintenance/sqlite/archives/patch-log_search-rename-index.sql +++ /dev/null @@ -1 +0,0 @@ -CREATE UNIQUE INDEX ls_field_val ON /*_*/log_search (ls_field,ls_value,ls_log_id); diff --git a/maintenance/sqlite/archives/patch-module_deps-fix-pk.sql b/maintenance/sqlite/archives/patch-module_deps-fix-pk.sql new file mode 100644 index 0000000000..73bcbe23f4 --- /dev/null +++ b/maintenance/sqlite/archives/patch-module_deps-fix-pk.sql @@ -0,0 +1,16 @@ +CREATE TABLE /*_*/module_deps_tmp ( + -- Module name + md_module varbinary(255) NOT NULL, + -- Module context vary (includes skin and language; called "md_skin" for legacy reasons) + md_skin varbinary(32) NOT NULL, + -- JSON blob with file dependencies + md_deps mediumblob NOT NULL, + PRIMARY KEY (md_module,md_skin) +) /*$wgDBTableOptions*/; + +INSERT INTO /*_*/module_deps_tmp + SELECT * FROM /*_*/module_deps; + +DROP TABLE /*_*/module_deps; + +ALTER TABLE /*_*/module_deps_tmp RENAME TO /*_*/module_deps; \ No newline at end of file diff --git a/maintenance/sqlite/archives/patch-objectcache-fix-pk.sql b/maintenance/sqlite/archives/patch-objectcache-fix-pk.sql new file mode 100644 index 0000000000..f2bef5838d --- /dev/null +++ b/maintenance/sqlite/archives/patch-objectcache-fix-pk.sql @@ -0,0 +1,14 @@ +CREATE TABLE /*_*/objectcache_tmp ( + keyname varbinary(255) NOT NULL default '' PRIMARY KEY, + value mediumblob, + exptime datetime +) /*$wgDBTableOptions*/; + +INSERT INTO /*_*/objectcache_tmp + SELECT * FROM /*_*/objectcache; + +DROP TABLE /*_*/objectcache; + +ALTER TABLE /*_*/objectcache_tmp RENAME TO /*_*/objectcache; + +CREATE INDEX /*i*/exptime ON /*_*/objectcache (exptime); \ No newline at end of file diff --git a/maintenance/sqlite/archives/patch-pagelinks-fix-pk.sql b/maintenance/sqlite/archives/patch-pagelinks-fix-pk.sql new file mode 100644 index 0000000000..0e845865dc --- /dev/null +++ b/maintenance/sqlite/archives/patch-pagelinks-fix-pk.sql @@ -0,0 +1,27 @@ +CREATE TABLE /*_*/pagelinks_tmp ( + -- Key to the page_id of the page containing the link. + pl_from int unsigned NOT NULL default 0, + -- Namespace for this page + pl_from_namespace int NOT NULL default 0, + + -- Key to page_namespace/page_title of the target page. + -- The target page may or may not exist, and due to renames + -- and deletions may refer to different page records as time + -- goes by. + pl_namespace int NOT NULL default 0, + pl_title varchar(255) binary NOT NULL default '', + PRIMARY KEY (pl_from,pl_namespace,pl_title) +) /*$wgDBTableOptions*/; + +INSERT INTO /*_*/pagelinks_tmp + SELECT * FROM /*_*/pagelinks; + +DROP TABLE /*_*/pagelinks; + +ALTER TABLE /*_*/pagelinks_tmp RENAME TO /*_*/pagelinks; + +-- Reverse index, for Special:Whatlinkshere +CREATE INDEX /*i*/pl_namespace ON /*_*/pagelinks (pl_namespace,pl_title,pl_from); + +-- Index for Special:Whatlinkshere with namespace filter +CREATE INDEX /*i*/pl_backlinks_namespace ON /*_*/pagelinks (pl_from_namespace,pl_namespace,pl_title,pl_from); diff --git a/maintenance/sqlite/archives/patch-querycache_info-fix-pk.sql b/maintenance/sqlite/archives/patch-querycache_info-fix-pk.sql new file mode 100644 index 0000000000..d9483be4e9 --- /dev/null +++ b/maintenance/sqlite/archives/patch-querycache_info-fix-pk.sql @@ -0,0 +1,15 @@ +CREATE TABLE /*_*/querycache_info_tmp ( + -- Special page name + -- Corresponds to a qc_type value + qci_type varbinary(32) NOT NULL default '' PRIMARY KEY, + + -- Timestamp of last update + qci_timestamp binary(14) NOT NULL default '19700101000000' +) /*$wgDBTableOptions*/; + +INSERT INTO /*_*/querycache_info_tmp + SELECT * FROM /*_*/querycache_info; + +DROP TABLE /*_*/querycache_info; + +ALTER TABLE /*_*/querycache_info_tmp RENAME TO /*_*/querycache_info; \ No newline at end of file diff --git a/maintenance/sqlite/archives/patch-site_stats-fix-pk.sql b/maintenance/sqlite/archives/patch-site_stats-fix-pk.sql new file mode 100644 index 0000000000..d785e9841c --- /dev/null +++ b/maintenance/sqlite/archives/patch-site_stats-fix-pk.sql @@ -0,0 +1,33 @@ +CREATE TABLE /*_*/site_stats_tmp ( + -- The single row should contain 1 here. + ss_row_id int unsigned NOT NULL PRIMARY KEY, + + -- Total number of edits performed. + ss_total_edits bigint unsigned default 0, + + -- An approximate count of pages matching the following criteria: + -- * in namespace 0 + -- * not a redirect + -- * contains the text '[[' + -- See Article::isCountable() in includes/Article.php + ss_good_articles bigint unsigned default 0, + + -- Total pages, theoretically equal to SELECT COUNT(*) FROM page; except faster + ss_total_pages bigint default '-1', + + -- Number of users, theoretically equal to SELECT COUNT(*) FROM user; + ss_users bigint default '-1', + + -- Number of users that still edit + ss_active_users bigint default '-1', + + -- Number of images, equivalent to SELECT COUNT(*) FROM image + ss_images int default 0 +) /*$wgDBTableOptions*/; + +INSERT INTO /*_*/site_stats_tmp + SELECT * FROM /*_*/site_stats; + +DROP TABLE /*_*/site_stats; + +ALTER TABLE /*_*/site_stats_tmp RENAME TO /*_*/site_stats; \ No newline at end of file diff --git a/maintenance/sqlite/archives/patch-templatelinks-fix-pk.sql b/maintenance/sqlite/archives/patch-templatelinks-fix-pk.sql new file mode 100644 index 0000000000..5f09f60d3a --- /dev/null +++ b/maintenance/sqlite/archives/patch-templatelinks-fix-pk.sql @@ -0,0 +1,27 @@ +CREATE TABLE /*_*/templatelinks_tmp ( + -- Key to the page_id of the page containing the link. + tl_from int unsigned NOT NULL default 0, + -- Namespace for this page + tl_from_namespace int NOT NULL default 0, + + -- Key to page_namespace/page_title of the target page. + -- The target page may or may not exist, and due to renames + -- and deletions may refer to different page records as time + -- goes by. + tl_namespace int NOT NULL default 0, + tl_title varchar(255) binary NOT NULL default '', + PRIMARY KEY (tl_from,tl_namespace,tl_title) +) /*$wgDBTableOptions*/; + +INSERT INTO /*_*/templatelinks_tmp + SELECT * FROM /*_*/templatelinks; + +DROP TABLE /*_*/templatelinks; + +ALTER TABLE /*_*/templatelinks_tmp RENAME TO /*_*/templatelinks; + +-- Reverse index, for Special:Whatlinkshere +CREATE INDEX /*i*/tl_namespace ON /*_*/templatelinks (tl_namespace,tl_title,tl_from); + +-- Index for Special:Whatlinkshere with namespace filter +CREATE INDEX /*i*/tl_backlinks_namespace ON /*_*/templatelinks (tl_from_namespace,tl_namespace,tl_title,tl_from); diff --git a/maintenance/sqlite/archives/patch-text-fix-pk.sql b/maintenance/sqlite/archives/patch-text-fix-pk.sql new file mode 100644 index 0000000000..380887b179 --- /dev/null +++ b/maintenance/sqlite/archives/patch-text-fix-pk.sql @@ -0,0 +1,37 @@ +CREATE TABLE /*_*/text_tmp ( + -- Unique text storage key number. + -- Note that the 'oldid' parameter used in URLs does *not* + -- refer to this number anymore, but to rev_id. + -- + -- revision.rev_text_id is a key to this column + old_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT, + + -- Depending on the contents of the old_flags field, the text + -- may be convenient plain text, or it may be funkily encoded. + old_text mediumblob NOT NULL, + + -- Comma-separated list of flags: + -- gzip: text is compressed with PHP's gzdeflate() function. + -- utf-8: text was stored as UTF-8. + -- If $wgLegacyEncoding option is on, rows *without* this flag + -- will be converted to UTF-8 transparently at load time. Note + -- that due to a bug in a maintenance script, this flag may + -- have been stored as 'utf8' in some cases (T18841). + -- object: text field contained a serialized PHP object. + -- The object either contains multiple versions compressed + -- together to achieve a better compression ratio, or it refers + -- to another row where the text can be found. + -- external: text was stored in an external location specified by old_text. + -- Any additional flags apply to the data stored at that URL, not + -- the URL itself. The 'object' flag is *not* set for URLs of the + -- form 'DB://cluster/id/itemid', because the external storage + -- system itself decompresses these. + old_flags tinyblob NOT NULL +) /*$wgDBTableOptions*/ MAX_ROWS=10000000 AVG_ROW_LENGTH=10240; + +INSERT INTO /*_*/text_tmp + SELECT * FROM /*_*/text; + +DROP TABLE /*_*/text; + +ALTER TABLE /*_*/text_tmp RENAME TO /*_*/text; \ No newline at end of file diff --git a/maintenance/sqlite/archives/patch-transcache-fix-pk.sql b/maintenance/sqlite/archives/patch-transcache-fix-pk.sql new file mode 100644 index 0000000000..53f83e1f02 --- /dev/null +++ b/maintenance/sqlite/archives/patch-transcache-fix-pk.sql @@ -0,0 +1,12 @@ +CREATE TABLE /*_*/transcache_tmp ( + tc_url varbinary(255) NOT NULL PRIMARY KEY, + tc_contents text, + tc_time binary(14) NOT NULL +) /*$wgDBTableOptions*/; + +INSERT INTO /*_*/transcache_tmp + SELECT * FROM /*_*/transcache; + +DROP TABLE /*_*/transcache; + +ALTER TABLE /*_*/transcache_tmp RENAME TO /*_*/transcache; \ No newline at end of file diff --git a/maintenance/sqlite/archives/patch-user_former_groups-fix-pk.sql b/maintenance/sqlite/archives/patch-user_former_groups-fix-pk.sql new file mode 100644 index 0000000000..4f5d62253a --- /dev/null +++ b/maintenance/sqlite/archives/patch-user_former_groups-fix-pk.sql @@ -0,0 +1,13 @@ +CREATE TABLE /*_*/user_former_groups_tmp ( + -- Key to user_id + ufg_user int unsigned NOT NULL default 0, + ufg_group varbinary(255) NOT NULL default '', + PRIMARY KEY (ufg_user,ufg_group) +) /*$wgDBTableOptions*/; + +INSERT INTO /*_*/user_former_groups_tmp + SELECT * FROM /*_*/user_former_groups; + +DROP TABLE /*_*/user_former_groups; + +ALTER TABLE /*_*/user_former_groups_tmp RENAME TO /*_*/user_former_groups; \ No newline at end of file diff --git a/maintenance/sqlite/archives/patch-user_properties-fix-pk.sql b/maintenance/sqlite/archives/patch-user_properties-fix-pk.sql new file mode 100644 index 0000000000..8362d23365 --- /dev/null +++ b/maintenance/sqlite/archives/patch-user_properties-fix-pk.sql @@ -0,0 +1,20 @@ +CREATE TABLE /*_*/user_properties_tmp ( + -- Foreign key to user.user_id + up_user int NOT NULL, + + -- Name of the option being saved. This is indexed for bulk lookup. + up_property varbinary(255) NOT NULL, + + -- Property value as a string. + up_value blob, + PRIMARY KEY (up_user,up_property) +) /*$wgDBTableOptions*/; + +INSERT INTO /*_*/user_properties_tmp + SELECT * FROM /*_*/user_properties; + +DROP TABLE /*_*/user_properties; + +ALTER TABLE /*_*/user_properties_tmp RENAME TO /*_*/user_properties; + +CREATE INDEX /*i*/user_properties_property ON /*_*/user_properties (up_property); \ No newline at end of file diff --git a/maintenance/tables.sql b/maintenance/tables.sql index 1497d6fc23..bed80db37c 100644 --- a/maintenance/tables.sql +++ b/maintenance/tables.sql @@ -178,11 +178,10 @@ CREATE INDEX /*i*/ug_expiry ON /*_*/user_groups (ug_expiry); CREATE TABLE /*_*/user_former_groups ( -- Key to user_id ufg_user int unsigned NOT NULL default 0, - ufg_group varbinary(255) NOT NULL default '' + ufg_group varbinary(255) NOT NULL default '', + PRIMARY KEY (ufg_user,ufg_group) ) /*$wgDBTableOptions*/; -CREATE UNIQUE INDEX /*i*/ufg_user_group ON /*_*/user_former_groups (ufg_user,ufg_group); - -- -- Stores notifications of user talk page changes, for the display -- of the "you have new messages" box @@ -220,10 +219,10 @@ CREATE TABLE /*_*/user_properties ( up_property varbinary(255) NOT NULL, -- Property value as a string. - up_value blob + up_value blob, + PRIMARY KEY (up_user,up_property) ) /*$wgDBTableOptions*/; -CREATE UNIQUE INDEX /*i*/user_properties_user_property ON /*_*/user_properties (up_user,up_property); CREATE INDEX /*i*/user_properties_property ON /*_*/user_properties (up_property); -- @@ -346,10 +345,9 @@ CREATE TABLE /*_*/revision ( -- or a rollback to a previous version. rev_text_id int unsigned NOT NULL, - -- Text comment summarizing the change. - -- This text is shown in the history and other changes lists, - -- rendered in a subset of wiki markup by Linker::formatComment() - rev_comment varbinary(767) NOT NULL, + -- Text comment summarizing the change. Deprecated in favor of + -- revision_comment_temp.revcomment_comment_id. + rev_comment varbinary(767) NOT NULL default '', -- Key to user.user_id of the user who made this edit. -- Stores 0 for anonymous edits and for some mass imports. @@ -410,6 +408,23 @@ CREATE INDEX /*i*/usertext_timestamp ON /*_*/revision (rev_user_text,rev_timesta -- and is a logged-in user. CREATE INDEX /*i*/page_user_timestamp ON /*_*/revision (rev_page,rev_user,rev_timestamp); +-- +-- Temporary table to avoid blocking on an alter of revision. +-- +-- On large wikis like the English Wikipedia, altering the revision table is a +-- months-long process. This table is being created to avoid such an alter, and +-- will be merged back into revision in the future. +-- +CREATE TABLE /*_*/revision_comment_temp ( + -- Key to rev_id + revcomment_rev int unsigned NOT NULL, + -- Key to comment_id + revcomment_comment_id bigint unsigned NOT NULL, + PRIMARY KEY (revcomment_rev, revcomment_comment_id) +) /*$wgDBTableOptions*/; +-- Ensure uniqueness +CREATE UNIQUE INDEX /*i*/revcomment_rev ON /*_*/revision_comment_temp (revcomment_rev); + -- -- Every time an edit by a logged out user is saved, -- a row is created in ip_changes. This stores @@ -475,6 +490,40 @@ CREATE TABLE /*_*/text ( -- In case tables are created as MyISAM, use row hints for MySQL <5.0 to avoid 4GB limit +-- +-- Edits, blocks, and other actions typically have a textual comment describing +-- the action. They are stored here to reduce the size of the main tables, and +-- to allow for deduplication. +-- +-- Deduplication is currently best-effort to avoid locking on inserts that +-- would be required for strict deduplication. There MAY be multiple rows with +-- the same comment_text and comment_data. +-- +CREATE TABLE /*_*/comment ( + -- Unique ID to identify each comment + comment_id bigint unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT, + + -- Hash of comment_text and comment_data, for deduplication + comment_hash INT NOT NULL, + + -- Text comment summarizing the change. + -- This text is shown in the history and other changes lists, + -- rendered in a subset of wiki markup by Linker::formatComment() + -- Size limits are enforced at the application level, and should + -- take care to crop UTF-8 strings appropriately. + comment_text BLOB NOT NULL, + + -- JSON data, intended for localizing auto-generated comments. + -- This holds structured data that is intended to be used to provide + -- localized versions of automatically-generated comments. When not empty, + -- comment_text should be the generated comment localized using the wiki's + -- content language. + comment_data BLOB +) /*$wgDBTableOptions*/; +-- Index used for deduplication. +CREATE INDEX /*i*/comment_hash ON /*_*/comment (comment_hash); + + -- -- Holding area for deleted articles, which may be viewed -- or restored by admins through the Special:Undelete interface. @@ -496,7 +545,8 @@ CREATE TABLE /*_*/archive ( ar_text mediumblob NOT NULL, -- Basic revision stuff... - ar_comment varbinary(767) NOT NULL, + ar_comment varbinary(767) NOT NULL default '', -- Deprecated in favor of ar_comment_id + ar_comment_id bigint unsigned NOT NULL DEFAULT 0, -- ("DEFAULT 0" is temporary, signaling that ar_comment should be used) ar_user int unsigned NOT NULL default 0, ar_user_text varchar(255) binary NOT NULL, ar_timestamp binary(14) NOT NULL default '', @@ -576,12 +626,10 @@ CREATE TABLE /*_*/pagelinks ( -- and deletions may refer to different page records as time -- goes by. pl_namespace int NOT NULL default 0, - pl_title varchar(255) binary NOT NULL default '' + pl_title varchar(255) binary NOT NULL default '', + PRIMARY KEY (pl_from,pl_namespace,pl_title) ) /*$wgDBTableOptions*/; --- Forward index, for page edit, save -CREATE UNIQUE INDEX /*i*/pl_from ON /*_*/pagelinks (pl_from,pl_namespace,pl_title); - -- Reverse index, for Special:Whatlinkshere CREATE INDEX /*i*/pl_namespace ON /*_*/pagelinks (pl_namespace,pl_title,pl_from); @@ -603,12 +651,10 @@ CREATE TABLE /*_*/templatelinks ( -- and deletions may refer to different page records as time -- goes by. tl_namespace int NOT NULL default 0, - tl_title varchar(255) binary NOT NULL default '' + tl_title varchar(255) binary NOT NULL default '', + PRIMARY KEY (tl_from,tl_namespace,tl_title) ) /*$wgDBTableOptions*/; --- Forward index, for page edit, save -CREATE UNIQUE INDEX /*i*/tl_from ON /*_*/templatelinks (tl_from,tl_namespace,tl_title); - -- Reverse index, for Special:Whatlinkshere CREATE INDEX /*i*/tl_namespace ON /*_*/templatelinks (tl_namespace,tl_title,tl_from); @@ -630,12 +676,10 @@ CREATE TABLE /*_*/imagelinks ( -- Filename of target image. -- This is also the page_title of the file's description page; -- all such pages are in namespace 6 (NS_FILE). - il_to varchar(255) binary NOT NULL default '' + il_to varchar(255) binary NOT NULL default '', + PRIMARY KEY (il_from,il_to) ) /*$wgDBTableOptions*/; --- Forward index, for cache invalidation on file update, etc. -CREATE UNIQUE INDEX /*i*/il_from ON /*_*/imagelinks (il_from,il_to); - -- Reverse index, for Special:Whatlinkshere and file description page local usage CREATE INDEX /*i*/il_to ON /*_*/imagelinks (il_to,il_from); @@ -685,10 +729,10 @@ CREATE TABLE /*_*/categorylinks ( -- paginate the three categories separately. This never has to be updated -- after the page is created, since none of these page types can be moved to -- any other. - cl_type ENUM('page', 'subcat', 'file') NOT NULL default 'page' + cl_type ENUM('page', 'subcat', 'file') NOT NULL default 'page', + PRIMARY KEY (cl_from,cl_to) ) /*$wgDBTableOptions*/; -CREATE UNIQUE INDEX /*i*/cl_from ON /*_*/categorylinks (cl_from,cl_to); -- We always sort within a given category, and within a given type. FIXME: -- Formerly this index didn't cover cl_type (since that didn't exist), so old @@ -787,12 +831,10 @@ CREATE TABLE /*_*/langlinks ( ll_lang varbinary(20) NOT NULL default '', -- Title of the target, including namespace - ll_title varchar(255) binary NOT NULL default '' + ll_title varchar(255) binary NOT NULL default '', + PRIMARY KEY (ll_from,ll_lang) ) /*$wgDBTableOptions*/; --- Forward index, for page edit, save, ApiQueryLanglinks -CREATE UNIQUE INDEX /*i*/ll_from ON /*_*/langlinks (ll_from, ll_lang); - -- Index for ApiQueryLangbacklinks CREATE INDEX /*i*/ll_lang ON /*_*/langlinks (ll_lang, ll_title); @@ -808,12 +850,10 @@ CREATE TABLE /*_*/iwlinks ( iwl_prefix varbinary(20) NOT NULL default '', -- Title of the target, including namespace - iwl_title varchar(255) binary NOT NULL default '' + iwl_title varchar(255) binary NOT NULL default '', + PRIMARY KEY (iwl_from,iwl_prefix,iwl_title) ) /*$wgDBTableOptions*/; --- Forward index, for page edit, save, ApiQueryIWLinks -CREATE UNIQUE INDEX /*i*/iwl_from ON /*_*/iwlinks (iwl_from, iwl_prefix, iwl_title); - -- Index for ApiQueryIWBacklinks CREATE INDEX /*i*/iwl_prefix_title_from ON /*_*/iwlinks (iwl_prefix, iwl_title, iwl_from); @@ -827,7 +867,7 @@ CREATE INDEX /*i*/iwl_prefix_from_title ON /*_*/iwlinks (iwl_prefix, iwl_from, i -- CREATE TABLE /*_*/site_stats ( -- The single row should contain 1 here. - ss_row_id int unsigned NOT NULL, + ss_row_id int unsigned NOT NULL PRIMARY KEY, -- Total number of edits performed. ss_total_edits bigint unsigned default 0, @@ -852,9 +892,6 @@ CREATE TABLE /*_*/site_stats ( ss_images int default 0 ) /*$wgDBTableOptions*/; --- Pointless index to assuage developer superstitions -CREATE UNIQUE INDEX /*i*/ss_row_id ON /*_*/site_stats (ss_row_id); - -- -- The internet is full of jerks, alas. Sometimes it's handy -- to block a vandal or troll account. @@ -875,8 +912,12 @@ CREATE TABLE /*_*/ipblocks ( -- User name of blocker ipb_by_text varchar(255) binary NOT NULL default '', - -- Text comment made by blocker. - ipb_reason varbinary(767) NOT NULL, + -- Text comment made by blocker. Deprecated in favor of ipb_reason_id + ipb_reason varbinary(767) NOT NULL default '', + + -- Key to comment_id. Text comment made by blocker. + -- ("DEFAULT 0" is temporary, signaling that ipb_reason should be used) + ipb_reason_id bigint unsigned NOT NULL DEFAULT 0, -- Creation (or refresh) date in standard YMDHMS form. -- IP blocks expire automatically. @@ -983,7 +1024,8 @@ CREATE TABLE /*_*/image ( -- Description field as entered by the uploader. -- This is displayed in image upload history and logs. - img_description varbinary(767) NOT NULL, + -- Deprecated in favor of image_comment_temp.imgcomment_description_id. + img_description varbinary(767) NOT NULL default '', -- user_id and user_name of uploader. img_user int unsigned NOT NULL default 0, @@ -1008,6 +1050,23 @@ CREATE INDEX /*i*/img_sha1 ON /*_*/image (img_sha1(10)); -- Used to get media of one type CREATE INDEX /*i*/img_media_mime ON /*_*/image (img_media_type,img_major_mime,img_minor_mime); +-- +-- Temporary table to avoid blocking on an alter of image. +-- +-- On large wikis like Wikimedia Commons, altering the image table is a +-- months-long process. This table is being created to avoid such an alter, and +-- will be merged back into image in the future. +-- +CREATE TABLE /*_*/image_comment_temp ( + -- Key to img_name (ugh) + imgcomment_name varchar(255) binary NOT NULL, + -- Key to comment_id + imgcomment_description_id bigint unsigned NOT NULL, + PRIMARY KEY (imgcomment_name, imgcomment_description_id) +) /*$wgDBTableOptions*/; +-- Ensure uniqueness +CREATE UNIQUE INDEX /*i*/imgcomment_name ON /*_*/image_comment_temp (imgcomment_name); + -- -- Previous revisions of uploaded files. @@ -1027,7 +1086,8 @@ CREATE TABLE /*_*/oldimage ( oi_width int NOT NULL default 0, oi_height int NOT NULL default 0, oi_bits int NOT NULL default 0, - oi_description varbinary(767) NOT NULL, + oi_description varbinary(767) NOT NULL default '', -- Deprecated. + oi_description_id bigint unsigned NOT NULL DEFAULT 0, -- ("DEFAULT 0" is temporary, signaling that oi_description should be used) oi_user int unsigned NOT NULL default 0, oi_user_text varchar(255) binary NOT NULL, oi_timestamp binary(14) NOT NULL default '', @@ -1075,7 +1135,8 @@ CREATE TABLE /*_*/filearchive ( -- Deletion information, if this file is deleted. fa_deleted_user int, fa_deleted_timestamp binary(14) default '', - fa_deleted_reason varbinary(767) default '', + fa_deleted_reason varbinary(767) default '', -- Deprecated + fa_deleted_reason_id bigint unsigned NOT NULL DEFAULT 0, -- ("DEFAULT 0" is temporary, signaling that fa_deleted_reason should be used) -- Duped fields from image fa_size int unsigned default 0, @@ -1086,7 +1147,8 @@ CREATE TABLE /*_*/filearchive ( fa_media_type ENUM("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE", "3D") default NULL, fa_major_mime ENUM("unknown", "application", "audio", "image", "text", "video", "message", "model", "multipart", "chemical") default "unknown", fa_minor_mime varbinary(100) default "unknown", - fa_description varbinary(767), + fa_description varbinary(767) default '', -- Deprecated + fa_description_id bigint unsigned NOT NULL DEFAULT 0, -- ("DEFAULT 0" is temporary, signaling that fa_description should be used) fa_user int unsigned default 0, fa_user_text varchar(255) binary, fa_timestamp binary(14) default '', @@ -1184,7 +1246,8 @@ CREATE TABLE /*_*/recentchanges ( rc_title varchar(255) binary NOT NULL default '', -- as in revision... - rc_comment varbinary(767) NOT NULL default '', + rc_comment varbinary(767) NOT NULL default '', -- Deprecated. + rc_comment_id bigint unsigned NOT NULL DEFAULT 0, -- ("DEFAULT 0" is temporary, signaling that rc_comment should be used) rc_minor tinyint unsigned NOT NULL default 0, -- Edits by user accounts with the 'bot' rights key are @@ -1381,13 +1444,11 @@ CREATE INDEX /*i*/exptime ON /*_*/objectcache (exptime); -- Cache of interwiki transclusion -- CREATE TABLE /*_*/transcache ( - tc_url varbinary(255) NOT NULL, + tc_url varbinary(255) NOT NULL PRIMARY KEY, tc_contents text, tc_time binary(14) NOT NULL ) /*$wgDBTableOptions*/; -CREATE UNIQUE INDEX /*i*/tc_url_idx ON /*_*/transcache (tc_url); - CREATE TABLE /*_*/logging ( -- Log ID, for referring to this specific log entry, probably for deletion and such. @@ -1415,8 +1476,13 @@ CREATE TABLE /*_*/logging ( log_page int unsigned NULL, -- Freeform text. Interpreted as edit history comments. + -- Deprecated in favor of log_comment_id. log_comment varbinary(767) NOT NULL default '', + -- Key to comment_id. Comment summarizing the change. + -- ("DEFAULT 0" is temporary, signaling that log_comment should be used) + log_comment_id bigint unsigned NOT NULL DEFAULT 0, + -- miscellaneous parameters: -- LF separated list (old system) or serialized PHP array (new system) log_params blob NOT NULL, @@ -1460,9 +1526,9 @@ CREATE TABLE /*_*/log_search ( -- The value of the ID ls_value varchar(255) NOT NULL, -- Key to log_id - ls_log_id int unsigned NOT NULL default 0 + ls_log_id int unsigned NOT NULL default 0, + PRIMARY KEY (ls_field,ls_value,ls_log_id) ) /*$wgDBTableOptions*/; -CREATE UNIQUE INDEX /*i*/ls_field_val ON /*_*/log_search (ls_field,ls_value,ls_log_id); CREATE INDEX /*i*/ls_log_id ON /*_*/log_search (ls_log_id); @@ -1514,14 +1580,12 @@ CREATE INDEX /*i*/job_timestamp ON /*_*/job (job_timestamp); CREATE TABLE /*_*/querycache_info ( -- Special page name -- Corresponds to a qc_type value - qci_type varbinary(32) NOT NULL default '', + qci_type varbinary(32) NOT NULL default '' PRIMARY KEY, -- Timestamp of last update qci_timestamp binary(14) NOT NULL default '19700101000000' ) /*$wgDBTableOptions*/; -CREATE UNIQUE INDEX /*i*/qci_type ON /*_*/querycache_info (qci_type); - -- For each redirect, this table contains exactly one row defining its target CREATE TABLE /*_*/redirect ( @@ -1592,7 +1656,8 @@ CREATE TABLE /*_*/protected_titles ( pt_namespace int NOT NULL, pt_title varchar(255) binary NOT NULL, pt_user int unsigned NOT NULL, - pt_reason varbinary(767), + pt_reason varbinary(767) default '', -- Deprecated. + pt_reason_id bigint unsigned NOT NULL DEFAULT 0, -- ("DEFAULT 0" is temporary, signaling that pt_reason should be used) pt_timestamp binary(14) NOT NULL, pt_expiry varbinary(14) NOT NULL default '', pt_create_perm varbinary(60) NOT NULL @@ -1673,9 +1738,9 @@ CREATE TABLE /*_*/l10n_cache ( -- Cache key lc_key varchar(255) NOT NULL, -- Value - lc_value mediumblob NOT NULL + lc_value mediumblob NOT NULL, + PRIMARY KEY (lc_lang, lc_key) ) /*$wgDBTableOptions*/; -CREATE INDEX /*i*/lc_lang_key ON /*_*/l10n_cache (lc_lang, lc_key); -- Table caching which local files a module depends on that aren't -- registered directly, used for fast retrieval of file dependency. @@ -1686,9 +1751,9 @@ CREATE TABLE /*_*/module_deps ( -- Module context vary (includes skin and language; called "md_skin" for legacy reasons) md_skin varbinary(32) NOT NULL, -- JSON blob with file dependencies - md_deps mediumblob NOT NULL + md_deps mediumblob NOT NULL, + PRIMARY KEY (md_module,md_skin) ) /*$wgDBTableOptions*/; -CREATE UNIQUE INDEX /*i*/md_module_skin ON /*_*/module_deps (md_module, md_skin); -- Holds all the sites known to the wiki. CREATE TABLE /*_*/sites ( diff --git a/package.json b/package.json index 850723829c..96a425ff69 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "devDependencies": { "deepmerge": "1.3.2", "eslint": "3.12.2", - "eslint-config-wikimedia": "0.4.0", + "eslint-config-wikimedia": "0.5.0", "grunt": "1.0.1", "grunt-banana-checker": "0.6.0", "grunt-contrib-copy": "1.0.0", diff --git a/phpcs.xml b/phpcs.xml index cabea093b2..4c5266e419 100644 --- a/phpcs.xml +++ b/phpcs.xml @@ -9,10 +9,6 @@ - - - - diff --git a/resources/Resources.php b/resources/Resources.php index 5aa166d9b7..3a5de66371 100644 --- a/resources/Resources.php +++ b/resources/Resources.php @@ -1056,6 +1056,7 @@ return [ 'targets' => [ 'desktop', 'mobile' ], ], 'mediawiki.hlist' => [ + 'targets' => [ 'desktop', 'mobile' ], 'styles' => [ 'resources/src/mediawiki/mediawiki.hlist-allskins.less', ], @@ -1421,14 +1422,14 @@ return [ 'dependencies' => [ 'mediawiki.action.edit.styles', 'jquery.textSelection', - 'jquery.byteLimit', + 'oojs-ui-core', 'mediawiki.widgets.visibleByteLimit', 'mediawiki.api', ], ], 'mediawiki.action.edit.styles' => [ 'targets' => [ 'desktop', 'mobile' ], - 'styles' => 'resources/src/mediawiki.action/mediawiki.action.edit.styles.css', + 'styles' => 'resources/src/mediawiki.action/mediawiki.action.edit.styles.less', ], 'mediawiki.action.edit.collapsibleFooter' => [ 'scripts' => 'resources/src/mediawiki.action/mediawiki.action.edit.collapsibleFooter.js', @@ -1748,6 +1749,12 @@ return [ 'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.less', ], ], + 'mediawiki.rcfilters.highlightCircles.seenunseen.styles' => [ + 'styles' => [ + 'resources/src/mediawiki.rcfilters/' . + 'styles/mw.rcfilters.ui.ChangesListWrapperWidget.highlightCircles.seenunseen.less', + ], + ], 'mediawiki.rcfilters.filters.dm' => [ 'scripts' => [ 'resources/src/mediawiki.rcfilters/mw.rcfilters.js', @@ -1795,6 +1802,9 @@ return [ 'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterItemHighlightButton.js', 'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.HighlightColorPickerWidget.js', 'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.LiveUpdateButtonWidget.js', + 'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.MarkSeenButtonWidget.js', + 'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.RcTopSectionWidget.js', + 'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.WatchlistTopSectionWidget.js', 'resources/src/mediawiki.rcfilters/mw.rcfilters.HighlightColors.js', 'resources/src/mediawiki.rcfilters/mw.rcfilters.init.js', ], @@ -1822,6 +1832,8 @@ return [ 'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.SavedLinksListItemWidget.less', 'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.SaveFiltersPopupButtonWidget.less', 'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.LiveUpdateButtonWidget.less', + 'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.RcTopSectionWidget.less', + 'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.WatchlistTopSectionWidget.less', ], 'skinStyles' => [ 'monobook' => [ @@ -1831,6 +1843,7 @@ return [ ], ], 'messages' => [ + 'rcfilters-tag-remove', 'rcfilters-activefilters', 'rcfilters-advancedfilters', 'rcfilters-group-results-by-page', @@ -1841,6 +1854,7 @@ return [ 'rcfilters-hours-title', 'rcfilters-days-show-days', 'rcfilters-days-show-hours', + 'rcfilters-highlighted-filters-list', 'rcfilters-quickfilters', 'rcfilters-quickfilters-placeholder-title', 'rcfilters-quickfilters-placeholder-description', @@ -1885,6 +1899,8 @@ return [ 'rcfilters-liveupdates-button', 'rcfilters-liveupdates-button-title-on', 'rcfilters-liveupdates-button-title-off', + 'rcfilters-watchlist-markseen-button', + 'rcfilters-watchlist-edit-watchlist-button', 'rcfilters-other-review-tools', 'blanknamespace', 'namespaces', @@ -2176,8 +2192,9 @@ return [ 'styles' => 'resources/src/mediawiki.special/mediawiki.special.upload.styles.css', ], 'mediawiki.special.userlogin.common.styles' => [ - 'styles' => [ - 'resources/src/mediawiki.special/mediawiki.special.userlogin.common.css', + 'targets' => [ 'desktop', 'mobile' ], + 'skinStyles' => [ + 'default' => 'resources/src/mediawiki.special/mediawiki.special.userlogin.common.css', ], ], 'mediawiki.special.userlogin.login.styles' => [ @@ -2691,7 +2708,10 @@ return [ // This contains only the styles required by core widgets. 'oojs-ui-core.styles' => [ 'class' => 'ResourceLoaderOOUIFileModule', - 'styles' => 'resources/src/oojs-ui-local.css', // HACK, see inside the file + 'styles' => [ + 'resources/lib/oojs-ui/wikimedia-ui-base.less', // Providing Wikimedia UI LESS variables to all + 'resources/src/oojs-ui-local.css', // HACK, see inside the file + ], 'themeStyles' => 'core', 'targets' => [ 'desktop', 'mobile' ], ], diff --git a/resources/lib/jquery/jquery.migrate.js b/resources/lib/jquery/jquery.migrate.js index 879509f996..12212ffcfb 100644 --- a/resources/lib/jquery/jquery.migrate.js +++ b/resources/lib/jquery/jquery.migrate.js @@ -1,13 +1,35 @@ /*! - * jQuery Migrate - v3.0.0 - 2016-06-09 + * jQuery Migrate - v3.0.1-pre - 2017-08-17 * Copyright jQuery Foundation and other contributors + * + * Patched for MediaWiki: + * - Preserve handler of uncaught exceptions in promise chains + * https://gerrit.wikimedia.org/r/#/c/360999/ + * https://github.com/jquery/jquery-migrate/pull/262 + * - Add mw.track instrumentation for statistics. */ -(function( jQuery, window ) { +;( function( factory ) { + if ( typeof define === "function" && define.amd ) { + + // AMD. Register as an anonymous module. + define( [ "jquery" ], window, factory ); + } else if ( typeof module === "object" && module.exports ) { + + // Node/CommonJS + // eslint-disable-next-line no-undef + module.exports = factory( require( "jquery" ), window ); + } else { + + // Browser globals + factory( jQuery, window ); + } +} )( function( jQuery, window ) { "use strict"; -jQuery.migrateVersion = "3.0.0"; +jQuery.migrateVersion = "3.0.1-pre"; +/* exported migrateWarn, migrateWarnFunc, migrateWarnProp */ ( function() { @@ -15,7 +37,9 @@ jQuery.migrateVersion = "3.0.0"; // IE9 only creates console object when dev tools are first opened // Also, avoid Function#bind here to simplify PhantomJS usage var log = window.console && window.console.log && - function() { window.console.log.apply( window.console, arguments ); }, + function() { + window.console.log.apply( window.console, arguments ); + }, rbadVersions = /^[12]\./; if ( !log ) { @@ -58,6 +82,8 @@ function migrateWarn( msg ) { if ( !warnedAbout[ msg ] ) { warnedAbout[ msg ] = true; jQuery.migrateWarnings.push( msg ); + // PATCH: Add instrumentation for statistics --Krinkle + mw.track( "mw.deprecate", "jquery-migrate" ); if ( console && console.warn && !jQuery.migrateMute ) { console.warn( "JQMIGRATE: " + msg ); if ( jQuery.migrateTrace && console.trace ) { @@ -74,11 +100,22 @@ function migrateWarnProp( obj, prop, value, msg ) { get: function() { migrateWarn( msg ); return value; + }, + set: function( newValue ) { + migrateWarn( msg ); + value = newValue; } } ); } -if ( document.compatMode === "BackCompat" ) { +function migrateWarnFunc( obj, prop, newFunc, msg ) { + obj[ prop ] = function() { + migrateWarn( msg ); + return newFunc.apply( this, arguments ); + }; +} + +if ( window.document.compatMode === "BackCompat" ) { // JQuery has never supported or tested Quirks Mode migrateWarn( "jQuery is not compatible with Quirks Mode" ); @@ -115,7 +152,7 @@ jQuery.find = function( selector ) { // The nonstandard and undocumented unquoted-hash was removed in jQuery 1.12.0 // First see if qS thinks it's a valid selector, if so avoid a false positive try { - document.querySelector( selector ); + window.document.querySelector( selector ); } catch ( err1 ) { // Didn't *look* valid to qSA, warn and try quoting what we think is the value @@ -126,7 +163,7 @@ jQuery.find = function( selector ) { // If the regexp *may* have created an invalid selector, don't update it // Note that there may be false alarms if selector uses jQuery extensions try { - document.querySelector( selector ); + window.document.querySelector( selector ); migrateWarn( "Attribute selector with '#' must be quoted: " + args[ 0 ] ); args[ 0 ] = selector; } catch ( err2 ) { @@ -148,7 +185,7 @@ for ( findProp in oldFind ) { // The number of elements contained in the matched element set jQuery.fn.size = function() { - migrateWarn( "jQuery.fn.size() is deprecated; use the .length property" ); + migrateWarn( "jQuery.fn.size() is deprecated and removed; use the .length property" ); return this.length; }; @@ -175,14 +212,14 @@ jQuery.isNumeric = function( val ) { return oldValue; }; -migrateWarnProp( jQuery, "unique", jQuery.uniqueSort, - "jQuery.unique is deprecated, use jQuery.uniqueSort" ); +migrateWarnFunc( jQuery, "unique", jQuery.uniqueSort, + "jQuery.unique is deprecated; use jQuery.uniqueSort" ); // Now jQuery.expr.pseudos is the standard incantation migrateWarnProp( jQuery.expr, "filters", jQuery.expr.pseudos, - "jQuery.expr.filters is now jQuery.expr.pseudos" ); + "jQuery.expr.filters is deprecated; use jQuery.expr.pseudos" ); migrateWarnProp( jQuery.expr, ":", jQuery.expr.pseudos, - "jQuery.expr[\":\"] is now jQuery.expr.pseudos" ); + "jQuery.expr[':'] is deprecated; use jQuery.expr.pseudos" ); var oldAjax = jQuery.ajax; @@ -192,11 +229,11 @@ jQuery.ajax = function( ) { // Be sure we got a jQXHR (e.g., not sync) if ( jQXHR.promise ) { - migrateWarnProp( jQXHR, "success", jQXHR.done, + migrateWarnFunc( jQXHR, "success", jQXHR.done, "jQXHR.success is deprecated and removed" ); - migrateWarnProp( jQXHR, "error", jQXHR.fail, + migrateWarnFunc( jQXHR, "error", jQXHR.fail, "jQXHR.error is deprecated and removed" ); - migrateWarnProp( jQXHR, "complete", jQXHR.always, + migrateWarnFunc( jQXHR, "complete", jQXHR.always, "jQXHR.complete is deprecated and removed" ); } @@ -302,8 +339,26 @@ var oldData = jQuery.data; jQuery.data = function( elem, name, value ) { var curData; + // Name can be an object, and each entry in the object is meant to be set as data + if ( name && typeof name === "object" && arguments.length === 2 ) { + curData = jQuery.hasData( elem ) && oldData.call( this, elem ); + var sameKeys = {}; + for ( var key in name ) { + if ( key !== jQuery.camelCase( key ) ) { + migrateWarn( "jQuery.data() always sets/gets camelCased names: " + key ); + curData[ key ] = name[ key ]; + } else { + sameKeys[ key ] = name[ key ]; + } + } + + oldData.call( this, elem, sameKeys ); + + return name; + } + // If the name is transformed, look for the un-transformed name in the data object - if ( name && name !== jQuery.camelCase( name ) ) { + if ( name && typeof name === "string" && name !== jQuery.camelCase( name ) ) { curData = jQuery.hasData( elem ) && oldData.call( this, elem ); if ( curData && name in curData ) { migrateWarn( "jQuery.data() always sets/gets camelCased names: " + name ); @@ -319,7 +374,7 @@ jQuery.data = function( elem, name, value ) { var oldTweenRun = jQuery.Tween.prototype.run; -jQuery.Tween.prototype.run = function( percent ) { +jQuery.Tween.prototype.run = function( ) { if ( jQuery.easing[ this.easing ].length > 1 ) { migrateWarn( "easing function " + @@ -327,21 +382,34 @@ jQuery.Tween.prototype.run = function( percent ) { "\" should use only first argument" ); - jQuery.easing[ this.easing ] = jQuery.easing[ this.easing ].bind( - jQuery.easing, - percent, this.options.duration * percent, 0, 1, this.options.duration - ); + var oldEasing = jQuery.easing[ this.easing ]; + jQuery.easing[ this.easing ] = function( percent ) { + return oldEasing.call( jQuery.easing, percent, percent, 0, 1, 1 ); + }.bind( this ); } oldTweenRun.apply( this, arguments ); }; +jQuery.fx.interval = jQuery.fx.interval || 13; + +// Support: IE9, Android <=4.4 +// Avoid false positives on browsers that lack rAF +if ( window.requestAnimationFrame ) { + migrateWarnProp( jQuery.fx, "interval", jQuery.fx.interval, + "jQuery.fx.interval is deprecated" ); +} + var oldLoad = jQuery.fn.load, + oldEventAdd = jQuery.event.add, originalFix = jQuery.event.fix; jQuery.event.props = []; jQuery.event.fixHooks = {}; +migrateWarnProp( jQuery.event.props, "concat", jQuery.event.props.concat, + "jQuery.event.props.concat() is deprecated and removed" ); + jQuery.event.fix = function( originalEvent ) { var event, type = originalEvent.type, @@ -360,7 +428,7 @@ jQuery.event.fix = function( originalEvent ) { migrateWarn( "jQuery.event.fixHooks are deprecated and removed: " + type ); if ( ( props = fixHook.props ) && props.length ) { while ( props.length ) { - jQuery.event.addProp( props.pop() ); + jQuery.event.addProp( props.pop() ); } } } @@ -370,6 +438,15 @@ jQuery.event.fix = function( originalEvent ) { return fixHook && fixHook.filter ? fixHook.filter( event, originalEvent ) : event; }; +jQuery.event.add = function( elem, types ) { + + // This misses the multiple-types case but that seems awfully rare + if ( elem === window && types === "load" && window.document.readyState === "complete" ) { + migrateWarn( "jQuery(window).on('load'...) called after load event occurred" ); + } + return oldEventAdd.apply( this, arguments ); +}; + jQuery.each( [ "load", "unload", "error" ], function( _, name ) { jQuery.fn[ name ] = function() { @@ -402,12 +479,12 @@ jQuery.each( [ "load", "unload", "error" ], function( _, name ) { // Trigger "ready" event only once, on document ready jQuery( function() { - jQuery( document ).triggerHandler( "ready" ); + jQuery( window.document ).triggerHandler( "ready" ); } ); jQuery.event.special.ready = { setup: function() { - if ( this === document ) { + if ( this === window.document ) { migrateWarn( "'ready' event is deprecated" ); } } @@ -448,7 +525,7 @@ jQuery.fn.offset = function() { return origin; } - docElem = ( elem.ownerDocument || document ).documentElement; + docElem = ( elem.ownerDocument || window.document ).documentElement; if ( !jQuery.contains( docElem, elem ) ) { migrateWarn( "jQuery.fn.offset() requires an element connected to a document" ); return origin; @@ -475,7 +552,7 @@ jQuery.param = function( data, traditional ) { var oldSelf = jQuery.fn.andSelf || jQuery.fn.addBack; jQuery.fn.andSelf = function() { - migrateWarn( "jQuery.fn.andSelf() replaced by jQuery.fn.addBack()" ); + migrateWarn( "jQuery.fn.andSelf() is deprecated and removed, use jQuery.fn.addBack()" ); return oldSelf.apply( this, arguments ); }; @@ -538,5 +615,5 @@ jQuery.Deferred = function( func ) { // Preserve handler of uncaught exceptions in promise chains jQuery.Deferred.exceptionHook = oldDeferred.exceptionHook; - -})( jQuery, window ); +return jQuery; +} ); diff --git a/resources/lib/oojs-ui/i18n/ais.json b/resources/lib/oojs-ui/i18n/ais.json new file mode 100644 index 0000000000..78c22fed4e --- /dev/null +++ b/resources/lib/oojs-ui/i18n/ais.json @@ -0,0 +1,15 @@ +{ + "@metadata": { + "authors": [ + "Bunukwiki" + ] + }, + "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-dismiss": "edeben", + "ooui-dialog-process-continue": "palalid" +} diff --git a/resources/lib/oojs-ui/i18n/ar.json b/resources/lib/oojs-ui/i18n/ar.json index 50a8cade9d..ad2995a74e 100644 --- a/resources/lib/oojs-ui/i18n/ar.json +++ b/resources/lib/oojs-ui/i18n/ar.json @@ -22,6 +22,7 @@ "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/ast.json b/resources/lib/oojs-ui/i18n/ast.json index 11761c6cc2..623892df99 100644 --- a/resources/lib/oojs-ui/i18n/ast.json +++ b/resources/lib/oojs-ui/i18n/ast.json @@ -12,6 +12,7 @@ "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", diff --git a/resources/lib/oojs-ui/i18n/be-tarask.json b/resources/lib/oojs-ui/i18n/be-tarask.json index a4b86ad266..40a6efd05b 100644 --- a/resources/lib/oojs-ui/i18n/be-tarask.json +++ b/resources/lib/oojs-ui/i18n/be-tarask.json @@ -15,6 +15,7 @@ "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/bn.json b/resources/lib/oojs-ui/i18n/bn.json index c46ea01f6a..273b7db132 100644 --- a/resources/lib/oojs-ui/i18n/bn.json +++ b/resources/lib/oojs-ui/i18n/bn.json @@ -18,6 +18,7 @@ "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/br.json b/resources/lib/oojs-ui/i18n/br.json index cbfcab074e..1383d9aac2 100644 --- a/resources/lib/oojs-ui/i18n/br.json +++ b/resources/lib/oojs-ui/i18n/br.json @@ -4,7 +4,8 @@ "Fohanno", "Fulup", "Y-M D", - "Maoris" + "Maoris", + "Gwendal" ] }, "ooui-outline-control-move-down": "Lakaat an elfenn da ziskenn", @@ -13,6 +14,7 @@ "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", diff --git a/resources/lib/oojs-ui/i18n/cs.json b/resources/lib/oojs-ui/i18n/cs.json index 734b738de1..8e3d1af176 100644 --- a/resources/lib/oojs-ui/i18n/cs.json +++ b/resources/lib/oojs-ui/i18n/cs.json @@ -12,7 +12,8 @@ "Tchoř", "ශ්වෙත", "Vojtěch Dostál", - "Matěj Suchánek" + "Matěj Suchánek", + "Martin Urbanec" ] }, "ooui-outline-control-move-down": "Přesunout položku dolů", @@ -21,6 +22,7 @@ "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", diff --git a/resources/lib/oojs-ui/i18n/da.json b/resources/lib/oojs-ui/i18n/da.json index 7e1cd568b5..3a5590ae13 100644 --- a/resources/lib/oojs-ui/i18n/da.json +++ b/resources/lib/oojs-ui/i18n/da.json @@ -9,7 +9,8 @@ "Simeondahl", "Tehnix", "Macofe", - "Peter Alberti" + "Peter Alberti", + "Joedalton" ] }, "ooui-outline-control-move-down": "Flyt ned", @@ -22,5 +23,6 @@ "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-button-select": "Vælg en fil", + "ooui-selectfile-dragdrop-placeholder": "Smid filen her" } diff --git a/resources/lib/oojs-ui/i18n/de.json b/resources/lib/oojs-ui/i18n/de.json index b48dfb5eb8..a9eea8aaab 100644 --- a/resources/lib/oojs-ui/i18n/de.json +++ b/resources/lib/oojs-ui/i18n/de.json @@ -19,6 +19,7 @@ "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", diff --git a/resources/lib/oojs-ui/i18n/en.json b/resources/lib/oojs-ui/i18n/en.json index be008321d8..fd31150366 100644 --- a/resources/lib/oojs-ui/i18n/en.json +++ b/resources/lib/oojs-ui/i18n/en.json @@ -22,6 +22,7 @@ "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", diff --git a/resources/lib/oojs-ui/i18n/es.json b/resources/lib/oojs-ui/i18n/es.json index fa11a3625b..7873c95c28 100644 --- a/resources/lib/oojs-ui/i18n/es.json +++ b/resources/lib/oojs-ui/i18n/es.json @@ -24,6 +24,7 @@ "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", diff --git a/resources/lib/oojs-ui/i18n/eu.json b/resources/lib/oojs-ui/i18n/eu.json index 033c1b0a75..c715ae6fa9 100644 --- a/resources/lib/oojs-ui/i18n/eu.json +++ b/resources/lib/oojs-ui/i18n/eu.json @@ -5,7 +5,8 @@ "Unai Fdz. de Betoño", "Xabier Armendaritz", "Subi", - "Sator" + "Sator", + "Mikel Ibaiba" ] }, "ooui-outline-control-move-down": "Mugitu itema beherantz", @@ -14,6 +15,7 @@ "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", diff --git a/resources/lib/oojs-ui/i18n/fa.json b/resources/lib/oojs-ui/i18n/fa.json index 0375c8eb6e..8aa519b104 100644 --- a/resources/lib/oojs-ui/i18n/fa.json +++ b/resources/lib/oojs-ui/i18n/fa.json @@ -23,6 +23,7 @@ "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/fr.json b/resources/lib/oojs-ui/i18n/fr.json index a68c90f695..1c004d45c1 100644 --- a/resources/lib/oojs-ui/i18n/fr.json +++ b/resources/lib/oojs-ui/i18n/fr.json @@ -39,6 +39,7 @@ "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é", diff --git a/resources/lib/oojs-ui/i18n/gl.json b/resources/lib/oojs-ui/i18n/gl.json index 4cb28399c5..2c3cce31bd 100644 --- a/resources/lib/oojs-ui/i18n/gl.json +++ b/resources/lib/oojs-ui/i18n/gl.json @@ -4,7 +4,8 @@ "Alison", "Kscanne", "Toliño", - "Elisardojm" + "Elisardojm", + "Banjo" ] }, "ooui-outline-control-move-down": "Mover o elemento abaixo", @@ -13,6 +14,7 @@ "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", diff --git a/resources/lib/oojs-ui/i18n/he.json b/resources/lib/oojs-ui/i18n/he.json index 650d67dde0..0864ed9c7b 100644 --- a/resources/lib/oojs-ui/i18n/he.json +++ b/resources/lib/oojs-ui/i18n/he.json @@ -21,6 +21,7 @@ "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/it.json b/resources/lib/oojs-ui/i18n/it.json index 4b95ffc57b..a301b6638b 100644 --- a/resources/lib/oojs-ui/i18n/it.json +++ b/resources/lib/oojs-ui/i18n/it.json @@ -25,6 +25,7 @@ "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", diff --git a/resources/lib/oojs-ui/i18n/ja.json b/resources/lib/oojs-ui/i18n/ja.json index d0df02748f..308cb80cc8 100644 --- a/resources/lib/oojs-ui/i18n/ja.json +++ b/resources/lib/oojs-ui/i18n/ja.json @@ -7,14 +7,15 @@ "Shirayuki", "Takot", "Los688", - "Sujiniku" + "Sujiniku", + "Translatealcd" ] }, "ooui-outline-control-move-down": "項目を下に移動させる", "ooui-outline-control-move-up": "項目を上に移動させる", "ooui-outline-control-remove": "項目を除去", "ooui-toolbar-more": "その他", - "ooui-toolgroup-expand": "続き", + "ooui-toolgroup-expand": "その他", "ooui-toolgroup-collapse": "折り畳む", "ooui-dialog-message-accept": "OK", "ooui-dialog-message-reject": "キャンセル", diff --git a/resources/lib/oojs-ui/i18n/kab.json b/resources/lib/oojs-ui/i18n/kab.json new file mode 100644 index 0000000000..55016b22a8 --- /dev/null +++ b/resources/lib/oojs-ui/i18n/kab.json @@ -0,0 +1,24 @@ +{ + "@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/ko.json b/resources/lib/oojs-ui/i18n/ko.json index 0c84bd1fbc..dc3c84a7de 100644 --- a/resources/lib/oojs-ui/i18n/ko.json +++ b/resources/lib/oojs-ui/i18n/ko.json @@ -10,7 +10,8 @@ "Ryuch", "Revi", "Infinity", - "Hwangjy9" + "Hwangjy9", + "Ykhwong" ] }, "ooui-outline-control-move-down": "항목을 아래로 이동", @@ -19,6 +20,7 @@ "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/lb.json b/resources/lib/oojs-ui/i18n/lb.json index fad4c1c5b9..3deee0d615 100644 --- a/resources/lib/oojs-ui/i18n/lb.json +++ b/resources/lib/oojs-ui/i18n/lb.json @@ -16,6 +16,7 @@ "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", diff --git a/resources/lib/oojs-ui/i18n/li.json b/resources/lib/oojs-ui/i18n/li.json index f05a95718a..0012c9cd37 100644 --- a/resources/lib/oojs-ui/i18n/li.json +++ b/resources/lib/oojs-ui/i18n/li.json @@ -1,7 +1,8 @@ { "@metadata": { "authors": [ - "Pahles" + "Pahles", + "Ooswesthoesbes" ] }, "ooui-outline-control-move-down": "Item nao ónger verplaatse", @@ -16,6 +17,8 @@ "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-placeholder": "Dao is gein besjtandj geselekteerd", + "ooui-selectfile-dragdrop-placeholder": "Sleip e bestandj hieroppes" } diff --git a/resources/lib/oojs-ui/i18n/mk.json b/resources/lib/oojs-ui/i18n/mk.json index 46f37fe811..23d07760c2 100644 --- a/resources/lib/oojs-ui/i18n/mk.json +++ b/resources/lib/oojs-ui/i18n/mk.json @@ -12,6 +12,7 @@ "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/ne.json b/resources/lib/oojs-ui/i18n/ne.json index 4ca5ab72a6..c7d286136f 100644 --- a/resources/lib/oojs-ui/i18n/ne.json +++ b/resources/lib/oojs-ui/i18n/ne.json @@ -3,7 +3,8 @@ "authors": [ "RajeshPandey", "सरोज कुमार ढकाल", - "Ganesh Paudel" + "Ganesh Paudel", + "Nirajan pant" ] }, "ooui-outline-control-move-down": "वस्तुलाई तल सार्ने", @@ -12,6 +13,7 @@ "ooui-toolbar-more": "थप", "ooui-toolgroup-expand": "थप", "ooui-toolgroup-collapse": "कम", + "ooui-item-remove": "हटाउनुहोस्", "ooui-dialog-message-accept": "हुन्छ", "ooui-dialog-message-reject": "रद्द गर्ने", "ooui-dialog-process-dismiss": "खारेज गर्ने", diff --git a/resources/lib/oojs-ui/i18n/nl.json b/resources/lib/oojs-ui/i18n/nl.json index d222d1c04c..694eb3c24c 100644 --- a/resources/lib/oojs-ui/i18n/nl.json +++ b/resources/lib/oojs-ui/i18n/nl.json @@ -17,7 +17,8 @@ "Southparkfan", "सरोज कुमार ढकाल", "Sjoerddebruin", - "Gloria sah" + "Gloria sah", + "Mainframe98" ] }, "ooui-outline-control-move-down": "Item omlaag verplaatsen", @@ -26,6 +27,7 @@ "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", diff --git a/resources/lib/oojs-ui/i18n/nn.json b/resources/lib/oojs-ui/i18n/nn.json index e3f3e115fd..a32e7a41c8 100644 --- a/resources/lib/oojs-ui/i18n/nn.json +++ b/resources/lib/oojs-ui/i18n/nn.json @@ -15,5 +15,6 @@ "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-placeholder": "Inga fil er vald", + "ooui-selectfile-dragdrop-placeholder": "Slepp fil her" } diff --git a/resources/lib/oojs-ui/i18n/pl.json b/resources/lib/oojs-ui/i18n/pl.json index 55847151f4..eaf0b1a818 100644 --- a/resources/lib/oojs-ui/i18n/pl.json +++ b/resources/lib/oojs-ui/i18n/pl.json @@ -26,6 +26,7 @@ "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", diff --git a/resources/lib/oojs-ui/i18n/pt.json b/resources/lib/oojs-ui/i18n/pt.json index d3d265c9d6..246d9c2c40 100644 --- a/resources/lib/oojs-ui/i18n/pt.json +++ b/resources/lib/oojs-ui/i18n/pt.json @@ -20,6 +20,7 @@ "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", diff --git a/resources/lib/oojs-ui/i18n/qqq.json b/resources/lib/oojs-ui/i18n/qqq.json index 1a096efc8e..8ca3afc77a 100644 --- a/resources/lib/oojs-ui/i18n/qqq.json +++ b/resources/lib/oojs-ui/i18n/qqq.json @@ -17,7 +17,8 @@ "Shirayuki", "Siebrand", "Trevor Parscal", - "Liuxinyu970226" + "Liuxinyu970226", + "Robby" ] }, "ooui-outline-control-move-down": "Tool tip for a button that moves items in a list down one place", @@ -26,6 +27,7 @@ "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", diff --git a/resources/lib/oojs-ui/i18n/ru.json b/resources/lib/oojs-ui/i18n/ru.json index 6c62d360da..6b22fd8879 100644 --- a/resources/lib/oojs-ui/i18n/ru.json +++ b/resources/lib/oojs-ui/i18n/ru.json @@ -17,7 +17,8 @@ "Yury Katkov", "Умар", "Камалист", - "Meshkov.a" + "Meshkov.a", + "Mailman" ] }, "ooui-outline-control-move-down": "Переместить элемент вниз", @@ -26,6 +27,7 @@ "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/skr-arab.json b/resources/lib/oojs-ui/i18n/skr-arab.json new file mode 100644 index 0000000000..6be23541ae --- /dev/null +++ b/resources/lib/oojs-ui/i18n/skr-arab.json @@ -0,0 +1,18 @@ +{ + "@metadata": { + "authors": [ + "Saraiki" + ] + }, + "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": "کوئی فائل کائنی چُݨی" +} diff --git a/resources/lib/oojs-ui/i18n/sr-ec.json b/resources/lib/oojs-ui/i18n/sr-ec.json index 87b7c2b1d2..6d675da9f2 100644 --- a/resources/lib/oojs-ui/i18n/sr-ec.json +++ b/resources/lib/oojs-ui/i18n/sr-ec.json @@ -5,7 +5,8 @@ "Nikola Smolenski", "Милан Јелисавчић", "Zoranzoki21", - "Obsuser" + "Obsuser", + "Prevodim" ] }, "ooui-outline-control-move-down": "Премести ставку надоле", @@ -14,6 +15,7 @@ "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/su.json b/resources/lib/oojs-ui/i18n/su.json index a8cf762e4b..2824d5bd43 100644 --- a/resources/lib/oojs-ui/i18n/su.json +++ b/resources/lib/oojs-ui/i18n/su.json @@ -1,7 +1,8 @@ { "@metadata": { "authors": [ - "Kandar" + "Kandar", + "Uchup19" ] }, "ooui-outline-control-move-down": "Pindahkeun ka handap", @@ -10,12 +11,15 @@ "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-placeholder": "Taya berkas anu dipilih", + "ooui-selectfile-dragdrop-placeholder": "Leupaskeun berkas di dieu" } diff --git a/resources/lib/oojs-ui/i18n/vi.json b/resources/lib/oojs-ui/i18n/vi.json index fd63081453..b271403467 100644 --- a/resources/lib/oojs-ui/i18n/vi.json +++ b/resources/lib/oojs-ui/i18n/vi.json @@ -14,6 +14,7 @@ "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", diff --git a/resources/lib/oojs-ui/i18n/yue.json b/resources/lib/oojs-ui/i18n/yue.json index 629528ded9..6a9e902b12 100644 --- a/resources/lib/oojs-ui/i18n/yue.json +++ b/resources/lib/oojs-ui/i18n/yue.json @@ -4,13 +4,14 @@ "Deryck Chan", "William915", "Shinjiman", - "Ktchankt" + "Ktchankt", + "Hello903hello" ] }, "ooui-outline-control-move-down": "向下搬", "ooui-outline-control-move-up": "向上搬", "ooui-outline-control-remove": "拎走", - "ooui-toolbar-more": "仲有", + "ooui-toolbar-more": "更多", "ooui-toolgroup-expand": "更多", "ooui-toolgroup-collapse": "少啲", "ooui-dialog-message-accept": "好", diff --git a/resources/lib/oojs-ui/i18n/zh-hans.json b/resources/lib/oojs-ui/i18n/zh-hans.json index 132c32d5cd..a3e637d69a 100644 --- a/resources/lib/oojs-ui/i18n/zh-hans.json +++ b/resources/lib/oojs-ui/i18n/zh-hans.json @@ -27,6 +27,7 @@ "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/oojs-ui-apex.js b/resources/lib/oojs-ui/oojs-ui-apex.js index 717df5db4e..81a62efff2 100644 --- a/resources/lib/oojs-ui/oojs-ui-apex.js +++ b/resources/lib/oojs-ui/oojs-ui-apex.js @@ -1,12 +1,12 @@ /*! - * OOjs UI v0.22.4 + * OOjs UI v0.23.0 * https://www.mediawiki.org/wiki/OOjs_UI * * Copyright 2011–2017 OOjs UI Team and other contributors. * Released under the MIT license * http://oojs.mit-license.org * - * Date: 2017-08-03T19:36:51Z + * Date: 2017-09-05T21:23:58Z */ ( function ( OO ) { diff --git a/resources/lib/oojs-ui/oojs-ui-core-apex.css b/resources/lib/oojs-ui/oojs-ui-core-apex.css index 718ae20884..c6cc968278 100644 --- a/resources/lib/oojs-ui/oojs-ui-core-apex.css +++ b/resources/lib/oojs-ui/oojs-ui-core-apex.css @@ -1,12 +1,12 @@ /*! - * OOjs UI v0.22.4 + * OOjs UI v0.23.0 * https://www.mediawiki.org/wiki/OOjs_UI * * Copyright 2011–2017 OOjs UI Team and other contributors. * Released under the MIT license * http://oojs.mit-license.org * - * Date: 2017-08-03T19:36:56Z + * Date: 2017-09-05T21:24:03Z */ .oo-ui-element-hidden { display: none !important; @@ -97,15 +97,14 @@ .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-buttonElement-button > .oo-ui-labelElement-label, -.oo-ui-buttonElement-frameless.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { - color: #333; - margin-left: 0.25em; -} .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; } @@ -909,9 +908,10 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { } .oo-ui-buttonInputWidget > button, .oo-ui-buttonInputWidget > input { + background-color: transparent; + margin: 0; border: 0; padding: 0; - background-color: transparent; } .oo-ui-checkboxMultiselectInputWidget .oo-ui-fieldLayout { margin-bottom: 0; diff --git a/resources/lib/oojs-ui/oojs-ui-core-wikimediaui.css b/resources/lib/oojs-ui/oojs-ui-core-wikimediaui.css index 551dda9c33..1b94cbd56c 100644 --- a/resources/lib/oojs-ui/oojs-ui-core-wikimediaui.css +++ b/resources/lib/oojs-ui/oojs-ui-core-wikimediaui.css @@ -1,12 +1,12 @@ /*! - * OOjs UI v0.22.4 + * OOjs UI v0.23.0 * https://www.mediawiki.org/wiki/OOjs_UI * * Copyright 2011–2017 OOjs UI Team and other contributors. * Released under the MIT license * http://oojs.mit-license.org * - * Date: 2017-08-03T19:36:56Z + * Date: 2017-09-05T21:24:03Z */ /** * WikimediaUI Base v0.9.2 @@ -156,21 +156,32 @@ .oo-ui-buttonElement-frameless.oo-ui-labelElement.oo-ui-iconElement:first-child { margin-left: -0.234375em; } -.oo-ui-buttonElement-frameless.oo-ui-labelElement.oo-ui-iconElement > .oo-ui-buttonElement-button { - padding-left: 2.34375em; -} .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.625em 0.3125em 0.546875em 0.3125em; + padding: 0.625em 0.3125em 0.546875em; +} +.oo-ui-buttonElement-frameless.oo-ui-labelElement.oo-ui-iconElement > .oo-ui-buttonElement-button { + padding-left: 2.34375em; } .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: 4.21875em; + padding-top: 2.34375em; +} +.oo-ui-buttonElement-frameless.oo-ui-indicatorElement.oo-ui-labelElement > .oo-ui-buttonElement-button { + padding-left: 0.3125em; + padding-top: 0.625em; +} +.oo-ui-buttonElement-frameless.oo-ui-indicatorElement.oo-ui-iconElement.oo-ui-labelElement > .oo-ui-buttonElement-button { + padding-left: 2.34375em; +} .oo-ui-buttonElement-frameless.oo-ui-widget-enabled > .oo-ui-buttonElement-button { color: #222; } @@ -1128,9 +1139,10 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { } .oo-ui-buttonInputWidget > button, .oo-ui-buttonInputWidget > input { + background-color: transparent; + margin: 0; border: 0; padding: 0; - background-color: transparent; } .oo-ui-checkboxInputWidget { position: relative; @@ -1178,10 +1190,6 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { background-color: #c8ccd1; border-color: #c8ccd1; } -.oo-ui-checkboxInputWidget [type='checkbox']:disabled:hover + span { - background-color: #c8ccd1; - border-color: #c8ccd1; -} .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox'] { cursor: pointer; } @@ -1191,41 +1199,36 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { -moz-transition: background-color 100ms, background-size 100ms, border-color 100ms, box-shadow 100ms; transition: background-color 100ms, background-size 100ms, border-color 100ms, box-shadow 100ms; } -.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:hover + span, -.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:focus:hover + span { +.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, -.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:active:focus + span { +.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']:focus + span { +.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:checked + span { + background-color: #36c; border-color: #36c; - box-shadow: inset 0 0 0 1px #36c; } -.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:checked + span { +.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, -.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:checked:focus:hover + span { +.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, -.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:checked:active:hover + span, -.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:checked:active:focus + span { +.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-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-checkboxMultiselectInputWidget .oo-ui-fieldLayout { margin-top: 0; } @@ -1390,22 +1393,19 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { .oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio']:checked + span { border-color: #36c; } -.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio']:checked:hover + span, -.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio']:checked:hover:focus + span { +.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, -.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio']:checked:active:focus + span { +.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, -.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio']:checked:active:focus + span:before { +.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio']:checked:active + span:before { border-color: #2a4b8d; } -.oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio']:checked:focus + span:before { - border-color: #fff; -} .oo-ui-radioSelectInputWidget .oo-ui-fieldLayout { margin-top: 0; } @@ -1531,9 +1531,9 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { .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 200ms cubic-bezier(0.39, 0.575, 0.565, 1), box-shadow 200ms cubic-bezier(0.39, 0.575, 0.565, 1); - -moz-transition: border-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), box-shadow 200ms cubic-bezier(0.39, 0.575, 0.565, 1); - transition: border-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), box-shadow 200ms cubic-bezier(0.39, 0.575, 0.565, 1); + -webkit-transition: border-color 200ms cubic-bezier(0.4, 0.55, 0.55, 1), box-shadow 200ms cubic-bezier(0.4, 0.55, 0.55, 1); + -moz-transition: border-color 200ms cubic-bezier(0.4, 0.55, 0.55, 1), box-shadow 200ms cubic-bezier(0.4, 0.55, 0.55, 1); + transition: border-color 200ms cubic-bezier(0.4, 0.55, 0.55, 1), box-shadow 200ms cubic-bezier(0.4, 0.55, 0.55, 1); } .oo-ui-textInputWidget.oo-ui-widget-enabled input:hover, .oo-ui-textInputWidget.oo-ui-widget-enabled textarea:hover { diff --git a/resources/lib/oojs-ui/oojs-ui-core.js b/resources/lib/oojs-ui/oojs-ui-core.js index a988269c58..c92ab4ddf8 100644 --- a/resources/lib/oojs-ui/oojs-ui-core.js +++ b/resources/lib/oojs-ui/oojs-ui-core.js @@ -1,12 +1,12 @@ /*! - * OOjs UI v0.22.4 + * OOjs UI v0.23.0 * https://www.mediawiki.org/wiki/OOjs_UI * * Copyright 2011–2017 OOjs UI Team and other contributors. * Released under the MIT license * http://oojs.mit-license.org * - * Date: 2017-08-03T19:36:51Z + * Date: 2017-09-05T21:23:58Z */ ( function ( OO ) { @@ -362,6 +362,8 @@ OO.ui.infuse = function ( idOrNode ) { '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 @@ -659,7 +661,7 @@ OO.ui.Element.static.tagName = 'div'; OO.ui.Element.static.infuse = function ( idOrNode ) { var obj = OO.ui.Element.static.unsafeInfuse( idOrNode, false ); // Verify that the type matches up. - // FIXME: uncomment after T89721 is fixed (see T90929) + // FIXME: uncomment after T89721 is fixed, see T90929. /* if ( !( obj instanceof this['class'] ) ) { throw new Error( 'Infusion type mismatch!' ); @@ -681,7 +683,7 @@ OO.ui.Element.static.infuse = function ( idOrNode ) { */ OO.ui.Element.static.unsafeInfuse = function ( idOrNode, domPromise ) { // look for a cached result of a previous infusion. - var id, $elem, data, cls, parts, parent, obj, top, state, infusedChildren; + var id, $elem, error, data, cls, parts, parent, obj, top, state, infusedChildren; if ( typeof idOrNode === 'string' ) { id = idOrNode; $elem = $( document.getElementById( id ) ); @@ -690,7 +692,14 @@ OO.ui.Element.static.unsafeInfuse = function ( idOrNode, domPromise ) { id = $elem.attr( 'id' ); } if ( !$elem.length ) { - throw new Error( 'Widget not found: ' + id ); + 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; @@ -735,12 +744,7 @@ OO.ui.Element.static.unsafeInfuse = function ( idOrNode, domPromise ) { parts = data._.split( '.' ); cls = OO.getProp.apply( OO, [ window ].concat( parts ) ); if ( cls === undefined ) { - // The PHP output might be old and not including the "OO.ui" prefix - // TODO: Remove this back-compat after next major release - cls = OO.getProp.apply( OO, [ OO.ui ].concat( parts ) ); - if ( cls === undefined ) { - throw new Error( 'Unknown widget type: id: ' + id + ', class: ' + data._ ); - } + throw new Error( 'Unknown widget type: id: ' + id + ', class: ' + data._ ); } // Verify that we're creating an OO.ui.Element instance @@ -796,7 +800,7 @@ OO.ui.Element.static.unsafeInfuse = function ( idOrNode, domPromise ) { if ( $elem[ 0 ] !== obj.$element[ 0 ] ) { $elem.replaceWith( obj.$element ); // This element is now gone from the DOM, but if anyone is holding a reference to it, - // let's allow them to OO.ui.infuse() it and do what they expect (T105828). + // 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; } @@ -2679,8 +2683,8 @@ OO.ui.mixin.IconElement.prototype.setIcon = function ( icon ) { * @chainable */ OO.ui.mixin.IconElement.prototype.setIconTitle = function ( iconTitle ) { - iconTitle = typeof iconTitle === 'function' || - ( typeof iconTitle === 'string' && iconTitle.length ) ? + iconTitle = + ( typeof iconTitle === 'function' || ( typeof iconTitle === 'string' && iconTitle.length ) ) ? OO.ui.resolveMsg( iconTitle ) : null; if ( this.iconTitle !== iconTitle ) { @@ -2848,8 +2852,8 @@ OO.ui.mixin.IndicatorElement.prototype.setIndicator = function ( indicator ) { * @chainable */ OO.ui.mixin.IndicatorElement.prototype.setIndicatorTitle = function ( indicatorTitle ) { - indicatorTitle = typeof indicatorTitle === 'function' || - ( typeof indicatorTitle === 'string' && indicatorTitle.length ) ? + indicatorTitle = + ( typeof indicatorTitle === 'function' || ( typeof indicatorTitle === 'string' && indicatorTitle.length ) ) ? OO.ui.resolveMsg( indicatorTitle ) : null; if ( this.indicatorTitle !== indicatorTitle ) { @@ -4834,7 +4838,7 @@ OO.ui.mixin.ClippableElement.prototype.clip = function () { clipHeight = allotedHeight < naturalHeight; if ( clipWidth ) { - // The order matters here. If overflow is not set first, Chrome displays bogus scrollbars. (T157672) + // The order matters here. If overflow is not set first, Chrome displays bogus scrollbars. See T157672. // Forcing a reflow is a smaller workaround than calling reconsiderScrollbars() for this case. this.$clippable.css( 'overflowX', 'scroll' ); void this.$clippable[ 0 ].offsetHeight; // Force reflow @@ -4850,7 +4854,7 @@ OO.ui.mixin.ClippableElement.prototype.clip = function () { } ); } if ( clipHeight ) { - // The order matters here. If overflow is not set first, Chrome displays bogus scrollbars. (T157672) + // The order matters here. If overflow is not set first, Chrome displays bogus scrollbars. See T157672. // Forcing a reflow is a smaller workaround than calling reconsiderScrollbars() for this case. this.$clippable.css( 'overflowY', 'scroll' ); void this.$clippable[ 0 ].offsetHeight; // Force reflow @@ -6069,7 +6073,7 @@ OO.ui.SelectWidget.prototype.onFocus = function ( event ) { } else { // One of the options got focussed (and the event bubbled up here). // They can't be tabbed to, but they can be activated using accesskeys. - item = this.getTargetItem( event ); + item = this.findTargetItem( event ); } if ( item ) { @@ -6096,7 +6100,7 @@ OO.ui.SelectWidget.prototype.onMouseDown = function ( e ) { if ( !this.isDisabled() && e.which === OO.ui.MouseButtons.LEFT ) { this.togglePressed( true ); - item = this.getTargetItem( e ); + item = this.findTargetItem( e ); if ( item && item.isSelectable() ) { this.pressItem( item ); this.selecting = item; @@ -6118,7 +6122,7 @@ OO.ui.SelectWidget.prototype.onMouseUp = function ( e ) { this.togglePressed( false ); if ( !this.selecting ) { - item = this.getTargetItem( e ); + item = this.findTargetItem( e ); if ( item && item.isSelectable() ) { this.selecting = item; } @@ -6145,7 +6149,7 @@ OO.ui.SelectWidget.prototype.onMouseMove = function ( e ) { var item; if ( !this.isDisabled() && this.pressed ) { - item = this.getTargetItem( e ); + item = this.findTargetItem( e ); if ( item && item !== this.selecting && item.isSelectable() ) { this.pressItem( item ); this.selecting = item; @@ -6165,7 +6169,7 @@ OO.ui.SelectWidget.prototype.onMouseOver = function ( e ) { return; } if ( !this.isDisabled() ) { - item = this.getTargetItem( e ); + item = this.findTargetItem( e ); this.highlightItem( item && item.isHighlightable() ? item : null ); } return false; @@ -6363,7 +6367,7 @@ OO.ui.SelectWidget.prototype.getItemMatcher = function ( s, exact ) { s = s.normalize(); } s = exact ? s.trim() : s.replace( /^\s+/, '' ); - re = '^\\s*' + s.replace( /([\\{}()|.?*+\-\^$\[\]])/g, '\\$1' ).replace( /\s+/g, '\\s+' ); + re = '^\\s*' + s.replace( /([\\{}()|.?*+\-^$[\]])/g, '\\$1' ).replace( /\s+/g, '\\s+' ); if ( exact ) { re += '\\s*$'; } @@ -6418,8 +6422,12 @@ OO.ui.SelectWidget.prototype.onToggle = function ( visible ) { * @param {jQuery.Event} e * @return {OO.ui.OptionWidget|null} Outline item widget, `null` if none was found */ -OO.ui.SelectWidget.prototype.getTargetItem = function ( e ) { - return $( e.target ).closest( '.oo-ui-optionWidget' ).data( 'oo-ui-optionWidget' ) || null; +OO.ui.SelectWidget.prototype.findTargetItem = function ( e ) { + var $option = $( e.target ).closest( '.oo-ui-optionWidget' ); + if ( !$option.closest( '.oo-ui-selectWidget' ).is( this.$element ) ) { + return null; + } + return $option.data( 'oo-ui-optionWidget' ) || null; }; /** @@ -7054,9 +7062,9 @@ OO.ui.MenuSelectWidget.prototype.onDocumentMouseDown = function ( e ) { if ( this.isVisible() && !OO.ui.contains( - this.$element.add( this.$widget ).add( this.$autoCloseIgnore ).get(), - e.target, - true + this.$element.add( this.$widget ).add( this.$autoCloseIgnore ).get(), + e.target, + true ) ) { this.toggle( false ); @@ -8147,51 +8155,6 @@ OO.ui.CheckboxMultiselectWidget.prototype.simulateLabelClick = function () { this.focus(); }; -/** - * FloatingMenuSelectWidget was a menu that would stick under a specified - * container, even when it is inserted elsewhere in the document. - * This functionality is now included in MenuSelectWidget, and FloatingMenuSelectWidget - * is preserved for backwards-compatibility. - * - * @class - * @extends OO.ui.MenuSelectWidget - * @deprecated since v0.21.3, use MenuSelectWidget instead. - * - * @constructor - * @param {OO.ui.Widget} [inputWidget] Widget to provide the menu for. - * Deprecated, omit this parameter and specify `$container` instead. - * @param {Object} [config] Configuration options - * @cfg {jQuery} [$container=inputWidget.$element] Element to render menu under - */ -OO.ui.FloatingMenuSelectWidget = function OoUiFloatingMenuSelectWidget( inputWidget, config ) { - OO.ui.warnDeprecation( 'FloatingMenuSelectWidget is deprecated. Use the MenuSelectWidget instead.' ); - - // Allow 'inputWidget' parameter and config for backwards compatibility - if ( OO.isPlainObject( inputWidget ) && config === undefined ) { - config = inputWidget; - inputWidget = config.inputWidget; - } - - // Configuration initialization - config = config || {}; - - // Properties - this.inputWidget = inputWidget; // For backwards compatibility - this.$container = config.$floatableContainer || config.$container || this.inputWidget.$element; - - // Parent constructor - OO.ui.FloatingMenuSelectWidget.parent.call( this, $.extend( {}, config, { $floatableContainer: this.$container } ) ); - - // Initialization - this.$element.addClass( 'oo-ui-floatingMenuSelectWidget' ); - // For backwards compatibility - this.$element.addClass( 'oo-ui-textInputMenuSelectWidget' ); -}; - -/* Setup */ - -OO.inheritClass( OO.ui.FloatingMenuSelectWidget, OO.ui.MenuSelectWidget ); - /** * Progress bars visually display the status of an operation, such as a download, * and can be either determinate or indeterminate: @@ -8372,7 +8335,7 @@ OO.mixinClass( OO.ui.InputWidget, OO.ui.mixin.AccessKeyedElement ); */ OO.ui.InputWidget.static.reusePreInfuseDOM = function ( node, config ) { config = OO.ui.InputWidget.parent.static.reusePreInfuseDOM( node, config ); - // Reusing $input lets browsers preserve inputted values across page reloads (T114134) + // Reusing `$input` lets browsers preserve inputted values across page reloads, see T114134. config.$input = $( node ).find( '.oo-ui-inputWidget-input' ); return config; }; @@ -9588,7 +9551,7 @@ OO.ui.TextInputWidget = function OoUiTextInputWidget( config ) { }, config ); if ( config.multiline ) { - OO.ui.warnDeprecation( 'TextInputWidget: config.multiline is deprecated. Use the MultilineTextInputWidget instead. See T130434 for details.' ); + OO.ui.warnDeprecation( 'TextInputWidget: config.multiline is deprecated. Use the MultilineTextInputWidget instead. See T130434.' ); return new OO.ui.MultilineTextInputWidget( config ); } diff --git a/resources/lib/oojs-ui/oojs-ui-core.js.map b/resources/lib/oojs-ui/oojs-ui-core.js.map index e35e4cbd65..f31a5a5242 100644 --- a/resources/lib/oojs-ui/oojs-ui-core.js.map +++ b/resources/lib/oojs-ui/oojs-ui-core.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/intro.js.txt","../src/core.js","../src/mixin.js","../src/Element.js","../src/HtmlSnippet.js","../src/Layout.js","../src/Widget.js","../src/Theme.js","../src/mixins/TabIndexedElement.js","../src/mixins/ButtonElement.js","../src/mixins/GroupElement.js","../src/mixins/IconElement.js","../src/mixins/IndicatorElement.js","../src/mixins/LabelElement.js","../src/mixins/FlaggedElement.js","../src/mixins/TitledElement.js","../src/mixins/AccessKeyedElement.js","../src/widgets/ButtonWidget.js","../src/widgets/ButtonGroupWidget.js","../src/widgets/IconWidget.js","../src/widgets/IndicatorWidget.js","../src/widgets/LabelWidget.js","../src/mixins/PendingElement.js","../src/mixins/FloatableElement.js","../src/mixins/ClippableElement.js","../src/widgets/PopupWidget.js","../src/mixins/PopupElement.js","../src/widgets/PopupButtonWidget.js","../src/mixins/GroupWidget.js","../src/mixins/ItemWidget.js","../src/widgets/OptionWidget.js","../src/widgets/SelectWidget.js","../src/widgets/DecoratedOptionWidget.js","../src/widgets/MenuOptionWidget.js","../src/widgets/MenuSectionOptionWidget.js","../src/widgets/MenuSelectWidget.js","../src/widgets/DropdownWidget.js","../src/widgets/RadioOptionWidget.js","../src/widgets/RadioSelectWidget.js","../src/widgets/MultioptionWidget.js","../src/widgets/MultiselectWidget.js","../src/widgets/CheckboxMultioptionWidget.js","../src/widgets/CheckboxMultiselectWidget.js","../src/widgets/FloatingMenuSelectWidget.js","../src/widgets/ProgressBarWidget.js","../src/widgets/InputWidget.js","../src/widgets/HiddenInputWidget.js","../src/widgets/ButtonInputWidget.js","../src/widgets/CheckboxInputWidget.js","../src/widgets/DropdownInputWidget.js","../src/widgets/RadioInputWidget.js","../src/widgets/RadioSelectInputWidget.js","../src/widgets/CheckboxMultiselectInputWidget.js","../src/widgets/TextInputWidget.js","../src/widgets/SearchInputWidget.js","../src/widgets/MultilineTextInputWidget.js","../src/widgets/ComboBoxInputWidget.js","../src/layouts/FieldLayout.js","../src/layouts/ActionFieldLayout.js","../src/layouts/FieldsetLayout.js","../src/layouts/FormLayout.js","../src/layouts/PanelLayout.js","../src/layouts/HorizontalLayout.js","../src/outro.js.txt"],"names":[],"mappings":"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","file":"oojs-ui-core.js","sourcesContent":["( function ( OO ) {\n\n'use strict';\n","/**\n * Namespace for all classes, static methods and static properties.\n *\n * @class\n * @singleton\n */\nOO.ui = {};\n\nOO.ui.bind = $.proxy;\n\n/**\n * @property {Object}\n */\nOO.ui.Keys = {\n\tUNDEFINED: 0,\n\tBACKSPACE: 8,\n\tDELETE: 46,\n\tLEFT: 37,\n\tRIGHT: 39,\n\tUP: 38,\n\tDOWN: 40,\n\tENTER: 13,\n\tEND: 35,\n\tHOME: 36,\n\tTAB: 9,\n\tPAGEUP: 33,\n\tPAGEDOWN: 34,\n\tESCAPE: 27,\n\tSHIFT: 16,\n\tSPACE: 32\n};\n\n/**\n * Constants for MouseEvent.which\n *\n * @property {Object}\n */\nOO.ui.MouseButtons = {\n\tLEFT: 1,\n\tMIDDLE: 2,\n\tRIGHT: 3\n};\n\n/**\n * @property {number}\n * @private\n */\nOO.ui.elementId = 0;\n\n/**\n * Generate a unique ID for element\n *\n * @return {string} ID\n */\nOO.ui.generateElementId = function () {\n\tOO.ui.elementId++;\n\treturn 'oojsui-' + OO.ui.elementId;\n};\n\n/**\n * Check if an element is focusable.\n * Inspired by :focusable in jQueryUI v1.11.4 - 2015-04-14\n *\n * @param {jQuery} $element Element to test\n * @return {boolean} Element is focusable\n */\nOO.ui.isFocusableElement = function ( $element ) {\n\tvar nodeName,\n\t\telement = $element[ 0 ];\n\n\t// Anything disabled is not focusable\n\tif ( element.disabled ) {\n\t\treturn false;\n\t}\n\n\t// Check if the element is visible\n\tif ( !(\n\t\t// This is quicker than calling $element.is( ':visible' )\n\t\t$.expr.pseudos.visible( element ) &&\n\t\t// Check that all parents are visible\n\t\t!$element.parents().addBack().filter( function () {\n\t\t\treturn $.css( this, 'visibility' ) === 'hidden';\n\t\t} ).length\n\t) ) {\n\t\treturn false;\n\t}\n\n\t// Check if the element is ContentEditable, which is the string 'true'\n\tif ( element.contentEditable === 'true' ) {\n\t\treturn true;\n\t}\n\n\t// Anything with a non-negative numeric tabIndex is focusable.\n\t// Use .prop to avoid browser bugs\n\tif ( $element.prop( 'tabIndex' ) >= 0 ) {\n\t\treturn true;\n\t}\n\n\t// Some element types are naturally focusable\n\t// (indexOf is much faster than regex in Chrome and about the\n\t// same in FF: https://jsperf.com/regex-vs-indexof-array2)\n\tnodeName = element.nodeName.toLowerCase();\n\tif ( [ 'input', 'select', 'textarea', 'button', 'object' ].indexOf( nodeName ) !== -1 ) {\n\t\treturn true;\n\t}\n\n\t// Links and areas are focusable if they have an href\n\tif ( ( nodeName === 'a' || nodeName === 'area' ) && $element.attr( 'href' ) !== undefined ) {\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\n/**\n * Find a focusable child\n *\n * @param {jQuery} $container Container to search in\n * @param {boolean} [backwards] Search backwards\n * @return {jQuery} Focusable child, or an empty jQuery object if none found\n */\nOO.ui.findFocusable = function ( $container, backwards ) {\n\tvar $focusable = $( [] ),\n\t\t// $focusableCandidates is a superset of things that\n\t\t// could get matched by isFocusableElement\n\t\t$focusableCandidates = $container\n\t\t\t.find( 'input, select, textarea, button, object, a, area, [contenteditable], [tabindex]' );\n\n\tif ( backwards ) {\n\t\t$focusableCandidates = Array.prototype.reverse.call( $focusableCandidates );\n\t}\n\n\t$focusableCandidates.each( function () {\n\t\tvar $this = $( this );\n\t\tif ( OO.ui.isFocusableElement( $this ) ) {\n\t\t\t$focusable = $this;\n\t\t\treturn false;\n\t\t}\n\t} );\n\treturn $focusable;\n};\n\n/**\n * Get the user's language and any fallback languages.\n *\n * These language codes are used to localize user interface elements in the user's language.\n *\n * In environments that provide a localization system, this function should be overridden to\n * return the user's language(s). The default implementation returns English (en) only.\n *\n * @return {string[]} Language codes, in descending order of priority\n */\nOO.ui.getUserLanguages = function () {\n\treturn [ 'en' ];\n};\n\n/**\n * Get a value in an object keyed by language code.\n *\n * @param {Object.} obj Object keyed by language code\n * @param {string|null} [lang] Language code, if omitted or null defaults to any user language\n * @param {string} [fallback] Fallback code, used if no matching language can be found\n * @return {Mixed} Local value\n */\nOO.ui.getLocalValue = function ( obj, lang, fallback ) {\n\tvar i, len, langs;\n\n\t// Requested language\n\tif ( obj[ lang ] ) {\n\t\treturn obj[ lang ];\n\t}\n\t// Known user language\n\tlangs = OO.ui.getUserLanguages();\n\tfor ( i = 0, len = langs.length; i < len; i++ ) {\n\t\tlang = langs[ i ];\n\t\tif ( obj[ lang ] ) {\n\t\t\treturn obj[ lang ];\n\t\t}\n\t}\n\t// Fallback language\n\tif ( obj[ fallback ] ) {\n\t\treturn obj[ fallback ];\n\t}\n\t// First existing language\n\tfor ( lang in obj ) {\n\t\treturn obj[ lang ];\n\t}\n\n\treturn undefined;\n};\n\n/**\n * Check if a node is contained within another node\n *\n * Similar to jQuery#contains except a list of containers can be supplied\n * and a boolean argument allows you to include the container in the match list\n *\n * @param {HTMLElement|HTMLElement[]} containers Container node(s) to search in\n * @param {HTMLElement} contained Node to find\n * @param {boolean} [matchContainers] Include the container(s) in the list of nodes to match, otherwise only match descendants\n * @return {boolean} The node is in the list of target nodes\n */\nOO.ui.contains = function ( containers, contained, matchContainers ) {\n\tvar i;\n\tif ( !Array.isArray( containers ) ) {\n\t\tcontainers = [ containers ];\n\t}\n\tfor ( i = containers.length - 1; i >= 0; i-- ) {\n\t\tif ( ( matchContainers && contained === containers[ i ] ) || $.contains( containers[ i ], contained ) ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/**\n * Return a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing.\n *\n * Ported from: http://underscorejs.org/underscore.js\n *\n * @param {Function} func Function to debounce\n * @param {number} [wait=0] Wait period in milliseconds\n * @param {boolean} [immediate] Trigger on leading edge\n * @return {Function} Debounced function\n */\nOO.ui.debounce = function ( func, wait, immediate ) {\n\tvar timeout;\n\treturn function () {\n\t\tvar context = this,\n\t\t\targs = arguments,\n\t\t\tlater = function () {\n\t\t\t\ttimeout = null;\n\t\t\t\tif ( !immediate ) {\n\t\t\t\t\tfunc.apply( context, args );\n\t\t\t\t}\n\t\t\t};\n\t\tif ( immediate && !timeout ) {\n\t\t\tfunc.apply( context, args );\n\t\t}\n\t\tif ( !timeout || wait ) {\n\t\t\tclearTimeout( timeout );\n\t\t\ttimeout = setTimeout( later, wait );\n\t\t}\n\t};\n};\n\n/**\n * Puts a console warning with provided message.\n *\n * @param {string} message Message\n */\nOO.ui.warnDeprecation = function ( message ) {\n\tif ( OO.getProp( window, 'console', 'warn' ) !== undefined ) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.warn( message );\n\t}\n};\n\n/**\n * Returns a function, that, when invoked, will only be triggered at most once\n * during a given window of time. If called again during that window, it will\n * wait until the window ends and then trigger itself again.\n *\n * As it's not knowable to the caller whether the function will actually run\n * when the wrapper is called, return values from the function are entirely\n * discarded.\n *\n * @param {Function} func Function to throttle\n * @param {number} wait Throttle window length, in milliseconds\n * @return {Function} Throttled function\n */\nOO.ui.throttle = function ( func, wait ) {\n\tvar context, args, timeout,\n\t\tprevious = 0,\n\t\trun = function () {\n\t\t\ttimeout = null;\n\t\t\tprevious = OO.ui.now();\n\t\t\tfunc.apply( context, args );\n\t\t};\n\treturn function () {\n\t\t// Check how long it's been since the last time the function was\n\t\t// called, and whether it's more or less than the requested throttle\n\t\t// period. If it's less, run the function immediately. If it's more,\n\t\t// set a timeout for the remaining time -- but don't replace an\n\t\t// existing timeout, since that'd indefinitely prolong the wait.\n\t\tvar remaining = wait - ( OO.ui.now() - previous );\n\t\tcontext = this;\n\t\targs = arguments;\n\t\tif ( remaining <= 0 ) {\n\t\t\t// Note: unless wait was ridiculously large, this means we'll\n\t\t\t// automatically run the first time the function was called in a\n\t\t\t// given period. (If you provide a wait period larger than the\n\t\t\t// current Unix timestamp, you *deserve* unexpected behavior.)\n\t\t\tclearTimeout( timeout );\n\t\t\trun();\n\t\t} else if ( !timeout ) {\n\t\t\ttimeout = setTimeout( run, remaining );\n\t\t}\n\t};\n};\n\n/**\n * A (possibly faster) way to get the current timestamp as an integer\n *\n * @return {number} Current timestamp, in milliseconds since the Unix epoch\n */\nOO.ui.now = Date.now || function () {\n\treturn new Date().getTime();\n};\n\n/**\n * Reconstitute a JavaScript object corresponding to a widget created by\n * the PHP implementation.\n *\n * This is an alias for `OO.ui.Element.static.infuse()`.\n *\n * @param {string|HTMLElement|jQuery} idOrNode\n * A DOM id (if a string) or node for the widget to infuse.\n * @return {OO.ui.Element}\n * The `OO.ui.Element` corresponding to this (infusable) document node.\n */\nOO.ui.infuse = function ( idOrNode ) {\n\treturn OO.ui.Element.static.infuse( idOrNode );\n};\n\n( function () {\n\t/**\n\t * Message store for the default implementation of OO.ui.msg\n\t *\n\t * Environments that provide a localization system should not use this, but should override\n\t * OO.ui.msg altogether.\n\t *\n\t * @private\n\t */\n\tvar messages = {\n\t\t// Tool tip for a button that moves items in a list down one place\n\t\t'ooui-outline-control-move-down': 'Move item down',\n\t\t// Tool tip for a button that moves items in a list up one place\n\t\t'ooui-outline-control-move-up': 'Move item up',\n\t\t// Tool tip for a button that removes items from a list\n\t\t'ooui-outline-control-remove': 'Remove item',\n\t\t// Label for the toolbar group that contains a list of all other available tools\n\t\t'ooui-toolbar-more': 'More',\n\t\t// Label for the fake tool that expands the full list of tools in a toolbar group\n\t\t'ooui-toolgroup-expand': 'More',\n\t\t// Label for the fake tool that collapses the full list of tools in a toolbar group\n\t\t'ooui-toolgroup-collapse': 'Fewer',\n\t\t// Default label for the accept button of a confirmation dialog\n\t\t'ooui-dialog-message-accept': 'OK',\n\t\t// Default label for the reject button of a confirmation dialog\n\t\t'ooui-dialog-message-reject': 'Cancel',\n\t\t// Title for process dialog error description\n\t\t'ooui-dialog-process-error': 'Something went wrong',\n\t\t// Label for process dialog dismiss error button, visible when describing errors\n\t\t'ooui-dialog-process-dismiss': 'Dismiss',\n\t\t// Label for process dialog retry action button, visible when describing only recoverable errors\n\t\t'ooui-dialog-process-retry': 'Try again',\n\t\t// Label for process dialog retry action button, visible when describing only warnings\n\t\t'ooui-dialog-process-continue': 'Continue',\n\t\t// Label for the file selection widget's select file button\n\t\t'ooui-selectfile-button-select': 'Select a file',\n\t\t// Label for the file selection widget if file selection is not supported\n\t\t'ooui-selectfile-not-supported': 'File selection is not supported',\n\t\t// Label for the file selection widget when no file is currently selected\n\t\t'ooui-selectfile-placeholder': 'No file is selected',\n\t\t// Label for the file selection widget's drop target\n\t\t'ooui-selectfile-dragdrop-placeholder': 'Drop file here'\n\t};\n\n\t/**\n\t * Get a localized message.\n\t *\n\t * After the message key, message parameters may optionally be passed. In the default implementation,\n\t * any occurrences of $1 are replaced with the first parameter, $2 with the second parameter, etc.\n\t * Alternative implementations of OO.ui.msg may use any substitution system they like, as long as\n\t * they support unnamed, ordered message parameters.\n\t *\n\t * In environments that provide a localization system, this function should be overridden to\n\t * return the message translated in the user's language. The default implementation always returns\n\t * English messages. An example of doing this with [jQuery.i18n](https://github.com/wikimedia/jquery.i18n)\n\t * follows.\n\t *\n\t * @example\n\t * var i, iLen, button,\n\t * messagePath = 'oojs-ui/dist/i18n/',\n\t * languages = [ $.i18n().locale, 'ur', 'en' ],\n\t * languageMap = {};\n\t *\n\t * for ( i = 0, iLen = languages.length; i < iLen; i++ ) {\n\t * languageMap[ languages[ i ] ] = messagePath + languages[ i ].toLowerCase() + '.json';\n\t * }\n\t *\n\t * $.i18n().load( languageMap ).done( function() {\n\t * // Replace the built-in `msg` only once we've loaded the internationalization.\n\t * // OOjs UI uses `OO.ui.deferMsg` for all initially-loaded messages. So long as\n\t * // you put off creating any widgets until this promise is complete, no English\n\t * // will be displayed.\n\t * OO.ui.msg = $.i18n;\n\t *\n\t * // A button displaying \"OK\" in the default locale\n\t * button = new OO.ui.ButtonWidget( {\n\t * label: OO.ui.msg( 'ooui-dialog-message-accept' ),\n\t * icon: 'check'\n\t * } );\n\t * $( 'body' ).append( button.$element );\n\t *\n\t * // A button displaying \"OK\" in Urdu\n\t * $.i18n().locale = 'ur';\n\t * button = new OO.ui.ButtonWidget( {\n\t * label: OO.ui.msg( 'ooui-dialog-message-accept' ),\n\t * icon: 'check'\n\t * } );\n\t * $( 'body' ).append( button.$element );\n\t * } );\n\t *\n\t * @param {string} key Message key\n\t * @param {...Mixed} [params] Message parameters\n\t * @return {string} Translated message with parameters substituted\n\t */\n\tOO.ui.msg = function ( key ) {\n\t\tvar message = messages[ key ],\n\t\t\tparams = Array.prototype.slice.call( arguments, 1 );\n\t\tif ( typeof message === 'string' ) {\n\t\t\t// Perform $1 substitution\n\t\t\tmessage = message.replace( /\\$(\\d+)/g, function ( unused, n ) {\n\t\t\t\tvar i = parseInt( n, 10 );\n\t\t\t\treturn params[ i - 1 ] !== undefined ? params[ i - 1 ] : '$' + n;\n\t\t\t} );\n\t\t} else {\n\t\t\t// Return placeholder if message not found\n\t\t\tmessage = '[' + key + ']';\n\t\t}\n\t\treturn message;\n\t};\n}() );\n\n/**\n * Package a message and arguments for deferred resolution.\n *\n * Use this when you are statically specifying a message and the message may not yet be present.\n *\n * @param {string} key Message key\n * @param {...Mixed} [params] Message parameters\n * @return {Function} Function that returns the resolved message when executed\n */\nOO.ui.deferMsg = function () {\n\tvar args = arguments;\n\treturn function () {\n\t\treturn OO.ui.msg.apply( OO.ui, args );\n\t};\n};\n\n/**\n * Resolve a message.\n *\n * If the message is a function it will be executed, otherwise it will pass through directly.\n *\n * @param {Function|string} msg Deferred message, or message text\n * @return {string} Resolved message\n */\nOO.ui.resolveMsg = function ( msg ) {\n\tif ( $.isFunction( msg ) ) {\n\t\treturn msg();\n\t}\n\treturn msg;\n};\n\n/**\n * @param {string} url\n * @return {boolean}\n */\nOO.ui.isSafeUrl = function ( url ) {\n\t// Keep this function in sync with php/Tag.php\n\tvar i, protocolWhitelist;\n\n\tfunction stringStartsWith( haystack, needle ) {\n\t\treturn haystack.substr( 0, needle.length ) === needle;\n\t}\n\n\tprotocolWhitelist = [\n\t\t'bitcoin', 'ftp', 'ftps', 'geo', 'git', 'gopher', 'http', 'https', 'irc', 'ircs',\n\t\t'magnet', 'mailto', 'mms', 'news', 'nntp', 'redis', 'sftp', 'sip', 'sips', 'sms', 'ssh',\n\t\t'svn', 'tel', 'telnet', 'urn', 'worldwind', 'xmpp'\n\t];\n\n\tif ( url === '' ) {\n\t\treturn true;\n\t}\n\n\tfor ( i = 0; i < protocolWhitelist.length; i++ ) {\n\t\tif ( stringStartsWith( url, protocolWhitelist[ i ] + ':' ) ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\t// This matches '//' too\n\tif ( stringStartsWith( url, '/' ) || stringStartsWith( url, './' ) ) {\n\t\treturn true;\n\t}\n\tif ( stringStartsWith( url, '?' ) || stringStartsWith( url, '#' ) ) {\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\n/**\n * Check if the user has a 'mobile' device.\n *\n * For our purposes this means the user is primarily using an\n * on-screen keyboard, touch input instead of a mouse and may\n * have a physically small display.\n *\n * It is left up to implementors to decide how to compute this\n * so the default implementation always returns false.\n *\n * @return {boolean} Use is on a mobile device\n */\nOO.ui.isMobile = function () {\n\treturn false;\n};\n","/*!\n * Mixin namespace.\n */\n\n/**\n * Namespace for OOjs UI mixins.\n *\n * Mixins are named according to the type of object they are intended to\n * be mixed in to. For example, OO.ui.mixin.GroupElement is intended to be\n * mixed in to an instance of OO.ui.Element, and OO.ui.mixin.GroupWidget\n * is intended to be mixed in to an instance of OO.ui.Widget.\n *\n * @class\n * @singleton\n */\nOO.ui.mixin = {};\n","/**\n * Each Element represents a rendering in the DOM—a button or an icon, for example, or anything\n * that is visible to a user. Unlike {@link OO.ui.Widget widgets}, plain elements usually do not have events\n * connected to them and can't be interacted with.\n *\n * @abstract\n * @class\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {string[]} [classes] The names of the CSS classes to apply to the element. CSS styles are added\n * to the top level (e.g., the outermost div) of the element. See the [OOjs UI documentation on MediaWiki][2]\n * for an example.\n * [2]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Buttons_and_Switches#cssExample\n * @cfg {string} [id] The HTML id attribute used in the rendered tag.\n * @cfg {string} [text] Text to insert\n * @cfg {Array} [content] An array of content elements to append (after #text).\n * Strings will be html-escaped; use an OO.ui.HtmlSnippet to append raw HTML.\n * Instances of OO.ui.Element will have their $element appended.\n * @cfg {jQuery} [$content] Content elements to append (after #text).\n * @cfg {jQuery} [$element] Wrapper element. Defaults to a new element with #getTagName.\n * @cfg {Mixed} [data] Custom data of any type or combination of types (e.g., string, number, array, object).\n * Data can also be specified with the #setData method.\n */\nOO.ui.Element = function OoUiElement( config ) {\n\tthis.initialConfig = config;\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Properties\n\tthis.$ = $;\n\tthis.elementId = null;\n\tthis.visible = true;\n\tthis.data = config.data;\n\tthis.$element = config.$element ||\n\t\t$( document.createElement( this.getTagName() ) );\n\tthis.elementGroup = null;\n\n\t// Initialization\n\tif ( Array.isArray( config.classes ) ) {\n\t\tthis.$element.addClass( config.classes.join( ' ' ) );\n\t}\n\tif ( config.id ) {\n\t\tthis.setElementId( config.id );\n\t}\n\tif ( config.text ) {\n\t\tthis.$element.text( config.text );\n\t}\n\tif ( config.content ) {\n\t\t// The `content` property treats plain strings as text; use an\n\t\t// HtmlSnippet to append HTML content. `OO.ui.Element`s get their\n\t\t// appropriate $element appended.\n\t\tthis.$element.append( config.content.map( function ( v ) {\n\t\t\tif ( typeof v === 'string' ) {\n\t\t\t\t// Escape string so it is properly represented in HTML.\n\t\t\t\treturn document.createTextNode( v );\n\t\t\t} else if ( v instanceof OO.ui.HtmlSnippet ) {\n\t\t\t\t// Bypass escaping.\n\t\t\t\treturn v.toString();\n\t\t\t} else if ( v instanceof OO.ui.Element ) {\n\t\t\t\treturn v.$element;\n\t\t\t}\n\t\t\treturn v;\n\t\t} ) );\n\t}\n\tif ( config.$content ) {\n\t\t// The `$content` property treats plain strings as HTML.\n\t\tthis.$element.append( config.$content );\n\t}\n};\n\n/* Setup */\n\nOO.initClass( OO.ui.Element );\n\n/* Static Properties */\n\n/**\n * The name of the HTML tag used by the element.\n *\n * The static value may be ignored if the #getTagName method is overridden.\n *\n * @static\n * @inheritable\n * @property {string}\n */\nOO.ui.Element.static.tagName = 'div';\n\n/* Static Methods */\n\n/**\n * Reconstitute a JavaScript object corresponding to a widget created\n * by the PHP implementation.\n *\n * @param {string|HTMLElement|jQuery} idOrNode\n * A DOM id (if a string) or node for the widget to infuse.\n * @return {OO.ui.Element}\n * The `OO.ui.Element` corresponding to this (infusable) document node.\n * For `Tag` objects emitted on the HTML side (used occasionally for content)\n * the value returned is a newly-created Element wrapping around the existing\n * DOM node.\n */\nOO.ui.Element.static.infuse = function ( idOrNode ) {\n\tvar obj = OO.ui.Element.static.unsafeInfuse( idOrNode, false );\n\t// Verify that the type matches up.\n\t// FIXME: uncomment after T89721 is fixed (see T90929)\n\t/*\n\tif ( !( obj instanceof this['class'] ) ) {\n\t\tthrow new Error( 'Infusion type mismatch!' );\n\t}\n\t*/\n\treturn obj;\n};\n\n/**\n * Implementation helper for `infuse`; skips the type check and has an\n * extra property so that only the top-level invocation touches the DOM.\n *\n * @private\n * @param {string|HTMLElement|jQuery} idOrNode\n * @param {jQuery.Promise|boolean} domPromise A promise that will be resolved\n * when the top-level widget of this infusion is inserted into DOM,\n * replacing the original node; or false for top-level invocation.\n * @return {OO.ui.Element}\n */\nOO.ui.Element.static.unsafeInfuse = function ( idOrNode, domPromise ) {\n\t// look for a cached result of a previous infusion.\n\tvar id, $elem, data, cls, parts, parent, obj, top, state, infusedChildren;\n\tif ( typeof idOrNode === 'string' ) {\n\t\tid = idOrNode;\n\t\t$elem = $( document.getElementById( id ) );\n\t} else {\n\t\t$elem = $( idOrNode );\n\t\tid = $elem.attr( 'id' );\n\t}\n\tif ( !$elem.length ) {\n\t\tthrow new Error( 'Widget not found: ' + id );\n\t}\n\tif ( $elem[ 0 ].oouiInfused ) {\n\t\t$elem = $elem[ 0 ].oouiInfused;\n\t}\n\tdata = $elem.data( 'ooui-infused' );\n\tif ( data ) {\n\t\t// cached!\n\t\tif ( data === true ) {\n\t\t\tthrow new Error( 'Circular dependency! ' + id );\n\t\t}\n\t\tif ( domPromise ) {\n\t\t\t// pick up dynamic state, like focus, value of form inputs, scroll position, etc.\n\t\t\tstate = data.constructor.static.gatherPreInfuseState( $elem, data );\n\t\t\t// restore dynamic state after the new element is re-inserted into DOM under infused parent\n\t\t\tdomPromise.done( data.restorePreInfuseState.bind( data, state ) );\n\t\t\tinfusedChildren = $elem.data( 'ooui-infused-children' );\n\t\t\tif ( infusedChildren && infusedChildren.length ) {\n\t\t\t\tinfusedChildren.forEach( function ( data ) {\n\t\t\t\t\tvar state = data.constructor.static.gatherPreInfuseState( $elem, data );\n\t\t\t\t\tdomPromise.done( data.restorePreInfuseState.bind( data, state ) );\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t\treturn data;\n\t}\n\tdata = $elem.attr( 'data-ooui' );\n\tif ( !data ) {\n\t\tthrow new Error( 'No infusion data found: ' + id );\n\t}\n\ttry {\n\t\tdata = JSON.parse( data );\n\t} catch ( _ ) {\n\t\tdata = null;\n\t}\n\tif ( !( data && data._ ) ) {\n\t\tthrow new Error( 'No valid infusion data found: ' + id );\n\t}\n\tif ( data._ === 'Tag' ) {\n\t\t// Special case: this is a raw Tag; wrap existing node, don't rebuild.\n\t\treturn new OO.ui.Element( { $element: $elem } );\n\t}\n\tparts = data._.split( '.' );\n\tcls = OO.getProp.apply( OO, [ window ].concat( parts ) );\n\tif ( cls === undefined ) {\n\t\t// The PHP output might be old and not including the \"OO.ui\" prefix\n\t\t// TODO: Remove this back-compat after next major release\n\t\tcls = OO.getProp.apply( OO, [ OO.ui ].concat( parts ) );\n\t\tif ( cls === undefined ) {\n\t\t\tthrow new Error( 'Unknown widget type: id: ' + id + ', class: ' + data._ );\n\t\t}\n\t}\n\n\t// Verify that we're creating an OO.ui.Element instance\n\tparent = cls.parent;\n\n\twhile ( parent !== undefined ) {\n\t\tif ( parent === OO.ui.Element ) {\n\t\t\t// Safe\n\t\t\tbreak;\n\t\t}\n\n\t\tparent = parent.parent;\n\t}\n\n\tif ( parent !== OO.ui.Element ) {\n\t\tthrow new Error( 'Unknown widget type: id: ' + id + ', class: ' + data._ );\n\t}\n\n\tif ( domPromise === false ) {\n\t\ttop = $.Deferred();\n\t\tdomPromise = top.promise();\n\t}\n\t$elem.data( 'ooui-infused', true ); // prevent loops\n\tdata.id = id; // implicit\n\tinfusedChildren = [];\n\tdata = OO.copy( data, null, function deserialize( value ) {\n\t\tvar infused;\n\t\tif ( OO.isPlainObject( value ) ) {\n\t\t\tif ( value.tag ) {\n\t\t\t\tinfused = OO.ui.Element.static.unsafeInfuse( value.tag, domPromise );\n\t\t\t\tinfusedChildren.push( infused );\n\t\t\t\t// Flatten the structure\n\t\t\t\tinfusedChildren.push.apply( infusedChildren, infused.$element.data( 'ooui-infused-children' ) || [] );\n\t\t\t\tinfused.$element.removeData( 'ooui-infused-children' );\n\t\t\t\treturn infused;\n\t\t\t}\n\t\t\tif ( value.html !== undefined ) {\n\t\t\t\treturn new OO.ui.HtmlSnippet( value.html );\n\t\t\t}\n\t\t}\n\t} );\n\t// allow widgets to reuse parts of the DOM\n\tdata = cls.static.reusePreInfuseDOM( $elem[ 0 ], data );\n\t// pick up dynamic state, like focus, value of form inputs, scroll position, etc.\n\tstate = cls.static.gatherPreInfuseState( $elem[ 0 ], data );\n\t// rebuild widget\n\t// eslint-disable-next-line new-cap\n\tobj = new cls( data );\n\t// now replace old DOM with this new DOM.\n\tif ( top ) {\n\t\t// An efficient constructor might be able to reuse the entire DOM tree of the original element,\n\t\t// so only mutate the DOM if we need to.\n\t\tif ( $elem[ 0 ] !== obj.$element[ 0 ] ) {\n\t\t\t$elem.replaceWith( obj.$element );\n\t\t\t// This element is now gone from the DOM, but if anyone is holding a reference to it,\n\t\t\t// let's allow them to OO.ui.infuse() it and do what they expect (T105828).\n\t\t\t// Do not use jQuery.data(), as using it on detached nodes leaks memory in 1.x line by design.\n\t\t\t$elem[ 0 ].oouiInfused = obj.$element;\n\t\t}\n\t\ttop.resolve();\n\t}\n\tobj.$element.data( 'ooui-infused', obj );\n\tobj.$element.data( 'ooui-infused-children', infusedChildren );\n\t// set the 'data-ooui' attribute so we can identify infused widgets\n\tobj.$element.attr( 'data-ooui', '' );\n\t// restore dynamic state after the new element is inserted into DOM\n\tdomPromise.done( obj.restorePreInfuseState.bind( obj, state ) );\n\treturn obj;\n};\n\n/**\n * Pick out parts of `node`'s DOM to be reused when infusing a widget.\n *\n * This method **must not** make any changes to the DOM, only find interesting pieces and add them\n * to `config` (which should then be returned). Actual DOM juggling should then be done by the\n * constructor, which will be given the enhanced config.\n *\n * @protected\n * @param {HTMLElement} node\n * @param {Object} config\n * @return {Object}\n */\nOO.ui.Element.static.reusePreInfuseDOM = function ( node, config ) {\n\treturn config;\n};\n\n/**\n * Gather the dynamic state (focus, value of form inputs, scroll position, etc.) of an HTML DOM node\n * (and its children) that represent an Element of the same class and the given configuration,\n * generated by the PHP implementation.\n *\n * This method is called just before `node` is detached from the DOM. The return value of this\n * function will be passed to #restorePreInfuseState after the newly created widget's #$element\n * is inserted into DOM to replace `node`.\n *\n * @protected\n * @param {HTMLElement} node\n * @param {Object} config\n * @return {Object}\n */\nOO.ui.Element.static.gatherPreInfuseState = function () {\n\treturn {};\n};\n\n/**\n * Get a jQuery function within a specific document.\n *\n * @static\n * @param {jQuery|HTMLElement|HTMLDocument|Window} context Context to bind the function to\n * @param {jQuery} [$iframe] HTML iframe element that contains the document, omit if document is\n * not in an iframe\n * @return {Function} Bound jQuery function\n */\nOO.ui.Element.static.getJQuery = function ( context, $iframe ) {\n\tfunction wrapper( selector ) {\n\t\treturn $( selector, wrapper.context );\n\t}\n\n\twrapper.context = this.getDocument( context );\n\n\tif ( $iframe ) {\n\t\twrapper.$iframe = $iframe;\n\t}\n\n\treturn wrapper;\n};\n\n/**\n * Get the document of an element.\n *\n * @static\n * @param {jQuery|HTMLElement|HTMLDocument|Window} obj Object to get the document for\n * @return {HTMLDocument|null} Document object\n */\nOO.ui.Element.static.getDocument = function ( obj ) {\n\t// jQuery - selections created \"offscreen\" won't have a context, so .context isn't reliable\n\treturn ( obj[ 0 ] && obj[ 0 ].ownerDocument ) ||\n\t\t// Empty jQuery selections might have a context\n\t\tobj.context ||\n\t\t// HTMLElement\n\t\tobj.ownerDocument ||\n\t\t// Window\n\t\tobj.document ||\n\t\t// HTMLDocument\n\t\t( obj.nodeType === Node.DOCUMENT_NODE && obj ) ||\n\t\tnull;\n};\n\n/**\n * Get the window of an element or document.\n *\n * @static\n * @param {jQuery|HTMLElement|HTMLDocument|Window} obj Context to get the window for\n * @return {Window} Window object\n */\nOO.ui.Element.static.getWindow = function ( obj ) {\n\tvar doc = this.getDocument( obj );\n\treturn doc.defaultView;\n};\n\n/**\n * Get the direction of an element or document.\n *\n * @static\n * @param {jQuery|HTMLElement|HTMLDocument|Window} obj Context to get the direction for\n * @return {string} Text direction, either 'ltr' or 'rtl'\n */\nOO.ui.Element.static.getDir = function ( obj ) {\n\tvar isDoc, isWin;\n\n\tif ( obj instanceof jQuery ) {\n\t\tobj = obj[ 0 ];\n\t}\n\tisDoc = obj.nodeType === Node.DOCUMENT_NODE;\n\tisWin = obj.document !== undefined;\n\tif ( isDoc || isWin ) {\n\t\tif ( isWin ) {\n\t\t\tobj = obj.document;\n\t\t}\n\t\tobj = obj.body;\n\t}\n\treturn $( obj ).css( 'direction' );\n};\n\n/**\n * Get the offset between two frames.\n *\n * TODO: Make this function not use recursion.\n *\n * @static\n * @param {Window} from Window of the child frame\n * @param {Window} [to=window] Window of the parent frame\n * @param {Object} [offset] Offset to start with, used internally\n * @return {Object} Offset object, containing left and top properties\n */\nOO.ui.Element.static.getFrameOffset = function ( from, to, offset ) {\n\tvar i, len, frames, frame, rect;\n\n\tif ( !to ) {\n\t\tto = window;\n\t}\n\tif ( !offset ) {\n\t\toffset = { top: 0, left: 0 };\n\t}\n\tif ( from.parent === from ) {\n\t\treturn offset;\n\t}\n\n\t// Get iframe element\n\tframes = from.parent.document.getElementsByTagName( 'iframe' );\n\tfor ( i = 0, len = frames.length; i < len; i++ ) {\n\t\tif ( frames[ i ].contentWindow === from ) {\n\t\t\tframe = frames[ i ];\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Recursively accumulate offset values\n\tif ( frame ) {\n\t\trect = frame.getBoundingClientRect();\n\t\toffset.left += rect.left;\n\t\toffset.top += rect.top;\n\t\tif ( from !== to ) {\n\t\t\tthis.getFrameOffset( from.parent, offset );\n\t\t}\n\t}\n\treturn offset;\n};\n\n/**\n * Get the offset between two elements.\n *\n * The two elements may be in a different frame, but in that case the frame $element is in must\n * be contained in the frame $anchor is in.\n *\n * @static\n * @param {jQuery} $element Element whose position to get\n * @param {jQuery} $anchor Element to get $element's position relative to\n * @return {Object} Translated position coordinates, containing top and left properties\n */\nOO.ui.Element.static.getRelativePosition = function ( $element, $anchor ) {\n\tvar iframe, iframePos,\n\t\tpos = $element.offset(),\n\t\tanchorPos = $anchor.offset(),\n\t\telementDocument = this.getDocument( $element ),\n\t\tanchorDocument = this.getDocument( $anchor );\n\n\t// If $element isn't in the same document as $anchor, traverse up\n\twhile ( elementDocument !== anchorDocument ) {\n\t\tiframe = elementDocument.defaultView.frameElement;\n\t\tif ( !iframe ) {\n\t\t\tthrow new Error( '$element frame is not contained in $anchor frame' );\n\t\t}\n\t\tiframePos = $( iframe ).offset();\n\t\tpos.left += iframePos.left;\n\t\tpos.top += iframePos.top;\n\t\telementDocument = iframe.ownerDocument;\n\t}\n\tpos.left -= anchorPos.left;\n\tpos.top -= anchorPos.top;\n\treturn pos;\n};\n\n/**\n * Get element border sizes.\n *\n * @static\n * @param {HTMLElement} el Element to measure\n * @return {Object} Dimensions object with `top`, `left`, `bottom` and `right` properties\n */\nOO.ui.Element.static.getBorders = function ( el ) {\n\tvar doc = el.ownerDocument,\n\t\twin = doc.defaultView,\n\t\tstyle = win.getComputedStyle( el, null ),\n\t\t$el = $( el ),\n\t\ttop = parseFloat( style ? style.borderTopWidth : $el.css( 'borderTopWidth' ) ) || 0,\n\t\tleft = parseFloat( style ? style.borderLeftWidth : $el.css( 'borderLeftWidth' ) ) || 0,\n\t\tbottom = parseFloat( style ? style.borderBottomWidth : $el.css( 'borderBottomWidth' ) ) || 0,\n\t\tright = parseFloat( style ? style.borderRightWidth : $el.css( 'borderRightWidth' ) ) || 0;\n\n\treturn {\n\t\ttop: top,\n\t\tleft: left,\n\t\tbottom: bottom,\n\t\tright: right\n\t};\n};\n\n/**\n * Get dimensions of an element or window.\n *\n * @static\n * @param {HTMLElement|Window} el Element to measure\n * @return {Object} Dimensions object with `borders`, `scroll`, `scrollbar` and `rect` properties\n */\nOO.ui.Element.static.getDimensions = function ( el ) {\n\tvar $el, $win,\n\t\tdoc = el.ownerDocument || el.document,\n\t\twin = doc.defaultView;\n\n\tif ( win === el || el === doc.documentElement ) {\n\t\t$win = $( win );\n\t\treturn {\n\t\t\tborders: { top: 0, left: 0, bottom: 0, right: 0 },\n\t\t\tscroll: {\n\t\t\t\ttop: $win.scrollTop(),\n\t\t\t\tleft: $win.scrollLeft()\n\t\t\t},\n\t\t\tscrollbar: { right: 0, bottom: 0 },\n\t\t\trect: {\n\t\t\t\ttop: 0,\n\t\t\t\tleft: 0,\n\t\t\t\tbottom: $win.innerHeight(),\n\t\t\t\tright: $win.innerWidth()\n\t\t\t}\n\t\t};\n\t} else {\n\t\t$el = $( el );\n\t\treturn {\n\t\t\tborders: this.getBorders( el ),\n\t\t\tscroll: {\n\t\t\t\ttop: $el.scrollTop(),\n\t\t\t\tleft: $el.scrollLeft()\n\t\t\t},\n\t\t\tscrollbar: {\n\t\t\t\tright: $el.innerWidth() - el.clientWidth,\n\t\t\t\tbottom: $el.innerHeight() - el.clientHeight\n\t\t\t},\n\t\t\trect: el.getBoundingClientRect()\n\t\t};\n\t}\n};\n\n/**\n * Get the number of pixels that an element's content is scrolled to the left.\n *\n * Adapted from .\n * Original code copyright 2012 Wei-Ko Kao, licensed under the MIT License.\n *\n * This function smooths out browser inconsistencies (nicely described in the README at\n * ) and produces a result consistent\n * with Firefox's 'scrollLeft', which seems the sanest.\n *\n * @static\n * @method\n * @param {HTMLElement|Window} el Element to measure\n * @return {number} Scroll position from the left.\n * If the element's direction is LTR, this is a positive number between `0` (initial scroll position)\n * and `el.scrollWidth - el.clientWidth` (furthest possible scroll position).\n * If the element's direction is RTL, this is a negative number between `0` (initial scroll position)\n * and `-el.scrollWidth + el.clientWidth` (furthest possible scroll position).\n */\nOO.ui.Element.static.getScrollLeft = ( function () {\n\tvar rtlScrollType = null;\n\n\tfunction test() {\n\t\tvar $definer = $( '
A
' ),\n\t\t\tdefiner = $definer[ 0 ];\n\n\t\t$definer.appendTo( 'body' );\n\t\tif ( definer.scrollLeft > 0 ) {\n\t\t\t// Safari, Chrome\n\t\t\trtlScrollType = 'default';\n\t\t} else {\n\t\t\tdefiner.scrollLeft = 1;\n\t\t\tif ( definer.scrollLeft === 0 ) {\n\t\t\t\t// Firefox, old Opera\n\t\t\t\trtlScrollType = 'negative';\n\t\t\t} else {\n\t\t\t\t// Internet Explorer, Edge\n\t\t\t\trtlScrollType = 'reverse';\n\t\t\t}\n\t\t}\n\t\t$definer.remove();\n\t}\n\n\treturn function getScrollLeft( el ) {\n\t\tvar isRoot = el.window === el ||\n\t\t\t\tel === el.ownerDocument.body ||\n\t\t\t\tel === el.ownerDocument.documentElement,\n\t\t\tscrollLeft = isRoot ? $( window ).scrollLeft() : el.scrollLeft,\n\t\t\t// All browsers use the correct scroll type ('negative') on the root, so don't\n\t\t\t// do any fixups when looking at the root element\n\t\t\tdirection = isRoot ? 'ltr' : $( el ).css( 'direction' );\n\n\t\tif ( direction === 'rtl' ) {\n\t\t\tif ( rtlScrollType === null ) {\n\t\t\t\ttest();\n\t\t\t}\n\t\t\tif ( rtlScrollType === 'reverse' ) {\n\t\t\t\tscrollLeft = -scrollLeft;\n\t\t\t} else if ( rtlScrollType === 'default' ) {\n\t\t\t\tscrollLeft = scrollLeft - el.scrollWidth + el.clientWidth;\n\t\t\t}\n\t\t}\n\n\t\treturn scrollLeft;\n\t};\n}() );\n\n/**\n * Get the root scrollable element of given element's document.\n *\n * On Blink-based browsers (Chrome etc.), `document.documentElement` can't be used to get or set\n * the scrollTop property; instead we have to use `document.body`. Changing and testing the value\n * lets us use 'body' or 'documentElement' based on what is working.\n *\n * https://code.google.com/p/chromium/issues/detail?id=303131\n *\n * @static\n * @param {HTMLElement} el Element to find root scrollable parent for\n * @return {HTMLElement} Scrollable parent, `document.body` or `document.documentElement`\n * depending on browser\n */\nOO.ui.Element.static.getRootScrollableElement = function ( el ) {\n\tvar scrollTop, body;\n\n\tif ( OO.ui.scrollableElement === undefined ) {\n\t\tbody = el.ownerDocument.body;\n\t\tscrollTop = body.scrollTop;\n\t\tbody.scrollTop = 1;\n\n\t\t// In some browsers (observed in Chrome 56 on Linux Mint 18.1),\n\t\t// body.scrollTop doesn't become exactly 1, but a fractional value like 0.76\n\t\tif ( Math.round( body.scrollTop ) === 1 ) {\n\t\t\tbody.scrollTop = scrollTop;\n\t\t\tOO.ui.scrollableElement = 'body';\n\t\t} else {\n\t\t\tOO.ui.scrollableElement = 'documentElement';\n\t\t}\n\t}\n\n\treturn el.ownerDocument[ OO.ui.scrollableElement ];\n};\n\n/**\n * Get closest scrollable container.\n *\n * Traverses up until either a scrollable element or the root is reached, in which case the root\n * scrollable element will be returned (see #getRootScrollableElement).\n *\n * @static\n * @param {HTMLElement} el Element to find scrollable container for\n * @param {string} [dimension] Dimension of scrolling to look for; `x`, `y` or omit for either\n * @return {HTMLElement} Closest scrollable container\n */\nOO.ui.Element.static.getClosestScrollableContainer = function ( el, dimension ) {\n\tvar i, val,\n\t\t// Browsers do not correctly return the computed value of 'overflow' when 'overflow-x' and\n\t\t// 'overflow-y' have different values, so we need to check the separate properties.\n\t\tprops = [ 'overflow-x', 'overflow-y' ],\n\t\t$parent = $( el ).parent();\n\n\tif ( dimension === 'x' || dimension === 'y' ) {\n\t\tprops = [ 'overflow-' + dimension ];\n\t}\n\n\t// Special case for the document root (which doesn't really have any scrollable container, since\n\t// it is the ultimate scrollable container, but this is probably saner than null or exception)\n\tif ( $( el ).is( 'html, body' ) ) {\n\t\treturn this.getRootScrollableElement( el );\n\t}\n\n\twhile ( $parent.length ) {\n\t\tif ( $parent[ 0 ] === this.getRootScrollableElement( el ) ) {\n\t\t\treturn $parent[ 0 ];\n\t\t}\n\t\ti = props.length;\n\t\twhile ( i-- ) {\n\t\t\tval = $parent.css( props[ i ] );\n\t\t\t// We assume that elements with 'overflow' (in any direction) set to 'hidden' will never be\n\t\t\t// scrolled in that direction, but they can actually be scrolled programatically. The user can\n\t\t\t// unintentionally perform a scroll in such case even if the application doesn't scroll\n\t\t\t// programatically, e.g. when jumping to an anchor, or when using built-in find functionality.\n\t\t\t// This could cause funny issues...\n\t\t\tif ( val === 'auto' || val === 'scroll' ) {\n\t\t\t\treturn $parent[ 0 ];\n\t\t\t}\n\t\t}\n\t\t$parent = $parent.parent();\n\t}\n\t// The element is unattached... return something mostly sane\n\treturn this.getRootScrollableElement( el );\n};\n\n/**\n * Scroll element into view.\n *\n * @static\n * @param {HTMLElement} el Element to scroll into view\n * @param {Object} [config] Configuration options\n * @param {string} [config.duration='fast'] jQuery animation duration value\n * @param {string} [config.direction] Scroll in only one direction, e.g. 'x' or 'y', omit\n * to scroll in both directions\n * @return {jQuery.Promise} Promise which resolves when the scroll is complete\n */\nOO.ui.Element.static.scrollIntoView = function ( el, config ) {\n\tvar position, animations, container, $container, elementDimensions, containerDimensions, $window,\n\t\tdeferred = $.Deferred();\n\n\t// Configuration initialization\n\tconfig = config || {};\n\n\tanimations = {};\n\tcontainer = this.getClosestScrollableContainer( el, config.direction );\n\t$container = $( container );\n\telementDimensions = this.getDimensions( el );\n\tcontainerDimensions = this.getDimensions( container );\n\t$window = $( this.getWindow( el ) );\n\n\t// Compute the element's position relative to the container\n\tif ( $container.is( 'html, body' ) ) {\n\t\t// If the scrollable container is the root, this is easy\n\t\tposition = {\n\t\t\ttop: elementDimensions.rect.top,\n\t\t\tbottom: $window.innerHeight() - elementDimensions.rect.bottom,\n\t\t\tleft: elementDimensions.rect.left,\n\t\t\tright: $window.innerWidth() - elementDimensions.rect.right\n\t\t};\n\t} else {\n\t\t// Otherwise, we have to subtract el's coordinates from container's coordinates\n\t\tposition = {\n\t\t\ttop: elementDimensions.rect.top - ( containerDimensions.rect.top + containerDimensions.borders.top ),\n\t\t\tbottom: containerDimensions.rect.bottom - containerDimensions.borders.bottom - containerDimensions.scrollbar.bottom - elementDimensions.rect.bottom,\n\t\t\tleft: elementDimensions.rect.left - ( containerDimensions.rect.left + containerDimensions.borders.left ),\n\t\t\tright: containerDimensions.rect.right - containerDimensions.borders.right - containerDimensions.scrollbar.right - elementDimensions.rect.right\n\t\t};\n\t}\n\n\tif ( !config.direction || config.direction === 'y' ) {\n\t\tif ( position.top < 0 ) {\n\t\t\tanimations.scrollTop = containerDimensions.scroll.top + position.top;\n\t\t} else if ( position.top > 0 && position.bottom < 0 ) {\n\t\t\tanimations.scrollTop = containerDimensions.scroll.top + Math.min( position.top, -position.bottom );\n\t\t}\n\t}\n\tif ( !config.direction || config.direction === 'x' ) {\n\t\tif ( position.left < 0 ) {\n\t\t\tanimations.scrollLeft = containerDimensions.scroll.left + position.left;\n\t\t} else if ( position.left > 0 && position.right < 0 ) {\n\t\t\tanimations.scrollLeft = containerDimensions.scroll.left + Math.min( position.left, -position.right );\n\t\t}\n\t}\n\tif ( !$.isEmptyObject( animations ) ) {\n\t\t$container.stop( true ).animate( animations, config.duration === undefined ? 'fast' : config.duration );\n\t\t$container.queue( function ( next ) {\n\t\t\tdeferred.resolve();\n\t\t\tnext();\n\t\t} );\n\t} else {\n\t\tdeferred.resolve();\n\t}\n\treturn deferred.promise();\n};\n\n/**\n * Force the browser to reconsider whether it really needs to render scrollbars inside the element\n * and reserve space for them, because it probably doesn't.\n *\n * Workaround primarily for , but also\n * similar bugs in other browsers. \"Just\" forcing a reflow is not sufficient in all cases, we need\n * to first actually detach (or hide, but detaching is simpler) all children, *then* force a reflow,\n * and then reattach (or show) them back.\n *\n * @static\n * @param {HTMLElement} el Element to reconsider the scrollbars on\n */\nOO.ui.Element.static.reconsiderScrollbars = function ( el ) {\n\tvar i, len, scrollLeft, scrollTop, nodes = [];\n\t// Save scroll position\n\tscrollLeft = el.scrollLeft;\n\tscrollTop = el.scrollTop;\n\t// Detach all children\n\twhile ( el.firstChild ) {\n\t\tnodes.push( el.firstChild );\n\t\tel.removeChild( el.firstChild );\n\t}\n\t// Force reflow\n\tvoid el.offsetHeight;\n\t// Reattach all children\n\tfor ( i = 0, len = nodes.length; i < len; i++ ) {\n\t\tel.appendChild( nodes[ i ] );\n\t}\n\t// Restore scroll position (no-op if scrollbars disappeared)\n\tel.scrollLeft = scrollLeft;\n\tel.scrollTop = scrollTop;\n};\n\n/* Methods */\n\n/**\n * Toggle visibility of an element.\n *\n * @param {boolean} [show] Make element visible, omit to toggle visibility\n * @fires visible\n * @chainable\n */\nOO.ui.Element.prototype.toggle = function ( show ) {\n\tshow = show === undefined ? !this.visible : !!show;\n\n\tif ( show !== this.isVisible() ) {\n\t\tthis.visible = show;\n\t\tthis.$element.toggleClass( 'oo-ui-element-hidden', !this.visible );\n\t\tthis.emit( 'toggle', show );\n\t}\n\n\treturn this;\n};\n\n/**\n * Check if element is visible.\n *\n * @return {boolean} element is visible\n */\nOO.ui.Element.prototype.isVisible = function () {\n\treturn this.visible;\n};\n\n/**\n * Get element data.\n *\n * @return {Mixed} Element data\n */\nOO.ui.Element.prototype.getData = function () {\n\treturn this.data;\n};\n\n/**\n * Set element data.\n *\n * @param {Mixed} data Element data\n * @chainable\n */\nOO.ui.Element.prototype.setData = function ( data ) {\n\tthis.data = data;\n\treturn this;\n};\n\n/**\n * Set the element has an 'id' attribute.\n *\n * @param {string} id\n * @chainable\n */\nOO.ui.Element.prototype.setElementId = function ( id ) {\n\tthis.elementId = id;\n\tthis.$element.attr( 'id', id );\n\treturn this;\n};\n\n/**\n * Ensure that the element has an 'id' attribute, setting it to an unique value if it's missing,\n * and return its value.\n *\n * @return {string}\n */\nOO.ui.Element.prototype.getElementId = function () {\n\tif ( this.elementId === null ) {\n\t\tthis.setElementId( OO.ui.generateElementId() );\n\t}\n\treturn this.elementId;\n};\n\n/**\n * Check if element supports one or more methods.\n *\n * @param {string|string[]} methods Method or list of methods to check\n * @return {boolean} All methods are supported\n */\nOO.ui.Element.prototype.supports = function ( methods ) {\n\tvar i, len,\n\t\tsupport = 0;\n\n\tmethods = Array.isArray( methods ) ? methods : [ methods ];\n\tfor ( i = 0, len = methods.length; i < len; i++ ) {\n\t\tif ( $.isFunction( this[ methods[ i ] ] ) ) {\n\t\t\tsupport++;\n\t\t}\n\t}\n\n\treturn methods.length === support;\n};\n\n/**\n * Update the theme-provided classes.\n *\n * @localdoc This is called in element mixins and widget classes any time state changes.\n * Updating is debounced, minimizing overhead of changing multiple attributes and\n * guaranteeing that theme updates do not occur within an element's constructor\n */\nOO.ui.Element.prototype.updateThemeClasses = function () {\n\tOO.ui.theme.queueUpdateElementClasses( this );\n};\n\n/**\n * Get the HTML tag name.\n *\n * Override this method to base the result on instance information.\n *\n * @return {string} HTML tag name\n */\nOO.ui.Element.prototype.getTagName = function () {\n\treturn this.constructor.static.tagName;\n};\n\n/**\n * Check if the element is attached to the DOM\n *\n * @return {boolean} The element is attached to the DOM\n */\nOO.ui.Element.prototype.isElementAttached = function () {\n\treturn $.contains( this.getElementDocument(), this.$element[ 0 ] );\n};\n\n/**\n * Get the DOM document.\n *\n * @return {HTMLDocument} Document object\n */\nOO.ui.Element.prototype.getElementDocument = function () {\n\t// Don't cache this in other ways either because subclasses could can change this.$element\n\treturn OO.ui.Element.static.getDocument( this.$element );\n};\n\n/**\n * Get the DOM window.\n *\n * @return {Window} Window object\n */\nOO.ui.Element.prototype.getElementWindow = function () {\n\treturn OO.ui.Element.static.getWindow( this.$element );\n};\n\n/**\n * Get closest scrollable container.\n *\n * @return {HTMLElement} Closest scrollable container\n */\nOO.ui.Element.prototype.getClosestScrollableElementContainer = function () {\n\treturn OO.ui.Element.static.getClosestScrollableContainer( this.$element[ 0 ] );\n};\n\n/**\n * Get group element is in.\n *\n * @return {OO.ui.mixin.GroupElement|null} Group element, null if none\n */\nOO.ui.Element.prototype.getElementGroup = function () {\n\treturn this.elementGroup;\n};\n\n/**\n * Set group element is in.\n *\n * @param {OO.ui.mixin.GroupElement|null} group Group element, null if none\n * @chainable\n */\nOO.ui.Element.prototype.setElementGroup = function ( group ) {\n\tthis.elementGroup = group;\n\treturn this;\n};\n\n/**\n * Scroll element into view.\n *\n * @param {Object} [config] Configuration options\n * @return {jQuery.Promise} Promise which resolves when the scroll is complete\n */\nOO.ui.Element.prototype.scrollElementIntoView = function ( config ) {\n\tif (\n\t\t!this.isElementAttached() ||\n\t\t!this.isVisible() ||\n\t\t( this.getElementGroup() && !this.getElementGroup().isVisible() )\n\t) {\n\t\treturn $.Deferred().resolve();\n\t}\n\treturn OO.ui.Element.static.scrollIntoView( this.$element[ 0 ], config );\n};\n\n/**\n * Restore the pre-infusion dynamic state for this widget.\n *\n * This method is called after #$element has been inserted into DOM. The parameter is the return\n * value of #gatherPreInfuseState.\n *\n * @protected\n * @param {Object} state\n */\nOO.ui.Element.prototype.restorePreInfuseState = function () {\n};\n","/**\n * Wraps an HTML snippet for use with configuration values which default\n * to strings. This bypasses the default html-escaping done to string\n * values.\n *\n * @class\n *\n * @constructor\n * @param {string} [content] HTML content\n */\nOO.ui.HtmlSnippet = function OoUiHtmlSnippet( content ) {\n\t// Properties\n\tthis.content = content;\n};\n\n/* Setup */\n\nOO.initClass( OO.ui.HtmlSnippet );\n\n/* Methods */\n\n/**\n * Render into HTML.\n *\n * @return {string} Unchanged HTML snippet.\n */\nOO.ui.HtmlSnippet.prototype.toString = function () {\n\treturn this.content;\n};\n","/**\n * Layouts are containers for elements and are used to arrange other widgets of arbitrary type in a way\n * that is centrally controlled and can be updated dynamically. Layouts can be, and usually are, combined.\n * See {@link OO.ui.FieldsetLayout FieldsetLayout}, {@link OO.ui.FieldLayout FieldLayout}, {@link OO.ui.FormLayout FormLayout},\n * {@link OO.ui.PanelLayout PanelLayout}, {@link OO.ui.StackLayout StackLayout}, {@link OO.ui.PageLayout PageLayout},\n * {@link OO.ui.HorizontalLayout HorizontalLayout}, and {@link OO.ui.BookletLayout BookletLayout} for more information and examples.\n *\n * @abstract\n * @class\n * @extends OO.ui.Element\n * @mixins OO.EventEmitter\n *\n * @constructor\n * @param {Object} [config] Configuration options\n */\nOO.ui.Layout = function OoUiLayout( config ) {\n\t// Configuration initialization\n\tconfig = config || {};\n\n\t// Parent constructor\n\tOO.ui.Layout.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.EventEmitter.call( this );\n\n\t// Initialization\n\tthis.$element.addClass( 'oo-ui-layout' );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.Layout, OO.ui.Element );\nOO.mixinClass( OO.ui.Layout, OO.EventEmitter );\n","/**\n * Widgets are compositions of one or more OOjs UI elements that users can both view\n * and interact with. All widgets can be configured and modified via a standard API,\n * and their state can change dynamically according to a model.\n *\n * @abstract\n * @class\n * @extends OO.ui.Element\n * @mixins OO.EventEmitter\n *\n * @constructor\n * @param {Object} [config] Configuration options\n * @cfg {boolean} [disabled=false] Disable the widget. Disabled widgets cannot be used and their\n * appearance reflects this state.\n */\nOO.ui.Widget = function OoUiWidget( config ) {\n\t// Initialize config\n\tconfig = $.extend( { disabled: false }, config );\n\n\t// Parent constructor\n\tOO.ui.Widget.parent.call( this, config );\n\n\t// Mixin constructors\n\tOO.EventEmitter.call( this );\n\n\t// Properties\n\tthis.disabled = null;\n\tthis.wasDisabled = null;\n\n\t// Initialization\n\tthis.$element.addClass( 'oo-ui-widget' );\n\tthis.setDisabled( !!config.disabled );\n};\n\n/* Setup */\n\nOO.inheritClass( OO.ui.Widget, OO.ui.Element );\nOO.mixinClass( OO.ui.Widget, OO.EventEmitter );\n\n/* Events */\n\n/**\n * @event disable\n *\n * A 'disable' event is emitted when the disabled state of the widget changes\n * (i.e. on disable **and** enable).\n *\n * @param {boolean} disabled Widget is disabled\n */\n\n/**\n * @event toggle\n *\n * A 'toggle' event is emitted when the visibility of the widget changes.\n *\n * @param {boolean} visible Widget is visible\n */\n\n/* Methods */\n\n/**\n * Check if the widget is disabled.\n *\n * @return {boolean} Widget is disabled\n */\nOO.ui.Widget.prototype.isDisabled = function () {\n\treturn this.disabled;\n};\n\n/**\n * Set the 'disabled' state of the widget.\n *\n * When a widget is disabled, it cannot be used and its appearance is updated to reflect this state.\n *\n * @param {boolean} disabled Disable widget\n * @chainable\n */\nOO.ui.Widget.prototype.setDisabled = function ( disabled ) {\n\tvar isDisabled;\n\n\tthis.disabled = !!disabled;\n\tisDisabled = this.isDisabled();\n\tif ( isDisabled !== this.wasDisabled ) {\n\t\tthis.$element.toggleClass( 'oo-ui-widget-disabled', isDisabled );\n\t\tthis.$element.toggleClass( 'oo-ui-widget-enabled', !isDisabled );\n\t\tthis.$element.attr( 'aria-disabled', isDisabled.toString() );\n\t\tthis.emit( 'disable', isDisabled );\n\t\tthis.updateThemeClasses();\n\t}\n\tthis.wasDisabled = isDisabled;\n\n\treturn this;\n};\n\n/**\n * Update the disabled state, in case of changes in parent widget.\n *\n * @chainable\n */\nOO.ui.Widget.prototype.updateDisabled = function () {\n\tthis.setDisabled( this.disabled );\n\treturn this;\n};\n\n/**\n * Get an ID of a labelable node which is part of this widget, if any, to be used for `