From: jenkins-bot Date: Thu, 31 Aug 2017 21:02:12 +0000 (+0000) Subject: Merge "Move section ID fallbacks into headers themselves" X-Git-Tag: 1.31.0-rc.0~2245 X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=commitdiff_plain;h=802c199d0bd80ff0f4d730c61fd58cbf08a52d8d;hp=4f2eed6877938c3c7703072567e62b933c07b4b5 Merge "Move section ID fallbacks into headers themselves" --- diff --git a/.gitattributes b/.gitattributes index 09f86a3280..f230c60f7e 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,3 +1,4 @@ *.sh eol=lf *.icc binary *.webp binary +*.mp3 binary \ No newline at end of file diff --git a/.gitignore b/.gitignore index 3e97aab749..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 @@ -49,6 +50,7 @@ node_modules/ /vendor /composer.lock /composer.local.json +/composer.phar # MediaWiki UI documentation /docs/kss/static diff --git a/.mailmap b/.mailmap index 2134fc5bf1..5a76fb950e 100644 --- a/.mailmap +++ b/.mailmap @@ -63,6 +63,7 @@ aude Audrey Tang Audrey Tang ayush_garg +Bae Junehyeon Bahodir Mansurov Bartosz Dziewoński Bartosz Dziewoński @@ -227,7 +228,6 @@ Jon Robson Jon Robson Juliusz Gonera Juliusz Gonera -JuneHyeon Bae Jure Kajzer Jure Kajzer Justin Du diff --git a/.stylelintrc b/.stylelintrc deleted file mode 100644 index 27e289d430..0000000000 --- a/.stylelintrc +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "stylelint-config-wikimedia", - "rules": { - "no-descending-specificity": null, - - "selector-no-id": null - } -} diff --git a/.stylelintrc.json b/.stylelintrc.json new file mode 100644 index 0000000000..27e289d430 --- /dev/null +++ b/.stylelintrc.json @@ -0,0 +1,8 @@ +{ + "extends": "stylelint-config-wikimedia", + "rules": { + "no-descending-specificity": null, + + "selector-no-id": null + } +} diff --git a/CREDITS b/CREDITS index 14c454e379..c38c3fcc05 100644 --- a/CREDITS +++ b/CREDITS @@ -78,6 +78,7 @@ The following list can be found parsed under Special:Version/Credits --> * awu42 * ayush_garg * Azliq7 +* Bae Junehyeon * Bagariavivek * Bahodir Mansurov * balloonguy @@ -312,7 +313,6 @@ The following list can be found parsed under Special:Version/Credits --> * Julian Ostrow * Juliano F. Ravasi * Juliusz Gonera -* JuneHyeon Bae * Jure Kajzer * Justin Du * Kai Nissen 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 452cb35b2c..c4c56e833f 100644 --- a/RELEASE-NOTES-1.30 +++ b/RELEASE-NOTES-1.30 @@ -33,6 +33,12 @@ 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 @@ -49,11 +55,17 @@ section). * Added RecentChangesPurgeRows hook to allow extensions to purge data that depends on the recentchanges table. * Added JS config values wgDiffOldId/wgDiffNewId to the output of diff pages. - -=== Languages updated in 1.30 === - -* Support for kbp (Kabɩyɛ / Kabiyè) was added. -* Support for skr (Saraiki, سرائیکی) was added. +* (T2424) Added direct unwatch links to entries in Special:Watchlist (if the + 'watchlistunwatchlinks' preference option is enabled). With JavaScript + enabled, these links toggle so the user can also re-watch pages that have + just been unwatched. +* Added $wgParserTestMediaHandlers, where mock media handlers can be passed to + MediaHandlerFactory for parser tests. +* 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 === @@ -99,7 +111,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), @@ -143,6 +157,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() @@ -158,6 +173,30 @@ changes to languages because of Phabricator reports. nothing and is deprecated. * mw.util.escapeId() was deprecated, use escapeIdForAttribute() or escapeIdForLink(). +* MagicWord::replaceMultiple() (deprecated in 1.25) was removed. +* WikiImporter now requires the second parameter to be an instance of the Config, + class. Prior to that, the Config parameter was optional (a behavior deprecated in + 1.25). +* 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. +* 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. == 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 d44a30556b..3a2ae10007 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', @@ -291,7 +291,7 @@ $wgAutoloadLocalClasses = [ 'Config' => __DIR__ . '/includes/config/Config.php', 'ConfigException' => __DIR__ . '/includes/config/ConfigException.php', 'ConfigFactory' => __DIR__ . '/includes/config/ConfigFactory.php', - 'ConfiguredReadOnlyMode' => __DIR__ . '/includes/ReadOnlyMode.php', + 'ConfiguredReadOnlyMode' => __DIR__ . '/includes/ConfiguredReadOnlyMode.php', 'ConstantDependency' => __DIR__ . '/includes/cache/CacheDependency.php', 'Content' => __DIR__ . '/includes/content/Content.php', 'ContentHandler' => __DIR__ . '/includes/content/ContentHandler.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', @@ -617,7 +617,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 +802,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 +966,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 +984,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', @@ -1180,7 +1178,7 @@ $wgAutoloadLocalClasses = [ 'RangeChronologicalPager' => __DIR__ . '/includes/pager/RangeChronologicalPager.php', 'RangeDifference' => __DIR__ . '/includes/diff/DiffEngine.php', 'RawAction' => __DIR__ . '/includes/actions/RawAction.php', - 'RawMessage' => __DIR__ . '/includes/Message.php', + 'RawMessage' => __DIR__ . '/includes/RawMessage.php', 'ReadOnlyError' => __DIR__ . '/includes/exception/ReadOnlyError.php', 'ReadOnlyMode' => __DIR__ . '/includes/ReadOnlyMode.php', 'ReassignEdits' => __DIR__ . '/maintenance/reassignEdits.php', @@ -1282,7 +1280,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', diff --git a/composer.json b/composer.json index bc48360283..a7983a0dbc 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.22.5", "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", @@ -53,7 +54,7 @@ "jakub-onderka/php-parallel-lint": "0.9.2", "jetbrains/phpstorm-stubs": "dev-master#1b9906084d6635456fcf3f3a01f0d7d5b99a578a", "justinrainbow/json-schema": "~5.2", - "mediawiki/mediawiki-codesniffer": "0.10.1", + "mediawiki/mediawiki-codesniffer": "0.11.0", "monolog/monolog": "~1.22.1", "nikic/php-parser": "2.1.0", "nmred/kafka-php": "0.1.5", diff --git a/docs/database.txt b/docs/database.txt index 44ec764d95..dbc92044de 100644 --- a/docs/database.txt +++ b/docs/database.txt @@ -17,7 +17,7 @@ description of the tables and their contents, please see: To make a read query, something like this usually suffices: -$dbr = wfGetDB( DB_SLAVE ); +$dbr = wfGetDB( DB_REPLICA ); $res = $dbr->select( /* ...see docs... */ ); foreach ( $res as $row ) { ... 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/AuthPlugin.php b/includes/AuthPlugin.php index b85e1d6fc1..b73ecbd8ed 100644 --- a/includes/AuthPlugin.php +++ b/includes/AuthPlugin.php @@ -73,8 +73,8 @@ class AuthPlugin { /** * Modify options in the login template. * - * @param BaseTemplate $template - * @param string $type 'signup' or 'login'. Added in 1.16. + * @param BaseTemplate &$template + * @param string &$type 'signup' or 'login'. Added in 1.16. */ public function modifyUITemplate( &$template, &$type ) { # Override this! @@ -124,7 +124,7 @@ class AuthPlugin { * * @deprecated since 1.26, use the UserLoggedIn hook instead. And assigning * a different User object to $user is no longer supported. - * @param User $user + * @param User &$user * @return bool */ public function updateUser( &$user ) { @@ -286,7 +286,7 @@ class AuthPlugin { * * @deprecated since 1.26, use the UserLoggedIn hook instead. And assigning * a different User object to $user is no longer supported. - * @param User $user + * @param User &$user * @param bool $autocreate True if user is being autocreated on login */ public function initUser( &$user, $autocreate = false ) { @@ -306,7 +306,7 @@ class AuthPlugin { /** * Get an instance of a User object * - * @param User $user + * @param User &$user * * @return AuthPluginUser */ @@ -359,6 +359,7 @@ class AuthPluginUser { /** * @deprecated since 1.28, use SessionManager::invalidateSessionForUser() instead. + * @return bool */ public function resetAuthToken() { # Override this! diff --git a/includes/Block.php b/includes/Block.php index 2a04879848..0b17e93f3f 100644 --- a/includes/Block.php +++ b/includes/Block.php @@ -44,40 +44,40 @@ class Block { public $mParentBlockId; /** @var int */ - protected $mId; + private $mId; /** @var bool */ - protected $mFromMaster; + private $mFromMaster; /** @var bool */ - protected $mBlockEmail; + private $mBlockEmail; /** @var bool */ - protected $mDisableUsertalk; + private $mDisableUsertalk; /** @var bool */ - protected $mCreateAccount; + private $mCreateAccount; /** @var User|string */ - protected $target; + private $target; /** @var int Hack for foreign blocking (CentralAuth) */ - protected $forcedTargetID; + private $forcedTargetID; /** @var int Block::TYPE_ constant. Can only be USER, IP or RANGE internally */ - protected $type; + private $type; /** @var User */ - protected $blocker; + private $blocker; /** @var bool */ - protected $isHardblock; + private $isHardblock; /** @var bool */ - protected $isAutoblocking; + private $isAutoblocking; /** @var string|null */ - protected $systemBlockType; + private $systemBlockType; # TYPE constants const TYPE_USER = 1; @@ -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,7 +492,7 @@ class Block { self::purgeExpired(); } - $row = $this->getDatabaseArray(); + $row = $this->getDatabaseArray( $dbw ); $row['ipb_id'] = $dbw->nextSequenceValue( "ipblocks_ipb_id_seq" ); $dbw->insert( 'ipblocks', $row, __METHOD__, [ 'IGNORE' ] ); @@ -558,7 +562,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 +587,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 +604,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 +616,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 ); } /** @@ -958,6 +958,7 @@ class Block { /** * Get the system block type, if any + * @since 1.29 * @return string|null */ public function getSystemBlockType() { @@ -1353,7 +1354,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 ]; } @@ -1450,6 +1451,8 @@ class Block { * Set the 'BlockID' cookie to this block's ID and expiry time. The cookie's expiry will be * the same as the block's, to a maximum of 24 hours. * + * @since 1.29 + * * @param WebResponse $response The response on which to set the cookie. */ public function setCookie( WebResponse $response ) { @@ -1472,6 +1475,8 @@ class Block { /** * Unset the 'BlockID' cookie. * + * @since 1.29 + * * @param WebResponse $response The response on which to unset the cookie. */ public static function clearCookie( WebResponse $response ) { @@ -1482,6 +1487,9 @@ class Block { * Get the BlockID cookie's value for this block. This is usually the block ID concatenated * with an HMAC in order to avoid spoofing (T152951), but if wgSecretKey is not set will just * be the block ID. + * + * @since 1.29 + * * @return string The block ID, probably concatenated with "!" and the HMAC. */ public function getCookieValue() { @@ -1493,15 +1501,19 @@ class Block { return $id; } $hmac = MWCryptHash::hmac( $id, $secretKey, false ); - $cookieValue = $id . '!' . $hmac; + $cookieValue = $id . '!' . $hmac; return $cookieValue; } /** * Get the stored ID from the 'BlockID' cookie. The cookie's value is usually a combination of * the ID and a HMAC (see Block::setCookie), but will sometimes only be the ID. + * + * @since 1.29 + * * @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..0c86c1e871 --- /dev/null +++ b/includes/CommentStore.php @@ -0,0 +1,567 @@ + [ + '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; + + /** + * @param string $key A key such as "rev_comment" identifying the comment + * field being fetched. + */ + public function __construct( $key ) { + global $wgCommentTableSchemaMigrationStage; + + $this->key = $key; + $this->stage = $wgCommentTableSchemaMigrationStage; + } + + /** + * 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 ); + } + } + + 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 ); + } + + $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 ) { + $comment->id = $dbw->nextSequenceValue( 'comment_comment_id_seq' ); + $dbw->insert( + 'comment', + [ + 'comment_id' => $comment->id, + '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] = $comment->text; + } + + 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 ]; + } + + /** + * Prepare for the insertion of a row with a comment + * + * @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; + } + + /** + * Prepare for the insertion of a row with a comment and temporary table + * + * 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/ConfiguredReadOnlyMode.php b/includes/ConfiguredReadOnlyMode.php new file mode 100644 index 0000000000..af7c7cbdf5 --- /dev/null +++ b/includes/ConfiguredReadOnlyMode.php @@ -0,0 +1,73 @@ +config = $config; + } + + /** + * Check whether the wiki is in read-only mode. + * + * @return bool + */ + public function isReadOnly() { + return $this->getReason() !== false; + } + + /** + * Get the value of $wgReadOnly or the contents of $wgReadOnlyFile. + * + * @return string|bool String when in read-only mode; false otherwise + */ + public function getReason() { + if ( $this->overrideReason !== null ) { + return $this->overrideReason; + } + $confReason = $this->config->get( 'ReadOnly' ); + if ( $confReason !== null ) { + return $confReason; + } + if ( $this->fileReason === null ) { + // Cache for faster access next time + $readOnlyFile = $this->config->get( 'ReadOnlyFile' ); + if ( is_file( $readOnlyFile ) && filesize( $readOnlyFile ) > 0 ) { + $this->fileReason = file_get_contents( $readOnlyFile ); + } else { + $this->fileReason = false; + } + } + return $this->fileReason; + } + + /** + * Set the read-only mode, which will apply for the remainder of the + * request or until a service reset. + * + * @param string|null $msg + */ + public function setReason( $msg ) { + $this->overrideReason = $msg; + } + + /** + * Clear the cache of the read only file + */ + public function clearCache() { + $this->fileReason = null; + } +} diff --git a/includes/DefaultSettings.php b/includes/DefaultSettings.php index 8e38121b1c..cf3e569b2a 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; @@ -959,6 +961,23 @@ $wgTrustedMediaFormats = [ */ $wgMediaHandlers = []; +/** + * Media handler overrides for parser tests (they don't need to generate actual + * thumbnails, so a mock will do) + */ +$wgParserTestMediaHandlers = [ + 'image/jpeg' => 'MockBitmapHandler', + 'image/png' => 'MockBitmapHandler', + 'image/gif' => 'MockBitmapHandler', + 'image/tiff' => 'MockBitmapHandler', + 'image/webp' => 'MockBitmapHandler', + 'image/x-ms-bmp' => 'MockBitmapHandler', + 'image/x-bmp' => 'MockBitmapHandler', + 'image/x-xcf' => 'MockBitmapHandler', + 'image/svg+xml' => 'MockSvgHandler', + 'image/vnd.djvu' => 'MockDjVuHandler', +]; + /** * Plugins for page content model handling. * Each entry in the array maps a model id to a class name or callback @@ -2036,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 = []; @@ -3218,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 @@ -4133,6 +4144,7 @@ $wgContentNamespaces = [ NS_MAIN ]; * Optional array of namespaces which should be blacklisted from Special:ShortPages * Only pages inside $wgContentNamespaces but not $wgShortPagesNamespaceBlacklist will * be shown on that page. + * @since 1.30 */ $wgShortPagesNamespaceBlacklist = []; @@ -4883,7 +4895,7 @@ $wgDefaultUserOptions = [ 'date' => 'default', 'diffonly' => 0, 'disablemail' => 0, - 'editfont' => 'default', + 'editfont' => 'monospace', 'editondblclick' => 0, 'editsectiononrightclick' => 0, 'enotifminoredits' => 0, @@ -4932,6 +4944,7 @@ $wgDefaultUserOptions = [ 'watchlisthidepatrolled' => 0, 'watchlisthidecategorization' => 1, 'watchlistreloadautomatically' => 0, + 'watchlistunwatchlinks' => 0, 'watchmoves' => 0, 'watchrollback' => 0, 'wllimit' => 250, @@ -5796,7 +5809,7 @@ $wgPasswordAttemptThrottle = [ // Long term limit. We need to balance the risk // of somebody using this as a DoS attack to lock someone // out of their account, and someone doing a brute force attack. - [ 'count' => 150, 'seconds' => 60*60*48 ], + [ 'count' => 150, 'seconds' => 60 * 60 * 48 ], ]; /** @@ -6827,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 */ @@ -8255,6 +8273,7 @@ $wgShellLocale = 'C.UTF-8'; /** * Timeout for HTTP requests done internally, in seconds. + * @var int */ $wgHTTPTimeout = 25; @@ -8278,10 +8297,13 @@ $wgHTTPProxy = false; * Local virtual hosts. * * This lists domains that are configured as virtual hosts on the same machine. - * If a request is to be made to a domain listed here, or any subdomain thereof, - * then no proxy will be used. - * Command-line scripts are not affected by this setting and will always use - * proxy if it is configured. + * + * This affects the following: + * - MWHttpRequest: If a request is to be made to a domain listed here, or any + * 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. + * * @since 1.25 */ $wgLocalVirtualHosts = []; @@ -8741,6 +8763,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 9d83fbd91d..4451867ea5 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; } /** @@ -852,15 +846,12 @@ class EditPage { /** * This function collects the form data and uses it to populate various member variables. - * @param WebRequest $request + * @param WebRequest &$request * @throws ErrorPageError */ public function importFormData( &$request ) { global $wgContLang, $wgUser; - # Allow users to change the mode for testing - $this->oouiEnabled = $request->getFuzzyBool( 'ooui', $this->oouiEnabled ); - # Section edit can come from either the form or a link $this->section = $request->getVal( 'wpSection', $request->getVal( 'section' ) ); @@ -1080,7 +1071,7 @@ class EditPage { * this method should be overridden and return the page text that will be used * for saving, preview parsing and so on... * - * @param WebRequest $request + * @param WebRequest &$request * @return string|null */ protected function importContentFormData( &$request ) { @@ -1432,7 +1423,7 @@ class EditPage { /** * Make sure the form isn't faking a user's credentials. * - * @param WebRequest $request + * @param WebRequest &$request * @return bool * @private */ @@ -1475,7 +1466,7 @@ class EditPage { /** * Attempt submission - * @param array|bool $resultDetails See docs for $result in internalAttemptSave + * @param array|bool &$resultDetails See docs for $result in internalAttemptSave * @throws UserBlockedError|ReadOnlyError|ThrottledError|PermissionsError * @return Status The resulting status object. */ @@ -1721,12 +1712,12 @@ class EditPage { /** * Attempt submission (no UI) * - * @param array $result Array to add statuses to, currently with the + * @param array &$result Array to add statuses to, currently with the * possible keys: * - 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. @@ -2667,7 +2658,7 @@ class EditPage { $wgOut->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', @@ -2710,7 +2701,7 @@ class EditPage { 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? @@ -2767,13 +2758,7 @@ class EditPage { $wgOut->addHTML( Html::hidden( 'format', $this->contentFormat ) ); $wgOut->addHTML( Html::hidden( 'model', $this->contentModel ) ); - // Preserve &ooui=1 / &ooui=0 from URL parameters after submitting the page for preview - $wgOut->addHTML( Html::hidden( 'ooui', $this->oouiEnabled ? '1' : '0' ) ); - - // following functions will need OOUI, enable it only once; here. - if ( $this->oouiEnabled ) { - $wgOut->enableOOUI(); - } + $wgOut->enableOOUI(); if ( $this->section == 'new' ) { $this->showSummaryInput( true, $this->summary ); @@ -3080,47 +3065,6 @@ class EditPage { } /** - * Standard summary input and label (wgSummary), abstracted so EditPage - * subclasses may reorganize the form. - * Note that you do not need to worry about the label's for=, it will be - * inferred by the id given to the input. You can remove them both by - * passing [ 'id' => false ] to $userInputAttrs. - * - * @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 - ) { - $inputAttrs = $this->getSummaryInputAttributes( $inputAttrs ); - $inputAttrs += Linker::tooltipAndAccesskeyAttribs( 'summary' ); - - $spanLabelAttrs = ( is_array( $spanLabelAttrs ) ? $spanLabelAttrs : [] ) + [ - 'class' => $this->missingSummary ? 'mw-summarymissed' : 'mw-summary', - 'id' => "wpSummaryLabel" - ]; - - $label = null; - if ( $labelText ) { - $label = Xml::tags( - 'label', - $inputAttrs['id'] ? [ 'for' => $inputAttrs['id'] ] : null, - $labelText - ); - $label = Xml::tags( 'span', $spanLabelAttrs, $label ); - } - - $input = Html::input( 'wpSummary', $summary, 'text', $inputAttrs ); - - return [ $label, $input ]; - } - - /** - * Same as self::getSummaryInput, but uses OOUI, instead of plain HTML. * Builds a standard summary input with a label. * * @param string $summary The value of the summary input @@ -3178,20 +3122,11 @@ class EditPage { } $labelText = $this->context->msg( $isSubjectPreview ? 'subject' : 'summary' )->parse(); - if ( $this->oouiEnabled ) { - $wgOut->addHTML( $this->getSummaryInputOOUI( + $wgOut->addHTML( $this->getSummaryInputOOUI( $summary, $labelText, [ 'class' => $summaryClass ] ) ); - } else { - list( $label, $input ) = $this->getSummaryInput( - $summary, - $labelText, - [ 'class' => $summaryClass ] - ); - $wgOut->addHTML( "{$label} {$input}" ); - } } /** @@ -3225,16 +3160,13 @@ class EditPage { protected function showFormBeforeText() { global $wgOut; - $section = htmlspecialchars( $this->section ); - $wgOut->addHTML( << - - - - - -HTML - ); + + $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 ) ); + if ( !$this->checkUnicodeCompliantBrowser() ) { $wgOut->addHTML( Html::hidden( 'safemode', '1' ) ); } @@ -3498,8 +3430,8 @@ HTML } /** - * Inserts optional text shown below edit and upload forms. Can be used to offer special characters not present on - * most keyboards for copying/pasting. + * Inserts optional text shown below edit and upload forms. Can be used to offer special + * characters not present on most keyboards for copying/pasting. */ protected function showEditTools() { global $wgOut; @@ -3605,19 +3537,11 @@ HTML $wgOut->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->getCheckboxesOOUI( + $tabindex, + [ 'minor' => $this->minoredit, 'watch' => $this->watchthis ] + ); + $checkboxesHTML = new OOUI\HorizontalLayout( [ 'items' => $checkboxes ] ); $wgOut->addHTML( "
" . $checkboxesHTML . "
\n" ); @@ -3707,23 +3631,15 @@ HTML } 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', + ] ); } /** @@ -3771,8 +3687,9 @@ HTML */ 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', @@ -3780,11 +3697,10 @@ HTML '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', @@ -3792,7 +3708,10 @@ HTML '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 ) ) { @@ -3801,7 +3720,8 @@ HTML } 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; } } @@ -4166,7 +4086,7 @@ HTML * where bool indicates the checked status of the checkbox * @return array */ - protected function getCheckboxesDefinition( $checked ) { + public function getCheckboxesDefinition( $checked ) { global $wgUser; $checkboxes = []; @@ -4205,7 +4125,7 @@ HTML * Returns an array of html code of the following checkboxes old style: * minor and watch * - * @param int $tabindex Current tabindex + * @param int &$tabindex Current tabindex * @param array $checked See getCheckboxesDefinition() * @return array */ @@ -4263,7 +4183,7 @@ HTML * Returns an array of html code of the following checkboxes: * minor and watch * - * @param int $tabindex Current tabindex + * @param int &$tabindex Current tabindex * @param array $checked Array of checkbox => bool, where bool indicates the checked * status of the checkbox * @@ -4336,7 +4256,7 @@ HTML $newPage = !$this->mTitle->exists(); if ( $labelAsPublish ) { - $buttonLabelKey = $newPage ? 'publishpage' : 'publishchanges'; + $buttonLabelKey = $newPage ? 'publishpage' : 'publishchanges'; } else { $buttonLabelKey = $newPage ? 'savearticle' : 'savechanges'; } @@ -4348,7 +4268,7 @@ HTML * Returns an array of html code of the following buttons: * save, diff and preview * - * @param int $tabindex Current tabindex + * @param int &$tabindex Current tabindex * * @return array */ @@ -4361,74 +4281,56 @@ HTML '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; diff --git a/includes/FauxRequest.php b/includes/FauxRequest.php index 3b2283b77a..2f7f75b4d7 100644 --- a/includes/FauxRequest.php +++ b/includes/FauxRequest.php @@ -126,7 +126,7 @@ class FauxRequest extends WebRequest { /** * @since 1.26 - * @param string $name Unprefixed name of the cookie to set + * @param string $key Unprefixed name of the cookie to set * @param string|null $value Value of the cookie to set * @param string|null $prefix Cookie prefix. Defaults to $wgCookiePrefix */ @@ -152,6 +152,7 @@ class FauxRequest extends WebRequest { /** * @since 1.25 + * @param string $url */ public function setRequestURL( $url ) { $this->requestUrl = $url; @@ -160,6 +161,7 @@ class FauxRequest extends WebRequest { /** * @since 1.25 MWException( "getRequestURL not implemented" ) * no longer thrown. + * @return string */ public function getRequestURL() { if ( $this->requestUrl === null ) { 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/FileDeleteForm.php b/includes/FileDeleteForm.php index 8a1cd35297..8c843c4438 100644 --- a/includes/FileDeleteForm.php +++ b/includes/FileDeleteForm.php @@ -143,9 +143,9 @@ class FileDeleteForm { /** * Really delete the file * - * @param Title $title - * @param File $file - * @param string $oldimage Archive name + * @param Title &$title + * @param File &$file + * @param string &$oldimage Archive name * @param string $reason Reason of the deletion * @param bool $suppress Whether to mark all deleted versions as restricted * @param User $user User object performing the request @@ -398,8 +398,8 @@ class FileDeleteForm { * value was provided, does it correspond to an * existing, local, old version of this file? * - * @param File $file - * @param File $oldfile + * @param File &$file + * @param File &$oldfile * @param File $oldimage * @return bool */ diff --git a/includes/GlobalFunctions.php b/includes/GlobalFunctions.php index 70784ba5a7..49159ed3df 100644 --- a/includes/GlobalFunctions.php +++ b/includes/GlobalFunctions.php @@ -241,7 +241,7 @@ function wfArrayFilterByKey( array $arr, callable $callback ) { * @param string|int $key * @param mixed $value * @param mixed $default - * @param array $changed Array to alter + * @param array &$changed Array to alter * @throws MWException */ function wfAppendToArrayIfNotDefault( $key, $value, $default, &$changed ) { @@ -1750,7 +1750,7 @@ function wfEscapeWikiText( $text ) { * If source is NULL, it just returns the value, it doesn't set the variable * If force is true, it will set the value even if source is NULL * - * @param mixed $dest + * @param mixed &$dest * @param mixed $source * @param bool $force * @return mixed @@ -1766,7 +1766,7 @@ function wfSetVar( &$dest, $source, $force = false ) { /** * As for wfSetVar except setting a bit * - * @param int $dest + * @param int &$dest * @param int $bit * @param bool $state * @@ -2234,7 +2234,8 @@ function wfIniGetBool( $setting ) { * (https://bugs.php.net/bug.php?id=26285) and the locale problems on Linux in * PHP 5.2.6+ (bug backported to earlier distro releases of PHP). * - * @param string ... strings to escape and glue together, or a single array of strings parameter + * @param string $args,... strings to escape and glue together, + * or a single array of strings parameter * @return string */ function wfEscapeShellArg( /*...*/ ) { @@ -2618,7 +2619,7 @@ function wfShellWikiCmd( $script, array $parameters = [], array $options = [] ) * @param string $old * @param string $mine * @param string $yours - * @param string $result + * @param string &$result * @return bool */ function wfMerge( $old, $mine, $yours, &$result ) { diff --git a/includes/Licenses.php b/includes/Licenses.php index da1a8da6b0..6467777bff 100644 --- a/includes/Licenses.php +++ b/includes/Licenses.php @@ -92,7 +92,7 @@ class Licenses extends HTMLFormField { } /** - * @param array $list + * @param array &$list * @param array $path * @param mixed $item */ diff --git a/includes/Linker.php b/includes/Linker.php index 33e30c9b24..aedb704a8f 100644 --- a/includes/Linker.php +++ b/includes/Linker.php @@ -154,6 +154,11 @@ class Linker { * @since 1.16.3 * @deprecated since 1.28, use MediaWiki\Linker\LinkRenderer instead * @see Linker::link + * @param Title $target + * @param string $html + * @param array $customAttribs + * @param array $query + * @param string|array $options * @return string */ public static function linkKnown( @@ -1350,7 +1355,7 @@ class Linker { /** * @param Title $contextTitle * @param string $target - * @param string $text + * @param string &$text * @return string */ public static function normalizeSubpageLink( $contextTitle, $target, &$text ) { diff --git a/includes/MagicWord.php b/includes/MagicWord.php index 1703179c9e..6e7799a308 100644 --- a/includes/MagicWord.php +++ b/includes/MagicWord.php @@ -518,7 +518,7 @@ class MagicWord { * Returns true if the text matches the word, and alters the * input string, removing all instances of the word * - * @param string $text + * @param string &$text * * @return bool */ @@ -534,7 +534,7 @@ class MagicWord { } /** - * @param string $text + * @param string &$text * @return bool */ public function matchStartAndRemove( &$text ) { @@ -646,38 +646,11 @@ class MagicWord { return $this->mModified; } - /** - * $magicarr is an associative array of (magic word ID => replacement) - * This method uses the php feature to do several replacements at the same time, - * thereby gaining some efficiency. The result is placed in the out variable - * $result. The return value is true if something was replaced. - * @deprecated since 1.25, unused - * - * @param array $magicarr - * @param string $subject - * @param string $result - * - * @return bool - */ - public function replaceMultiple( $magicarr, $subject, &$result ) { - wfDeprecated( __METHOD__, '1.25' ); - $search = []; - $replace = []; - foreach ( $magicarr as $id => $replacement ) { - $mw = self::get( $id ); - $search[] = $mw->getRegex(); - $replace[] = $replacement; - } - - $result = preg_replace( $search, $replace, $subject ); - return $result !== $subject; - } - /** * Adds all the synonyms of this MagicWord to an array, to allow quick * lookup in a list of magic words * - * @param array $array + * @param array &$array * @param string $value */ public function addToArray( &$array, $value ) { diff --git a/includes/MagicWordArray.php b/includes/MagicWordArray.php index 6a9ead5f1e..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 { @@ -260,7 +269,7 @@ class MagicWordArray { * Returns an associative array, ID => param value, for all items that match * Removes the matched items from the input string (passed by reference) * - * @param string $text + * @param string &$text * * @return array */ @@ -304,7 +313,7 @@ class MagicWordArray { * Return false if no match found and $text is not modified. * Does not match parameters. * - * @param string $text + * @param string &$text * * @return int|bool False on failure */ 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/Message.php b/includes/Message.php index be6b0aff0f..0240fa7477 100644 --- a/includes/Message.php +++ b/includes/Message.php @@ -488,7 +488,7 @@ class Message implements MessageSpecifier, Serializable { * * @since 1.17 * - * @param mixed ... Parameters as strings or arrays from + * @param mixed $args,... Parameters as strings or arrays from * Message::numParam() and the like, or a single array of parameters. * * @return Message $this @@ -1344,56 +1344,3 @@ class Message implements MessageSpecifier, Serializable { return $this->extractParam( new RawMessage( $vars, $params ), $format ); } } - -/** - * Variant of the Message class. - * - * Rather than treating the message key as a lookup - * value (which is passed to the MessageCache and - * translated as necessary), a RawMessage key is - * treated as the actual message. - * - * All other functionality (parsing, escaping, etc.) - * is preserved. - * - * @since 1.21 - */ -class RawMessage extends Message { - - /** - * Call the parent constructor, then store the key as - * the message. - * - * @see Message::__construct - * - * @param string $text Message to use. - * @param array $params Parameters for the message. - * - * @throws InvalidArgumentException - */ - public function __construct( $text, $params = [] ) { - if ( !is_string( $text ) ) { - throw new InvalidArgumentException( '$text must be a string' ); - } - - parent::__construct( $text, $params ); - - // The key is the message. - $this->message = $text; - } - - /** - * Fetch the message (in this case, the key). - * - * @return string - */ - public function fetchMessage() { - // Just in case the message is unset somewhere. - if ( $this->message === null ) { - $this->message = $this->key; - } - - return $this->message; - } - -} diff --git a/includes/MovePage.php b/includes/MovePage.php index 8d0c33dcc2..39dc6424db 100644 --- a/includes/MovePage.php +++ b/includes/MovePage.php @@ -511,7 +511,7 @@ class MovePage { $logEntry->setComment( $reason ); $logEntry->setParameters( [ '4::target' => $nt->getPrefixedText(), - '5::noredir' => $redirectContent ? '0': '1', + '5::noredir' => $redirectContent ? '0' : '1', ] ); $formatter = LogFormatter::newFromEntry( $logEntry ); diff --git a/includes/OutputPage.php b/includes/OutputPage.php index 969171d654..dd21194bdb 100644 --- a/includes/OutputPage.php +++ b/includes/OutputPage.php @@ -571,6 +571,7 @@ class OutputPage extends ContextSource { * @param bool $filter Whether to filter out insufficiently trustworthy modules * @param string|null $position If not null, only return modules with this position * @param string $param + * @param string $type * @return array Array of module names */ public function getModules( $filter = false, $position = null, $param = 'mModules', @@ -688,7 +689,7 @@ class OutputPage extends ContextSource { * Add one or more head items to the output * * @since 1.28 - * @param string|string[] $value Raw HTML + * @param string|string[] $values Raw HTML */ public function addHeadItems( $values ) { $this->mHeadItems = array_merge( $this->mHeadItems, (array)$values ); @@ -1715,7 +1716,7 @@ class OutputPage extends ContextSource { * Add wikitext with a custom Title object * * @param string $text Wikitext - * @param Title $title + * @param Title &$title * @param bool $linestart Is this the start of a line? */ public function addWikiTextWithTitle( $text, &$title, $linestart = true ) { @@ -1726,7 +1727,7 @@ class OutputPage extends ContextSource { * Add wikitext with a custom Title object and tidy enabled. * * @param string $text Wikitext - * @param Title $title + * @param Title &$title * @param bool $linestart Is this the start of a line? */ function addWikiTextTitleTidy( $text, &$title, $linestart = true ) { @@ -1899,7 +1900,7 @@ class OutputPage extends ContextSource { /** * Add the output of a QuickTemplate to the output buffer * - * @param QuickTemplate $template + * @param QuickTemplate &$template */ public function addTemplate( &$template ) { $this->addHTML( $template->getHTML() ); @@ -1963,7 +1964,7 @@ class OutputPage extends ContextSource { } /** - * @param $maxage + * @param int $maxage * @deprecated since 1.27 Use setCdnMaxage() instead */ public function setSquidMaxage( $maxage ) { @@ -1997,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 ) { @@ -2908,6 +2909,18 @@ class OutputPage extends ContextSource { $pieces[] = $this->buildExemptModules(); $pieces = array_merge( $pieces, array_values( $this->getHeadLinksArray() ) ); $pieces = array_merge( $pieces, array_values( $this->mHeadItems ) ); + + $min = ResourceLoader::inDebugMode() ? '' : '.min'; + // Use an IE conditional comment to serve the script only to old IE + $pieces[] = ''; + $pieces[] = Html::closeElement( 'head' ); $bodyClasses = []; @@ -3785,7 +3798,7 @@ class OutputPage extends ContextSource { * Caller is responsible for ensuring the file exists. Emits a PHP warning otherwise. * * @since 1.27 - * @param string $remotePath URL path prefix that points to $localPath + * @param string $remotePathPrefix URL path prefix that points to $localPath * @param string $localPath File directory exposed at $remotePath * @param string $file Path to target file relative to $localPath * @return string URL diff --git a/includes/PHPVersionCheck.php b/includes/PHPVersionCheck.php index 5a440c4e2c..e9e271ce49 100644 --- a/includes/PHPVersionCheck.php +++ b/includes/PHPVersionCheck.php @@ -36,6 +36,7 @@ class PHPVersionCheck { 'ctype_digit' => 'ctype', 'json_decode' => 'json', 'iconv' => 'iconv', + 'mime_content_type' => 'fileinfo', ); /** @@ -97,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', ); } @@ -230,9 +231,9 @@ HTML; /** * Returns an error page, which is suitable for output to the end user via a web browser. * - * @param $title - * @param $longHtml - * @param $shortText + * @param string $title + * @param string $longHtml + * @param string $shortText * @return string */ function getIndexErrorOutput( $title, $longHtml, $shortText ) { 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', ] ]; } @@ -884,7 +884,7 @@ class Preferences { /** * @param User $user * @param IContextSource $context - * @param array $defaultPreferences + * @param array &$defaultPreferences */ static function rcPreferences( $user, IContextSource $context, &$defaultPreferences ) { $config = $context->getConfig(); @@ -901,6 +901,8 @@ class Preferences { ]; $defaultPreferences['rclimit'] = [ 'type' => 'int', + 'min' => 0, + 'max' => 1000, 'label-message' => 'recentchangescount', 'help-message' => 'prefs-help-recentchangescount', 'section' => 'rc/displayrc', @@ -918,6 +920,9 @@ class Preferences { $defaultPreferences['rcfilters-saved-queries'] = [ 'type' => 'api', ]; + $defaultPreferences['rcfilters-wl-saved-queries'] = [ + 'type' => 'api', + ]; $defaultPreferences['rcfilters-rclimit'] = [ 'type' => 'api', ]; @@ -958,7 +963,7 @@ class Preferences { /** * @param User $user * @param IContextSource $context - * @param array $defaultPreferences + * @param array &$defaultPreferences */ static function watchlistPreferences( $user, IContextSource $context, &$defaultPreferences ) { $config = $context->getConfig(); @@ -1042,6 +1047,11 @@ class Preferences { 'section' => 'watchlist/advancedwatchlist', 'label-message' => 'tog-watchlistreloadautomatically', ]; + $defaultPreferences['watchlistunwatchlinks'] = [ + 'type' => 'toggle', + 'section' => 'watchlist/advancedwatchlist', + 'label-message' => 'tog-watchlistunwatchlinks', + ]; if ( $config->get( 'RCWatchCategoryMembership' ) ) { $defaultPreferences['watchlisthidecategorization'] = [ @@ -1108,7 +1118,7 @@ class Preferences { /** * @param User $user * @param IContextSource $context - * @param array $defaultPreferences + * @param array &$defaultPreferences */ static function searchPreferences( $user, IContextSource $context, &$defaultPreferences ) { foreach ( MWNamespace::getValidNamespaces() as $n ) { @@ -1120,6 +1130,9 @@ class Preferences { /** * Dummy, kept for backwards-compatibility. + * @param User $user + * @param IContextSource $context + * @param array &$defaultPreferences */ static function miscPreferences( $user, IContextSource $context, &$defaultPreferences ) { } @@ -1672,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/ProtectionForm.php b/includes/ProtectionForm.php index a68c36fb6b..53608e849a 100644 --- a/includes/ProtectionForm.php +++ b/includes/ProtectionForm.php @@ -616,7 +616,7 @@ class ProtectionForm { /** * Show protection long extracts for this page * - * @param OutputPage $out + * @param OutputPage &$out * @access private */ function showLogExtract( &$out ) { diff --git a/includes/RawMessage.php b/includes/RawMessage.php new file mode 100644 index 0000000000..9a0d947dfd --- /dev/null +++ b/includes/RawMessage.php @@ -0,0 +1,72 @@ +message = $text; + } + + /** + * Fetch the message (in this case, the key). + * + * @return string + */ + public function fetchMessage() { + // Just in case the message is unset somewhere. + if ( $this->message === null ) { + $this->message = $this->key; + } + + return $this->message; + } + +} diff --git a/includes/ReadOnlyMode.php b/includes/ReadOnlyMode.php index 592d495868..547c2d5efe 100644 --- a/includes/ReadOnlyMode.php +++ b/includes/ReadOnlyMode.php @@ -66,75 +66,3 @@ class ReadOnlyMode { $this->configuredReadOnly->clearCache(); } } - -/** - * A read-only mode service which does not depend on LoadBalancer. - * To obtain an instance, use MediaWikiServices::getConfiguredReadOnlyMode(). - * - * @since 1.29 - */ -class ConfiguredReadOnlyMode { - /** @var Config */ - private $config; - - /** @var string|bool|null */ - private $fileReason; - - /** @var string|null */ - private $overrideReason; - - public function __construct( Config $config ) { - $this->config = $config; - } - - /** - * Check whether the wiki is in read-only mode. - * - * @return bool - */ - public function isReadOnly() { - return $this->getReason() !== false; - } - - /** - * Get the value of $wgReadOnly or the contents of $wgReadOnlyFile. - * - * @return string|bool String when in read-only mode; false otherwise - */ - public function getReason() { - if ( $this->overrideReason !== null ) { - return $this->overrideReason; - } - $confReason = $this->config->get( 'ReadOnly' ); - if ( $confReason !== null ) { - return $confReason; - } - if ( $this->fileReason === null ) { - // Cache for faster access next time - $readOnlyFile = $this->config->get( 'ReadOnlyFile' ); - if ( is_file( $readOnlyFile ) && filesize( $readOnlyFile ) > 0 ) { - $this->fileReason = file_get_contents( $readOnlyFile ); - } else { - $this->fileReason = false; - } - } - return $this->fileReason; - } - - /** - * Set the read-only mode, which will apply for the remainder of the - * request or until a service reset. - * - * @param string|null $msg - */ - public function setReason( $msg ) { - $this->overrideReason = $msg; - } - - /** - * Clear the cache of the read only file - */ - public function clearCache() { - $this->fileReason = null; - } -} diff --git a/includes/Revision.php b/includes/Revision.php index 537b7c11a6..ff4a284386 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 ) { @@ -860,7 +870,7 @@ class Revision implements IDBAccessObject { * Revision::FOR_PUBLIC to be displayed to all users * Revision::FOR_THIS_USER to be displayed to the given user * Revision::RAW get the ID regardless of permissions - * @param User $user User object to check for, only if FOR_THIS_USER is passed + * @param User|null $user User object to check for, only if FOR_THIS_USER is passed * to the $audience parameter * @return int */ @@ -894,7 +904,7 @@ class Revision implements IDBAccessObject { * Revision::FOR_PUBLIC to be displayed to all users * Revision::FOR_THIS_USER to be displayed to the given user * Revision::RAW get the text regardless of permissions - * @param User $user User object to check for, only if FOR_THIS_USER is passed + * @param User|null $user User object to check for, only if FOR_THIS_USER is passed * to the $audience parameter * @return string */ @@ -938,7 +948,7 @@ class Revision implements IDBAccessObject { * Revision::FOR_PUBLIC to be displayed to all users * Revision::FOR_THIS_USER to be displayed to the given user * Revision::RAW get the text regardless of permissions - * @param User $user User object to check for, only if FOR_THIS_USER is passed + * @param User|null $user User object to check for, only if FOR_THIS_USER is passed * to the $audience parameter * @return string */ @@ -1307,7 +1317,7 @@ class Revision implements IDBAccessObject { * data is compressed, and 'utf-8' if we're saving in UTF-8 * mode. * - * @param mixed $text Reference to a text + * @param mixed &$text Reference to a text * @return string */ public static function compressRevisionText( &$text ) { @@ -1455,7 +1465,6 @@ class Revision implements IDBAccessObject { '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, @@ -1470,6 +1479,10 @@ class Revision implements IDBAccessObject { : $this->mSha1, ]; + 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. // XXX: Makes the DB sensitive to changed defaults. @@ -1498,6 +1511,7 @@ class Revision implements IDBAccessObject { // Only if nextSequenceValue() was called $this->mId = $dbw->insertId(); } + $commentCallback( $this->mId ); // Assertion to try to catch T92046 if ( (int)$this->mId === 0 ) { @@ -1584,7 +1598,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; diff --git a/includes/RevisionList.php b/includes/RevisionList.php index ccdedb8e61..b0bc60a188 100644 --- a/includes/RevisionList.php +++ b/includes/RevisionList.php @@ -116,7 +116,7 @@ abstract class RevisionListBase extends ContextSource implements Iterator { } public function key() { - return $this->res ? $this->res->key(): 0; + return $this->res ? $this->res->key() : 0; } public function valid() { diff --git a/includes/Sanitizer.php b/includes/Sanitizer.php index 907da16054..ed09701d4b 100644 --- a/includes/Sanitizer.php +++ b/includes/Sanitizer.php @@ -815,7 +815,7 @@ class Sanitizer { # Escape HTML id attributes if ( $attribute === 'id' ) { - $value = self::escapeIdForAttribute( $value, Sanitizer::ID_PRIMARY ); + $value = self::escapeIdForAttribute( $value, self::ID_PRIMARY ); } # Escape HTML id reference lists @@ -1331,7 +1331,7 @@ class Sanitizer { * @return string */ private static function escapeIdInternal( $id, $mode ) { - $id = Sanitizer::decodeCharReferences( $id ); + $id = self::decodeCharReferences( $id ); switch ( $mode ) { case 'html5': @@ -1677,7 +1677,10 @@ class Sanitizer { $text = preg_replace_callback( self::CHAR_REFS_REGEX, [ 'Sanitizer', 'decodeCharReferencesCallback' ], - $text, /* limit */ -1, $count ); + $text, + -1, //limit + $count + ); if ( $count ) { return $wgContLang->normalize( $text ); @@ -1914,7 +1917,7 @@ class Sanitizer { # Not usually allowed, but may be used for extension-style hooks # such as when it is rasterized, or if $wgAllowImageTag is # true - 'img' => array_merge( $common, [ 'alt', 'src', 'width', 'height' ] ), + 'img' => array_merge( $common, [ 'alt', 'src', 'width', 'height', 'srcset' ] ), 'video' => array_merge( $common, [ 'poster', 'controls', 'preload', 'width', 'height' ] ), 'source' => array_merge( $common, [ 'type', 'src' ] ), @@ -1951,6 +1954,10 @@ class Sanitizer { # https://www.w3.org/TR/REC-MathML/ 'math' => [ 'class', 'style', 'id', 'title' ], + // HTML 5 section 4.5 + 'figure' => $common, + 'figcaption' => $common, + # HTML 5 section 4.6 'bdi' => $common, @@ -1966,7 +1973,7 @@ class Sanitizer { // (ie: validateTag rejects tags missing the attributes needed for Microdata) // So we don't bother including $common attributes that have no purpose. 'meta' => [ 'itemprop', 'content' ], - 'link' => [ 'itemprop', 'href' ], + 'link' => [ 'itemprop', 'href', 'title' ], ]; return $whitelist; diff --git a/includes/SiteConfiguration.php b/includes/SiteConfiguration.php index 8d9256b811..7a01a6575b 100644 --- a/includes/SiteConfiguration.php +++ b/includes/SiteConfiguration.php @@ -345,7 +345,7 @@ class SiteConfiguration { * @param string $setting ID of the setting name to retrieve * @param string $wiki Wiki ID of the wiki in question. * @param string $suffix The suffix of the wiki in question. - * @param array $var Reference The variable to insert the value into. + * @param array &$var Reference The variable to insert the value into. * @param array $params List of parameters. $.'key' is replaced by $value in all returned data. * @param array $wikiTags The tags assigned to the wiki. */ 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/StubObject.php b/includes/StubObject.php index 5208b8f1fa..baf5109952 100644 --- a/includes/StubObject.php +++ b/includes/StubObject.php @@ -86,7 +86,7 @@ class StubObject { * infinite loop when unstubbing an object or to avoid reference parameter * breakage. * - * @param object $obj Object to check. + * @param object &$obj Object to check. * @return void */ public static function unstub( &$obj ) { diff --git a/includes/Title.php b/includes/Title.php index 7b3e3a5b68..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. */ @@ -1322,7 +1323,9 @@ class Title implements LinkTarget { * Get a Title object associated with the talk page of this article, * if such a talk page can exist. * - * @return Title The object for the talk page, + * @since 1.30 + * + * @return Title|null The object for the talk page, * or null if no associated talk page can exist, according to canHaveTalkPage(). */ public function getTalkPageIfDefined() { @@ -1894,6 +1897,8 @@ class Title implements LinkTarget { * protocol-relative, the URL will be expanded to http:// * * @see self::getLocalURL for the arguments. + * @param string $query + * @param string|bool $query2 * @return string The URL */ public function getInternalURL( $query = '', $query2 = false ) { @@ -2665,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; } @@ -3691,7 +3705,7 @@ class Title implements LinkTarget { * Returns true if ok, or a getUserPermissionsErrors()-like array otherwise * * @deprecated since 1.25, use MovePage's methods instead - * @param Title $nt The new title + * @param Title &$nt The new title * @param bool $auth Whether to check user permissions (uses $wgUser) * @param string $reason Is the log summary of the move, used for spam checking * @return array|bool True on success, getUserPermissionsErrors()-like array on failure @@ -3743,7 +3757,7 @@ class Title implements LinkTarget { * Move a title to a new location * * @deprecated since 1.25, use the MovePage class instead - * @param Title $nt The new title + * @param Title &$nt The new title * @param bool $auth Indicates whether $wgUser's permissions * should be checked * @param string $reason The reason for the move diff --git a/includes/TrackingCategories.php b/includes/TrackingCategories.php index a9ebd762db..b3a49c71dd 100644 --- a/includes/TrackingCategories.php +++ b/includes/TrackingCategories.php @@ -22,6 +22,7 @@ /** * This class performs some operations related to tracking categories, such as creating * a list of all such categories. + * @since 1.29 */ class TrackingCategories { /** @var Config */ 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/api/ApiAuthManagerHelper.php b/includes/api/ApiAuthManagerHelper.php index 3a9fb738b0..d6b9f7612f 100644 --- a/includes/api/ApiAuthManagerHelper.php +++ b/includes/api/ApiAuthManagerHelper.php @@ -229,8 +229,8 @@ class ApiAuthManagerHelper { /** * Logs successful or failed authentication. - * @param string|AuthenticationResponse $result Response or error message * @param string $event Event type (e.g. 'accountcreation') + * @param string|AuthenticationResponse $result Response or error message */ public function logAuthenticationResult( $event, $result ) { if ( is_string( $result ) ) { @@ -345,7 +345,7 @@ class ApiAuthManagerHelper { /** * Fetch the standard parameters this helper recognizes * @param string $action AuthManager action - * @param string $param... Parameters to use + * @param string $param,... Parameters to use * @return array */ public static function getStandardParams( $action, $param /* ... */ ) { diff --git a/includes/api/ApiBase.php b/includes/api/ApiBase.php index 034d24360f..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 = '*'; @@ -668,7 +681,7 @@ abstract class ApiBase extends ContextSource { /** * Set the continuation manager - * @param ApiContinuationManager|null + * @param ApiContinuationManager|null $manager */ public function setContinuationManager( $manager ) { // Main module has setContinuationManager() method overridden @@ -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 @@ -1432,7 +1457,7 @@ abstract class ApiBase extends ContextSource { * Validate the value against the minimum and user/bot maximum limits. * Prints usage info on failure. * @param string $paramName Parameter name - * @param int $value Parameter value + * @param int &$value Parameter value * @param int|null $min Minimum value * @param int|null $max Maximum value for users * @param int $botMax Maximum value for sysops/bots @@ -1599,7 +1624,7 @@ abstract class ApiBase extends ContextSource { /** * Truncate an array to a certain length. - * @param array $arr Array to truncate + * @param array &$arr Array to truncate * @param int $limit Maximum length * @return bool True if the array was truncated, false otherwise */ @@ -2860,7 +2885,7 @@ abstract class ApiBase extends ContextSource { * Return the error message related to a certain array * @deprecated since 1.29 * @param array|string|MessageSpecifier $error Element of a getUserPermissionsErrors()-style array - * @return [ 'code' => code, 'info' => info ] + * @return array [ 'code' => code, 'info' => info ] */ public function parseMsg( $error ) { wfDeprecated( __METHOD__, '1.29' ); diff --git a/includes/api/ApiCSPReport.php b/includes/api/ApiCSPReport.php index 3a78c1350c..a4631d6f34 100644 --- a/includes/api/ApiCSPReport.php +++ b/includes/api/ApiCSPReport.php @@ -63,9 +63,9 @@ class ApiCSPReport extends ApiBase { /** * Log CSP report, with a different severity depending on $flags - * @param $flags Array Flags for this report - * @param $logLine String text of log entry - * @param $context Array logging context + * @param array $flags Flags for this report + * @param string $logLine text of log entry + * @param array $context logging context */ private function logReport( $flags, $logLine, $context ) { if ( in_array( 'false-positive', $flags ) ) { @@ -80,8 +80,8 @@ class ApiCSPReport extends ApiBase { /** * Get extra notes about the report. * - * @param $report Array The CSP report - * @return Array + * @param array $report The CSP report + * @return array */ private function getFlags( $report ) { $reportOnly = $this->getParameter( 'reportonly' ); @@ -115,7 +115,7 @@ class ApiCSPReport extends ApiBase { $req = $this->getRequest(); $contentType = $req->getHeader( 'content-type' ); if ( $contentType !== 'application/json' - && $contentType !=='application/csp-report' + && $contentType !== 'application/csp-report' ) { $this->error( 'wrongformat', __METHOD__ ); } @@ -155,9 +155,9 @@ class ApiCSPReport extends ApiBase { /** * Get text of log line. * - * @param $flags Array of additional markers for this report - * @param $report Array the csp report - * @return String Text to put in log + * @param array $flags of additional markers for this report + * @param array $report the csp report + * @return string Text to put in log */ private function generateLogLine( $flags, $report ) { $flagText = ''; @@ -177,8 +177,8 @@ class ApiCSPReport extends ApiBase { /** * Stop processing the request, and output/log an error * - * @param $code String error code - * @param $method String method that made error + * @param string $code error code + * @param string $method method that made error * @throws ApiUsageException Always */ private function error( $code, $method ) { diff --git a/includes/api/ApiDelete.php b/includes/api/ApiDelete.php index 72bbe00482..7766acd363 100644 --- a/includes/api/ApiDelete.php +++ b/includes/api/ApiDelete.php @@ -106,7 +106,7 @@ class ApiDelete extends ApiBase { * * @param Page|WikiPage $page Page or WikiPage object to work on * @param User $user User doing the action - * @param string|null $reason Reason for the deletion. Autogenerated if null + * @param string|null &$reason Reason for the deletion. Autogenerated if null * @param array $tags Tags to tag the deletion with * @return Status */ @@ -142,7 +142,7 @@ class ApiDelete extends ApiBase { * @param Page $page Object to work on * @param User $user User doing the action * @param string $oldimage Archive name - * @param string $reason Reason for the deletion. Autogenerated if null. + * @param string &$reason Reason for the deletion. Autogenerated if null. * @param bool $suppress Whether to mark all deleted versions as restricted * @param array $tags Tags to tag the deletion with * @return Status 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/ApiMain.php b/includes/api/ApiMain.php index 646823573d..e69300bb3b 100644 --- a/includes/api/ApiMain.php +++ b/includes/api/ApiMain.php @@ -370,7 +370,7 @@ class ApiMain extends ApiBase { /** * Set the continuation manager - * @param ApiContinuationManager|null + * @param ApiContinuationManager|null $manager */ public function setContinuationManager( $manager ) { if ( $manager !== null ) { @@ -1933,14 +1933,18 @@ class ApiMain extends ApiBase { $id = Sanitizer::escapeIdForAttribute( 'main/datatypes', Sanitizer::ID_PRIMARY ); $idFallback = Sanitizer::escapeIdForAttribute( 'main/datatypes', Sanitizer::ID_FALLBACK ); - - $help['datatypes'] .= Linker::makeHeadline( min( 6, $level ), + $headline = Linker::makeHeadline( min( 6, $level ), ' class="apihelp-header"', $id, $header, '', $idFallback ); + // Ensure we have a sane anchor + if ( $id !== 'main/datatypes' && $idFallback !== 'main/datatypes' ) { + $headline = '
' . $headline; + } + $help['datatypes'] .= $headline; $help['datatypes'] .= $this->msg( 'api-help-datatypes' )->parseAsBlock(); if ( !isset( $tocData['main/datatypes'] ) ) { $tocnumber[$level]++; @@ -1957,13 +1961,18 @@ class ApiMain extends ApiBase { $header = $this->msg( 'api-credits-header' )->parse(); $id = Sanitizer::escapeIdForAttribute( 'main/credits', Sanitizer::ID_PRIMARY ); $idFallback = Sanitizer::escapeIdForAttribute( 'main/credits', Sanitizer::ID_FALLBACK ); - $help['credits'] .= Linker::makeHeadline( min( 6, $level ), + $headline = Linker::makeHeadline( min( 6, $level ), ' class="apihelp-header"', $id, $header, '', $idFallback ); + // Ensure we have a sane anchor + if ( $id !== 'main/credits' && $idFallback !== 'main/credits' ) { + $headline = '
' . $headline; + } + $help['credits'] .= $headline; $help['credits'] .= $this->msg( 'api-credits' )->useDatabase( false )->parseAsBlock(); if ( !isset( $tocData['main/credits'] ) ) { $tocnumber[$level]++; 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 4ce0e9f108..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 ) { @@ -184,7 +184,7 @@ class ApiParamInfo extends ApiBase { } /** - * @param array $res Result array + * @param array &$res Result array * @param string $key Result key * @param Message[] $msgs * @param bool $joinLists @@ -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/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/ApiQueryBase.php b/includes/api/ApiQueryBase.php index f8eaa84074..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 @@ -478,7 +481,7 @@ abstract class ApiQueryBase extends ApiBase { /** * Add information (title and namespace) about a Title object to a * result array - * @param array $arr Result array à la ApiResult + * @param array &$arr Result array à la ApiResult * @param Title $title * @param string $prefix Module prefix */ 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/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/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 bfd5b17b7d..7b0080eb23 100644 --- a/includes/api/ApiQueryImageInfo.php +++ b/includes/api/ApiQueryImageInfo.php @@ -767,30 +767,30 @@ class ApiQueryImageInfo extends ApiQueryBase { */ private static function getProperties( $modulePrefix = '' ) { return [ - 'timestamp' => ' timestamp - Adds timestamp for the uploaded version', - 'user' => ' user - Adds the user who uploaded the image version', - 'userid' => ' userid - Add the user ID that uploaded the image version', - 'comment' => ' comment - Comment on the version', - 'parsedcomment' => ' parsedcomment - Parse the comment on the version', + 'timestamp' => ' timestamp - Adds timestamp for the uploaded version', + 'user' => ' user - Adds the user who uploaded the image version', + 'userid' => ' userid - Add the user ID that uploaded the image version', + 'comment' => ' comment - Comment on the version', + 'parsedcomment' => ' parsedcomment - Parse the comment on the version', 'canonicaltitle' => ' canonicaltitle - Adds the canonical title of the image file', - 'url' => ' url - Gives URL to the image and the description page', - 'size' => ' size - Adds the size of the image in bytes, ' . + 'url' => ' url - Gives URL to the image and the description page', + 'size' => ' size - Adds the size of the image in bytes, ' . 'its height and its width. Page count and duration are added if applicable', - 'dimensions' => ' dimensions - Alias for size', // B/C with Allimages - 'sha1' => ' sha1 - Adds SHA-1 hash for the image', - 'mime' => ' mime - Adds MIME type of the image', - 'thumbmime' => ' thumbmime - Adds MIME type of the image thumbnail' . + 'dimensions' => ' dimensions - Alias for size', // B/C with Allimages + 'sha1' => ' sha1 - Adds SHA-1 hash for the image', + 'mime' => ' mime - Adds MIME type of the image', + 'thumbmime' => ' thumbmime - Adds MIME type of the image thumbnail' . ' (requires url and param ' . $modulePrefix . 'urlwidth)', - 'mediatype' => ' mediatype - Adds the media type of the image', - 'metadata' => ' metadata - Lists Exif metadata for the version of the image', + 'mediatype' => ' mediatype - Adds the media type of the image', + 'metadata' => ' metadata - Lists Exif metadata for the version of the image', 'commonmetadata' => ' commonmetadata - Lists file format generic metadata ' . 'for the version of the image', - 'extmetadata' => ' extmetadata - Lists formatted metadata combined ' . + 'extmetadata' => ' extmetadata - Lists formatted metadata combined ' . 'from multiple sources. Results are HTML formatted.', - 'archivename' => ' archivename - Adds the file name of the archive ' . + 'archivename' => ' archivename - Adds the file name of the archive ' . 'version for non-latest versions', - 'bitdepth' => ' bitdepth - Adds the bit depth of the version', - 'uploadwarning' => ' uploadwarning - Used by the Special:Upload page to ' . + 'bitdepth' => ' bitdepth - Adds the bit depth of the version', + 'uploadwarning' => ' uploadwarning - Used by the Special:Upload page to ' . 'get information about an existing file. Not intended for use outside MediaWiki core', ]; } diff --git a/includes/api/ApiQueryLinks.php b/includes/api/ApiQueryLinks.php index 29c0b74c37..d29a763fe8 100644 --- a/includes/api/ApiQueryLinks.php +++ b/includes/api/ApiQueryLinks.php @@ -34,7 +34,7 @@ class ApiQueryLinks extends ApiQueryGeneratorBase { const LINKS = 'links'; const TEMPLATES = 'templates'; - private $table, $prefix, $helpUrl; + private $table, $prefix, $titlesParam, $helpUrl; public function __construct( ApiQuery $query, $moduleName ) { switch ( $moduleName ) { @@ -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 df8a11ee8b..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' ] ] ); @@ -242,7 +251,7 @@ class ApiQueryLogEvents extends ApiQueryBase { /** * @deprecated since 1.25 Use LogFormatter::formatParametersForApi instead * @param ApiResult $result - * @param array $vals + * @param array &$vals * @param string $params * @param string $type * @param string $action @@ -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/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/ApiQuerySearch.php b/includes/api/ApiQuerySearch.php index 0dd8922859..f0c4180069 100644 --- a/includes/api/ApiQuerySearch.php +++ b/includes/api/ApiQuerySearch.php @@ -233,6 +233,7 @@ class ApiQuerySearch extends ApiQueryGeneratorBase { $title = $result->getTitle(); ApiQueryBase::addTitleInfo( $vals, $title ); + $vals['pageid'] = $title->getArticleID(); if ( isset( $prop['size'] ) ) { $vals['size'] = $result->getByteSize(); 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 f8f6e7d8a1..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 = [ @@ -179,7 +185,7 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase { $watchedItemQuery = MediaWikiServices::getInstance()->getWatchedItemQueryService(); $items = $watchedItemQuery->getWatchedItemsWithRecentChangeInfo( $wlowner, $options, $startFrom ); - foreach ( $items as list ( $watchedItem, $recentChangeInfo ) ) { + foreach ( $items as list( $watchedItem, $recentChangeInfo ) ) { /** @var WatchedItem $watchedItem */ if ( is_null( $resultPageSet ) ) { $vals = $this->extractOutputData( $watchedItem, $recentChangeInfo ); @@ -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/ApiUsageException.php b/includes/api/ApiUsageException.php index fb49e2dbe2..17655ec1c3 100644 --- a/includes/api/ApiUsageException.php +++ b/includes/api/ApiUsageException.php @@ -186,7 +186,7 @@ class ApiUsageException extends UsageException implements ILocalizedException { /** * @deprecated Do not use. This only exists here because UsageException is in * the inheritance chain for backwards compatibility. - * @inheritdoc + * @inheritDoc */ public function getCodeString() { wfDeprecated( __METHOD__, '1.29' ); @@ -196,7 +196,7 @@ class ApiUsageException extends UsageException implements ILocalizedException { /** * @deprecated Do not use. This only exists here because UsageException is in * the inheritance chain for backwards compatibility. - * @inheritdoc + * @inheritDoc */ public function getMessageArray() { wfDeprecated( __METHOD__, '1.29' ); @@ -210,7 +210,7 @@ class ApiUsageException extends UsageException implements ILocalizedException { } /** - * @inheritdoc + * @inheritDoc */ public function getMessageObject() { return $this->status->getMessage(); diff --git a/includes/api/SearchApi.php b/includes/api/SearchApi.php index fb9c4e67d9..f7c6471e7c 100644 --- a/includes/api/SearchApi.php +++ b/includes/api/SearchApi.php @@ -115,7 +115,7 @@ trait SearchApi { $defaultProfile = null; foreach ( $profiles as $profile ) { $types[] = $profile['name']; - if ( isset ( $profile['desc-message'] ) ) { + if ( isset( $profile['desc-message'] ) ) { $helpMessages[$profile['name']] = $profile['desc-message']; } if ( !empty( $profile['default'] ) ) { @@ -144,7 +144,7 @@ trait SearchApi { * one ( to support the continue parameter ) * - namespace: mandatory * - search engine profiles defined by SearchApi::getSearchProfileParams() - * @param string[]|null API request params (must be sanitized by + * @param string[]|null $params API request params (must be sanitized by * ApiBase::extractRequestParams() before) * @return SearchEngine the search engine */ diff --git a/includes/api/i18n/ar.json b/includes/api/i18n/ar.json index 67dfb47de1..6b2a2b7305 100644 --- a/includes/api/i18n/ar.json +++ b/includes/api/i18n/ar.json @@ -29,7 +29,7 @@ "apihelp-block-param-autoblock": "منع آخر عنوان IP مستخدم تلقائيا، وأية عناوين IP لاحقة حاولت الدخول من خلاله.", "apihelp-block-param-noemail": "منع المستخدم من إرسال البريد الإلكتروني من خلال الويكي. (يتطلب صلاحية 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-watchuser": "مشاهدة صفحة المستخدم ونقاش IP.", "apihelp-block-example-ip-simple": "منع عنوان IP 192.0.2.5 لمدة ثلاثة أيام بسبب >المخالفة الأولى.", "apihelp-block-example-user-complex": "منع المستخدم المخرب لأجل غير مسمى بسبب التخريب، ومنع إنشاء حساب جديد وإرسال بريد إلكتروني.", @@ -239,7 +239,7 @@ "apihelp-opensearch-param-search": "سطر البحث", "apihelp-opensearch-param-limit": "الحد الأقصى للنتائج المُرجعة", "apihelp-opensearch-param-namespace": "النطاقات للبحث.", - "apihelp-opensearch-param-suggest": "لا تفعل شيئا إذا كان [[mw:Manual:$wgEnableOpenSearchSuggest|$wgEnableOpenSearchSuggest]] خاطئا.", + "apihelp-opensearch-param-suggest": "لا تفعل شيئا إذا كان [[mw:Special:MyLanguage/Manual:$wgEnableOpenSearchSuggest|$wgEnableOpenSearchSuggest]] خاطئا.", "apihelp-opensearch-param-format": "شكل الإخراج.", "apihelp-opensearch-param-warningsaserror": "إذا تم رفع التحذيرات بformat=json, أعد أخطاء API بدلا من تجاهلها.", "apihelp-opensearch-example-te": "العثور على صفحات تبدأ بTe.", @@ -273,7 +273,7 @@ "apihelp-parse-paramvalue-prop-externallinks": "يعطي الوصلات الخارجية في تحليل نصوص الويكي.", "apihelp-parse-paramvalue-prop-sections": "يعطي الأقسام في تحليل نصوص الويكي.", "apihelp-parse-paramvalue-prop-displaytitle": "يضيف العنوان في تحليل نصوص الويكي.", - "apihelp-parse-paramvalue-prop-headitems": "Deprecated. يعطي عناصر لوضعها في <head> الصفحة.", + "apihelp-parse-paramvalue-prop-headitems": "يعطي عناصر لوضعها في <head> الصفحة.", "apihelp-parse-paramvalue-prop-headhtml": "يعطي تحليل <head> الصفحة.", "apihelp-parse-paramvalue-prop-jsconfigvars": "يعطي متغيرات تكوين جافا سكريبت الخاصة بهذه الصفحة. للتطبيق; استخدم mw.config.set().", "apihelp-parse-paramvalue-prop-encodedjsconfigvars": "يعطي متغيرات تكوين جافا سكريبت الخاصة بهذه الصفحة كسلسلة JSON.", @@ -417,7 +417,7 @@ "apihelp-query+blocks-example-simple": "قائمة المنع.", "apihelp-query+imageinfo-paramvalue-prop-userid": "إضافة هوية المستخدم الذي قام بتحميل كل إصدار ملف.", "apihelp-query+prefixsearch-param-offset": "عدد النتائج المراد تخطيها.", - "apierror-offline": "لم يمكن المتابعة بسبب مشاكل توصيل بالشبكة. تأكد من أنه لديك توصيل بالإنترنت وحاول مرة أخرى.", - "apierror-timeout": "لم يستجب الخادم في الوقت المتوقع.", + "apierror-offline": "لم يمكن المتابعة بسبب مشاكل في الاتصال بالشبكة; تأكد من أنه لديك اتصال بالإنترنت وحاول مرة أخرى.", + "apierror-timeout": "لم يستجب الخادم ضمن الوقت المتوقع.", "api-feed-error-title": "خطأ ($1)" } 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..17881efe7f 100644 --- a/includes/api/i18n/es.json +++ b/includes/api/i18n/es.json @@ -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:", 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/he.json b/includes/api/i18n/he.json index 8918620ea9..dcb4efb748 100644 --- a/includes/api/i18n/he.json +++ b/includes/api/i18n/he.json @@ -66,14 +66,14 @@ "apihelp-compare-summary": "קבלת ההבדל בין 2 דפים.", "apihelp-compare-extended-description": "יש להעביר מספר גרסה, כותרת דף או מזהה דף גם ל־\"from\" וגם ל־\"to\".", "apihelp-compare-param-fromtitle": "כותרת ראשונה להשוואה.", - "apihelp-compare-param-fromid": "מס׳ זיהוי של העמוד הראשון להשוואה.", + "apihelp-compare-param-fromid": "מס׳ זיהוי של הדף הראשון להשוואה.", "apihelp-compare-param-fromrev": "גרסה ראשונה להשוואה.", "apihelp-compare-param-fromtext": "להשתמש בטקסט הזה במקום תוכן הגרסה שהוגדרה על־ידי fromtitle, fromid או fromrev.", "apihelp-compare-param-frompst": "לעשות התמרה לפני שמירה ב־fromtext.", "apihelp-compare-param-fromcontentmodel": "מודל התוכן של fromtext. אם זה לא סופק, ייעשה ניחוש על סמך פרמטרים אחרים.", "apihelp-compare-param-fromcontentformat": "תסדיר הסדרת תוכן של fromtext.", "apihelp-compare-param-totitle": "כותרת שנייה להשוואה.", - "apihelp-compare-param-toid": "מס׳ מזהה של העמוד השני להשוואה.", + "apihelp-compare-param-toid": "מס׳ מזהה של הדף השני להשוואה.", "apihelp-compare-param-torev": "גרסה שנייה להשוואה.", "apihelp-compare-param-torelative": "להשתמש בגרסה יחסית לגרסה שהוסקה מfromtitle, fromid או fromrev. לכל אפשריות ה־\"to\" האחרות לא תהיה השפעה.", "apihelp-compare-param-totext": "להשתמש בטקסט הזה במקום התוכן של הגרסה שהוגדר ב־totitle, toid or torev.", @@ -109,11 +109,11 @@ "apihelp-cspreport-param-reportonly": "לסמן בתור דיווח ממדיניות מנטרת, לא מדיניות כפויה", "apihelp-cspreport-param-source": "מה ייצר את כותרת ה־CSP שייצרה את הדו״ח הזה", "apihelp-delete-summary": "מחיקת דף.", - "apihelp-delete-param-title": "כותרת העמוד למחיקה. לא ניתן להשתמש בשילוב עם $1pageid.", - "apihelp-delete-param-pageid": "מס׳ הזיהוי של העמוד למחיקה. לא ניתן להשתמש בשילוב עם $1title.", + "apihelp-delete-param-title": "כותרת הדף למחיקה. לא ניתן להשתמש בשילוב עם $1pageid.", + "apihelp-delete-param-pageid": "מס׳ הזיהוי של הדף למחיקה. לא ניתן להשתמש בשילוב עם $1title.", "apihelp-delete-param-reason": "סיבת המחיקה. אם לא הוגדרה, תתווסף סיבה שנוצרה אוטומטית.", "apihelp-delete-param-tags": "תגי שינוי שיחולו על העיול ביומן המחיקה.", - "apihelp-delete-param-watch": "הוספת העמוד לרשימת המעקב של המשתמש הנוכחי.", + "apihelp-delete-param-watch": "הוספת הדף לרשימת המעקב של המשתמש הנוכחי.", "apihelp-delete-param-watchlist": "הוספה או הסרה של הדף ללא תנאי מרשימת המעקב של המשתמש הנוכחי, להשתמש בהעדפות או לא לשנות את המעקב.", "apihelp-delete-param-unwatch": "הסרת הדף מרשימת המעקב של של המשתמש הנוכחי.", "apihelp-delete-param-oldimage": "שם התמונה הישנה למחיקה כפי שסופק ל־[[Special:ApiHelp/query+imageinfo|action=query&prop=imageinfo&iiprop=archivename]].", @@ -136,7 +136,7 @@ "apihelp-edit-param-recreate": "לעקוב את כל הטעויות על כך שהדף נמחק בינתיים.", "apihelp-edit-param-createonly": "לא לערוך את הדף אם הוא כבר קיים.", "apihelp-edit-param-nocreate": "לזרוק שגיאה אם הדף אינו קיים.", - "apihelp-edit-param-watch": "הוספת העמוד לרשימת המעקב של המשתמש הנוכחי.", + "apihelp-edit-param-watch": "הוספת הדף לרשימת המעקב של המשתמש הנוכחי.", "apihelp-edit-param-unwatch": "הסרת הדף מרשימת המעקב של של המשתמש הנוכחי.", "apihelp-edit-param-watchlist": "להוסיף את הדף לרשימת המעקב של המשתמש הנוכחי או להסיר אותו משם, להשתמש בהעדפות, או לא לשנות את מצב המעקב.", "apihelp-edit-param-md5": "גיבוב MD5 של הפרמטר $1text או צירוף של הפטמטרים $1prependtext ו־$1appendtext. אם זה מוגדר, העריכה לא תיעשה אלא אם כן הגיבוב נכון.", @@ -149,7 +149,7 @@ "apihelp-edit-param-contentmodel": "מודל התוכן של התוכן החדש.", "apihelp-edit-param-token": "האסימון תמיד צריך להישלח בתור הפרמטר האחרון, או לפחות אחרי הפרמטר $1text parameter.", "apihelp-edit-example-edit": "עריכת דף", - "apihelp-edit-example-prepend": "הוספת __NOTOC__ לתחילת העמוד.", + "apihelp-edit-example-prepend": "הוספת __NOTOC__ לתחילת הדף.", "apihelp-edit-example-undo": "ביטול גרסאות מ־13579 עד 13585 עם תקציר אוטומטי.", "apihelp-emailuser-summary": "שליחת דוא\"ל למשתמש.", "apihelp-emailuser-param-target": "לאיזה משתמש לשלוח דוא\"ל.", @@ -165,7 +165,7 @@ "apihelp-expandtemplates-paramvalue-prop-wikitext": "קוד הוויקי המורחב.", "apihelp-expandtemplates-paramvalue-prop-categories": "קטגוריות כלשהן שקיימות בקלט ואינן מיוצגות בפלט הוויקיטקסט.", "apihelp-expandtemplates-paramvalue-prop-properties": "מאפייני דף המוגדרים במילות קסם מורחבות בקוד ויקי.", - "apihelp-expandtemplates-paramvalue-prop-volatile": "האם הפלט הוא נדיף ואין להשתמש בו במקום אחר בעמוד.", + "apihelp-expandtemplates-paramvalue-prop-volatile": "האם הפלט הוא נדיף ולא מיועד לשימוש במקום אחר בדף.", "apihelp-expandtemplates-paramvalue-prop-ttl": "הזמן המרבי שאחריו המטמונים של התוצאה צריכים לפוג.", "apihelp-expandtemplates-paramvalue-prop-modules": "כל יחידות ה־ResourceLoader שפונקציות מפענח ביקשו לוסיף לפלט. יש לבקש את jsconfigvars או את encodedjsconfigvars יחד עם modules.", "apihelp-expandtemplates-paramvalue-prop-jsconfigvars": "נותן משתני הגדרות של JavaScript שייחודיים לדף הזה.", @@ -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/ko.json b/includes/api/i18n/ko.json index 37b159e47c..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]]에서 가져옵니다", @@ -736,6 +737,9 @@ "api-help-authmanagerhelper-continue": "이 요청은 초기 UI 또는 REDIRECT 응답 이후에 계속됩니다. 이것 또는 $1returnurl 중 하나가 필요합니다.", "api-help-authmanagerhelper-additional-params": "이 모듈은 사용 가능한 인증 요청에 따라 추가 변수를 허용합니다. 사용 가능한 요청 및 사용되는 필드를 결정하려면 amirequestsfor=$1(또는 해당되는 경우 이 모듈의 과거 응답)과 함께 [[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]을(를) 사용하십시오.", "apierror-articleexists": "작성하려는 문서가 이미 만들어져 있습니다.", + "apierror-assertbotfailed": "사용자의 bot 권한 보유 표명이 실패했습니다.", + "apierror-assertnameduserfailed": "사용자의 \"$1\" 지정 표명이 실패했습니다.", + "apierror-assertuserfailed": "사용자의 로그인 표명이 실패했습니다.", "apierror-autoblocked": "사용자의 IP 주소는 차단된 사용자에 의해 사용되었으므로 자동으로 차단된 상태입니다.", "apierror-badgenerator-unknown": "알 수 없는 generator=$1.", "apierror-badip": "IP 변수가 유효하지 않습니다.", 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/nb.json b/includes/api/i18n/nb.json index ca3462dcc6..8b86af58c7 100644 --- a/includes/api/i18n/nb.json +++ b/includes/api/i18n/nb.json @@ -24,7 +24,7 @@ "apihelp-main-param-origin": "Når man aksesserer API-en som bruker en domene-kryssende AJAX-forespørsel (CORS), sett denne til det opprinnelige domenet. Denne må tas med i alle pre-flight-forespørsler, og derfor være en del av spørre-URI-en (ikke POST-kroppen).\n\nFor autentiserte forespørsler må denne stemme helt med en av de opprinnelige i Origin-headeren, slik at den må settes til noe a la https://en.wikipedia.org eller https://meta.wikimedia.org. Hvis denne parameteren ikke stemmer med Origin-headeren, returneres et 403-svar. Hvis denne parameteren stemmer med Origin-headeren og originalen er hvitlistet, vil Access-Control-Allow-Origin og Access-Control-Allow-Credentials-headere bli satt.\n\nFor ikke-autentiserte forepørsler, spesifiser *. Denne vil gjøre at Access-Control-Allow-Origin-headeren blir satt, men Access-Control-Allow-Credentials blir false og alle bruerspesifikke data blir begrenset.", "apihelp-main-param-uselang": "Språk å bruke for meldingsoversettelser. [[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]] med siprop=languages returnerer en liste over språkkoder, eller spesifiser user for å bruke den nåværende brukerens språkpreferanser, eller spesifiser content for å bruke denne wikiens innholdsspråk.", "apihelp-main-param-errorformat": "Formater som kan brukes for advarsels- og feiltekster.\n; plaintext: Wikitext der HTML-tagger er fjernet og elementer byttet ut.\n; wikitext: Ubehandlet wikitext.\n; html: HTML.\n; raw: Meldingsnøkler og -parametre.\n; none: Ingen tekst, bare feilkoder.\n; bc: Format brukt før MediaWiki 1.29. errorlang og errorsuselocal ses bort fra.", - "apihelp-main-param-errorlang": "Språk som skal brukes for advarsler og feil. [[Specia:ApiHelp/query+siteinfo|action=query&meta=siteinfo]] med siprop=languages/ returnerer ei liste over språkkoder, eller angi content for å bruke wikiens innholdsspråk, eller angi uselang for å bruke samme verdi som uselang-parameteren.", + "apihelp-main-param-errorlang": "Språk som skal brukes for advarsler og feil. [[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]] med siprop=languages/ returnerer ei liste over språkkoder, eller angi content for å bruke wikiens innholdsspråk, eller angi uselang for å bruke samme verdi som uselang-parameteren.", "apihelp-main-param-errorsuselocal": "Hvis gitt, vil feiltekster bruke lokalt tilpassede meldinger fra {{ns:MediaWiki}}-navnerommet.", "apihelp-block-summary": "Blokker en bruker.", "apihelp-block-param-user": "Brukernavn, IP-adresse eller IP-intervall som skal blokkeres. Kan ikke brukes sammen med $1userid", @@ -60,11 +60,25 @@ "apihelp-compare-param-fromid": "Første side-ID å sammenligne.", "apihelp-compare-param-fromrev": "Første revisjon å sammenligne.", "apihelp-compare-param-fromtext": "Bruk denne teksten i stedet for innholdet i revisjonen som angis med fromtitle, fromid eller fromrev.", + "apihelp-compare-param-frompst": "Gjør en transformering av fromtext før lagring.", "apihelp-compare-param-fromcontentmodel": "Innholdsmodell for fromtext. Om den ikke angis vil den gjettes basert på de andre parameterne.", "apihelp-compare-param-fromcontentformat": "Innholdsserialiseringsformat for fromtext.", "apihelp-compare-param-totitle": "Andre tittel å sammenligne.", "apihelp-compare-param-toid": "Andre side-ID å sammenligne.", "apihelp-compare-param-torev": "Andre revisjon å sammenligne.", + "apihelp-compare-param-totext": "Bruk denne teksten i stedet for innholdet i revisjonen spesifisert av totitle, toid eller torev.", + "apihelp-compare-param-topst": "Gjør en transformering av totext før lagring.", + "apihelp-compare-param-tocontentmodel": "Innholdsmodellen til totext. Om denne ikke angis vil den bli gjettet ut fra andre parametere.", + "apihelp-compare-param-tocontentformat": "Innholdsserialiseringsformat for totext.", + "apihelp-compare-param-prop": "Hvilke informasjonsdeler som skal hentes.", + "apihelp-compare-paramvalue-prop-diff": "Diffens HTML.", + "apihelp-compare-paramvalue-prop-diffsize": "Størrelsen på diffens HTML i byte.", + "apihelp-compare-paramvalue-prop-rel": "Revisjons-ID-en for revisjonene foran «from» og etter «to», om de finnes.", + "apihelp-compare-paramvalue-prop-ids": "Side- og revisjons-ID-ene til «from»- og «to»-revisjonene.", + "apihelp-compare-paramvalue-prop-title": "Sidetitlene for «from»- og «to»-revisjonene.", + "apihelp-compare-paramvalue-prop-user": "Brukernavnet og ID-en til «from»- og «to»-revisjonene.", + "apihelp-compare-paramvalue-prop-comment": "Kommentaren til «from»- og «to»-revisjonene.", + "apihelp-compare-paramvalue-prop-size": "Størrelsen til «from»- og «to»-revisjonene.", "apihelp-compare-example-1": "Lag en diff mellom revisjon 1 og 2.", "apihelp-createaccount-summary": "Opprett en ny brukerkonto.", "apihelp-createaccount-param-preservestate": "Om [[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]] returnerte true for hashprimarypreservedstate bør forespørsler merket som primary-required omgås. Om den returnerte en ikke-tom verdi for preservedusername kan det brukernavnet brukes for username-parameteren.", @@ -81,6 +95,7 @@ "apihelp-createaccount-example-pass": "Opprett bruker testuser med passordet test123.", "apihelp-createaccount-example-mail": "Opprett bruker testmailuser og send et tilfeldig generert passord med e-post.", "apihelp-cspreport-summary": "Brukes av nettlesere for å rapportere brudd på Content Security Policy. Denne modulen bør aldri brukes utenom av en CSP-mottakelig nettleser.", + "apihelp-cspreport-param-source": "Hva som genererte CSP-headeren som utløste denne rapporten", "apihelp-delete-summary": "Slett en side.", "apihelp-delete-param-title": "Tittel til siden som skal slettes. Kan ikke brukes sammen med $1pageid.", "apihelp-delete-param-pageid": "Side-ID til siden som skal slettes. Kan ikke brukes sammen med $1title.", diff --git a/includes/api/i18n/nl.json b/includes/api/i18n/nl.json index 0273eca698..ff99dff7c6 100644 --- a/includes/api/i18n/nl.json +++ b/includes/api/i18n/nl.json @@ -197,7 +197,7 @@ "apihelp-opensearch-param-search": "Zoektekst.", "apihelp-opensearch-param-limit": "Het maximaal aantal weer te geven resultaten.", "apihelp-opensearch-param-namespace": "Te doorzoeken naamruimten.", - "apihelp-opensearch-param-suggest": "Niets doen als [[mw:Manual:$wgEnableOpenSearchSuggest|$wgEnableOpenSearchSuggest]] onwaar is.", + "apihelp-opensearch-param-suggest": "Niets doen als [[mw:Special:MyLanguage/Manual:$wgEnableOpenSearchSuggest|$wgEnableOpenSearchSuggest]] onwaar is.", "apihelp-opensearch-param-redirects": "Hoe om te gaan met doorverwijzingen:\n;return:Geef de doorverwijzing terug.\n;resolve:Geef de doelpagina terug. Kan minder dan de limiet $1 resultaten teruggeven.\nOm historische redenen is de standaardinstelling \"return\" voor $1format=json en \"resolve\" voor andere formaten.", "apihelp-opensearch-param-format": "Het uitvoerformaat.", "apihelp-opensearch-param-warningsaserror": "Als er waarschuwingen zijn met format=json, geef dan een API-fout terug in plaats van deze te negeren.", @@ -309,7 +309,7 @@ "apihelp-query+revisions-param-tag": "Alleen versies weergeven met dit label.", "apihelp-query+revisions+base-paramvalue-prop-content": "Versietekst.", "apihelp-query+revisions+base-paramvalue-prop-tags": "Labels voor de versie.", - "apihelp-query+revisions+base-param-difftotextpst": "\"pre-save\"-transformatie uitvoeren op de tekst alvorens de verschillen te bepalen. Alleen geldig als dit wordt gebruikt met $1difftotext.", + "apihelp-query+revisions+base-param-difftotextpst": "Gebruik in plaats hiervan [[Special:ApiHelp/compare|action=compare]]. \"pre-save\"-transformatie uitvoeren op de tekst alvorens de verschillen te bepalen. Alleen geldig als dit wordt gebruikt met $1difftotext.", "apihelp-query+search-summary": "Voer een volledige tekst zoekopdracht uit.", "apihelp-query+search-param-limit": "Hoeveel pagina's te tonen.", "apihelp-query+search-example-simple": "Zoeken naar betekenis.", 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/ru.json b/includes/api/i18n/ru.json index 95e69e68fc..795e81b5a0 100644 --- a/includes/api/i18n/ru.json +++ b/includes/api/i18n/ru.json @@ -1429,16 +1429,16 @@ "apihelp-json-param-utf8": "Если задано, кодирует большинство (но не все) не-ASCII символов в UTF-8 вместо замены их на шестнадцатеричные коды. Применяется по умолчанию, когда formatversion не равно 1.", "apihelp-json-param-ascii": "Если задано, заменяет все не-ASCII-символы на шестнадцатеричные коды. Применяется по умолчанию, когда formatversion равно 1.", "apihelp-json-param-formatversion": "Формат вывода:\n;1: Обратно совместимый формат (логические значения в стиле XML, ключи * для узлов данных, и так далее).\n;2: Экспериментальный современный формат. Детали могут меняться!\n;latest: Использовать последний формат (сейчас 2), может меняться без предупреждения.", - "apihelp-jsonfm-summary": "Выводить данные в JSON-формате (хорошо читаемом в HTML).", + "apihelp-jsonfm-summary": "Выводить данные в формате JSON (отформатированном в HTML).", "apihelp-none-summary": "Ничего не выводить.", "apihelp-php-summary": "Выводить данные в сериализованном формате PHP.", "apihelp-php-param-formatversion": "Формат вывода:\n;1: Обратно совместимый формат (логические значения в стиле XML, ключи * для узлов данных, и так далее).\n;2: Экспериментальный современный формат. Детали могут меняться!\n;latest: Использовать последний формат (сейчас 2), может меняться без предупреждения.", - "apihelp-phpfm-summary": "Выводить данные в сериализованном формате PHP (хорошо читаемом в HTML).", - "apihelp-rawfm-summary": "Выводить данные, включая элементы отладки, в формате JSON (хорошо читаемом в HTML).", + "apihelp-phpfm-summary": "Выводить данные в сериализованном формате PHP (отформатированном в HTML).", + "apihelp-rawfm-summary": "Выводить данные, включая элементы отладки, в формате JSON (отформатированном в HTML).", "apihelp-xml-summary": "Выводить данные в формате XML.", "apihelp-xml-param-xslt": "Если задано, добавляет названную страницу в качестве листа XSL. Значением должно быть название в пространстве имён {{ns:MediaWiki}}, заканчивающееся на .xsl.", "apihelp-xml-param-includexmlnamespace": "Если задано, добавляет пространство имён XML.", - "apihelp-xmlfm-summary": "Выводить данные в формате XML (хорошо читаемом в HTML).", + "apihelp-xmlfm-summary": "Выводить данные в формате XML (отформатированном в HTML).", "api-format-title": "Результат MediaWiki API", "api-format-prettyprint-header": "Это HTML-представление формата $1. HTML хорош для отладки, но неудобен для практического применения.\n\nУкажите параметр format для изменения формата вывода. Для отображения не-HTML-представления формата $1, присвойте format=$2.\n\nСм. [[mw:Special:MyLanguage/API|полную документацию]] или [[Special:ApiHelp/main|справку API]] для получения дополнительной информации.", "api-format-prettyprint-header-only-html": "Это HTML-представление для отладки, не рассчитанное на практическое применение.\n\nСм. [[mw:Special:MyLanguage/API|полную документацию]] или [[Special:ApiHelp/main|справку API]] для получения дополнительной информации.", 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/AbstractAuthenticationProvider.php b/includes/auth/AbstractAuthenticationProvider.php index 9e38eccb3f..58cec118c8 100644 --- a/includes/auth/AbstractAuthenticationProvider.php +++ b/includes/auth/AbstractAuthenticationProvider.php @@ -50,7 +50,7 @@ abstract class AbstractAuthenticationProvider implements AuthenticationProvider } /** - * @inheritdoc + * @inheritDoc * @note Override this if it makes sense to support more than one instance */ public function getUniqueId() { diff --git a/includes/auth/AbstractPrimaryAuthenticationProvider.php b/includes/auth/AbstractPrimaryAuthenticationProvider.php index ea3dfa3bd6..ca947b61a8 100644 --- a/includes/auth/AbstractPrimaryAuthenticationProvider.php +++ b/includes/auth/AbstractPrimaryAuthenticationProvider.php @@ -46,7 +46,7 @@ abstract class AbstractPrimaryAuthenticationProvider extends AbstractAuthenticat } /** - * @inheritdoc + * @inheritDoc * @note Reimplement this if you do anything other than * User::getCanonicalName( $req->username ) to determine the user being * authenticated. @@ -57,7 +57,7 @@ abstract class AbstractPrimaryAuthenticationProvider extends AbstractAuthenticat } /** - * @inheritdoc + * @inheritDoc * @note Reimplement this if self::getAuthenticationRequests( AuthManager::ACTION_REMOVE ) * doesn't return requests that will revoke all access for the user. */ diff --git a/includes/auth/AbstractSecondaryAuthenticationProvider.php b/includes/auth/AbstractSecondaryAuthenticationProvider.php index 00493bc7a4..4a2accafcb 100644 --- a/includes/auth/AbstractSecondaryAuthenticationProvider.php +++ b/includes/auth/AbstractSecondaryAuthenticationProvider.php @@ -43,7 +43,7 @@ abstract class AbstractSecondaryAuthenticationProvider extends AbstractAuthentic } /** - * @inheritdoc + * @inheritDoc * @note Reimplement this if self::getAuthenticationRequests( AuthManager::ACTION_REMOVE ) * doesn't return requests that will revoke all access for the user. */ 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/auth/PrimaryAuthenticationProvider.php b/includes/auth/PrimaryAuthenticationProvider.php index 4033613f75..5d82f8995c 100644 --- a/includes/auth/PrimaryAuthenticationProvider.php +++ b/includes/auth/PrimaryAuthenticationProvider.php @@ -81,7 +81,7 @@ interface PrimaryAuthenticationProvider extends AuthenticationProvider { const TYPE_NONE = 'none'; /** - * {@inheritdoc} + * @inheritDoc * * Of the requests returned by this method, exactly one should have * {@link AuthenticationRequest::$required} set to REQUIRED. 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 d8e3c38176..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 ) { @@ -131,7 +131,7 @@ class LinkBatch { * Do the query and add the results to a given LinkCache object * Return an array mapping PDBK to ID * - * @param LinkCache $cache + * @param LinkCache &$cache * @return array Remaining IDs */ protected function executeInto( &$cache ) { diff --git a/includes/cache/MessageCache.php b/includes/cache/MessageCache.php index f9f9a08a33..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 */ @@ -395,8 +395,8 @@ class MessageCache { /** * @param string $code - * @param array $where List of wfDebug() comments - * @param integer $mode Use MessageCache::FOR_UPDATE to use DB_MASTER + * @param array &$where List of wfDebug() comments + * @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 58a67adb8e..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; @@ -687,7 +685,7 @@ class LocalisationCache { * exists, the data array is returned, otherwise false is returned. * * @param string $code - * @param array $deps + * @param array &$deps * @return array */ protected function readSourceFilesAndRegisterDeps( $code, &$deps ) { @@ -719,7 +717,7 @@ class LocalisationCache { * Merge two localisation values, a primary and a fallback, overwriting the * primary value in place. * @param string $key - * @param mixed $value + * @param mixed &$value * @param mixed $fallbackValue */ protected function mergeItem( $key, &$value, $fallbackValue ) { @@ -749,7 +747,7 @@ class LocalisationCache { } /** - * @param mixed $value + * @param mixed &$value * @param mixed $fallbackValue */ protected function mergeMagicWords( &$value, $fallbackValue ) { @@ -775,7 +773,7 @@ class LocalisationCache { * otherwise. * @param array $codeSequence * @param string $key - * @param mixed $value + * @param mixed &$value * @param mixed $fallbackValue * @return bool */ diff --git a/includes/changes/ChangesFeed.php b/includes/changes/ChangesFeed.php index 99dc8991f2..df964e0a2b 100644 --- a/includes/changes/ChangesFeed.php +++ b/includes/changes/ChangesFeed.php @@ -165,7 +165,7 @@ class ChangesFeed { /** * Generate the feed items given a row from the database, printing the feed. * @param object $rows IDatabase resource with recentchanges rows - * @param ChannelFeed $feed + * @param ChannelFeed &$feed */ public static function generateFeed( $rows, &$feed ) { $items = self::buildItems( $rows ); diff --git a/includes/changes/ChangesList.php b/includes/changes/ChangesList.php index 2182c6cb7e..cac476929b 100644 --- a/includes/changes/ChangesList.php +++ b/includes/changes/ChangesList.php @@ -41,6 +41,9 @@ class ChangesList extends ContextSource { protected $rclistOpen; protected $rcMoveIndex; + /** @var callable */ + protected $changeLinePrefixer; + /** @var BagOStuff */ protected $watchMsgCache; @@ -102,7 +105,7 @@ class ChangesList extends ContextSource { * * @since 1.27 * - * @param RecentChange $rc Passed by reference + * @param RecentChange &$rc Passed by reference * @param bool $watched (default false) * @param int $linenumber (default null) * @@ -169,12 +172,14 @@ class ChangesList extends ContextSource { * @return array of classes */ protected function getHTMLClasses( $rc, $watched ) { - $classes = []; + $classes = [ self::CSS_CLASS_PREFIX . 'line' ]; $logType = $rc->mAttribs['rc_log_type']; if ( $logType ) { + $classes[] = self::CSS_CLASS_PREFIX . 'log'; $classes[] = Sanitizer::escapeClass( self::CSS_CLASS_PREFIX . 'log-' . $logType ); } else { + $classes[] = self::CSS_CLASS_PREFIX . 'edit'; $classes[] = Sanitizer::escapeClass( self::CSS_CLASS_PREFIX . 'ns' . $rc->mAttribs['rc_namespace'] . '-' . $rc->mAttribs['rc_title'] ); $classes[] = Sanitizer::escapeClass( self::CSS_CLASS_PREFIX . 'ns-' . @@ -362,7 +367,7 @@ class ChangesList extends ContextSource { } /** - * @param string $s HTML to update + * @param string &$s HTML to update * @param mixed $rc_timestamp */ public function insertDateHeader( &$s, $rc_timestamp ) { @@ -379,7 +384,7 @@ class ChangesList extends ContextSource { } /** - * @param string $s HTML to update + * @param string &$s HTML to update * @param Title $title * @param string $logtype */ @@ -392,8 +397,8 @@ class ChangesList extends ContextSource { } /** - * @param string $s HTML to update - * @param RecentChange $rc + * @param string &$s HTML to update + * @param RecentChange &$rc * @param bool|null $unpatrolled Unused variable, since 1.27. */ public function insertDiffHist( &$s, &$rc, $unpatrolled = null ) { @@ -442,7 +447,7 @@ class ChangesList extends ContextSource { } /** - * @param string $s Article link will be appended to this string, in place. + * @param string &$s Article link will be appended to this string, in place. * @param RecentChange $rc * @param bool $unpatrolled * @param bool $watched @@ -453,7 +458,7 @@ class ChangesList extends ContextSource { } /** - * @param RecentChange $rc + * @param RecentChange &$rc * @param bool $unpatrolled * @param bool $watched * @return string HTML @@ -508,7 +513,7 @@ class ChangesList extends ContextSource { /** * Insert time timestamp string from $rc into $s * - * @param string $s HTML to update + * @param string &$s HTML to update * @param RecentChange $rc */ public function insertTimestamp( &$s, $rc ) { @@ -620,8 +625,8 @@ class ChangesList extends ContextSource { /** Inserts a rollback link * - * @param string $s - * @param RecentChange $rc + * @param string &$s + * @param RecentChange &$rc */ public function insertRollback( &$s, &$rc ) { if ( $rc->mAttribs['rc_type'] == RC_EDIT @@ -658,9 +663,9 @@ class ChangesList extends ContextSource { } /** - * @param string $s - * @param RecentChange $rc - * @param array $classes + * @param string &$s + * @param RecentChange &$rc + * @param array &$classes */ public function insertTags( &$s, &$rc, &$classes ) { if ( empty( $rc->mAttribs['ts_tags'] ) ) { @@ -678,7 +683,7 @@ class ChangesList extends ContextSource { /** * @param RecentChange $rc - * @param array $classes + * @param array &$classes * @return string * @since 1.26 */ @@ -753,11 +758,12 @@ class ChangesList extends ContextSource { switch ( $type ) { case RecentChange::SRC_EDIT: case RecentChange::SRC_NEW: - $attrs[ 'data-mw-revid' ] = $rc->mAttribs['rc_this_oldid']; + $attrs['data-mw-revid'] = $rc->mAttribs['rc_this_oldid']; break; case RecentChange::SRC_LOG: - $attrs[ 'data-mw-logid' ] = $rc->mAttribs['rc_logid']; - $attrs[ 'data-mw-logaction' ] = $rc->mAttribs['rc_log_type'] . '/' . $rc->mAttribs['rc_log_action']; + $attrs['data-mw-logid'] = $rc->mAttribs['rc_logid']; + $attrs['data-mw-logaction'] = + $rc->mAttribs['rc_log_type'] . '/' . $rc->mAttribs['rc_log_action']; break; } @@ -765,4 +771,15 @@ class ChangesList extends ContextSource { return $attrs; } + + /** + * Sets the callable that generates a change line prefix added to the beginning of each line. + * + * @param callable $prefixer Callable to run that generates the change line prefix. + * Takes three parameters: a RecentChange object, a ChangesList object, + * and whether the current entry is a grouped entry. + */ + public function setChangeLinePrefixer( callable $prefixer ) { + $this->changeLinePrefixer = $prefixer; + } } diff --git a/includes/changes/ChangesListBooleanFilter.php b/includes/changes/ChangesListBooleanFilter.php index 930269cab6..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; } @@ -157,14 +172,14 @@ class ChangesListBooleanFilter extends ChangesListFilter { } /** - * @inheritdoc + * @inheritDoc */ public function displaysOnUnstructuredUi() { return !!$this->showHide; } /** - * @inheritdoc + * @inheritDoc */ public function isFeatureAvailableOnStructuredUi() { return $this->isReplacedInStructuredUi || @@ -206,7 +221,7 @@ class ChangesListBooleanFilter extends ChangesListFilter { } /** - * @inheritdoc + * @inheritDoc */ public function getJsData() { $output = parent::getJsData(); @@ -217,7 +232,7 @@ class ChangesListBooleanFilter extends ChangesListFilter { } /** - * @inheritdoc + * @inheritDoc */ public function isSelected( FormOptions $opts ) { return !$opts[ $this->getName() ] && @@ -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/ChangesListBooleanFilterGroup.php b/includes/changes/ChangesListBooleanFilterGroup.php index 951c4077c2..0622211f0a 100644 --- a/includes/changes/ChangesListBooleanFilterGroup.php +++ b/includes/changes/ChangesListBooleanFilterGroup.php @@ -43,7 +43,7 @@ class ChangesListBooleanFilterGroup extends ChangesListFilterGroup { } /** - * @inheritdoc + * @inheritDoc */ protected function createFilter( array $filterDefinition ) { return new ChangesListBooleanFilter( $filterDefinition ); @@ -59,7 +59,7 @@ class ChangesListBooleanFilterGroup extends ChangesListFilterGroup { } /** - * @inheritdoc + * @inheritDoc */ public function isPerGroupRequestParameter() { return false; diff --git a/includes/changes/ChangesListFilterGroup.php b/includes/changes/ChangesListFilterGroup.php index 0dc1145491..57627525a3 100644 --- a/includes/changes/ChangesListFilterGroup.php +++ b/includes/changes/ChangesListFilterGroup.php @@ -165,7 +165,7 @@ abstract class ChangesListFilterGroup { $this->title = $groupDefinition['title']; } - if ( isset ( $groupDefinition['whatsThisHeader'] ) ) { + if ( isset( $groupDefinition['whatsThisHeader'] ) ) { $this->whatsThisHeader = $groupDefinition['whatsThisHeader']; $this->whatsThisBody = $groupDefinition['whatsThisBody']; $this->whatsThisUrl = $groupDefinition['whatsThisUrl']; @@ -352,7 +352,7 @@ abstract class ChangesListFilterGroup { 'messageKeys' => [ $this->title ] ]; - if ( isset ( $this->whatsThisHeader ) ) { + if ( isset( $this->whatsThisHeader ) ) { $output['whatsThisHeader'] = $this->whatsThisHeader; $output['whatsThisBody'] = $this->whatsThisBody; $output['whatsThisUrl'] = $this->whatsThisUrl; diff --git a/includes/changes/ChangesListStringOptionsFilter.php b/includes/changes/ChangesListStringOptionsFilter.php index 76d0bef155..930ba128f6 100644 --- a/includes/changes/ChangesListStringOptionsFilter.php +++ b/includes/changes/ChangesListStringOptionsFilter.php @@ -9,14 +9,14 @@ */ class ChangesListStringOptionsFilter extends ChangesListFilter { /** - * @inheritdoc + * @inheritDoc */ public function displaysOnUnstructuredUi() { return false; } /** - * @inheritdoc + * @inheritDoc */ public function isSelected( FormOptions $opts ) { $option = $opts[ $this->getGroup()->getName() ]; diff --git a/includes/changes/ChangesListStringOptionsFilterGroup.php b/includes/changes/ChangesListStringOptionsFilterGroup.php index 487120d8a2..59efd82bca 100644 --- a/includes/changes/ChangesListStringOptionsFilterGroup.php +++ b/includes/changes/ChangesListStringOptionsFilterGroup.php @@ -129,7 +129,7 @@ class ChangesListStringOptionsFilterGroup extends ChangesListFilterGroup { } /** - * @inheritdoc + * @inheritDoc */ public function isPerGroupRequestParameter() { return true; @@ -154,7 +154,7 @@ class ChangesListStringOptionsFilterGroup extends ChangesListFilterGroup { } /** - * @inheritdoc + * @inheritDoc */ protected function createFilter( array $filterDefinition ) { return new ChangesListStringOptionsFilter( $filterDefinition ); @@ -232,7 +232,7 @@ class ChangesListStringOptionsFilterGroup extends ChangesListFilterGroup { } /** - * @inheritdoc + * @inheritDoc */ public function getJsData() { $output = parent::getJsData(); diff --git a/includes/changes/EnhancedChangesList.php b/includes/changes/EnhancedChangesList.php index 55cb9edd08..21a811ee8a 100644 --- a/includes/changes/EnhancedChangesList.php +++ b/includes/changes/EnhancedChangesList.php @@ -91,7 +91,7 @@ class EnhancedChangesList extends ChangesList { /** * Format a line for enhanced recentchange (aka with javascript and block of lines). * - * @param RecentChange $rc + * @param RecentChange &$rc * @param bool $watched * @param int $linenumber (default null) * @@ -172,12 +172,14 @@ class EnhancedChangesList extends ChangesList { $recentChangesFlags = $this->getConfig()->get( 'RecentChangesFlags' ); # Add the namespace and title of the block as part of the class - $tableClasses = [ 'mw-collapsible', 'mw-collapsed', 'mw-enhanced-rc' ]; + $tableClasses = [ 'mw-collapsible', 'mw-collapsed', 'mw-enhanced-rc', 'mw-changeslist-line' ]; if ( $block[0]->mAttribs['rc_log_type'] ) { # Log entry + $tableClasses[] = 'mw-changeslist-log'; $tableClasses[] = Sanitizer::escapeClass( 'mw-changeslist-log-' . $block[0]->mAttribs['rc_log_type'] ); } else { + $tableClasses[] = 'mw-changeslist-edit'; $tableClasses[] = Sanitizer::escapeClass( 'mw-changeslist-ns' . $block[0]->mAttribs['rc_namespace'] . '-' . $block[0]->mAttribs['rc_title'] ); } @@ -330,6 +332,11 @@ class EnhancedChangesList extends ChangesList { implode( $this->message['semicolon-separator'], $users ) )->escaped(); + $prefix = ''; + if ( is_callable( $this->changeLinePrefixer ) ) { + $prefix = call_user_func( $this->changeLinePrefixer, $block[0], $this, true ); + } + $templateParams = [ 'articleLink' => $articleLink, 'charDifference' => $charDifference, @@ -338,9 +345,11 @@ class EnhancedChangesList extends ChangesList { 'lines' => $lines, 'logText' => $logText, 'numberofWatchingusers' => $numberofWatchingusers, + 'prefix' => $prefix, 'rev-deleted-event' => $revDeletedMsg, 'tableClasses' => $tableClasses, 'timestamp' => $block[0]->timestamp, + 'fullTimestamp' => $block[0]->getAttribute( 'rc_timestamp' ), 'users' => $usersList, ]; @@ -366,7 +375,7 @@ class EnhancedChangesList extends ChangesList { $type = $rcObj->mAttribs['rc_type']; $data = []; - $lineParams = []; + $lineParams = [ 'targetTitle' => $rcObj->getTitle() ]; $classes = [ 'mw-enhanced-rc' ]; if ( $rcObj->watched @@ -609,8 +618,10 @@ class EnhancedChangesList extends ChangesList { if ( $logType ) { # Log entry + $classes[] = 'mw-changeslist-log'; $classes[] = Sanitizer::escapeClass( 'mw-changeslist-log-' . $logType ); } else { + $classes[] = 'mw-changeslist-edit'; $classes[] = Sanitizer::escapeClass( 'mw-changeslist-ns' . $rcObj->mAttribs['rc_namespace'] . '-' . $rcObj->mAttribs['rc_title'] ); } @@ -690,8 +701,15 @@ class EnhancedChangesList extends ChangesList { return $key === 'class' || Sanitizer::isReservedDataAttribute( $key ); } ); + $prefix = ''; + if ( is_callable( $this->changeLinePrefixer ) ) { + $prefix = call_user_func( $this->changeLinePrefixer, $rcObj, $this, false ); + } + $line = Html::openElement( 'table', $attribs ) . Html::openElement( 'tr' ); - $line .= ''; + $line .= Html::rawElement( 'td', [], '' ); + $line .= Html::rawElement( 'td', [ 'class' => 'mw-changeslist-line-prefix' ], $prefix ); + $line .= ''; if ( isset( $data['recentChangesFlags'] ) ) { $line .= $this->recentChangesFlags( $data['recentChangesFlags'] ); @@ -702,7 +720,12 @@ class EnhancedChangesList extends ChangesList { $line .= ' ' . $data['timestampLink']; unset( $data['timestampLink'] ); } - $line .= ' '; + $line .= ' '; + $line .= Html::openElement( 'td', [ + 'class' => 'mw-changeslist-line-inner', + // Used for reliable determination of the affiliated page + 'data-target-page' => $rcObj->getTitle(), + ] ); // everything else: makes it easier for extensions to add or remove data $line .= implode( '', $data ); diff --git a/includes/changes/OldChangesList.php b/includes/changes/OldChangesList.php index 09205bd318..88c3c226cd 100644 --- a/includes/changes/OldChangesList.php +++ b/includes/changes/OldChangesList.php @@ -25,7 +25,7 @@ class OldChangesList extends ChangesList { /** * Format a line using the old system (aka without any javascript). * - * @param RecentChange $rc Passed by reference + * @param RecentChange &$rc Passed by reference * @param bool $watched (default false) * @param int $linenumber (default null) * @@ -82,7 +82,7 @@ class OldChangesList extends ChangesList { if ( $rc->mAttribs['rc_log_type'] ) { $logtitle = SpecialPage::getTitleFor( 'Log', $rc->mAttribs['rc_log_type'] ); $this->insertLog( $html, $logtitle, $rc->mAttribs['rc_log_type'] ); - $flags = $this->recentChangesFlags( [ 'unpatrolled' =>$unpatrolled, + $flags = $this->recentChangesFlags( [ 'unpatrolled' => $unpatrolled, 'bot' => $rc->mAttribs['rc_bot'] ], '' ); if ( $flags !== '' ) { $html .= ' ' . $flags; @@ -142,6 +142,15 @@ class OldChangesList extends ChangesList { $html .= ' ' . $this->numberofWatchingusers( $rc->numberofWatchingusers ); } + $html = Html::rawElement( 'span', [ + 'class' => 'mw-changeslist-line-inner', + 'data-target-page' => $rc->getTitle(), // Used for reliable determination of the affiliated page + ], $html ); + if ( is_callable( $this->changeLinePrefixer ) ) { + $prefix = call_user_func( $this->changeLinePrefixer, $rc, $this, false ); + $html = Html::rawElement( 'span', [ 'class' => 'mw-changeslist-line-prefix' ], $prefix ) . $html; + } + return $html; } } diff --git a/includes/changes/RecentChange.php b/includes/changes/RecentChange.php index 5fad8fd9ea..588f602e64 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 @@ -322,8 +327,14 @@ class RecentChange { 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 ); + # Insert new row - $dbw->insert( 'recentchanges', $this->mAttribs, __METHOD__ ); + $dbw->insert( 'recentchanges', $row, __METHOD__ ); # Set the ID $this->mAttribs['rc_id'] = $dbw->insertId(); @@ -426,6 +437,7 @@ class RecentChange { * @since 1.22 * @deprecated since 1.29 Use RCFeed::factory() instead * @param string $uri URI to get the engine object for + * @param array $params * @return RCFeedEngine The engine object * @throws MWException */ @@ -552,9 +564,9 @@ class RecentChange { * Makes an entry in the database corresponding to an edit * * @param string $timestamp - * @param Title $title + * @param Title &$title * @param bool $minor - * @param User $user + * @param User &$user * @param string $comment * @param int $oldId * @param string $lastTimestamp @@ -585,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, @@ -629,9 +643,9 @@ class RecentChange { * Note: the title object must be loaded with the new id using resetArticleID() * * @param string $timestamp - * @param Title $title + * @param Title &$title * @param bool $minor - * @param User $user + * @param User &$user * @param string $comment * @param bool $bot * @param string $ip @@ -658,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, @@ -699,8 +715,8 @@ class RecentChange { /** * @param string $timestamp - * @param Title $title - * @param User $user + * @param Title &$title + * @param User &$user * @param string $actionComment * @param string $ip * @param string $type @@ -730,8 +746,8 @@ class RecentChange { /** * @param string $timestamp - * @param Title $title - * @param User $user + * @param Title &$title + * @param User &$user * @param string $actionComment * @param string $ip * @param string $type @@ -788,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, @@ -861,7 +879,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, @@ -921,6 +941,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; } /** @@ -930,6 +957,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/changetags/ChangeTags.php b/includes/changetags/ChangeTags.php index 2eb9b225d5..fa981247c2 100644 --- a/includes/changetags/ChangeTags.php +++ b/includes/changetags/ChangeTags.php @@ -649,11 +649,11 @@ class ChangeTags { * if you had ORDER BY foo_timestamp DESC, you will now need GROUP BY foo_timestamp, foo_id * ORDER BY foo_timestamp DESC, foo_id DESC. * - * @param string|array $tables Table names, see Database::select - * @param string|array $fields Fields used in query, see Database::select - * @param string|array $conds Conditions used in query, see Database::select - * @param array $join_conds Join conditions, see Database::select - * @param string|array $options Options, see Database::select + * @param string|array &$tables Table names, see Database::select + * @param string|array &$fields Fields used in query, see Database::select + * @param string|array &$conds Conditions used in query, see Database::select + * @param array &$join_conds Join conditions, see Database::select + * @param string|array &$options Options, see Database::select * @param string|array $filter_tag Tag(s) to select on * * @throws MWException When unable to determine appropriate JOIN condition for tagging @@ -1328,6 +1328,7 @@ class ChangeTags { * * @see listSoftwareDefinedTags * @deprecated since 1.28 + * @return array */ public static function listExtensionDefinedTags() { wfDeprecated( __METHOD__, '1.28' ); diff --git a/includes/collation/CustomUppercaseCollation.php b/includes/collation/CustomUppercaseCollation.php index 1b96bff27e..301972d90c 100644 --- a/includes/collation/CustomUppercaseCollation.php +++ b/includes/collation/CustomUppercaseCollation.php @@ -48,7 +48,7 @@ class CustomUppercaseCollation extends NumericUppercaseCollation { * @note This assumes $alphabet does not contain U+F3000-U+F303F * * @param array $alphabet Sorted array of uppercase characters. - * @param Language $language What language for number sorting. + * @param Language $lang What language for number sorting. */ public function __construct( array $alphabet, Language $lang ) { // It'd be trivial to extend this past 64, you'd just 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/collation/NumericUppercaseCollation.php b/includes/collation/NumericUppercaseCollation.php index 8dd7a38f3a..da78a05143 100644 --- a/includes/collation/NumericUppercaseCollation.php +++ b/includes/collation/NumericUppercaseCollation.php @@ -40,7 +40,7 @@ class NumericUppercaseCollation extends UppercaseCollation { private $digitTransformLang; /** - * @param $lang Language How to convert digits. + * @param Language $lang How to convert digits. * For example, if given language "my" than ၇ is treated like 7. * * It is expected that usually this is given $wgContLang. @@ -76,8 +76,8 @@ class NumericUppercaseCollation extends UppercaseCollation { * * based on Language::parseFormattedNumber but without commas. * - * @param $string String sortkey to unlocalize digits of - * @return String Sortkey with all localized digits replaced with ASCII digits. + * @param string $string sortkey to unlocalize digits of + * @return string Sortkey with all localized digits replaced with ASCII digits. */ private function convertDigits( $string ) { $table = $this->digitTransformLang->digitTransformTable(); 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 @@ -value for fields @@ -1190,7 +1190,7 @@ abstract class ContentHandler { * * Specific content handlers may override it if they need different content handling. * - * @param WikiPage $page + * @param WikiPage $page * @param ParserCache $cache * @return ParserOutput */ diff --git a/includes/content/JsonContent.php b/includes/content/JsonContent.php index 14c81823cf..2b94f3f71e 100644 --- a/includes/content/JsonContent.php +++ b/includes/content/JsonContent.php @@ -22,6 +22,7 @@ class JsonContent extends TextContent { /** * @param string $text JSON + * @param string $modelId */ public function __construct( $text, $modelId = CONTENT_MODEL_JSON ) { parent::__construct( $text, $modelId ); @@ -96,7 +97,7 @@ class JsonContent extends TextContent { * @param int $revId * @param ParserOptions $options * @param bool $generateHtml - * @param ParserOutput $output + * @param ParserOutput &$output */ protected function fillParserOutput( Title $title, $revId, ParserOptions $options, $generateHtml, ParserOutput &$output diff --git a/includes/content/TextContent.php b/includes/content/TextContent.php index 7bb4def2a6..5f585bc98a 100644 --- a/includes/content/TextContent.php +++ b/includes/content/TextContent.php @@ -157,7 +157,7 @@ class TextContent extends AbstractContent { * changes. * * @since 1.28 - * @param $text + * @param string $text * @return string */ public static function normalizeLineEndings( $text ) { @@ -233,7 +233,7 @@ class TextContent extends AbstractContent { * @param int $revId Revision ID (for {{REVISIONID}}) * @param ParserOptions $options Parser options * @param bool $generateHtml Whether or not to generate HTML - * @param ParserOutput $output The output object to fill (reference). + * @param ParserOutput &$output The output object to fill (reference). */ protected function fillParserOutput( Title $title, $revId, ParserOptions $options, $generateHtml, ParserOutput &$output diff --git a/includes/content/TextContentHandler.php b/includes/content/TextContentHandler.php index 698a37b6fe..ced2a665ac 100644 --- a/includes/content/TextContentHandler.php +++ b/includes/content/TextContentHandler.php @@ -40,7 +40,7 @@ class TextContentHandler extends ContentHandler { * Returns the content's text as-is. * * @param Content $content - * @param string $format The serialization format to check + * @param string $format The serialization format to check * * @return mixed */ diff --git a/includes/context/ContextSource.php b/includes/context/ContextSource.php index 434201a174..cea84605ea 100644 --- a/includes/context/ContextSource.php +++ b/includes/context/ContextSource.php @@ -183,7 +183,7 @@ abstract class ContextSource implements IContextSource { * @since 1.18 * @param string|string[]|MessageSpecifier $key Message key, or array of keys, * or a MessageSpecifier. - * @param mixed ... + * @param mixed $args,... * @return Message */ public function msg( $key /* $args */ ) { diff --git a/includes/context/RequestContext.php b/includes/context/RequestContext.php index 2ac41925d8..4a772eecd2 100644 --- a/includes/context/RequestContext.php +++ b/includes/context/RequestContext.php @@ -451,7 +451,7 @@ class RequestContext implements IContextSource, MutableContext { * * @param string|string[]|MessageSpecifier $key Message key, or array of keys, * or a MessageSpecifier. - * @param mixed ... + * @param mixed $args,... * @return Message */ public function msg( $key ) { diff --git a/includes/dao/DBAccessObjectUtils.php b/includes/dao/DBAccessObjectUtils.php index cc63446cb3..ee10368521 100644 --- a/includes/dao/DBAccessObjectUtils.php +++ b/includes/dao/DBAccessObjectUtils.php @@ -28,8 +28,8 @@ */ class DBAccessObjectUtils implements IDBAccessObject { /** - * @param integer $bitfield - * @param integer $flags IDBAccessObject::READ_* constant + * @param int $bitfield + * @param int $flags IDBAccessObject::READ_* constant * @return bool Bitfield has flag $flag set */ public static function hasFlags( $bitfield, $flags ) { @@ -42,7 +42,7 @@ class DBAccessObjectUtils implements IDBAccessObject { * The fallback DB index and options are to be used if the entity is not found * with the initial DB index, typically querying the master DB to avoid lag * - * @param integer $bitfield Bitfield of IDBAccessObject::READ_* constants + * @param int $bitfield Bitfield of IDBAccessObject::READ_* constants * @return array List of DB indexes and options in this order: * - DB_MASTER or DB_REPLICA constant for the initial query * - SELECT options array for the initial query diff --git a/includes/dao/IDBAccessObject.php b/includes/dao/IDBAccessObject.php index 5acf3ae371..e18a090bcb 100644 --- a/includes/dao/IDBAccessObject.php +++ b/includes/dao/IDBAccessObject.php @@ -54,16 +54,16 @@ */ interface IDBAccessObject { /** Constants for object loading bitfield flags (higher => 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/MWLBFactory.php b/includes/db/MWLBFactory.php index 464a91827f..5196ac2d64 100644 --- a/includes/db/MWLBFactory.php +++ b/includes/db/MWLBFactory.php @@ -149,7 +149,7 @@ abstract class MWLBFactory { } $cCache = ObjectCache::getLocalClusterInstance(); if ( $cCache->getQoS( $cCache::ATTR_EMULATION ) > $cCache::QOS_EMULATION_SQL ) { - $lbConf['memCache'] = $cCache; + $lbConf['memStash'] = $cCache; } $wCache = MediaWikiServices::getInstance()->getMainWANObjectCache(); if ( $wCache->getQoS( $wCache::ATTR_EMULATION ) > $wCache::QOS_EMULATION_SQL ) { diff --git a/includes/db/ORAResult.php b/includes/db/ORAResult.php index fbbc962e01..aafd386138 100644 --- a/includes/db/ORAResult.php +++ b/includes/db/ORAResult.php @@ -31,7 +31,7 @@ class ORAResult { } /** - * @param IDatabase $db + * @param IDatabase &$db * @param resource $stmt A valid OCI statement identifier * @param bool $unique */ diff --git a/includes/debug/logger/LegacyLogger.php b/includes/debug/logger/LegacyLogger.php index 6359509088..06ec5743fc 100644 --- a/includes/debug/logger/LegacyLogger.php +++ b/includes/debug/logger/LegacyLogger.php @@ -454,14 +454,14 @@ class LegacyLogger extends AbstractLogger { } /** - * Log to a file without getting "file size exceeded" signals. - * - * Can also log to UDP with the syntax udp://host:port/prefix. This will send - * lines to the specified port, prefixed by the specified prefix and a space. - * - * @param string $text - * @param string $file Filename - */ + * Log to a file without getting "file size exceeded" signals. + * + * Can also log to UDP with the syntax udp://host:port/prefix. This will send + * lines to the specified port, prefixed by the specified prefix and a space. + * + * @param string $text + * @param string $file Filename + */ public static function emit( $text, $file ) { if ( substr( $file, 0, 4 ) == 'udp:' ) { $transport = UDPTransport::newFromString( $file ); diff --git a/includes/debug/logger/monolog/BufferHandler.php b/includes/debug/logger/monolog/BufferHandler.php index 331b718c18..650d01274b 100644 --- a/includes/debug/logger/monolog/BufferHandler.php +++ b/includes/debug/logger/monolog/BufferHandler.php @@ -34,7 +34,7 @@ use Monolog\Handler\BufferHandler as BaseBufferHandler; */ class BufferHandler extends BaseBufferHandler { /** - * {@inheritDoc} + * @inheritDoc */ public function handle( array $record ) { if ( !$this->initialized ) { diff --git a/includes/debug/logger/monolog/KafkaHandler.php b/includes/debug/logger/monolog/KafkaHandler.php index 6670fe932d..8e7113164a 100644 --- a/includes/debug/logger/monolog/KafkaHandler.php +++ b/includes/debug/logger/monolog/KafkaHandler.php @@ -128,7 +128,7 @@ class KafkaHandler extends AbstractProcessingHandler { } /** - * {@inheritDoc} + * @inheritDoc */ protected function write( array $record ) { if ( $record['formatted'] !== null ) { @@ -138,7 +138,7 @@ class KafkaHandler extends AbstractProcessingHandler { } /** - * {@inheritDoc} + * @inheritDoc */ public function handleBatch( array $batch ) { $channels = []; diff --git a/includes/debug/logger/monolog/LineFormatter.php b/includes/debug/logger/monolog/LineFormatter.php index 5a7ddb1ec5..cdc4da3aa0 100644 --- a/includes/debug/logger/monolog/LineFormatter.php +++ b/includes/debug/logger/monolog/LineFormatter.php @@ -60,7 +60,7 @@ class LineFormatter extends MonologLineFormatter { } /** - * {@inheritdoc} + * @inheritDoc */ public function format( array $record ) { // Drop the 'private' flag from the context 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..40069f33c0 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; @@ -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..18a87e8bf2 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 diff --git a/includes/deferred/SiteStatsUpdate.php b/includes/deferred/SiteStatsUpdate.php index 8c38d8b0ca..2f074ba2d3 100644 --- a/includes/deferred/SiteStatsUpdate.php +++ b/includes/deferred/SiteStatsUpdate.php @@ -189,7 +189,7 @@ class SiteStatsUpdate implements DeferrableUpdate, MergeableUpdate { } /** - * @param string $sql + * @param string &$sql * @param string $field * @param int $delta */ diff --git a/includes/deferred/WANCacheReapUpdate.php b/includes/deferred/WANCacheReapUpdate.php index b12af19655..cbeb1fc77c 100644 --- a/includes/deferred/WANCacheReapUpdate.php +++ b/includes/deferred/WANCacheReapUpdate.php @@ -104,7 +104,13 @@ class WANCacheReapUpdate implements DeferrableUpdate { /** @var WikiPage[]|LocalFile[]|User[] $entities */ $entities = []; - $entities[] = WikiPage::factory( Title::newFromTitleValue( $t ) ); + // You can't create a WikiPage for special pages (-1) or other virtual + // namespaces, but special pages do appear in RC sometimes, e.g. for logs + // of AbuseFilter filter changes. + if ( $t->getNamespace() >= 0 ) { + $entities[] = WikiPage::factory( Title::newFromTitleValue( $t ) ); + } + if ( $t->inNamespace( NS_FILE ) ) { $entities[] = wfLocalFile( $t->getText() ); } diff --git a/includes/diff/DiffFormatter.php b/includes/diff/DiffFormatter.php index 6231c78ea7..07124c02ce 100644 --- a/includes/diff/DiffFormatter.php +++ b/includes/diff/DiffFormatter.php @@ -125,7 +125,7 @@ abstract class DiffFormatter { * @param int $xlen * @param int $ybeg * @param int $ylen - * @param array $edits + * @param array &$edits * * @throws MWException If the edit type is not known. */ diff --git a/includes/diff/WordLevelDiff.php b/includes/diff/WordLevelDiff.php index 9c9b1c9c57..0b318bdb39 100644 --- a/includes/diff/WordLevelDiff.php +++ b/includes/diff/WordLevelDiff.php @@ -33,7 +33,7 @@ use MediaWiki\Diff\WordAccumulator; */ class WordLevelDiff extends \Diff { /** - * @inheritdoc + * @inheritDoc */ protected $bailoutComplexity = 40000000; // Roughly 6K x 6K words changed diff --git a/includes/exception/MWExceptionHandler.php b/includes/exception/MWExceptionHandler.php index a2867a1879..bf232e9799 100644 --- a/includes/exception/MWExceptionHandler.php +++ b/includes/exception/MWExceptionHandler.php @@ -616,7 +616,7 @@ TXT; * @param ErrorException $e * @param string $channel * @param string $level - */ + */ protected static function logError( ErrorException $e, $channel, $level = LogLevel::ERROR ) { 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/DumpFilter.php b/includes/export/DumpFilter.php index 5c27658af5..1349c54b95 100644 --- a/includes/export/DumpFilter.php +++ b/includes/export/DumpFilter.php @@ -42,7 +42,7 @@ class DumpFilter { protected $sendingThisPage; /** - * @param DumpOutput $sink + * @param DumpOutput &$sink */ function __construct( &$sink ) { $this->sink =& $sink; diff --git a/includes/export/DumpNamespaceFilter.php b/includes/export/DumpNamespaceFilter.php index c20e299ef7..2b71db00f2 100644 --- a/includes/export/DumpNamespaceFilter.php +++ b/includes/export/DumpNamespaceFilter.php @@ -34,7 +34,7 @@ class DumpNamespaceFilter extends DumpFilter { public $namespaces = []; /** - * @param DumpOutput $sink + * @param DumpOutput &$sink * @param array $param * @throws MWException */ diff --git a/includes/export/WikiExporter.php b/includes/export/WikiExporter.php index 943aa045f9..6e2a5a4f0c 100644 --- a/includes/export/WikiExporter.php +++ b/includes/export/WikiExporter.php @@ -106,7 +106,7 @@ class WikiExporter { * various row objects and XML output for filtering. Filters * can be chained or used as callbacks. * - * @param DumpOutput $sink + * @param DumpOutput &$sink */ public function setOutputSink( &$sink ) { $this->sink =& $sink; @@ -253,13 +253,14 @@ class WikiExporter { /** * @param string $cond + * @param bool $orderRevs * @throws MWException * @throws Exception */ 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 ) { @@ -276,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 ) { @@ -394,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/filebackend/filejournal/DBFileJournal.php b/includes/filebackend/filejournal/DBFileJournal.php index 42b36ffe9c..4269f91ef9 100644 --- a/includes/filebackend/filejournal/DBFileJournal.php +++ b/includes/filebackend/filejournal/DBFileJournal.php @@ -183,7 +183,7 @@ class DBFileJournal extends FileJournal { protected function getMasterDB() { if ( !$this->dbw ) { // Get a separate connection in autocommit mode - $lb = MediaWikiServices::getInstance()->getDBLoadBalancerFactory()->newMainLB(); + $lb = MediaWikiServices::getInstance()->getDBLoadBalancerFactory()->newMainLB(); $this->dbw = $lb->getConnection( DB_MASTER, [], $this->wiki ); $this->dbw->clearFlag( DBO_TRX ); } 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/FileRepo.php b/includes/filerepo/FileRepo.php index f89d96b218..5005280732 100644 --- a/includes/filerepo/FileRepo.php +++ b/includes/filerepo/FileRepo.php @@ -1602,9 +1602,15 @@ class FileRepo { $path = $this->resolveToStoragePath( $virtualUrl ); $params = [ 'src' => $path, 'headers' => $headers, 'options' => $optHeaders ]; + // T172851: HHVM does not flush the output properly, causing OOM + ob_start( null, 1048576 ); + ob_implicit_flush( true ); + $status = $this->newGood(); $status->merge( $this->backend->streamFile( $params ) ); + ob_end_flush(); + return $status; } 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/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 9aa2b186e5..460fe51e3f 100644 --- a/includes/filerepo/file/File.php +++ b/includes/filerepo/file/File.php @@ -355,7 +355,7 @@ abstract class File implements IDBAccessObject { return $this->url; } - /* + /** * Get short description URL for a files based on the page ID * * @return string|null @@ -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 ) { } diff --git a/includes/filerepo/file/LocalFile.php b/includes/filerepo/file/LocalFile.php index 33177d3f6f..904c932d58 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(); } /** @@ -1299,6 +1300,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 +1337,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 +1351,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 +1381,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 +1452,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(); @@ -2255,8 +2296,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 +2323,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 +2401,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 +2440,8 @@ class LocalFileDeleteBatch { } function doDBDeletes() { + global $wgUpdateCompatibleMetadata; + $dbw = $this->file->repo->getMasterDB(); list( $oldRels, $deleteCurrent ) = $this->getOldRels(); @@ -2369,6 +2455,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 +2628,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 +2717,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 +2734,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 +2770,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 +2778,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 +2837,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/filerepo/file/UnregisteredLocalFile.php b/includes/filerepo/file/UnregisteredLocalFile.php index b22f8cb34e..cdad5fcec8 100644 --- a/includes/filerepo/file/UnregisteredLocalFile.php +++ b/includes/filerepo/file/UnregisteredLocalFile.php @@ -171,8 +171,8 @@ class UnregisteredLocalFile extends File { } /** - * @return int - */ + * @return int + */ function getBitDepth() { $gis = $this->getImageSize( $this->getLocalRefPath() ); diff --git a/includes/gallery/TraditionalImageGallery.php b/includes/gallery/TraditionalImageGallery.php index a0059cea1f..7a520bcbd1 100644 --- a/includes/gallery/TraditionalImageGallery.php +++ b/includes/gallery/TraditionalImageGallery.php @@ -348,7 +348,7 @@ class TraditionalImageGallery extends ImageGalleryBase { * * Used by a subclass to insert extra high resolution images. * @param MediaTransformOutput $thumb The thumbnail - * @param array $imageParameters Array of options + * @param array &$imageParameters Array of options */ protected function adjustImageParameters( $thumb, &$imageParameters ) { } diff --git a/includes/htmlform/HTMLForm.php b/includes/htmlform/HTMLForm.php index 702c2ebc7a..465736bb06 100644 --- a/includes/htmlform/HTMLForm.php +++ b/includes/htmlform/HTMLForm.php @@ -271,7 +271,7 @@ class HTMLForm extends ContextSource { * Construct a HTMLForm object for given display type. May return a HTMLForm subclass. * * @param string $displayFormat - * @param mixed $arguments... Additional arguments to pass to the constructor. + * @param mixed $arguments,... Additional arguments to pass to the constructor. * @return HTMLForm */ public static function factory( $displayFormat/*, $arguments...*/ ) { @@ -450,7 +450,7 @@ class HTMLForm extends ContextSource { * @since 1.23 * * @param string $fieldname Name of the field - * @param array $descriptor Input Descriptor, as described above + * @param array &$descriptor Input Descriptor, as described above * * @throws MWException * @return string Name of a HTMLFormField subclass @@ -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/UploadSourceAdapter.php b/includes/import/UploadSourceAdapter.php index 1f49c8aaf5..ccacbe4a7c 100644 --- a/includes/import/UploadSourceAdapter.php +++ b/includes/import/UploadSourceAdapter.php @@ -57,7 +57,7 @@ class UploadSourceAdapter { * @param string $path * @param string $mode * @param array $options - * @param string $opened_path + * @param string &$opened_path * @return bool */ function stream_open( $path, $mode, $options, &$opened_path ) { diff --git a/includes/import/WikiImporter.php b/includes/import/WikiImporter.php index 63258cbcba..90660797f1 100644 --- a/includes/import/WikiImporter.php +++ b/includes/import/WikiImporter.php @@ -55,16 +55,12 @@ class WikiImporter { * @param Config $config * @throws Exception */ - function __construct( ImportSource $source, Config $config = null ) { + function __construct( ImportSource $source, Config $config ) { if ( !class_exists( 'XMLReader' ) ) { throw new Exception( 'Import requires PHP to have been compiled with libxml support' ); } $this->reader = new XMLReader(); - if ( !$config ) { - wfDeprecated( __METHOD__ . ' without a Config instance', '1.25' ); - $config = MediaWikiServices::getInstance()->getMainConfig(); - } $this->config = $config; if ( !in_array( 'uploadsource', stream_get_wrappers() ) ) { @@ -428,7 +424,7 @@ class WikiImporter { /** * Alternate per-revision callback, for debugging. - * @param WikiRevision $revision + * @param WikiRevision &$revision */ public function debugRevisionHandler( &$revision ) { $this->debug( "Got revision:" ); @@ -817,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; @@ -920,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..93a92ef8b5 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__ @@ -730,9 +730,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/CliInstaller.php b/includes/installer/CliInstaller.php index 6ac78c40bc..32d2634959 100644 --- a/includes/installer/CliInstaller.php +++ b/includes/installer/CliInstaller.php @@ -108,7 +108,7 @@ class CliInstaller extends Installer { } // Set up the default skins - $skins = $this->findExtensions( 'skins' ); + $skins = array_keys( $this->findExtensions( 'skins' ) ); $this->setVar( '_Skins', $skins ); if ( $skins ) { diff --git a/includes/installer/DatabaseUpdater.php b/includes/installer/DatabaseUpdater.php index 7b6ac5e19d..645fa8aa3d 100644 --- a/includes/installer/DatabaseUpdater.php +++ b/includes/installer/DatabaseUpdater.php @@ -106,7 +106,7 @@ abstract class DatabaseUpdater { protected $holdContentHandlerUseDB = true; /** - * @param Database $db To perform updates on + * @param Database &$db To perform updates on * @param bool $shared Whether to perform updates on shared tables * @param Maintenance $maintenance Maintenance object which created us */ @@ -940,10 +940,10 @@ abstract class DatabaseUpdater { * * @param string $table Name of the table to modify * @param string $patch Name of the patch file to apply - * @param string $fullpath Whether to treat $patch path as relative or not, defaults to false + * @param string|bool $fullpath Whether to treat $patch path as relative or not, defaults to false * @return bool False if this was skipped because of schema changes being skipped */ - public function modifyTable( $table, $patch, $fullpath = false ) { + public function modifyTable( $table, $patch, $fullpath = false ) { if ( !$this->doTable( $table ) ) { return true; } @@ -1190,4 +1190,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 168d7edbe1..52be321f69 100644 --- a/includes/installer/Installer.php +++ b/includes/installer/Installer.php @@ -134,6 +134,7 @@ abstract class Installer { 'envCheckUploadsDirectory', 'envCheckLibicu', 'envCheckSuhosinMaxValueLength', + 'envCheck64Bit', ]; /** @@ -446,6 +447,7 @@ abstract class Installer { $this->parserTitle = Title::newFromText( 'Installer' ); $this->parserOptions = new ParserOptions( $wgUser ); // language will be wrong :( $this->parserOptions->setEditSection( false ); + $this->parserOptions->setWrapOutputClass( false ); // Don't try to access DB before user language is initialised $this->setParserLanguage( Language::factory( 'en' ) ); } @@ -1080,6 +1082,20 @@ abstract class Installer { return true; } + /** + * Checks if we're running on 64 bit or not. 32 bit is becoming increasingly + * hard to support, so let's at least warn people. + * + * @return bool + */ + protected function envCheck64Bit() { + if ( PHP_INT_SIZE == 4 ) { + $this->showMessage( 'config-using-32bit' ); + } + + return true; + } + /** * Convert a hex string representing a Unicode code point to that code point. * @param string $c @@ -1339,7 +1355,7 @@ abstract class Installer { * Reasonable values for $directory include 'extensions' (the default) and 'skins'. * * @param string $directory Directory to search in - * @return array + * @return array [ $extName => [ 'screenshots' => [ '...' ] ] */ public function findExtensions( $directory = 'extensions' ) { if ( $this->getVar( 'IP' ) === null ) { @@ -1352,7 +1368,7 @@ abstract class Installer { } // extensions -> extension.json, skins -> skin.json - $jsonFile = substr( $directory, 0, strlen( $directory ) -1 ) . '.json'; + $jsonFile = substr( $directory, 0, strlen( $directory ) - 1 ) . '.json'; $dh = opendir( $extDir ); $exts = []; @@ -1361,11 +1377,19 @@ abstract class Installer { continue; } if ( file_exists( "$extDir/$file/$jsonFile" ) || file_exists( "$extDir/$file/$file.php" ) ) { - $exts[] = $file; + // Extension exists. Now see if there are screenshots + $exts[$file] = []; + if ( is_dir( "$extDir/$file/screenshots" ) ) { + $paths = glob( "$extDir/$file/screenshots/*.png" ); + foreach ( $paths as $path ) { + $exts[$file]['screenshots'][] = str_replace( $extDir, "../$directory", $path ); + } + + } } } closedir( $dh ); - natcasesort( $exts ); + uksort( $exts, 'strnatcasecmp' ); return $exts; } diff --git a/includes/installer/MysqlUpdater.php b/includes/installer/MysqlUpdater.php index b4ae1dd940..c5919749aa 100644 --- a/includes/installer/MysqlUpdater.php +++ b/includes/installer/MysqlUpdater.php @@ -304,6 +304,30 @@ 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' ], ]; } 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/SqliteInstaller.php b/includes/installer/SqliteInstaller.php index 0f639badd8..d60d801bed 100644 --- a/includes/installer/SqliteInstaller.php +++ b/includes/installer/SqliteInstaller.php @@ -267,8 +267,8 @@ EOT; } /** - * @param $dir - * @param $db + * @param string $dir + * @param string $db * @return Status */ protected function makeStubDBFile( $dir, $db ) { @@ -296,7 +296,7 @@ EOT; } /** - * @param Status $status + * @param Status &$status * @return Status */ public function setupSearchIndex( &$status ) { diff --git a/includes/installer/SqliteUpdater.php b/includes/installer/SqliteUpdater.php index 46e3e7e2fa..e79dcb189c 100644 --- a/includes/installer/SqliteUpdater.php +++ b/includes/installer/SqliteUpdater.php @@ -168,6 +168,30 @@ 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' ], ]; } diff --git a/includes/installer/WebInstallerOptions.php b/includes/installer/WebInstallerOptions.php index 0c01b6457b..07378ab32e 100644 --- a/includes/installer/WebInstallerOptions.php +++ b/includes/installer/WebInstallerOptions.php @@ -107,7 +107,7 @@ class WebInstallerOptions extends WebInstallerPage { $skins = $this->parent->findExtensions( 'skins' ); $skinHtml = $this->getFieldsetStart( 'config-skins' ); - $skinNames = array_map( 'strtolower', $skins ); + $skinNames = array_map( 'strtolower', array_keys( $skins ) ); $chosenSkinName = $this->getVar( 'wgDefaultSkin', $this->parent->getDefaultSkin( $skinNames ) ); if ( $skins ) { @@ -118,12 +118,17 @@ class WebInstallerOptions extends WebInstallerPage { 'value' => $chosenSkinName, ] ); - foreach ( $skins as $skin ) { + foreach ( $skins as $skin => $info ) { + if ( isset( $info['screenshots'] ) ) { + $screenshotText = $this->makeScreenshotsLink( $skin, $info['screenshots'] ); + } else { + $screenshotText = htmlspecialchars( $skin ); + } $skinHtml .= '
' . $this->parent->getCheckBox( [ 'var' => "skin-$skin", - 'rawtext' => $skin, + 'rawtext' => $screenshotText, 'value' => $this->getVar( "skin-$skin", true ), // all found skins enabled by default ] ) . '
' . $radioButtons[strtolower( $skin )] . '
' . @@ -144,7 +149,7 @@ class WebInstallerOptions extends WebInstallerPage { if ( $extensions ) { $extHtml = $this->getFieldsetStart( 'config-extensions' ); - foreach ( $extensions as $ext ) { + foreach ( $extensions as $ext => $info ) { $extHtml .= $this->parent->getCheckBox( [ 'var' => "ext-$ext", 'rawtext' => $ext, @@ -246,6 +251,31 @@ class WebInstallerOptions extends WebInstallerPage { return null; } + private function makeScreenshotsLink( $name, $screenshots ) { + global $wgLang; + if ( count( $screenshots ) > 1 ) { + $links = []; + $counter = 1; + foreach ( $screenshots as $shot ) { + $links[] = Html::element( + 'a', + [ 'href' => $shot ], + $wgLang->formatNum( $counter++ ) + ); + } + return wfMessage( 'config-skins-screenshots' ) + ->rawParams( $name, $wgLang->commaList( $links ) ) + ->escaped(); + } else { + $link = Html::element( + 'a', + [ 'href' => $screenshots[0] ], + wfMessage( 'config-screenshot' )->text() + ); + return wfMessage( 'config-skins-screenshot', $name )->rawParams( $link )->escaped(); + } + } + /** * @return string */ @@ -345,7 +375,7 @@ class WebInstallerOptions extends WebInstallerPage { * @return bool */ public function submitSkins() { - $skins = $this->parent->findExtensions( 'skins' ); + $skins = array_keys( $this->parent->findExtensions( 'skins' ) ); $this->parent->setVar( '_Skins', $skins ); if ( $skins ) { @@ -398,7 +428,7 @@ class WebInstallerOptions extends WebInstallerPage { $this->setVar( 'wgRightsIcon', '' ); } - $skinsAvailable = $this->parent->findExtensions( 'skins' ); + $skinsAvailable = array_keys( $this->parent->findExtensions( 'skins' ) ); $skinsToInstall = []; foreach ( $skinsAvailable as $skin ) { $this->parent->setVarsFromRequest( [ "skin-$skin" ] ); @@ -419,7 +449,7 @@ class WebInstallerOptions extends WebInstallerPage { $retVal = false; } - $extsAvailable = $this->parent->findExtensions(); + $extsAvailable = array_keys( $this->parent->findExtensions() ); $extsToInstall = []; foreach ( $extsAvailable as $ext ) { $this->parent->setVarsFromRequest( [ "ext-$ext" ] ); diff --git a/includes/installer/i18n/ar.json b/includes/installer/i18n/ar.json index 8ba3cef6a4..69d1fcf8a7 100644 --- a/includes/installer/i18n/ar.json +++ b/includes/installer/i18n/ar.json @@ -114,7 +114,7 @@ "config-postgres-old": "PostgreSQL $1 أو لاحق مطلوب. لديك $2.", "config-mssql-old": "خادم Microsoft SQL $1 أو لاحق مطلوب. لديك $2.", "config-sqlite-mkdir-error": "خطأ في إنشاء دليل البيانات \"$1\". تحقق من الموقع وحاول مرة أخرى.", - "config-sqlite-connection-error": "1$.\nتحقق من اسم دليل البيانات وقواعد البيانات أدناه وحاول مرة أخرى.", + "config-sqlite-connection-error": "$1.\nتحقق من اسم دليل البيانات وقواعد البيانات أدناه وحاول مرة أخرى.", "config-sqlite-readonly": "الملف $1 غير قابل للكتابة.", "config-sqlite-cant-create-db": "لا يمكن إنشاء ملف قاعدة البيانات $1.", "config-can-upgrade": "هناك جداول ميدياويكي في قاعدة البيانات هذه. للارتقاء بها إلى ميدياويكي $1; انقر على متابعة.", diff --git a/includes/installer/i18n/be-tarask.json b/includes/installer/i18n/be-tarask.json index 1335b9c528..b427c19566 100644 --- a/includes/installer/i18n/be-tarask.json +++ b/includes/installer/i18n/be-tarask.json @@ -83,6 +83,7 @@ "config-no-cli-uploads-check": "'''Папярэджаньне:''' Вашая дырэкторыя для загрузак па змоўчваньні ($1), не правераная на ўразьлівасьць да выкананьня адвольных скрыптоў падчас усталяваньня CLI.\n.", "config-brokenlibxml": "У Вашай сыстэме ўсталяваныя PHP і libxml2 зь несумяшчальнымі вэрсіямі, што можа прывесьці да пашкоджаньня зьвестак MediaWiki і іншых вэб-дастасаваньняў.\nАбнавіце libxml2 да вэрсіі 2.7.3 ці больш позьняй ([https://bugs.php.net/bug.php?id=45996 паведамленьне пра памылку на сайце PHP]).\nУсталяваньне перарванае.", "config-suhosin-max-value-length": "Suhosin усталяваны і абмяжоўвае даўжыню парамэтру GET да $1 {{PLURAL:$1|1=байта|байтаў}}.\nResourceLoader, складнік MediaWiki, будзе абходзіць гэтае абмежаваньне, што адаб’ецца на прадукцыйнасьці.\nКалі магчыма, варта ўсталяваць у php.ini значэньне suhosin.get.max_value_length роўным 1024 ці больш, а таксама вызначыць тое ж значэньне для $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Калі Вы карыстаецеся shared-хостынгам, Ваш хостынг-правайдэр мусіць даць Вам слушнае імя хоста базы зьвестак у сваёй дакумэнтацыі.\n\nКалі Вы усталёўваеце сэрвэр Windows з выкарыстаньнем MySQL, выкарыстаньне «localhost» можа не працаваць для назвы сэрвэра. У гэтым выпадку паспрабуйце пазначыць «127.0.0.1» для лякальнага IP-адраса.\n\nКалі Вы выкарыстоўваеце PostgreSQL, пакіньце поле пустым, каб далучыцца праз Unix-сокет.", @@ -316,6 +317,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/bn.json b/includes/installer/i18n/bn.json index 34efde4bc5..dc423a647e 100644 --- a/includes/installer/i18n/bn.json +++ b/includes/installer/i18n/bn.json @@ -141,6 +141,8 @@ "config-install-mainpage-exists": "প্রধান পাতা ইতিমধ্যেই বিদ্যমান, এডিয়ে যাওয়া হচ্ছে", "config-help": "সাহায্য", "config-help-tooltip": "প্রসারিত করতে ক্লিক করুন", + "config-skins-screenshots": "$1 (স্ক্রিনশট: $2)", + "config-screenshot": "স্ক্রিনশট", "mainpagetext": "মিডিয়াউইকি ইনস্টল করা হয়েছে।", "mainpagedocfooter": "কীভাবে উইকি সফটওয়্যারটি ব্যবহারকার করবেন, তা জানতে [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents ব্যবহারকারী সহায়িকা] দেখুন।\n\n== কোথা থেকে শুরু করবেন ==\n\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings কনফিগারেশন সেটিং তালিকা]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ প্রশ্নোত্তরে মিডিয়াউইকি]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce মিডিয়াউইকি মুক্তির মেইলিং লিস্ট]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources আপনার ভাষার জন্য মিডিয়াউইকি স্থানীয়করণ করুন]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam আপনার উইকিতে স্প্যামের সাথে লড়াই করার উপায় সম্পর্কে জানুন]" } diff --git a/includes/installer/i18n/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/de.json b/includes/installer/i18n/de.json index 3babc3f851..ca649dcab5 100644 --- a/includes/installer/i18n/de.json +++ b/includes/installer/i18n/de.json @@ -92,6 +92,7 @@ "config-no-cli-uploads-check": "'''Warnung''': Das Standardverzeichnis für hochgeladene Dateien ($1) wird, während der Installation über die Kommandozeile, nicht auf Sicherheitsanfälligkeiten hinsichtlich willkürlicher Skriptausführungen geprüft.", "config-brokenlibxml": "Das System nutzt eine Kombination aus PHP- und libxml2-Versionen, die fehleranfällig ist und versteckte Datenfehler bei MediaWiki und anderen Webanwendungen verursachen kann.\nAktualisiere auf libxml2 2.7.3 oder später, um das Problem zu lösen. Installationsabbruch ([https://bugs.php.net/bug.php?id=45996 siehe hierzu die Fehlermeldung bei PHP]).", "config-suhosin-max-value-length": "Suhosin ist installiert und beschränkt die Länge des GET-Parameters auf $1 Bytes.\nDer ResouceLoader von MediaWiki wird zwar unter diesen Bedingungen funktionieren, allerdings nur mit verminderter Leistungsfähigkeit.\nSofern möglich, sollte der Parameter suhosin.get.max_value_length in der Datei php.ini auf 1024 oder höher festgelegt werden.\nGleichzeitig muss der Parameter $wgResourceLoaderMaxQueryLength in der Datei LocalSettings.php auf den selben Wert eingestellt werden.", + "config-using-32bit": "Warnung: Es scheint, als ob dein System mit 32-Bit-Ganzzahlen läuft. Dies wird [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:32-bit nicht empfohlen].", "config-db-type": "Datenbanksystem:", "config-db-host": "Datenbankserver:", "config-db-host-help": "Sofern sich die Datenbank auf einem anderen Server befindet, ist hier der Servername oder die entsprechende IP-Adresse anzugeben.\n\nSofern ein gemeinschaftlich genutzter Server verwendet wird, sollte der Hoster den zutreffenden Servernamen in seiner Dokumentation angegeben haben.\n\nSofern auf einem Windows-Server installiert und MySQL genutzt wird, funktioniert der Servername „localhost“ voraussichtlich nicht. Wenn nicht, sollte „127.0.0.1“ oder die lokale IP-Adresse angegeben werden.\n\nSofern PostgresQL genutzt wird, muss dieses Feld leer gelassen werden, um über ein Unix-Socket zu verbinden.", @@ -325,6 +326,8 @@ "config-help-tooltip": "Zum Expandieren klicken", "config-nofile": "Die Datei „$1“ konnte nicht gefunden werden. Wurde sie gelöscht?", "config-extension-link": "Wusstest du, dass dein Wiki die Nutzung von [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions Erweiterungen] unterstützt?\n\nDu kannst die [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category Erweiterungen nach Kategorie] anzeigen oder die [https://www.mediawiki.org/wiki/Extension_Matrix Erweiterungs-Matrix] aufrufen, um eine vollständige Liste der Erweiterungen zu sehen.", + "config-skins-screenshots": "$1 (Bildschirmfotos: $2)", + "config-screenshot": "Bildschirmfoto", "mainpagetext": "MediaWiki wurde installiert.", "mainpagedocfooter": "Hilfe zur Benutzung und Konfiguration der Wiki-Software findest du im [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Benutzerhandbuch].\n\n== Starthilfen ==\n\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Liste der Konfigurationsvariablen]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki-FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailingliste neuer MediaWiki-Versionen]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Übersetze MediaWiki für deine Sprache]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Erfahre, wie du Spam auf deinem Wiki bekämpfen kannst]" } 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/en.json b/includes/installer/i18n/en.json index db92652d93..6319b76da7 100644 --- a/includes/installer/i18n/en.json +++ b/includes/installer/i18n/en.json @@ -75,6 +75,7 @@ "config-no-cli-uploads-check": "Warning: Your default directory for uploads ($1) is not checked for vulnerability\nto arbitrary script execution during the CLI install.", "config-brokenlibxml": "Your system has a combination of PHP and libxml2 versions that is buggy and can cause hidden data corruption in MediaWiki and other web applications.\nUpgrade to libxml2 2.7.3 or later ([https://bugs.php.net/bug.php?id=45996 bug filed with PHP]).\nInstallation aborted.", "config-suhosin-max-value-length": "Suhosin is installed and limits the GET parameter length to $1 bytes.\nMediaWiki's ResourceLoader component will work around this limit, but that will degrade performance.\nIf at all possible, you should set suhosin.get.max_value_length to 1024 or higher in php.ini, and set $wgResourceLoaderMaxQueryLength to the same value in LocalSettings.php.", + "config-using-32bit": "Warning: your system appears to be running with 32-bit integers. This is [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:32-bit not advised].", "config-db-type": "Database type:", "config-db-host": "Database host:", "config-db-host-help": "If your database server is on different server, enter the host name or IP address here.\n\nIf you are using shared web hosting, your hosting provider should give you the correct host name in their documentation.\n\nIf you are installing on a Windows server and using MySQL, using \"localhost\" may not work for the server name. If it does not, try \"127.0.0.1\" for the local IP address.\n\nIf you are using PostgreSQL, leave this field blank to connect via a Unix socket.", @@ -308,6 +309,9 @@ "config-help-tooltip": "click to expand", "config-nofile": "File \"$1\" could not be found. Has it been deleted?", "config-extension-link": "Did you know that your wiki supports [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions extensions]?\n\nYou can browse [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category extensions by category] or the [https://www.mediawiki.org/wiki/Extension_Matrix Extension Matrix] to see the full list of extensions.", + "config-skins-screenshots": "$1 (screenshots: $2)", + "config-skins-screenshot": "$1 ($2)", + "config-screenshot": "screenshot", "mainpagetext": "MediaWiki has been installed.", "mainpagedocfooter": "Consult the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents User's Guide] for information on using the wiki software.\n\n== Getting started ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]" } diff --git a/includes/installer/i18n/es.json b/includes/installer/i18n/es.json index 279e26a8e5..85b23fe05f 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.", @@ -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/fa.json b/includes/installer/i18n/fa.json index 6282ca1bd2..97a09a3e9c 100644 --- a/includes/installer/i18n/fa.json +++ b/includes/installer/i18n/fa.json @@ -91,6 +91,7 @@ "config-no-cli-uploads-check": "'''هشدار:''' فهرست پیش‌فرض ارسال‌های شما ($1) برای آسیب‌پذیری اجرای متن دلخواه در طول نصب سی‌ال آی بررسی نشده‌است.", "config-brokenlibxml": "دستگاه شما دارای تلفیقی از نسخه‌های پی‌اچ‌پی و لیبکسمل۲ است که ناقص است و می‌تواند دلیل از بین رفتن اطلاعات مخفی در مدیاویکی و دیگر برنامه‌های کاربردی شبکه باشد.\nارتقاء به لیبکسمل۲ ۲.۷.۳ یا بالاتر ([https://bugs.php.net/bug.php?id=45996 bug filed with PHP]) ارتفاء دهید.\nنصب شکست خورد ماند.", "config-suhosin-max-value-length": "سوهُسین نصب شده‌است و پارامتر جت length را به $1 بایت محدود می‌کند.\n قسمت بارکنندهٔ منبع مدیاویکی پیرامون این محدوده کار خواهد‌کرد، اما عملکرد آن را پایین می‌آورد. اگر به هیچ وجه ممکن نیست، باید suhosin.get.max_value_length را به ۱۰۲۴ یا بالاتر در php.ini تنظیم کنید، و \n$wgResourceLoaderMaxQueryLength را به مقدار مشابه در LocalSettings.php تنظیم کنید.", + "config-using-32bit": "هشدار: سیستم شما به‌نظر می‌آید با اعداد صحیح ۳۲ بیت اجرا شده باشد. [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:32-bit توصیه نمی‌شود].", "config-db-type": "نوع پایگاه اطلاعات:", "config-db-host": "میزبان پایگاه اطلاعات:", "config-db-host-help": "اگر سرور پایگاه اطلاعاتی شما در سرور دیگری است، نام گروه و آدرس آی‌پی را اینجا وارد کنید.\nاگر از گروه شبکهٔ اشتراک گذاری استفاده می‌کنید، تهیه‌کنندهٔ گروه‌تان باید نام گروه صحیح در اسنادومدارک را به شما بدهد.\nاگر در حال نصب یک سرور ویندوز هستید و از مای‌اس‌کیو‌ال استفاده می‌کنید، ممکن است استفاده از \"گروه داخلی\" برای نام سرور کار نکند.اگر کار نکرد، \"۱۲۷.۰.۰.۱\" را برای آدرس آی‌پی داخلی امتحان کنید.\nاگر از پستگِرِاس‌کیوال استفاده می‌کنید،برای اتصال از طریق یک سوکت یونیکس این زمینه را خالی رها کنید.", @@ -103,7 +104,7 @@ "config-db-account-oracle-warn": "برای نصب برنامهٔ اوراکل به عنوان پایگاه اطلاعاتی در بخش گذشته،سه سناریو پشتیبانی شده است:\nاگر مایل به ایجاد حساب پایگاه اطلاعاتی به عنوان بخشی از روند نصب هستید، لطفاً یک حساب با نقش اس‌وای‌اس‌دی‌بی‌ای به عنوان حساب پایگاه اطلاعاتی برای نصب تهیه کنید و اعتبارنامه‌های مطلوبی را برای حساب دردسترس شبکه تعیین کنید، به عبارتی دیگر یا می‌توانید حساب دردسترس شبکه را به طور دستی ایجاد کنید و تنها آن حساب را تهیه کنید (اگر مستلزم مجوزهایی برای ایجاد موضوعات طرح کلی باشد) یا دو حساب دیگر تهیه کنید،یکی با ایجاد مزایا و یک حساب محدود برای دسترسی شبکه.\nمتنی برای ایجاد یک حساب با مزایای لازم بنویسید که می‌تواند در فهرست\"نگهداری/برنامهٔ اوراکل\" این نصب یافت شود. به یاد داشته باشید که استفاده از یک حساب محدود،همهٔ قابلیت‌های نگهداری با حساب پیش‌فرض را غیرفعال خواهد کرد.", "config-db-install-account": "حساب کاربری برای نصب", "config-db-username": "نام کاربری پایگاه اطلاعات:", - "config-db-password": "گذرواژه پایگاه داده‌ها:", + "config-db-password": "گذرواژه پایگاه‌های داده:", "config-db-install-username": "نام کاربری را وارد کنید که برای اتصال به پایگاه اطلاعاتی در طول روند نصب استفاده خواهد‌شد.\nاین نام کاربری حساب مدیاویکی نیست; نام کاربری برای پایگاه اطلاعاتی شما است.", "config-db-install-password": "رمز عبوری را وارد کنید که برای اتصال به پایگاه اطلاعاتی در طول روند نصب استفاده خواهد‌شد.\nاین رمز عبور برای حساب مدیاویکی نیست;رمز عبور برای پایگاه اطلاعاتی شما است.", "config-db-install-help": "نام کاربری و رمز عبوری را وارد کنید که برای اتصال به پایگاه اطلاعاتی در طول روند نصب استفاده خواهد‌ٰشد.", @@ -321,6 +322,8 @@ "config-help-tooltip": "برای گسترش کلیک کنید", "config-nofile": "پروندهٔ «$1» یافت نشد. آیا حذف شده‌است؟", "config-extension-link": "آیا می‌دانستید که ویکی شما [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions extensions] را پشتیبانی می‌کند؟\nشما می‌توانید [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category extensions by category]", + "config-skins-screenshots": "$1 (تصاویر: $2)", + "config-screenshot": "تصویر", "mainpagetext": "'''مدیاویکی با موفقیت نصب شد.'''", "mainpagedocfooter": "از [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents راهنمای کاربری]\nبرای اطلاعات بیشتر در مورد به‌کارگیری نرم‌افزار ویکی استفاده کنید.\n\n== آغاز به کار ==\n\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings فهرست تنظیمات پیکربندی]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ پرسش‌های متداول مدیاویکی]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce فهرست ایمیلی نسخه‌های مدیاویکی]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources محلی‌سازی مدیاویکی به زبان شما]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam یادگیری روش‌های مقابله با هرزنگاری در ویکی]" } diff --git a/includes/installer/i18n/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/he.json b/includes/installer/i18n/he.json index 161c5db59e..7583455207 100644 --- a/includes/installer/i18n/he.json +++ b/includes/installer/i18n/he.json @@ -86,6 +86,7 @@ "config-no-cli-uploads-check": "'''אזהרה:''' תיקיית בררת המחדל להעלאות ($1) לא נבדקת לפגיעוּת להרצת תסריטים אקראיים בזמן התקנה דרך CLI.", "config-brokenlibxml": "במערכת שלך יש שילוב של גרסאות של PHP ושל libxml2 שחשוף לבאגים ויכול לגרום לעיוות נתונים נסתר במדיה־ויקי וביישומי רשת אחרים.\nיש לשדרג ל־libxml2 2.7.3 או גרסה חדשה יותר ([https://bugs.php.net/bug.php?id=45996 באג מתויק ב־PHP]).\nההתקנה נעצרה.", "config-suhosin-max-value-length": "מותקן פה Suhosin והוא מגביל את אורך פרמטר GET ל־$1 בתים. רכיב 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, תשאירו את השדה הזה ריק כדי להתחבר דרך שקע יוניקס.", @@ -316,6 +317,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 הרחבות לפי קטגוריה].", + "config-skins-screenshots": "$1 (צילומי מסך: $2)", + "config-screenshot": "צילום מסך", "mainpagetext": "תוכנת מדיה־ויקי הותקנה בהצלחה.", "mainpagedocfooter": "היעזרו ב[https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents מדריך למשתמש] למידע על שימוש בתוכנת הוויקי.\n\n== קישורים שימושיים ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings רשימת ההגדרות]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ שאלות ותשובות על מדיה־ויקי]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce רשימת התפוצה על השקת גרסאות]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources תרגום מדיה־ויקי לשפה שלך]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam איך להיאבק נגד ספאם באתר הוויקי שלך]" } diff --git a/includes/installer/i18n/hi.json b/includes/installer/i18n/hi.json index b44395030e..9863beb1a0 100644 --- a/includes/installer/i18n/hi.json +++ b/includes/installer/i18n/hi.json @@ -7,7 +7,8 @@ "संजीव कुमार", "Sahilrathod", "Shyamal", - "Sfic" + "Sfic", + "Sachinkatiyar" ] }, "config-desc": "साँचा लिए इंस्टॉलर", @@ -50,6 +51,7 @@ "config-apc": "[http://www.php.net/apc एपीसी] स्थापित है।", "config-apcu": "[http://www.php.net/apcu एपीसीयू] स्थापित है।", "config-wincache": "[http://www.iis.net/download/WinCacheForPhp विनकैश] स्थापित है।", + "config-using-32bit": "<विशेष>चेतावनी: आपका सिस्टम 32-बिट पूर्णांक के साथ चल रहा है यह [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:32-bit विवेचित नहीं है]।", "config-db-type": "डेटाबेस प्रकार:", "config-db-host": "डेटाबेस होस्ट:", "config-db-host-oracle": "डेटाबेस टीएनएस:", diff --git a/includes/installer/i18n/ko.json b/includes/installer/i18n/ko.json index f292ab353c..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을 사용하면 유닉스 소켓을 통해 연결되도록 입력란을 비워두세요.", @@ -319,6 +320,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 분류별 확장 기능]을 찾아보실 수 있습니다.", + "config-skins-screenshots": "$1 (스크린샷: $2)", + "config-screenshot": "스크린샷", "mainpagetext": "미디어위키가 설치되었습니다.", "mainpagedocfooter": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents 이곳]에서 위키 소프트웨어에 대한 정보를 얻을 수 있습니다.\n\n== 시작하기 ==\n\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings 설정하기 목록]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ 미디어위키 FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce 미디어위키 릴리스 메일링 리스트]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources 내 언어로 미디어위키 지역화]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam 당신의 위키에서 스팸에 대처하는 법을 배우세요]" } diff --git a/includes/installer/i18n/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/mk.json b/includes/installer/i18n/mk.json index 728a9a8708..d028a8c4d8 100644 --- a/includes/installer/i18n/mk.json +++ b/includes/installer/i18n/mk.json @@ -80,6 +80,7 @@ "config-no-cli-uploads-check": "'''Предупредување:''' Вашата основна папка за подигања ($1) не е проверена дали е подложна\nпроизволно извршување на скрипти во текот на воспоставката на посредникот на повикувачко ниво (CLI).", "config-brokenlibxml": "Вашиот систем има комбинација од PHP и libxml2 верзии и затоа има грешки и може да предизвика скриено расипување на податоците кај МедијаВики и други мрежни програми.\nНадградете го на libxml2 2.7.3 или нивни понови верзии! ([https://bugs.php.net/bug.php?id=45996 грешката е заведена во PHP]). Воспоставката е откажана.", "config-suhosin-max-value-length": "Suhosin е воспоставен и ја ограничува должината на параметарот GET на $1 бајти. Делот 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-не се препорачува].", "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-приклучок.", @@ -313,6 +314,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 по категории]", + "config-skins-screenshots": "$1 (екр. снимки: $2)", + "config-screenshot": "екранска снимка", "mainpagetext": "МедијаВики е успешно воспоставен.", "mainpagedocfooter": "Погледнете го [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Упатството за корисници] за подетални информации како се користи вики-програмот.\n\n==Од каде да почнете==\n* [https://meta.wikimedia.org/wiki/Manual:Configuration_settings Список на нагодувања]\n* [https://meta.wikimedia.org/wiki/Manual:FAQ ЧПП (често поставувани прашања) за МедијаВики].\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Поштенски список на МедијаВики за нови верзии]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Локализирајте го МедијаВики на вашиот јазик]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Дознајте како да се борите против спам на вашето вики]" } diff --git a/includes/installer/i18n/nb.json b/includes/installer/i18n/nb.json index b7a7289a8a..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\".", @@ -318,6 +319,8 @@ "config-help-tooltip": "klikk for å utvide", "config-nofile": "Filen \"$1\" ble ikke funnet. Kan den være blitt slettet?", "config-extension-link": "Visste du at wikien din kan brukes sammen med en mengde [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions utvidelser]?\n\nDu kan sjekke gjennom [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category utvidelser per kategori] eller [https://www.mediawiki.org/wiki/Extension_Matrix utvidelsesmatrisen] for å se den komplette listen av utvidelser.", + "config-skins-screenshots": "$1 (skjermbilder: $2)", + "config-screenshot": "skjermbilde", "mainpagetext": "MediaWiki har blitt installert.", "mainpagedocfooter": "Sjekk [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents brukerveiledningen] for å få informasjon om hvordan du bruker wiki-programvaren.\n\n==Hvordan komme igang==\n*[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Innstillingsliste]\n*[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Ofte stilte spørsmål om MediaWiki]\n*[https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki e-postliste]\n*[https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Tilpass MediaWiki for ditt språk]\n*[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Lær deg å beskytte deg mot spam på wikien din]" } diff --git a/includes/installer/i18n/nl.json b/includes/installer/i18n/nl.json index 2154e7e134..6185ef4c22 100644 --- a/includes/installer/i18n/nl.json +++ b/includes/installer/i18n/nl.json @@ -19,7 +19,9 @@ "Macofe", "Hex", "Mainframe98", - "Rcdeboer" + "Rcdeboer", + "Festina90", + "MarcoSwart" ] }, "config-desc": "Het installatieprogramma voor MediaWiki", @@ -95,6 +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": "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.", @@ -328,6 +331,8 @@ "config-help-tooltip": "klik om uit te vouwen", "config-nofile": "Het bestand \"$1\" is niet gevonden. Is het verwijderd?", "config-extension-link": "Weet u dat u [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions uitbreidingen] kunt gebruiken voor uw wiki?\n\nU kunt [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category uitbreidingen op categorie] bekijken of ga naar de [https://www.mediawiki.org/wiki/Extension_Matrix uitbreidingenmatrix] om de volledige lijst met uitbreidingen te bekijken.", + "config-skins-screenshots": "$1 (schermafbeeldingen: $2)", + "config-screenshot": "schermafbeelding", "mainpagetext": "De installatie van MediaWiki is geslaagd.", "mainpagedocfooter": "Raadpleeg de [https://meta.wikimedia.org/wiki/Special:MyLanguage/Help:Contents handleiding] voor informatie over het gebruik van de wikisoftware.\n\n== Meer hulp over MediaWiki ==\n\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lijst met instellingen]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Veelgestelde vragen (FAQ)]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailinglijst voor aankondigingen van nieuwe versies]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Maak MediaWiki beschikbaar in uw taal]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Leer hoe u spam kunt voorkomen op uw wiki]" } diff --git a/includes/installer/i18n/pt.json b/includes/installer/i18n/pt.json index f89252710f..a6ebd92a56 100644 --- a/includes/installer/i18n/pt.json +++ b/includes/installer/i18n/pt.json @@ -22,7 +22,7 @@ ] }, "config-desc": "O instalador do MediaWiki", - "config-title": "Instalação da MediaWiki $1", + "config-title": "Instalação do MediaWiki $1", "config-information": "Informação", "config-localsettings-upgrade": "Foi detetado um ficheiro LocalSettings.php.\nPara atualizar esta instalação, por favor introduza o valor de $wgUpgradeKey na caixa abaixo.\nEncontra este valor em LocalSettings.php.", "config-localsettings-cli-upgrade": "Foi detetado um ficheiro LocalSettings.php.\nPara atualizar esta instalação, execute o update.php, por favor", @@ -94,6 +94,7 @@ "config-no-cli-uploads-check": "Aviso: O diretório por omissão para carregamentos, $1, não é verificado para determinar se é vulnerável à execução de listas arbitrárias de comandos durante a instalação por CLI (\"Command-line Interface\").", "config-brokenlibxml": "O seu sistema tem uma combinação de versões do PHP e do libxml2 conhecida por ser problemática, podendo causar corrupção de dados no MediaWiki e noutras aplicações da Internet.\nAtualize para a versão 2.7.3 ou posterior do libxml2 ([https://bugs.php.net/bug.php?id=45996 incidência reportada no PHP]).\nInstalação cancelada.", "config-suhosin-max-value-length": "O Suhosin está instalado e limita o parâmetro GET length a $1 bytes.\nO componente ResourceLoader do MediaWiki consegue exceder este limite, mas prejudicando o desempenho.\nSe lhe for possível, deve atribuir ao parâmetro suhosin.get.max_value_length o valor 1024 ou maior no ficheiro php.ini, e definir o mesmo valor para $wgResourceLoaderMaxQueryLength no ficheiro LocalSettings.php.", + "config-using-32bit": "Aviso: o seu sistema parece estar a funcionar com inteiros de 32 bits. Isto [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:32-bit não é recomendado].", "config-db-type": "Tipo da base de dados:", "config-db-host": "Servidor da base de dados:", "config-db-host-help": "Se a base de dados estiver num servidor separado, introduza aqui o nome ou o endereço IP desse servidor.\n\nSe estiver a usar um servidor partilhado, o fornecedor do alojamento deve fornecer o nome do servidor na documentação.\n\nSe está a fazer a instalação num servidor Windows com MySQL, usar como nome do servidor \"localhost\" poderá não funcionar. Se não funcionar, tente usar \"127.0.0.1\" como endereço IP local.\n\nSe estiver a usar PostgreSQL, deixe este campo em branco para fazer a ligação através de um socket Unix.", @@ -326,7 +327,9 @@ "config-help": "ajuda", "config-help-tooltip": "clique para expandir", "config-nofile": "Não foi possível encontrar o ficheiro \"$1\". Terá sido apagado?", - "config-extension-link": "Sabia que a sua wiki suporta [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions extensões]?\n\nPode procurar [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category extensões por categoria].", - "mainpagetext": "MediaWiki instalado.", + "config-extension-link": "Sabia que a sua wiki suporta [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions extensões]?\n\nPode consultar as [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category extensões por categoria] ou a [https://www.mediawiki.org/wiki/Extension_Matrix Matriz de Extensões] para ver a lista completa de extensões.", + "config-skins-screenshots": "$1 (capturas de ecrã: $2)", + "config-screenshot": "captura de ecrã", + "mainpagetext": "O MediaWiki foi instalado.", "mainpagedocfooter": "Consulte a [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Ajuda do MediaWiki] para informações sobre o uso do software wiki.\n\n== Onde começar ==\n\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 Perguntas e respostas frequentes sobre o MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Subscreva a lista de divulgação de novas versões do MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Regionalize o MediaWiki para a sua língua]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Aprenda a combater spam na sua wiki]" } diff --git a/includes/installer/i18n/qqq.json b/includes/installer/i18n/qqq.json index 8d10b51f46..a5c679036f 100644 --- a/includes/installer/i18n/qqq.json +++ b/includes/installer/i18n/qqq.json @@ -18,7 +18,8 @@ "Umherirrender", "Waldir", "Jdforrester", - "Liuxinyu970226" + "Liuxinyu970226", + "Metalhead64" ] }, "config-desc": "Short description of the installer.", @@ -94,6 +95,7 @@ "config-no-cli-uploads-check": "CLI = [[w:Command-line interface|command-line interface]] (i.e. the installer runs as a command-line script, not using HTML interface via an internet browser)", "config-brokenlibxml": "Status message in the MediaWiki installer environment checks.", "config-suhosin-max-value-length": "{{doc-important|Do not translate \"length\", \"suhosin.get.max_value_length\", \"php.ini\", \"$wgResourceLoaderMaxQueryLength\" and \"LocalSettings.php\".}}\nMessage shown when PHP parameter suhosin.get.max_value_length is between 0 and 1023 (that max value is hard set in MediaWiki software).", + "config-using-32bit": "Warning message shown when installing on a 32-bit system.", "config-db-type": "Field label in the MediaWiki installer followed by possible database types.", "config-db-host": "Used as label.\n\nAlso used in {{msg-mw|Config-missing-db-host}}.", "config-db-host-help": "{{doc-singularthey}}", @@ -327,6 +329,9 @@ "config-help-tooltip": "Tooltip for the 'help' links ({{msg-mw|config-help}}), to make it clear they'll expand in place rather than open a new page", "config-nofile": "Used as failure message. Parameters:\n* $1 - filename", "config-extension-link": "Shown on last page of installation to inform about possible extensions.\n{{Identical|Did you know}}", + "config-skins-screenshots": "Radio button text, $1 is the skin name, and $2 is a list of links to screenshots of that skin", + "config-skins-screenshot": "Radio button text, $1 is the skin name, and $2 is a link to a screenshot of that skin, where the link text is {{msg-mw|config-screenshot}}.", + "config-screenshot": "Link text for the link in {{msg-mw|config-skins-screenshot}}\n{{Identical|Screenshot}}", "mainpagetext": "Along with {{msg-mw|mainpagedocfooter}}, the text you will see on the Main Page when your wiki is installed.", "mainpagedocfooter": "Along with {{msg-mw|mainpagetext}}, the text you will see on the Main Page when your wiki is installed.\nThis might be a good place to put information about {{GRAMMAR:}}. See [[{{NAMESPACE}}:{{BASEPAGENAME}}/fi]] for an example. For languages having grammatical distinctions and not having an appropriate {{GRAMMAR:}} software available, a suggestion to check and possibly amend the messages having {{SITENAME}} may be valuable. See [[{{NAMESPACE}}:{{BASEPAGENAME}}/ksh]] for an example." } diff --git a/includes/installer/i18n/ru.json b/includes/installer/i18n/ru.json index cdd13c226e..904560556f 100644 --- a/includes/installer/i18n/ru.json +++ b/includes/installer/i18n/ru.json @@ -100,6 +100,7 @@ "config-no-cli-uploads-check": "'''Предупреждение:''' каталог для загрузки по умолчанию ( $1 ) не проверялся на уязвимости\n на выполнение произвольного сценария во время установки 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 {{PLURAL:$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.", @@ -333,6 +334,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/Manual:FAQ/ru Часто задаваемые вопросы и ответы по 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/sv.json b/includes/installer/i18n/sv.json index 4f52403f37..a338387a64 100644 --- a/includes/installer/i18n/sv.json +++ b/includes/installer/i18n/sv.json @@ -85,6 +85,7 @@ "config-no-cli-uploads-check": "'''Varning:''' Din standardkatalog för uppladdningar ($1) har inte kontrollerats för sårbarhet från körning av godtyckliga skript under CLI-installationen.", "config-brokenlibxml": "Ditt system har en kombination av PHP och libxml2 som är buggigt och kan orsaka datakorruption i MediaWiki och andra webbprogram.\nUppgradera till libxml2 2.7.3 eller senare ([https//bugs.php.net/bug.php?id=45996 buggfil med PHP]).\nInstallationen avbröts.", "config-suhosin-max-value-length": "Suhosin är installerat och begränsar GET-parametern length till $1 bytes.\nMediaWikis ResourceLoader-komponent kommer att arbeta runt denna begränsning, men det kommer att försämra prestandan.\nOm möjligt bör du sätta suhosin.get.max_value_length till 1024 eller högre i php.ini, och sätta $wgResourceLoaderMaxQueryLength till samma värde som i LocalSettings.php.", + "config-using-32bit": "Varning: ditt system verkar vara en 32-bitarsversion. Detta [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:32-bit rekommenderas inte].", "config-db-type": "Databastyp:", "config-db-host": "Databasvärd:", "config-db-host-help": "Om din databasserver är på en annan server, ange då värdnamnet eller IP-adressen här.\n\nOm du använder ett delat webbhotell, bör din leverantör ge dig rätt värdnamn i deras dokumentation.\n\nOm du installerar på en Windowsserver och använder MySQL, kanske \"localhost\" inte fungerar för servernamnet. Om det inte gör det försök med \"127.0.0.1\" som den lokala IP-adressen.\n\nOm du använder PostgreSQL, lämna detta fält blankt för att ansluta via en Unix-socket.", @@ -315,6 +316,8 @@ "config-help-tooltip": "klicka för att expandera", "config-nofile": "Filen \"$1\" kunde inte hittas. Har den raderats?", "config-extension-link": "Visste du att din wiki stödjer [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions tillägg]?\n\nDu kan bläddra [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category tillägg efter kategori].", + "config-skins-screenshots": "$1 (skärmbilder: $2)", + "config-screenshot": "skärmbild", "mainpagetext": "MediaWiki har installerats utan problem.", "mainpagedocfooter": "Information om hur wiki-programvaran används finns i [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents användarguiden].\n\n== Att komma igång ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lista över konfigurationsinställningar]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce E-postlista för nya versioner av MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Lokalisera MediaWiki för ditt språk]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Läs om hur du bekämpar spam på din wiki]" } 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/zh-hans.json b/includes/installer/i18n/zh-hans.json index d0c0026a7c..fab5eef95a 100644 --- a/includes/installer/i18n/zh-hans.json +++ b/includes/installer/i18n/zh-hans.json @@ -98,6 +98,7 @@ "config-no-cli-uploads-check": "警告:在CLI安装过程中,没有对您的默认上传目录($1)进行执行任意脚本的漏洞检查。", "config-brokenlibxml": "您的系统安装的PHP和libxml2版本组合存在故障,并可能在MediaWiki和其他web应用程序中造成隐藏的数据损坏。请将libxml2升级到2.7.3或以上([https://bugs.php.net/bug.php?id=45996 PHP的故障报告])。安装已中断。", "config-suhosin-max-value-length": "Suhosin已经安装并将GET请求的参数长度限制在$1字节。MediaWiki的ResourceLoader部件可以在此限制下正常工作,但其性能会被降低。如果可能,请在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 不建议您]使用32位系统。", "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 socket来连接,请留空。", @@ -328,6 +329,8 @@ "config-help-tooltip": "单击展开", "config-nofile": "找不到文件“$1”。它是否已被删除?", "config-extension-link": "您是否知道您的wiki支持[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 用户指导]以获取使用本wiki软件的信息!\n\n== 入门 ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings MediaWiki配置设置列表]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ/zh-hans 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 了解如何在您的wiki上打击破坏]" } diff --git a/includes/jobqueue/JobQueueDB.php b/includes/jobqueue/JobQueueDB.php index b7cc133a75..b5f331b35f 100644 --- a/includes/jobqueue/JobQueueDB.php +++ b/includes/jobqueue/JobQueueDB.php @@ -184,15 +184,22 @@ class JobQueueDB extends JobQueue { * @return void */ protected function doBatchPush( array $jobs, $flags ) { - DeferredUpdates::addUpdate( - new AutoCommitUpdate( - $this->getMasterDB(), - __METHOD__, - function ( IDatabase $dbw, $fname ) use ( $jobs, $flags ) { - $this->doBatchPushInternal( $dbw, $jobs, $flags, $fname ); - } - ), - DeferredUpdates::PRESEND + $dbw = $this->getMasterDB(); + // In general, there will be two cases here: + // a) sqlite; DB connection is probably a regular round-aware handle. + // If the connection is busy with a transaction, then defer the job writes + // until right before the main round commit step. Any errors that bubble + // up will rollback the main commit round. + // b) mysql/postgres; DB connection is generally a separate CONN_TRX_AUTO handle. + // No transaction is active nor will be started by writes, so enqueue the jobs + // now so that any errors will show up immediately as the interface expects. Any + // errors that bubble up will rollback the main commit round. + $fname = __METHOD__; + $dbw->onTransactionPreCommitOrIdle( + function () use ( $dbw, $jobs, $flags, $fname ) { + $this->doBatchPushInternal( $dbw, $jobs, $flags, $fname ); + }, + $fname ); } @@ -771,7 +778,12 @@ class JobQueueDB extends JobQueue { ? $lbFactory->getExternalLB( $this->cluster ) : $lbFactory->getMainLB( $this->wiki ); - return $lb->getConnectionRef( $index, [], $this->wiki ); + return ( $lb->getServerType( $lb->getWriterIndex() ) !== 'sqlite' ) + // Keep a separate connection to avoid contention and deadlocks; + // However, SQLite has the opposite behavior due to DB-level locking. + ? $lb->getConnectionRef( $index, [], $this->wiki, $lb::CONN_TRX_AUTO ) + // Jobs insertion will be defered until the PRESEND stage to reduce contention. + : $lb->getConnectionRef( $index, [], $this->wiki ); } /** diff --git a/includes/jobqueue/JobQueueFederated.php b/includes/jobqueue/JobQueueFederated.php index 44721d9e8f..e74331113d 100644 --- a/includes/jobqueue/JobQueueFederated.php +++ b/includes/jobqueue/JobQueueFederated.php @@ -202,7 +202,7 @@ class JobQueueFederated extends JobQueue { /** * @param array $jobs - * @param HashRing $partitionRing + * @param HashRing &$partitionRing * @param int $flags * @throws JobQueueError * @return array List of Job object that could not be inserted diff --git a/includes/jobqueue/JobQueueGroup.php b/includes/jobqueue/JobQueueGroup.php index ef0ecb3008..addc7fc2e1 100644 --- a/includes/jobqueue/JobQueueGroup.php +++ b/includes/jobqueue/JobQueueGroup.php @@ -37,6 +37,8 @@ class JobQueueGroup { protected $wiki; /** @var string|bool Read only rationale (or false if r/w) */ protected $readOnlyReason; + /** @var bool Whether the wiki is not recognized in configuration */ + protected $invalidWiki = false; /** @var array Map of (bucket => (queue => JobQueue, types => list of types) */ protected $coalescedQueues; @@ -68,9 +70,17 @@ class JobQueueGroup { * @return JobQueueGroup */ public static function singleton( $wiki = false ) { + global $wgLocalDatabases; + $wiki = ( $wiki === false ) ? wfWikiID() : $wiki; + if ( !isset( self::$instances[$wiki] ) ) { self::$instances[$wiki] = new self( $wiki, wfConfiguredReadOnlyReason() ); + // Make sure jobs are not getting pushed to bogus wikis. This can confuse + // the job runner system into spawning endless RPC requests that fail (T171371). + if ( $wiki !== wfWikiID() && !in_array( $wiki, $wgLocalDatabases ) ) { + self::$instances[$wiki]->invalidWiki = true; + } } return self::$instances[$wiki]; @@ -121,6 +131,13 @@ class JobQueueGroup { public function push( $jobs ) { global $wgJobTypesExcludedFromDefaultQueue; + if ( $this->invalidWiki ) { + // Do not enqueue job that cannot be run (T171371) + $e = new LogicException( "Domain '{$this->wiki}' is not recognized." ); + MWExceptionHandler::logException( $e ); + return; + } + $jobs = is_array( $jobs ) ? $jobs : [ $jobs ]; if ( !count( $jobs ) ) { return; @@ -171,6 +188,11 @@ class JobQueueGroup { * @since 1.26 */ public function lazyPush( $jobs ) { + if ( $this->invalidWiki ) { + // Do not enqueue job that cannot be run (T171371) + throw new LogicException( "Domain '{$this->wiki}' is not recognized." ); + } + if ( PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg' ) { $this->push( $jobs ); return; diff --git a/includes/jobqueue/JobRunner.php b/includes/jobqueue/JobRunner.php index 49b7a459a6..db881d5eb9 100644 --- a/includes/jobqueue/JobRunner.php +++ b/includes/jobqueue/JobRunner.php @@ -281,7 +281,9 @@ class JobRunner implements LoggerAwareInterface { private function executeJob( Job $job, LBFactory $lbFactory, $stats, $popTime ) { $jType = $job->getType(); $msg = $job->toString() . " STARTING"; - $this->logger->debug( $msg ); + $this->logger->debug( $msg, [ + 'job_type' => $job->getType(), + ] ); $this->debugCallback( $msg ); // Run the job... @@ -339,12 +341,23 @@ class JobRunner implements LoggerAwareInterface { } if ( $status === false ) { + $msg = $job->toString() . " t={job_duration} error={job_error}"; + $this->logger->error( $msg, [ + 'job_type' => $job->getType(), + 'job_duration' => $timeMs, + 'job_error' => $error, + ] ); + $msg = $job->toString() . " t=$timeMs error={$error}"; - $this->logger->error( $msg ); $this->debugCallback( $msg ); } else { + $msg = $job->toString() . " t={job_duration} good"; + $this->logger->info( $msg, [ + 'job_type' => $job->getType(), + 'job_duration' => $timeMs, + ] ); + $msg = $job->toString() . " t=$timeMs good"; - $this->logger->info( $msg ); $this->debugCallback( $msg ); } @@ -488,9 +501,14 @@ class JobRunner implements LoggerAwareInterface { } $usedBytes = memory_get_usage(); if ( $maxBytes && $usedBytes >= 0.95 * $maxBytes ) { + $msg = "Detected excessive memory usage ({used_bytes}/{max_bytes})."; + $this->logger->error( $msg, [ + 'used_bytes' => $usedBytes, + 'max_bytes' => $maxBytes, + ] ); + $msg = "Detected excessive memory usage ($usedBytes/$maxBytes)."; $this->debugCallback( $msg ); - $this->logger->error( $msg ); return false; } @@ -552,8 +570,14 @@ class JobRunner implements LoggerAwareInterface { } $ms = intval( 1000 * $time ); + + $msg = $job->toString() . " COMMIT ENQUEUED [{job_commit_write_ms}ms of writes]"; + $this->logger->info( $msg, [ + 'job_type' => $job->getType(), + 'job_commit_write_ms' => $ms, + ] ); + $msg = $job->toString() . " COMMIT ENQUEUED [{$ms}ms of writes]"; - $this->logger->info( $msg ); $this->debugCallback( $msg ); // Wait for an exclusive lock to commit 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 02bb829e1a..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 ) { @@ -279,6 +279,10 @@ class RefreshLinksJob extends Job { InfoAction::invalidateCache( $title ); + // Commit any writes here in case this method is called in a loop. + // In that case, the scoped lock will fail to be acquired. + $lbFactory->commitAndWaitForReplication( __METHOD__, $ticket ); + return true; } @@ -297,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/ArrayUtils.php b/includes/libs/ArrayUtils.php index 2156bd7f1d..0413ea0d5a 100644 --- a/includes/libs/ArrayUtils.php +++ b/includes/libs/ArrayUtils.php @@ -39,7 +39,7 @@ class ArrayUtils { * justification for breaking compatibility with installations * compiled with ./configure --disable-hash. * - * @param array $array Array to sort + * @param array &$array Array to sort * @param string $key * @param string $separator A separator used to delimit the array elements and the * key. This can be chosen to provide backwards compatibility with 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/IEUrlExtension.php b/includes/libs/IEUrlExtension.php index e55bebc93a..2d1c58b66a 100644 --- a/includes/libs/IEUrlExtension.php +++ b/includes/libs/IEUrlExtension.php @@ -133,8 +133,8 @@ class IEUrlExtension { /** * Returns a variant of $url which will pass isUrlExtensionBad() but has the * same GET parameters, or false if it can't figure one out. - * @param $url - * @param $extWhitelist array + * @param string $url + * @param array $extWhitelist * @return bool|string */ public static function fixUrlForIE6( $url, $extWhitelist = [] ) { @@ -251,7 +251,7 @@ class IEUrlExtension { * or a specification in the style of a User-Agent header, such as * "Apache/1.3.34 (Unix) mod_ssl/2.8.25 OpenSSL/0.9.8a PHP/4.4.2" * - * @param $serverSoftware + * @param string $serverSoftware * @return bool */ public static function haveUndecodedRequestUri( $serverSoftware ) { 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/MemoizedCallable.php b/includes/libs/MemoizedCallable.php index 01adeab5fc..90c7a644c5 100644 --- a/includes/libs/MemoizedCallable.php +++ b/includes/libs/MemoizedCallable.php @@ -134,7 +134,7 @@ class MemoizedCallable { * * Like MemoizedCallable::invokeArgs(), but variadic. * - * @param mixed ...$params Parameters for memoized function or method. + * @param mixed $params,... Parameters for memoized function or method. * @return mixed The memoized callable's return value. */ public function invoke() { diff --git a/includes/libs/MultiHttpClient.php b/includes/libs/MultiHttpClient.php index 9d6b734c0e..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; @@ -275,7 +275,7 @@ class MultiHttpClient implements LoggerAwareInterface { } /** - * @param array $req HTTP request map + * @param array &$req HTTP request map * @param array $opts * - connTimeout : default connection timeout * - reqTimeout : default request timeout @@ -435,7 +435,7 @@ class MultiHttpClient implements LoggerAwareInterface { /** * Register a logger * - * @param LoggerInterface + * @param LoggerInterface $logger */ public function setLogger( LoggerInterface $logger ) { $this->logger = $logger; diff --git a/includes/libs/StatusValue.php b/includes/libs/StatusValue.php index e860ec491f..f9dcc1b52e 100644 --- a/includes/libs/StatusValue.php +++ b/includes/libs/StatusValue.php @@ -40,17 +40,22 @@ * @since 1.25 */ class StatusValue { + /** @var bool */ protected $ok = true; - /** @var array */ + + /** @var array[] */ protected $errors = []; /** @var mixed */ public $value; - /** @var array Map of (key => bool) to indicate success of each part of batch operations */ + + /** @var bool[] Map of (key => bool) to indicate success of each part of batch operations */ public $success = []; + /** @var int Counter for batch operations */ public $successCount = 0; + /** @var int Counter for batch operations */ public $failCount = 0; @@ -138,7 +143,7 @@ class StatusValue { * * Each error is a (message:string or MessageSpecifier,params:array) map * - * @return array + * @return array[] */ public function getErrors() { return $this->errors; @@ -230,7 +235,7 @@ class StatusValue { * - params: array list of parameters * * @param string $type - * @return array + * @return array[] */ public function getErrorsByType( $type ) { $result = []; diff --git a/includes/libs/composer/ComposerInstalled.php b/includes/libs/composer/ComposerInstalled.php index 9f15078c64..ef2b768d0b 100644 --- a/includes/libs/composer/ComposerInstalled.php +++ b/includes/libs/composer/ComposerInstalled.php @@ -28,7 +28,7 @@ class ComposerInstalled { 'type' => $installed['type'], 'licenses' => isset( $installed['license'] ) ? $installed['license'] : [], 'authors' => isset( $installed['authors'] ) ? $installed['authors'] : [], - 'description' => isset( $installed['description'] ) ? $installed['description']: '', + 'description' => isset( $installed['description'] ) ? $installed['description'] : '', ]; } diff --git a/includes/libs/composer/ComposerLock.php b/includes/libs/composer/ComposerLock.php index 818ccdf3a2..dc8bc035b2 100644 --- a/includes/libs/composer/ComposerLock.php +++ b/includes/libs/composer/ComposerLock.php @@ -28,7 +28,7 @@ class ComposerLock { 'type' => $installed['type'], 'licenses' => isset( $installed['license'] ) ? $installed['license'] : [], 'authors' => isset( $installed['authors'] ) ? $installed['authors'] : [], - 'description' => isset( $installed['description'] ) ? $installed['description']: '', + 'description' => isset( $installed['description'] ) ? $installed['description'] : '', ]; } diff --git a/includes/libs/filebackend/FileBackend.php b/includes/libs/filebackend/FileBackend.php index 6f5108149e..51308c1371 100644 --- a/includes/libs/filebackend/FileBackend.php +++ b/includes/libs/filebackend/FileBackend.php @@ -1591,7 +1591,7 @@ abstract class FileBackend implements LoggerAwareInterface { * - StatusValue::newGood() if this method is called without parameters * - StatusValue::newFatal() with all parameters to this method if passed in * - * @param ... string + * @param string $args,... * @return StatusValue */ final protected function newStatus() { 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 044e976bb0..eb72edc2ed 100644 --- a/includes/libs/filebackend/SwiftFileBackend.php +++ b/includes/libs/filebackend/SwiftFileBackend.php @@ -69,7 +69,7 @@ class SwiftFileBackend extends FileBackendStore { /** * @see FileBackendStore::__construct() - * Additional $config params include: + * @param array $config Params include: * - swiftAuthUrl : Swift authentication server URL * - swiftUser : Swift user used by MediaWiki (account:username) * - swiftKey : Swift authentication key for the above user @@ -828,7 +828,7 @@ class SwiftFileBackend extends FileBackendStore { * * @param string $fullCont Resolved container name * @param string $dir Resolved storage directory with no trailing slash - * @param string|null $after Resolved container relative path to list items after + * @param string|null &$after Resolved container relative path to list items after * @param int $limit Max number of items to list * @param array $params Parameters for getDirectoryList() * @return array List of container relative resolved paths of directories directly under $dir @@ -908,7 +908,7 @@ class SwiftFileBackend extends FileBackendStore { * * @param string $fullCont Resolved container name * @param string $dir Resolved storage directory with no trailing slash - * @param string|null $after Resolved container relative path of file to list items after + * @param string|null &$after Resolved container relative path of file to list items after * @param int $limit Max number of items to list * @param array $params Parameters for getDirectoryList() * @return array List of resolved container relative paths of files under $dir @@ -1888,7 +1888,7 @@ abstract class SwiftFileBackendList implements Iterator { * * @param string $container Resolved container name * @param string $dir Resolved path relative to container - * @param string $after + * @param string &$after * @param int $limit * @param array $params * @return Traversable|array diff --git a/includes/libs/filebackend/fileop/FileOp.php b/includes/libs/filebackend/fileop/FileOp.php index 30578fa5da..40af7aca78 100644 --- a/includes/libs/filebackend/fileop/FileOp.php +++ b/includes/libs/filebackend/fileop/FileOp.php @@ -247,7 +247,7 @@ abstract class FileOp { * This must update $predicates for each path that the op can change * except when a failing StatusValue object is returned. * - * @param array $predicates + * @param array &$predicates * @return StatusValue */ final public function precheck( array &$predicates ) { @@ -264,7 +264,7 @@ abstract class FileOp { } /** - * @param array $predicates + * @param array &$predicates * @return StatusValue */ protected function doPrecheck( array &$predicates ) { diff --git a/includes/libs/lockmanager/ScopedLock.php b/includes/libs/lockmanager/ScopedLock.php index e10606a8ce..2ad8ac87b5 100644 --- a/includes/libs/lockmanager/ScopedLock.php +++ b/includes/libs/lockmanager/ScopedLock.php @@ -85,7 +85,7 @@ class ScopedLock { * This is useful for early release of locks before function scope is destroyed. * This is the same as setting the lock object to null. * - * @param ScopedLock $lock + * @param ScopedLock &$lock * @since 1.21 */ public static function release( ScopedLock &$lock = null ) { diff --git a/includes/libs/mime/IEContentAnalyzer.php b/includes/libs/mime/IEContentAnalyzer.php index badcb2bced..dfc7c4b431 100644 --- a/includes/libs/mime/IEContentAnalyzer.php +++ b/includes/libs/mime/IEContentAnalyzer.php @@ -344,7 +344,7 @@ class IEContentAnalyzer { /** * Translate a MIME type from IE's idiosyncratic private types into * more commonly understood type strings - * @param $type + * @param string $type * @return string */ public function translateMimeType( $type ) { @@ -383,10 +383,10 @@ class IEContentAnalyzer { /** * Get the MIME type for a given named version - * @param $version - * @param $fileName - * @param $chunk - * @param $proposed + * @param string $version + * @param string $fileName + * @param string $chunk + * @param string $proposed * @return bool|string */ protected function getMimeTypeForVersion( $version, $fileName, $chunk, $proposed ) { @@ -553,8 +553,8 @@ class IEContentAnalyzer { /** * Check for text headers at the start of the chunk * Confirmed same in 5 and 7. - * @param $version - * @param $chunk + * @param string $version + * @param string $chunk * @return bool|string */ private function checkTextHeaders( $version, $chunk ) { @@ -579,8 +579,8 @@ class IEContentAnalyzer { /** * Check for binary headers at the start of the chunk * Confirmed same in 5 and 7. - * @param $version - * @param $chunk + * @param string $version + * @param string $chunk * @return bool|string */ private function checkBinaryHeaders( $version, $chunk ) { @@ -680,8 +680,8 @@ class IEContentAnalyzer { /** * Do heuristic checks on the bulk of the data sample. * Search for HTML tags. - * @param $version - * @param $chunk + * @param string $version + * @param string $chunk * @return array */ protected function sampleData( $version, $chunk ) { @@ -832,8 +832,8 @@ class IEContentAnalyzer { } /** - * @param $version - * @param $type + * @param string $version + * @param string|null $type * @return int|string */ protected function getDataFormat( $version, $type ) { diff --git a/includes/libs/mime/XmlTypeCheck.php b/includes/libs/mime/XmlTypeCheck.php index e48cf62346..ea7f9a6ca7 100644 --- a/includes/libs/mime/XmlTypeCheck.php +++ b/includes/libs/mime/XmlTypeCheck.php @@ -275,7 +275,7 @@ class XmlTypeCheck { /** * Get all of the attributes for an XMLReader's current node - * @param $r XMLReader + * @param XMLReader $r * @return array of attributes */ private function getAttributesArray( XMLReader $r ) { @@ -293,8 +293,8 @@ class XmlTypeCheck { } /** - * @param $name element or attribute name, maybe with a full or short prefix - * @param $namespaceURI the namespaceURI + * @param string $name element or attribute name, maybe with a full or short prefix + * @param string $namespaceURI the namespaceURI * @return string the name prefixed with namespaceURI */ private function expandNS( $name, $namespaceURI ) { @@ -307,8 +307,8 @@ class XmlTypeCheck { } /** - * @param $name - * @param $attribs + * @param string $name + * @param string $attribs */ private function elementOpen( $name, $attribs ) { $this->elementDataContext[] = [ $name, $attribs ]; @@ -338,7 +338,7 @@ class XmlTypeCheck { } /** - * @param $data + * @param string $data */ private function elementData( $data ) { // Collect any data here, and we'll run the callback in elementClose @@ -346,8 +346,8 @@ class XmlTypeCheck { } /** - * @param $target - * @param $data + * @param string $target + * @param string $data */ private function processingInstructionHandler( $target, $data ) { $callbackReturn = false; @@ -452,7 +452,7 @@ class XmlTypeCheck { * * If there is an error parsing the dtd, sets wellFormed to false. * - * @param $dtd string + * @param string $dtd * @return array Possibly containing keys publicid, systemid, type and internal. */ private function parseDTD( $dtd ) { diff --git a/includes/libs/objectcache/BagOStuff.php b/includes/libs/objectcache/BagOStuff.php index 7cd678b035..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 ); @@ -229,8 +229,8 @@ abstract class BagOStuff implements IExpiringStore, LoggerAwareInterface { * @note: This method is only needed if merge() uses mergeViaCas() * * @param string $key - * @param mixed $casToken - * @param integer $flags Bitfield of BagOStuff::READ_* constants [optional] + * @param mixed &$casToken + * @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 ) { @@ -747,7 +747,7 @@ abstract class BagOStuff implements IExpiringStore, LoggerAwareInterface { * Make a global cache key. * * @since 1.27 - * @param string ... Key component (variadic) + * @param string $keys,... Key component * @return string */ public function makeGlobalKey() { @@ -758,7 +758,7 @@ abstract class BagOStuff implements IExpiringStore, LoggerAwareInterface { * Make a cache key, scoped to this instance's keyspace. * * @since 1.27 - * @param string ... Key component (variadic) + * @param string $keys,... Key component * @return string */ public function makeKey() { @@ -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 d94578dff1..200ab7969c 100644 --- a/includes/libs/objectcache/MultiWriteBagOStuff.php +++ b/includes/libs/objectcache/MultiWriteBagOStuff.php @@ -171,10 +171,10 @@ 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 ... + * @param mixed $args,... * @return bool */ protected function doWrite( $count, $asyncWrites, $method /*, ... */ ) { diff --git a/includes/libs/objectcache/RESTBagOStuff.php b/includes/libs/objectcache/RESTBagOStuff.php index 730eed1e30..d3aa9f5cb1 100644 --- a/includes/libs/objectcache/RESTBagOStuff.php +++ b/includes/libs/objectcache/RESTBagOStuff.php @@ -56,8 +56,8 @@ class RESTBagOStuff extends BagOStuff { } /** - * @param string $key - * @param integer $flags Bitfield of BagOStuff::READ_* constants [optional] + * @param string $key + * @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 ) { @@ -82,7 +82,7 @@ class RESTBagOStuff extends BagOStuff { /** * Handle storage error * @param string $msg Error message - * @param int $rcode Error code from client + * @param int $rcode Error code from client * @param string $rerr Error message from client * @return false */ @@ -99,9 +99,9 @@ class RESTBagOStuff extends BagOStuff { * Set an item * * @param string $key - * @param mixed $value - * @param int $exptime Either an interval in seconds or a unix timestamp for expiry - * @param int $flags Bitfield of BagOStuff::WRITE_* constants + * @param mixed $value + * @param int $exptime Either an interval in seconds or a unix timestamp for expiry + * @param int $flags Bitfield of BagOStuff::WRITE_* constants * @return bool Success */ public function set( $key, $value, $exptime = 0, $flags = 0 ) { diff --git a/includes/libs/objectcache/WANObjectCache.php b/includes/libs/objectcache/WANObjectCache.php index ff7e91ac3e..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 @@ -240,7 +240,7 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface { * That method has cache slam avoiding features for hot/expensive keys. * * @param string $key Cache key - * @param mixed $curTTL Approximate TTL left on the key if present/tombstoned [returned] + * @param mixed &$curTTL Approximate TTL left on the key if present/tombstoned [returned] * @param array $checkKeys List of "check" keys * @param float &$asOf UNIX timestamp of cached value; null on failure [returned] * @return mixed Value of cache key or false on failure @@ -261,7 +261,7 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface { * @see WANObjectCache::get() * * @param array $keys List of cache keys - * @param array $curTTLs Map of (key => approximate TTL left) for existing keys [returned] + * @param array &$curTTLs Map of (key => approximate TTL left) for existing keys [returned] * @param array $checkKeys List of check keys to apply to all $keys. May also apply "check" * keys to specific cache keys only by using cache keys as keys in the $checkKeys array. * @param float[] &$asOfs Map of (key => UNIX timestamp of cached value; null on failure) @@ -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 @@ -1315,7 +1315,7 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface { /** * @see BagOStuff::makeKey() - * @param string ... Key component + * @param string $keys,... Key component * @return string * @since 1.27 */ @@ -1325,7 +1325,7 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface { /** * @see BagOStuff::makeGlobalKey() - * @param string ... Key component + * @param string $keys,... Key component * @return string * @since 1.27 */ @@ -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..f002d3eacc 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; /** diff --git a/includes/libs/rdbms/TransactionProfiler.php b/includes/libs/rdbms/TransactionProfiler.php index 43b6f88704..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 */ @@ -118,7 +118,7 @@ class TransactionProfiler implements LoggerAwareInterface { * With conflicting expectations, the most narrow ones will be used * * @param array $expects Map of (event => limit) - * @param $fname + * @param string $fname * @since 1.26 */ public function setExpectations( array $expects, $fname ) { @@ -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/DBConnRef.php b/includes/libs/rdbms/database/DBConnRef.php index eb0e954e16..ef2953ec9c 100644 --- a/includes/libs/rdbms/database/DBConnRef.php +++ b/includes/libs/rdbms/database/DBConnRef.php @@ -23,16 +23,17 @@ class DBConnRef implements IDatabase { const FLD_INDEX = 0; const FLD_GROUP = 1; const FLD_DOMAIN = 2; + const FLD_FLAGS = 3; /** * @param ILoadBalancer $lb Connection manager for $conn - * @param Database|array $conn New connection handle or (server index, query groups, domain) + * @param Database|array $conn Database handle or (server index, query groups, domain, flags) */ public function __construct( ILoadBalancer $lb, $conn ) { $this->lb = $lb; if ( $conn instanceof Database ) { $this->conn = $conn; // live handle - } elseif ( count( $conn ) >= 3 && $conn[self::FLD_DOMAIN] !== false ) { + } elseif ( count( $conn ) >= 4 && $conn[self::FLD_DOMAIN] !== false ) { $this->params = $conn; } else { throw new InvalidArgumentException( "Missing lazy connection arguments." ); @@ -41,8 +42,8 @@ class DBConnRef implements IDatabase { function __call( $name, array $arguments ) { if ( $this->conn === null ) { - list( $db, $groups, $wiki ) = $this->params; - $this->conn = $this->lb->getConnection( $db, $groups, $wiki ); + list( $db, $groups, $wiki, $flags ) = $this->params; + $this->conn = $this->lb->getConnection( $db, $groups, $wiki, $flags ); } return call_user_func_array( [ $this->conn, $name ], $arguments ); diff --git a/includes/libs/rdbms/database/Database.php b/includes/libs/rdbms/database/Database.php index b8b44e698e..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; /** @@ -758,7 +758,11 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware $closed = $this->closeConnection(); $this->mConn = false; - } elseif ( $this->mTrxIdleCallbacks || $this->mTrxEndCallbacks ) { // sanity + } elseif ( + $this->mTrxIdleCallbacks || + $this->mTrxPreCommitCallbacks || + $this->mTrxEndCallbacks + ) { // sanity throw new RuntimeException( "Transaction callbacks still pending." ); } else { $closed = true; @@ -818,7 +822,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware } /** - * @param $sql + * @param string $sql * @return string|null */ protected function getQueryVerb( $sql ) { @@ -1050,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) @@ -2078,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 @@ -2587,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 ) { @@ -2707,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 */ @@ -2787,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 */ @@ -3190,7 +3194,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware * @see WANObjectCache::getWithSetCallback() * * @param IDatabase $db1 - * @param IDatabase ... + * @param IDatabase $dbs,... * @return array Map of values: * - lag: highest lag of any of the DBs or false on error (e.g. replication stopped) * - since: oldest UNIX timestamp of any of the DB lag estimates 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 8d19bc1b34..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]; @@ -778,6 +781,8 @@ abstract class DatabaseMysqlBase extends Database { * @see https://www.percona.com/doc/percona-toolkit/2.1/pt-heartbeat.html */ protected function getHeartbeatData( array $conds ) { + // Query time and trip time are not counted + $nowUnix = microtime( true ); // Do not bother starting implicit transactions here $this->clearFlag( self::DBO_TRX, self::REMEMBER_PRIOR ); try { @@ -793,7 +798,7 @@ abstract class DatabaseMysqlBase extends Database { $this->restoreFlags(); } - return [ $row ? $row->ts : null, microtime( true ) ]; + return [ $row ? $row->ts : null, $nowUnix ]; } protected function getApproximateLagStatus() { @@ -989,8 +994,8 @@ abstract class DatabaseMysqlBase extends Database { } /** - * @param string $sql - * @param string $newLine + * @param string &$sql + * @param string &$newLine * @return bool */ public function streamStatementEnd( &$sql, &$newLine ) { diff --git a/includes/libs/rdbms/database/DatabaseMysqli.php b/includes/libs/rdbms/database/DatabaseMysqli.php index fcd29c3c3c..b925e2c653 100644 --- a/includes/libs/rdbms/database/DatabaseMysqli.php +++ b/includes/libs/rdbms/database/DatabaseMysqli.php @@ -23,6 +23,7 @@ namespace Wikimedia\Rdbms; use mysqli; +use mysqli_result; use IP; /** @@ -90,7 +91,7 @@ class DatabaseMysqli extends DatabaseMysqlBase { $mysqli->ssl_set( $this->sslKeyPath, $this->sslCertPath, - null, + $this->sslCAFile, $this->sslCAPath, $this->sslCiphers ); @@ -190,7 +191,7 @@ class DatabaseMysqli extends DatabaseMysqlBase { } /** - * @param mysqli $res + * @param mysqli_result $res * @return bool */ protected function mysqlFreeResult( $res ) { @@ -200,7 +201,7 @@ class DatabaseMysqli extends DatabaseMysqlBase { } /** - * @param mysqli $res + * @param mysqli_result $res * @return bool */ protected function mysqlFetchObject( $res ) { @@ -213,7 +214,7 @@ class DatabaseMysqli extends DatabaseMysqlBase { } /** - * @param mysqli $res + * @param mysqli_result $res * @return bool */ protected function mysqlFetchArray( $res ) { @@ -226,7 +227,7 @@ class DatabaseMysqli extends DatabaseMysqlBase { } /** - * @param mysqli $res + * @param mysqli_result $res * @return mixed */ protected function mysqlNumRows( $res ) { @@ -287,7 +288,7 @@ class DatabaseMysqli extends DatabaseMysqlBase { } /** - * @param mysqli $res + * @param mysqli_result $res * @param int $row * @return mixed */ diff --git a/includes/libs/rdbms/database/DatabasePostgres.php b/includes/libs/rdbms/database/DatabasePostgres.php index bdac06c121..fcfd93700d 100644 --- a/includes/libs/rdbms/database/DatabasePostgres.php +++ b/includes/libs/rdbms/database/DatabasePostgres.php @@ -521,6 +521,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 +536,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' ) { diff --git a/includes/libs/rdbms/database/DatabaseSqlite.php b/includes/libs/rdbms/database/DatabaseSqlite.php index 9242414dfe..870fc3eeca 100644 --- a/includes/libs/rdbms/database/DatabaseSqlite.php +++ b/includes/libs/rdbms/database/DatabaseSqlite.php @@ -567,7 +567,7 @@ class DatabaseSqlite extends Database { /** * @param array $options - * @return string + * @return array */ protected function makeUpdateOptionsArray( $options ) { $options = parent::makeUpdateOptionsArray( $options ); diff --git a/includes/libs/rdbms/database/IDatabase.php b/includes/libs/rdbms/database/IDatabase.php index b82603e737..9375efc253 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(); 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/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/encasing/Blob.php b/includes/libs/rdbms/encasing/Blob.php index db5b7e5113..e2d685cbb9 100644 --- a/includes/libs/rdbms/encasing/Blob.php +++ b/includes/libs/rdbms/encasing/Blob.php @@ -7,7 +7,7 @@ class Blob implements IBlob { protected $mData; /** - * @param $data string + * @param string $data */ public function __construct( $data ) { $this->mData = $data; diff --git a/includes/libs/rdbms/exception/DBConnectionError.php b/includes/libs/rdbms/exception/DBConnectionError.php index 0091524c91..91d98dc145 100644 --- a/includes/libs/rdbms/exception/DBConnectionError.php +++ b/includes/libs/rdbms/exception/DBConnectionError.php @@ -28,7 +28,7 @@ class DBConnectionError extends DBExpectedError { * @param IDatabase $db Object throwing the error * @param string $error Error text */ - function __construct( IDatabase $db = null, $error = 'unknown error' ) { + public function __construct( IDatabase $db = null, $error = 'unknown error' ) { $msg = 'Cannot access the database'; if ( trim( $error ) != '' ) { $msg .= ": $error"; diff --git a/includes/libs/rdbms/exception/DBError.php b/includes/libs/rdbms/exception/DBError.php index d65e2d36bd..2f7499bc64 100644 --- a/includes/libs/rdbms/exception/DBError.php +++ b/includes/libs/rdbms/exception/DBError.php @@ -36,7 +36,7 @@ class DBError extends Exception { * @param IDatabase $db Object which threw the error * @param string $error A simple error message to be used for debugging */ - function __construct( IDatabase $db = null, $error ) { + public function __construct( IDatabase $db = null, $error ) { $this->db = $db; parent::__construct( $error ); } diff --git a/includes/libs/rdbms/exception/DBExpectedError.php b/includes/libs/rdbms/exception/DBExpectedError.php index f6b9bd5ebe..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; } @@ -50,7 +50,7 @@ class DBExpectedError extends DBError implements MessageSpecifier, ILocalizedExc } /** - * @inheritdoc + * @inheritDoc * @since 1.29 */ public function getMessageObject() { 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 6e328f4b4c..4cfa542466 100644 --- a/includes/libs/rdbms/lbfactory/ILBFactory.php +++ b/includes/libs/rdbms/lbfactory/ILBFactory.php @@ -40,11 +40,11 @@ interface ILBFactory { * * Sub-classes will extend the required keys in $conf with additional parameters * - * @param $conf $params Array with keys: + * @param array $conf Array with keys: * - localDomain: A DatabaseDomain or domain ID string. * - readOnlyReason : Reason the master DB is read-only if so [optional] * - srvCache : BagOStuff object for server cache [optional] - * - memCache : BagOStuff object for cluster memory cache [optional] + * - memStash : BagOStuff object for cross-datacenter memory storage [optional] * - wanCache : WANObjectCache object [optional] * - hostname : The name of the current server [optional] * - cliMode: Whether the execution context is a CLI script. [optional] @@ -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( diff --git a/includes/libs/rdbms/lbfactory/LBFactory.php b/includes/libs/rdbms/lbfactory/LBFactory.php index 919f103be1..c891fb6ba7 100644 --- a/includes/libs/rdbms/lbfactory/LBFactory.php +++ b/includes/libs/rdbms/lbfactory/LBFactory.php @@ -55,7 +55,7 @@ abstract class LBFactory implements ILBFactory { /** @var BagOStuff */ protected $srvCache; /** @var BagOStuff */ - protected $memCache; + protected $memStash; /** @var WANObjectCache */ protected $wanCache; @@ -93,7 +93,7 @@ abstract class LBFactory implements ILBFactory { } $this->srvCache = isset( $conf['srvCache'] ) ? $conf['srvCache'] : new EmptyBagOStuff(); - $this->memCache = isset( $conf['memCache'] ) ? $conf['memCache'] : new EmptyBagOStuff(); + $this->memStash = isset( $conf['memStash'] ) ? $conf['memStash'] : new EmptyBagOStuff(); $this->wanCache = isset( $conf['wanCache'] ) ? $conf['wanCache'] : WANObjectCache::newEmpty(); @@ -435,7 +435,7 @@ abstract class LBFactory implements ILBFactory { } $this->chronProt = new ChronologyProtector( - $this->memCache, + $this->memStash, [ 'ip' => $this->requestInfo['IPAddress'], 'agent' => $this->requestInfo['UserAgent'], diff --git a/includes/libs/rdbms/loadbalancer/ILoadBalancer.php b/includes/libs/rdbms/loadbalancer/ILoadBalancer.php index fc50961f46..22a58055d7 100644 --- a/includes/libs/rdbms/loadbalancer/ILoadBalancer.php +++ b/includes/libs/rdbms/loadbalancer/ILoadBalancer.php @@ -76,14 +76,17 @@ use InvalidArgumentException; * @ingroup Database */ interface ILoadBalancer { - /** @var integer Request a replica DB connection */ + /** @var int Request a replica DB connection */ const DB_REPLICA = -1; - /** @var integer Request a master DB connection */ + /** @var int Request a master DB connection */ const DB_MASTER = -2; /** @var string Domain specifier when no specific database needs to be selected */ const DOMAIN_ANY = ''; + /** @var int DB handle should have DBO_TRX disabled and the caller will leave it as such */ + const CONN_TRX_AUTO = 1; + /** * Construct a manager of IDatabase connection objects * @@ -94,7 +97,6 @@ interface ILoadBalancer { * - readOnlyReason : Reason the master DB is read-only if so [optional] * - waitTimeout : Maximum time to wait for replicas for consistency [optional] * - srvCache : BagOStuff object for server cache [optional] - * - memCache : BagOStuff object for cluster memory cache [optional] * - wanCache : WANObjectCache object [optional] * - chronologyProtector: ChronologyProtector object [optional] * - hostname : The name of the current server [optional] @@ -169,14 +171,17 @@ interface ILoadBalancer { /** * Get a connection by index * + * Avoid using CONN_TRX_AUTO with sqlite (e.g. check getServerType() first) + * * @param int $i Server index or DB_MASTER/DB_REPLICA * @param array|string|bool $groups Query group(s), or false for the generic reader * @param string|bool $domain Domain ID, or false for the current domain + * @param int $flags Bitfield of CONN_* class constants * * @throws DBError * @return Database */ - public function getConnection( $i, $groups = [], $domain = false ); + public function getConnection( $i, $groups = [], $domain = false, $flags = 0 ); /** * Mark a foreign connection as being available for reuse under a different DB domain @@ -194,42 +199,51 @@ interface ILoadBalancer { * * The handle's methods simply wrap those of a Database handle * + * Avoid using CONN_TRX_AUTO with sqlite (e.g. check getServerType() first) + * * @see ILoadBalancer::getConnection() for parameter information * * @param int $i Server index or DB_MASTER/DB_REPLICA * @param array|string|bool $groups Query group(s), or false for the generic reader * @param string|bool $domain Domain ID, or false for the current domain + * @param int $flags Bitfield of CONN_* class constants (e.g. CONN_TRX_AUTO) * @return DBConnRef */ - public function getConnectionRef( $i, $groups = [], $domain = false ); + public function getConnectionRef( $i, $groups = [], $domain = false, $flags = 0 ); /** * Get a database connection handle reference without connecting yet * * The handle's methods simply wrap those of a Database handle * + * Avoid using CONN_TRX_AUTO with sqlite (e.g. check getServerType() first) + * * @see ILoadBalancer::getConnection() for parameter information * * @param int $i Server index or DB_MASTER/DB_REPLICA * @param array|string|bool $groups Query group(s), or false for the generic reader * @param string|bool $domain Domain ID, or false for the current domain + * @param int $flags Bitfield of CONN_* class constants (e.g. CONN_TRX_AUTO) * @return DBConnRef */ - public function getLazyConnectionRef( $i, $groups = [], $domain = false ); + public function getLazyConnectionRef( $i, $groups = [], $domain = false, $flags = 0 ); /** * Get a maintenance database connection handle reference for migrations and schema changes * * The handle's methods simply wrap those of a Database handle * + * Avoid using CONN_TRX_AUTO with sqlite (e.g. check getServerType() first) + * * @see ILoadBalancer::getConnection() for parameter information * * @param int $db Server index or DB_MASTER/DB_REPLICA * @param array|string|bool $groups Query group(s), or false for the generic reader * @param string|bool $domain Domain ID, or false for the current domain + * @param int $flags Bitfield of CONN_* class constants (e.g. CONN_TRX_AUTO) * @return MaintainableDBConnRef */ - public function getMaintenanceConnectionRef( $db, $groups = [], $domain = false ); + public function getMaintenanceConnectionRef( $db, $groups = [], $domain = false, $flags = 0 ); /** * Open a connection to the server given by the specified index @@ -237,14 +251,17 @@ interface ILoadBalancer { * The index must be an actual index into the array. If a connection to the server is * already open and not considered an "in use" foreign connection, this simply returns it. * + * Avoid using CONN_TRX_AUTO with sqlite (e.g. check getServerType() first) + * * @note If disable() was called on this LoadBalancer, this method will throw a DBAccessError. * * @param int $i Server index (does not support DB_MASTER/DB_REPLICA) * @param string|bool $domain Domain ID, or false for the current domain + * @param int $flags Bitfield of CONN_* class constants (e.g. CONN_TRX_AUTO) * @return Database|bool Returns false on errors * @throws DBAccessError */ - public function openConnection( $i, $domain = false ); + public function openConnection( $i, $domain = false, $flags = 0 ); /** * @return int @@ -254,7 +271,7 @@ interface ILoadBalancer { /** * Returns true if the specified index is a valid server index * - * @param string $i + * @param int $i * @return bool */ public function haveIndex( $i ); @@ -262,7 +279,7 @@ interface ILoadBalancer { /** * Returns true if the specified index is valid and has non-zero load * - * @param string $i + * @param int $i * @return bool */ public function isNonZeroLoad( $i ); @@ -276,12 +293,21 @@ interface ILoadBalancer { /** * Get the host name or IP address of the server with the specified index - * Prefer a readable name if available. - * @param string $i - * @return string + * + * @param int $i + * @return string Readable name if available or IP/host otherwise */ public function getServerName( $i ); + /** + * Get DB type of the server with the specified index + * + * @param int $i + * @return string One of (mysql,postgres,sqlite,...) or "unknown" for bad indexes + * @since 1.30 + */ + public function getServerType( $i ); + /** * Return the server info structure for a given index, or false if the index is invalid. * @param int $i diff --git a/includes/libs/rdbms/loadbalancer/LoadBalancer.php b/includes/libs/rdbms/loadbalancer/LoadBalancer.php index 72217da7d9..36de39e0fb 100644 --- a/includes/libs/rdbms/loadbalancer/LoadBalancer.php +++ b/includes/libs/rdbms/loadbalancer/LoadBalancer.php @@ -41,7 +41,7 @@ use Exception; class LoadBalancer implements ILoadBalancer { /** @var array[] Map of (server index => server config array) */ private $mServers; - /** @var Database[][][] Map of local/foreignUsed/foreignFree => server index => IDatabase[] */ + /** @var Database[][][] Map of (connection category => server index => IDatabase[]) */ private $mConns; /** @var float[] Map of (server index => weight) */ private $mLoads; @@ -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; @@ -62,8 +62,6 @@ class LoadBalancer implements ILoadBalancer { private $chronProt; /** @var BagOStuff */ private $srvCache; - /** @var BagOStuff */ - private $memCache; /** @var WANObjectCache */ private $wanCache; /** @var object|string Class name or object With profileIn/profileOut methods */ @@ -81,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; @@ -93,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; @@ -113,28 +111,39 @@ 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'; const KEY_FOREIGN_FREE = 'foreignFree'; const KEY_FOREIGN_INUSE = 'foreignInUse'; + const KEY_LOCAL_NOROUND = 'localAutoCommit'; + const KEY_FOREIGN_FREE_NOROUND = 'foreignFreeAutoCommit'; + const KEY_FOREIGN_INUSE_NOROUND = 'foreignInUseAutoCommit'; + public function __construct( array $params ) { if ( !isset( $params['servers'] ) ) { throw new InvalidArgumentException( __CLASS__ . ': missing servers parameter' ); } $this->mServers = $params['servers']; + foreach ( $this->mServers as $i => $server ) { + if ( $i == 0 ) { + $this->mServers[$i]['master'] = true; + } else { + $this->mServers[$i]['replica'] = true; + } + } $this->localDomain = isset( $params['localDomain'] ) ? DatabaseDomain::newFromId( $params['localDomain'] ) @@ -152,9 +161,14 @@ class LoadBalancer implements ILoadBalancer { $this->mReadIndex = -1; $this->mConns = [ + // Connection were transaction rounds may be applied self::KEY_LOCAL => [], self::KEY_FOREIGN_INUSE => [], - self::KEY_FOREIGN_FREE => [] + self::KEY_FOREIGN_FREE => [], + // Auto-committing counterpart connections that ignore transaction rounds + self::KEY_LOCAL_NOROUND => [], + self::KEY_FOREIGN_INUSE_NOROUND => [], + self::KEY_FOREIGN_FREE_NOROUND => [] ]; $this->mLoads = []; $this->mWaitForPos = false; @@ -187,11 +201,6 @@ class LoadBalancer implements ILoadBalancer { } else { $this->srvCache = new EmptyBagOStuff(); } - if ( isset( $params['memCache'] ) ) { - $this->memCache = $params['memCache']; - } else { - $this->memCache = new EmptyBagOStuff(); - } if ( isset( $params['wanCache'] ) ) { $this->wanCache = $params['wanCache']; } else { @@ -244,7 +253,7 @@ class LoadBalancer implements ILoadBalancer { } $this->loadMonitor = new $class( - $this, $this->srvCache, $this->memCache, $this->loadMonitorConfig ); + $this, $this->srvCache, $this->wanCache, $this->loadMonitorConfig ); $this->loadMonitor->setLogger( $this->replLogger ); } @@ -608,16 +617,7 @@ class LoadBalancer implements ILoadBalancer { return $ok; } - /** - * @see ILoadBalancer::getConnection() - * - * @param int $i - * @param array $groups - * @param bool $domain - * @return Database - * @throws DBConnectionError - */ - public function getConnection( $i, $groups = [], $domain = false ) { + public function getConnection( $i, $groups = [], $domain = false, $flags = 0 ) { if ( $i === null || $i === false ) { throw new InvalidArgumentException( 'Attempt to call ' . __METHOD__ . ' with invalid server index' ); @@ -664,7 +664,7 @@ class LoadBalancer implements ILoadBalancer { } # Now we have an explicit index into the servers array - $conn = $this->openConnection( $i, $domain ); + $conn = $this->openConnection( $i, $domain, $flags ); if ( !$conn ) { // Throw an exception $this->reportConnectionError(); @@ -714,20 +714,29 @@ class LoadBalancer implements ILoadBalancer { return; // DBConnRef handle probably survived longer than the LoadBalancer } + if ( $conn->getLBInfo( 'autoCommitOnly' ) ) { + $connFreeKey = self::KEY_FOREIGN_FREE_NOROUND; + $connInUseKey = self::KEY_FOREIGN_INUSE_NOROUND; + } else { + $connFreeKey = self::KEY_FOREIGN_FREE; + $connInUseKey = self::KEY_FOREIGN_INUSE; + } + $domain = $conn->getDomainID(); - if ( !isset( $this->mConns[self::KEY_FOREIGN_INUSE][$serverIndex][$domain] ) ) { + if ( !isset( $this->mConns[$connInUseKey][$serverIndex][$domain] ) ) { throw new InvalidArgumentException( __METHOD__ . ": connection $serverIndex/$domain not found; it may have already been freed." ); - } elseif ( $this->mConns[self::KEY_FOREIGN_INUSE][$serverIndex][$domain] !== $conn ) { + } elseif ( $this->mConns[$connInUseKey][$serverIndex][$domain] !== $conn ) { throw new InvalidArgumentException( __METHOD__ . ": connection $serverIndex/$domain mismatched; it may have already been freed." ); } + $conn->setLBInfo( 'foreignPoolRefCount', --$refCount ); if ( $refCount <= 0 ) { - $this->mConns[self::KEY_FOREIGN_FREE][$serverIndex][$domain] = $conn; - unset( $this->mConns[self::KEY_FOREIGN_INUSE][$serverIndex][$domain] ); - if ( !$this->mConns[self::KEY_FOREIGN_INUSE][$serverIndex] ) { - unset( $this->mConns[ self::KEY_FOREIGN_INUSE ][$serverIndex] ); // clean up + $this->mConns[$connFreeKey][$serverIndex][$domain] = $conn; + unset( $this->mConns[$connInUseKey][$serverIndex][$domain] ); + if ( !$this->mConns[$connInUseKey][$serverIndex] ) { + unset( $this->mConns[$connInUseKey][$serverIndex] ); // clean up } $this->connLogger->debug( __METHOD__ . ": freed connection $serverIndex/$domain" ); } else { @@ -736,33 +745,26 @@ class LoadBalancer implements ILoadBalancer { } } - public function getConnectionRef( $db, $groups = [], $domain = false ) { + public function getConnectionRef( $db, $groups = [], $domain = false, $flags = 0 ) { $domain = ( $domain !== false ) ? $domain : $this->localDomain; - return new DBConnRef( $this, $this->getConnection( $db, $groups, $domain ) ); + return new DBConnRef( $this, $this->getConnection( $db, $groups, $domain, $flags ) ); } - public function getLazyConnectionRef( $db, $groups = [], $domain = false ) { + public function getLazyConnectionRef( $db, $groups = [], $domain = false, $flags = 0 ) { $domain = ( $domain !== false ) ? $domain : $this->localDomain; - return new DBConnRef( $this, [ $db, $groups, $domain ] ); + return new DBConnRef( $this, [ $db, $groups, $domain, $flags ] ); } - public function getMaintenanceConnectionRef( $db, $groups = [], $domain = false ) { + public function getMaintenanceConnectionRef( $db, $groups = [], $domain = false, $flags = 0 ) { $domain = ( $domain !== false ) ? $domain : $this->localDomain; - return new MaintainableDBConnRef( $this, $this->getConnection( $db, $groups, $domain ) ); + return new MaintainableDBConnRef( + $this, $this->getConnection( $db, $groups, $domain, $flags ) ); } - /** - * @see ILoadBalancer::openConnection() - * - * @param int $i - * @param bool $domain - * @return bool|Database - * @throws DBAccessError - */ - public function openConnection( $i, $domain = false ) { + public function openConnection( $i, $domain = false, $flags = 0 ) { if ( $this->localDomain->equals( $domain ) || $domain === $this->localDomainIdAlias ) { $domain = false; // local connection requested } @@ -774,26 +776,38 @@ class LoadBalancer implements ILoadBalancer { $this->chronProt->initLB( $this ); } + // Check if an auto-commit connection is being requested. If so, it will not reuse the + // main set of DB connections but rather its own pool since: + // a) those are usually set to implicitly use transaction rounds via DBO_TRX + // b) those must support the use of explicit transaction rounds via beginMasterChanges() + $autoCommit = ( ( $flags & self::CONN_TRX_AUTO ) == self::CONN_TRX_AUTO ); + if ( $domain !== false ) { - $conn = $this->openForeignConnection( $i, $domain ); - } elseif ( isset( $this->mConns[self::KEY_LOCAL][$i][0] ) ) { - $conn = $this->mConns[self::KEY_LOCAL][$i][0]; + // Connection is to a foreign domain + $conn = $this->openForeignConnection( $i, $domain, $flags ); } else { - if ( !isset( $this->mServers[$i] ) || !is_array( $this->mServers[$i] ) ) { - throw new InvalidArgumentException( "No server with index '$i'." ); - } - // Open a new connection - $server = $this->mServers[$i]; - $server['serverIndex'] = $i; - $conn = $this->reallyOpenConnection( $server, false ); - $serverName = $this->getServerName( $i ); - if ( $conn->isOpen() ) { - $this->connLogger->debug( "Connected to database $i at '$serverName'." ); - $this->mConns[self::KEY_LOCAL][$i][0] = $conn; + // Connection is to the local domain + $connKey = $autoCommit ? self::KEY_LOCAL_NOROUND : self::KEY_LOCAL; + if ( isset( $this->mConns[$connKey][$i][0] ) ) { + $conn = $this->mConns[$connKey][$i][0]; } else { - $this->connLogger->warning( "Failed to connect to database $i at '$serverName'." ); - $this->errorConnection = $conn; - $conn = false; + if ( !isset( $this->mServers[$i] ) || !is_array( $this->mServers[$i] ) ) { + throw new InvalidArgumentException( "No server with index '$i'." ); + } + // Open a new connection + $server = $this->mServers[$i]; + $server['serverIndex'] = $i; + $server['autoCommitOnly'] = $autoCommit; + $conn = $this->reallyOpenConnection( $server, false ); + $host = $this->getServerName( $i ); + if ( $conn->isOpen() ) { + $this->connLogger->debug( "Connected to database $i at '$host'." ); + $this->mConns[$connKey][$i][0] = $conn; + } else { + $this->connLogger->warning( "Failed to connect to database $i at '$host'." ); + $this->errorConnection = $conn; + $conn = false; + } } } @@ -806,6 +820,10 @@ class LoadBalancer implements ILoadBalancer { $conn = false; } + if ( $autoCommit && $conn instanceof IDatabase ) { + $conn->clearFlag( $conn::DBO_TRX ); // auto-commit mode + } + return $conn; } @@ -827,27 +845,37 @@ class LoadBalancer implements ILoadBalancer { * * @param int $i Server index * @param string $domain Domain ID to open + * @param int $flags Class CONN_* constant bitfield * @return Database */ - private function openForeignConnection( $i, $domain ) { + private function openForeignConnection( $i, $domain, $flags = 0 ) { $domainInstance = DatabaseDomain::newFromId( $domain ); $dbName = $domainInstance->getDatabase(); $prefix = $domainInstance->getTablePrefix(); + $autoCommit = ( ( $flags & self::CONN_TRX_AUTO ) == self::CONN_TRX_AUTO ); - if ( isset( $this->mConns[self::KEY_FOREIGN_INUSE][$i][$domain] ) ) { - // Reuse an in-use connection for the same domain that is not in-use - $conn = $this->mConns[self::KEY_FOREIGN_INUSE][$i][$domain]; + if ( $autoCommit ) { + $connFreeKey = self::KEY_FOREIGN_FREE_NOROUND; + $connInUseKey = self::KEY_FOREIGN_INUSE_NOROUND; + } else { + $connFreeKey = self::KEY_FOREIGN_FREE; + $connInUseKey = self::KEY_FOREIGN_INUSE; + } + + if ( isset( $this->mConns[$connInUseKey][$i][$domain] ) ) { + // Reuse an in-use connection for the same domain + $conn = $this->mConns[$connInUseKey][$i][$domain]; $this->connLogger->debug( __METHOD__ . ": reusing connection $i/$domain" ); - } elseif ( isset( $this->mConns[self::KEY_FOREIGN_FREE][$i][$domain] ) ) { - // Reuse a free connection for the same domain that is not in-use - $conn = $this->mConns[self::KEY_FOREIGN_FREE][$i][$domain]; - unset( $this->mConns[self::KEY_FOREIGN_FREE][$i][$domain] ); - $this->mConns[self::KEY_FOREIGN_INUSE][$i][$domain] = $conn; + } elseif ( isset( $this->mConns[$connFreeKey][$i][$domain] ) ) { + // Reuse a free connection for the same domain + $conn = $this->mConns[$connFreeKey][$i][$domain]; + unset( $this->mConns[$connFreeKey][$i][$domain] ); + $this->mConns[$connInUseKey][$i][$domain] = $conn; $this->connLogger->debug( __METHOD__ . ": reusing free connection $i/$domain" ); - } elseif ( !empty( $this->mConns[self::KEY_FOREIGN_FREE][$i] ) ) { - // Reuse a connection from another domain - $conn = reset( $this->mConns[self::KEY_FOREIGN_FREE][$i] ); - $oldDomain = key( $this->mConns[self::KEY_FOREIGN_FREE][$i] ); + } elseif ( !empty( $this->mConns[$connFreeKey][$i] ) ) { + // Reuse a free connection from another domain + $conn = reset( $this->mConns[$connFreeKey][$i] ); + $oldDomain = key( $this->mConns[$connFreeKey][$i] ); // The empty string as a DB name means "don't care". // DatabaseMysqlBase::open() already handle this on connection. if ( strlen( $dbName ) && !$conn->selectDB( $dbName ) ) { @@ -857,8 +885,8 @@ class LoadBalancer implements ILoadBalancer { $conn = false; } else { $conn->tablePrefix( $prefix ); - unset( $this->mConns[self::KEY_FOREIGN_FREE][$i][$oldDomain] ); - $this->mConns[self::KEY_FOREIGN_INUSE][$i][$domain] = $conn; + unset( $this->mConns[$connFreeKey][$i][$oldDomain] ); + $this->mConns[$connInUseKey][$i][$domain] = $conn; $this->connLogger->debug( __METHOD__ . ": reusing free connection from $oldDomain for $domain" ); } @@ -871,6 +899,7 @@ class LoadBalancer implements ILoadBalancer { $server['serverIndex'] = $i; $server['foreignPoolRefCount'] = 0; $server['foreign'] = true; + $server['autoCommitOnly'] = $autoCommit; $conn = $this->reallyOpenConnection( $server, $dbName ); if ( !$conn->isOpen() ) { $this->connLogger->warning( __METHOD__ . ": connection error for $i/$domain" ); @@ -878,7 +907,7 @@ class LoadBalancer implements ILoadBalancer { $conn = false; } else { $conn->tablePrefix( $prefix ); - $this->mConns[self::KEY_FOREIGN_INUSE][$i][$domain] = $conn; + $this->mConns[$connInUseKey][$i][$domain] = $conn; $this->connLogger->debug( __METHOD__ . ": opened new connection for $i/$domain" ); } } @@ -1037,6 +1066,10 @@ class LoadBalancer implements ILoadBalancer { return ( $name != '' ) ? $name : 'localhost'; } + public function getServerType( $i ) { + return isset( $this->mServers[$i]['type'] ) ? $this->mServers[$i]['type'] : 'unknown'; + } + /** * @deprecated Since 1.30, no alternative */ @@ -1090,8 +1123,11 @@ class LoadBalancer implements ILoadBalancer { $this->mConns = [ self::KEY_LOCAL => [], - self::KEY_FOREIGN_FREE => [], self::KEY_FOREIGN_INUSE => [], + self::KEY_FOREIGN_FREE => [], + self::KEY_LOCAL_NOROUND => [], + self::KEY_FOREIGN_INUSE_NOROUND => [], + self::KEY_FOREIGN_FREE_NOROUND => [] ]; $this->connsOpened = 0; } @@ -1172,7 +1208,7 @@ class LoadBalancer implements ILoadBalancer { if ( $limit > 0 && $time > $limit ) { throw new DBTransactionSizeError( $conn, - "Transaction spent $time second(s) in writes, exceeding the $limit limit.", + "Transaction spent $time second(s) in writes, exceeding the limit of $limit.", [ $time, $limit ] ); } @@ -1311,6 +1347,10 @@ class LoadBalancer implements ILoadBalancer { * @param IDatabase $conn */ private function applyTransactionRoundFlags( IDatabase $conn ) { + if ( $conn->getLBInfo( 'autoCommitOnly' ) ) { + return; // transaction rounds do not apply to these connections + } + if ( $conn->getFlag( $conn::DBO_DEFAULT ) ) { // DBO_TRX is controlled entirely by CLI mode presence with DBO_DEFAULT. // Force DBO_TRX even in CLI mode since a commit round is expected soon. @@ -1325,6 +1365,10 @@ class LoadBalancer implements ILoadBalancer { * @param IDatabase $conn */ private function undoTransactionRoundFlags( IDatabase $conn ) { + if ( $conn->getLBInfo( 'autoCommitOnly' ) ) { + return; // transaction rounds do not apply to these connections + } + if ( $conn->getFlag( $conn::DBO_DEFAULT ) ) { $conn->restoreFlags( $conn::RESTORE_PRIOR ); } diff --git a/includes/libs/rdbms/loadmonitor/ILoadMonitor.php b/includes/libs/rdbms/loadmonitor/ILoadMonitor.php index 4f6701fa13..a0877a4677 100644 --- a/includes/libs/rdbms/loadmonitor/ILoadMonitor.php +++ b/includes/libs/rdbms/loadmonitor/ILoadMonitor.php @@ -25,6 +25,7 @@ namespace Wikimedia\Rdbms; use Psr\Log\LoggerAwareInterface; use BagOStuff; +use WANObjectCache; /** * An interface for database load monitoring @@ -37,11 +38,11 @@ interface ILoadMonitor extends LoggerAwareInterface { * * @param ILoadBalancer $lb LoadBalancer this instance serves * @param BagOStuff $sCache Local server memory cache - * @param BagOStuff $cCache Local cluster memory cache + * @param WANObjectCache $wCache Local cluster memory cache * @param array $options Options map */ public function __construct( - ILoadBalancer $lb, BagOStuff $sCache, BagOStuff $cCache, array $options = [] + ILoadBalancer $lb, BagOStuff $sCache, WANObjectCache $wCache, array $options = [] ); /** @@ -57,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 4300e9f1cd..fdc5ac8146 100644 --- a/includes/libs/rdbms/loadmonitor/LoadMonitor.php +++ b/includes/libs/rdbms/loadmonitor/LoadMonitor.php @@ -25,6 +25,7 @@ use Psr\Log\LoggerInterface; use Psr\Log\NullLogger; use Wikimedia\ScopedCallback; use BagOStuff; +use WANObjectCache; /** * Basic DB load monitor with no external dependencies @@ -37,8 +38,8 @@ class LoadMonitor implements ILoadMonitor { protected $parent; /** @var BagOStuff */ protected $srvCache; - /** @var BagOStuff */ - protected $mainCache; + /** @var WANObjectCache */ + protected $wanCache; /** @var LoggerInterface */ protected $replLogger; @@ -48,11 +49,11 @@ class LoadMonitor implements ILoadMonitor { const VERSION = 1; // cache key version public function __construct( - ILoadBalancer $lb, BagOStuff $srvCache, BagOStuff $cache, array $options = [] + ILoadBalancer $lb, BagOStuff $srvCache, WANObjectCache $wCache, array $options = [] ) { $this->parent = $lb; $this->srvCache = $srvCache; - $this->mainCache = $cache; + $this->wanCache = $wCache; $this->replLogger = new NullLogger(); $this->movingAveRatio = isset( $options['movingAveRatio'] ) @@ -109,7 +110,7 @@ class LoadMonitor implements ILoadMonitor { $staleValue = $value ?: false; # (b) Check the shared cache and backfill APC - $value = $this->mainCache->get( $key ); + $value = $this->wanCache->get( $key ); if ( $value && $value['timestamp'] > ( microtime( true ) - $ttl ) ) { $this->srvCache->set( $key, $value, $staleTTL ); $this->replLogger->debug( __METHOD__ . ": got lag times ($key) from main cache" ); @@ -119,12 +120,12 @@ class LoadMonitor implements ILoadMonitor { $staleValue = $value ?: $staleValue; # (c) Cache key missing or expired; regenerate and backfill - if ( $this->mainCache->lock( $key, 0, 10 ) ) { - # Let this process alone update the cache value - $cache = $this->mainCache; + if ( $this->srvCache->lock( $key, 0, 10 ) ) { + # Let only this process update the cache value on this server + $sCache = $this->srvCache; /** @noinspection PhpUnusedLocalVariableInspection */ - $unlocker = new ScopedCallback( function () use ( $cache, $key ) { - $cache->unlock( $key ); + $unlocker = new ScopedCallback( function () use ( $sCache, $key ) { + $sCache->unlock( $key ); } ); } elseif ( $staleValue ) { # Could not acquire lock but an old cache exists, so use it @@ -145,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 } @@ -196,7 +197,7 @@ class LoadMonitor implements ILoadMonitor { 'weightScales' => $weightScales, 'timestamp' => microtime( true ) ]; - $this->mainCache->set( $key, $value, $staleTTL ); + $this->wanCache->set( $key, $value, $staleTTL ); $this->srvCache->set( $key, $value, $staleTTL ); $this->replLogger->info( __METHOD__ . ": re-calculated lag times ($key)" ); @@ -204,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/rdbms/loadmonitor/LoadMonitorMySQL.php b/includes/libs/rdbms/loadmonitor/LoadMonitorMySQL.php index ff72dbc96f..f8ad329bb0 100644 --- a/includes/libs/rdbms/loadmonitor/LoadMonitorMySQL.php +++ b/includes/libs/rdbms/loadmonitor/LoadMonitorMySQL.php @@ -22,6 +22,7 @@ namespace Wikimedia\Rdbms; use BagOStuff; +use WANObjectCache; /** * Basic MySQL load monitor with no external dependencies @@ -34,9 +35,9 @@ class LoadMonitorMySQL extends LoadMonitor { private $warmCacheRatio; public function __construct( - ILoadBalancer $lb, BagOStuff $srvCache, BagOStuff $cache, array $options = [] + ILoadBalancer $lb, BagOStuff $srvCache, WANObjectCache $wCache, array $options = [] ) { - parent::__construct( $lb, $srvCache, $cache, $options ); + parent::__construct( $lb, $srvCache, $wCache, $options ); $this->warmCacheRatio = isset( $options['warmCacheRatio'] ) ? $options['warmCacheRatio'] diff --git a/includes/libs/rdbms/loadmonitor/LoadMonitorNull.php b/includes/libs/rdbms/loadmonitor/LoadMonitorNull.php index 8bbf9e5de3..6dae8cc5ee 100644 --- a/includes/libs/rdbms/loadmonitor/LoadMonitorNull.php +++ b/includes/libs/rdbms/loadmonitor/LoadMonitorNull.php @@ -23,10 +23,11 @@ namespace Wikimedia\Rdbms; use Psr\Log\LoggerInterface; use BagOStuff; +use WANObjectCache; class LoadMonitorNull implements ILoadMonitor { public function __construct( - ILoadBalancer $lb, BagOStuff $sCache, BagOStuff $cCache, array $options = [] + ILoadBalancer $lb, BagOStuff $sCache, WANObjectCache $wCache, array $options = [] ) { } diff --git a/includes/libs/redis/RedisConnectionPool.php b/includes/libs/redis/RedisConnectionPool.php index 99c2c3c287..509240f71c 100644 --- a/includes/libs/redis/RedisConnectionPool.php +++ b/includes/libs/redis/RedisConnectionPool.php @@ -396,9 +396,14 @@ class RedisConnectionPool implements LoggerAwareInterface { function __destruct() { foreach ( $this->connections as $server => &$serverConnections ) { foreach ( $serverConnections as $key => &$connection ) { - /** @var Redis $conn */ - $conn = $connection['conn']; - $conn->close(); + try { + /** @var Redis $conn */ + $conn = $connection['conn']; + $conn->close(); + } catch ( RedisException $e ) { + // The destructor can be called on shutdown when random parts of the system + // have been destructed already, causing weird errors. Ignore them. + } } } } 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 f2e35b67be..73697514e5 100644 --- a/includes/libs/stats/NullStatsdDataFactory.php +++ b/includes/libs/stats/NullStatsdDataFactory.php @@ -53,7 +53,6 @@ class NullStatsdDataFactory implements IBufferingStatsdDataFactory { * This function creates a 'increment' StatsdData object. * * @param string|array $key The metric(s) to increment. - * @param float|1 $sampleRate The rate (0-1) for sampling. * * @return array */ @@ -66,7 +65,6 @@ class NullStatsdDataFactory implements IBufferingStatsdDataFactory { * * * @param string|array $key The metric(s) to decrement. - * @param float|1 $sampleRate The rate (0-1) for sampling. * * @return mixed */ @@ -78,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 */ @@ -110,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 526f12013d..1da9468d80 100644 --- a/includes/libs/stats/SamplingStatsdClient.php +++ b/includes/libs/stats/SamplingStatsdClient.php @@ -47,7 +47,7 @@ class SamplingStatsdClient extends StatsdClient { * Sets sampling rate for all items in $data. * The sample rate specified in a StatsdData entity overrides the sample rate specified here. * - * {@inheritDoc} + * @inheritDoc */ public function appendSampleRate( $data, $sampleRate = 1 ) { $samplingRates = $this->samplingRates; @@ -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 ) ) { @@ -147,7 +147,7 @@ class SamplingStatsdClient extends StatsdClient { } /** - * {@inheritDoc} + * @inheritDoc */ protected function throwException( Exception $exception ) { if ( !$this->getFailSilently() ) { diff --git a/includes/logging/LogEntry.php b/includes/logging/LogEntry.php index fa94fe5b23..6587304ffb 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() { @@ -624,12 +628,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/LogEventsList.php b/includes/logging/LogEventsList.php index 22e5b45cf1..00d3bd3315 100644 --- a/includes/logging/LogEventsList.php +++ b/includes/logging/LogEventsList.php @@ -60,7 +60,7 @@ class LogEventsList extends ContextSource { * * @param IContextSource|Skin $context Context to use; formerly it was * a Skin object. Use of Skin is deprecated. - * @param LinkRenderer|null $linkRenderer, previously unused + * @param LinkRenderer|null $linkRenderer previously unused * @param int $flags Can be a combination of self::NO_ACTION_LINK, * self::NO_EXTRA_USER_LINKS or self::USE_CHECKBOXES. */ @@ -569,7 +569,7 @@ class LogEventsList extends ContextSource { /** * Show log extract. Either with text and a box (set $msgKey) or without (don't set $msgKey) * - * @param OutputPage|string $out By-reference + * @param OutputPage|string &$out * @param string|array $types Log types to show * @param string|Title $page The page title to show log entries for * @param string $user The user who made the log entries diff --git a/includes/logging/LogPage.php b/includes/logging/LogPage.php index ec97b50c24..257f76d0bb 100644 --- a/includes/logging/LogPage.php +++ b/includes/logging/LogPage.php @@ -104,9 +104,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(); @@ -287,7 +287,7 @@ class LogPage { * @param string $type * @param Language|null $lang * @param Title $title - * @param array $params + * @param array &$params * @return string */ protected static function getTitleLink( $type, $lang, $title, &$params ) { diff --git a/includes/mail/UserMailer.php b/includes/mail/UserMailer.php index 1f8489f7e3..cb07fd5c58 100644 --- a/includes/mail/UserMailer.php +++ b/includes/mail/UserMailer.php @@ -102,7 +102,7 @@ class UserMailer { * @param MailAddress $from Sender's email * @param string $subject Email's subject. * @param string $body Email's text or Array of two strings to be the text and html bodies - * @param array $options: + * @param array $options Keys: * 'replyTo' MailAddress * 'contentType' string default 'text/plain; charset=UTF-8' * 'headers' array Extra headers to set @@ -196,7 +196,7 @@ class UserMailer { * @param MailAddress $from Sender's email * @param string $subject Email's subject. * @param string $body Email's text or Array of two strings to be the text and html bodies - * @param array $options: + * @param array $options Keys: * 'replyTo' MailAddress * 'contentType' string default 'text/plain; charset=UTF-8' * 'headers' array Extra headers to set diff --git a/includes/media/Bitmap.php b/includes/media/Bitmap.php index 0f0b074a67..ac39e6f3d4 100644 --- a/includes/media/Bitmap.php +++ b/includes/media/Bitmap.php @@ -88,7 +88,7 @@ class BitmapHandler extends TransformationalImageHandler { /** * @param File $image - * @param array $params + * @param array &$params * @return bool */ function normaliseParams( $image, &$params ) { @@ -129,7 +129,7 @@ class BitmapHandler extends TransformationalImageHandler { * @param File $image File associated with this thumbnail * @param array $params Array with scaler params * - * @return MediaTransformError Error object if error occurred, false (=no error) otherwise + * @return MediaTransformError|bool Error object if error occurred, false (=no error) otherwise */ protected function transformImageMagick( $image, $params ) { # use ImageMagick @@ -272,7 +272,7 @@ class BitmapHandler extends TransformationalImageHandler { * @param File $image File associated with this thumbnail * @param array $params Array with scaler params * - * @return MediaTransformError Error object if error occurred, false (=no error) otherwise + * @return MediaTransformError Error|bool object if error occurred, false (=no error) otherwise */ protected function transformImageMagickExt( $image, $params ) { global $wgSharpenReductionThreshold, $wgSharpenParameter, $wgMaxAnimatedGifArea, @@ -367,7 +367,7 @@ class BitmapHandler extends TransformationalImageHandler { * @param File $image File associated with this thumbnail * @param array $params Array with scaler params * - * @return MediaTransformError Error object if error occurred, false (=no error) otherwise + * @return MediaTransformError Error|bool object if error occurred, false (=no error) otherwise */ protected function transformCustom( $image, $params ) { # Use a custom convert command @@ -399,7 +399,7 @@ class BitmapHandler extends TransformationalImageHandler { * @param File $image File associated with this thumbnail * @param array $params Array with scaler params * - * @return MediaTransformError Error object if error occurred, false (=no error) otherwise + * @return MediaTransformError|bool Error object if error occurred, false (=no error) otherwise */ protected function transformGd( $image, $params ) { # Use PHP's builtin GD library functions. diff --git a/includes/media/Bitmap_ClientOnly.php b/includes/media/Bitmap_ClientOnly.php index 56b20acba5..3ec87723e9 100644 --- a/includes/media/Bitmap_ClientOnly.php +++ b/includes/media/Bitmap_ClientOnly.php @@ -35,7 +35,7 @@ class BitmapHandler_ClientOnly extends BitmapHandler { /** * @param File $image - * @param array $params + * @param array &$params * @return bool */ function normaliseParams( $image, &$params ) { diff --git a/includes/media/FormatMetadata.php b/includes/media/FormatMetadata.php index 69982c2fb4..6cac1261c7 100644 --- a/includes/media/FormatMetadata.php +++ b/includes/media/FormatMetadata.php @@ -1675,7 +1675,7 @@ class FormatMetadata extends ContextSource { * * @param File $file File to use * @param array $extendedMetadata - * @param int $maxCacheTime Hook handlers might use this parameter to override cache time + * @param int &$maxCacheTime Hook handlers might use this parameter to override cache time * * @return array [ => ['value' => ]], or [] on error * @since 1.23 @@ -1772,7 +1772,7 @@ class FormatMetadata extends ContextSource { /** * Takes an array returned by the getExtendedMetadata* functions, * and resolves multi-language values in it. - * @param array $metadata + * @param array &$metadata * @since 1.23 */ protected function resolveMultilangMetadata( &$metadata ) { @@ -1789,7 +1789,7 @@ class FormatMetadata extends ContextSource { /** * Takes an array returned by the getExtendedMetadata* functions, * and turns all fields into single-valued ones by dropping extra values. - * @param array $metadata + * @param array &$metadata * @since 1.25 */ protected function discardMultipleValues( &$metadata ) { @@ -1810,7 +1810,7 @@ class FormatMetadata extends ContextSource { /** * Makes sure the given array is a valid API response fragment - * @param array $arr + * @param array &$arr */ protected function sanitizeArrayForAPI( &$arr ) { if ( !is_array( $arr ) ) { diff --git a/includes/media/ImageHandler.php b/includes/media/ImageHandler.php index 158c0dc6ea..1eefddbd4f 100644 --- a/includes/media/ImageHandler.php +++ b/includes/media/ImageHandler.php @@ -80,7 +80,7 @@ abstract class ImageHandler extends MediaHandler { /** * @param File $image - * @param array $params + * @param array &$params * @return bool */ function normaliseParams( $image, &$params ) { @@ -152,8 +152,8 @@ abstract class ImageHandler extends MediaHandler { /** * Validate thumbnail parameters and fill in the correct height * - * @param int $width Specified width (input/output) - * @param int $height Height (output only) + * @param int &$width Specified width (input/output) + * @param int &$height Height (output only) * @param int $srcWidth Width of the source image * @param int $srcHeight Height of the source image * @param string $mimeType Unused diff --git a/includes/media/Jpeg.php b/includes/media/Jpeg.php index 29f0d7c606..287c198c57 100644 --- a/includes/media/Jpeg.php +++ b/includes/media/Jpeg.php @@ -175,7 +175,7 @@ class JpegHandler extends ExifBitmapHandler { } /** - * {@inheritdoc} + * @inheritDoc */ protected function transformImageMagick( $image, $params ) { global $wgUseTinyRGBForJPGThumbnails; diff --git a/includes/media/MediaHandler.php b/includes/media/MediaHandler.php index 76c979e0a4..aa7c62be9d 100644 --- a/includes/media/MediaHandler.php +++ b/includes/media/MediaHandler.php @@ -85,7 +85,7 @@ abstract class MediaHandler { * Should be idempotent. * Returns false if the parameters are unacceptable and the transform should fail * @param File $image - * @param array $params + * @param array &$params */ abstract function normaliseParams( $image, &$params ); @@ -304,8 +304,10 @@ abstract class MediaHandler { } /** - * @deprecated since 1.30, use MediaHandler::getContentHeaders instead - */ + * @deprecated since 1.30, use MediaHandler::getContentHeaders instead + * @param array $metadata + * @return array + */ public function getStreamHeaders( $metadata ) { wfDeprecated( __METHOD__, '1.30' ); return $this->getContentHeaders( $metadata ); @@ -712,7 +714,7 @@ abstract class MediaHandler { * * @see LocalFile::purgeThumbnails * - * @param array $files + * @param array &$files * @param array $options Purge options. Currently will always be * an array with a single key 'forThumbRefresh' set to true. */ @@ -872,7 +874,7 @@ abstract class MediaHandler { * @param Array $pagesByDimensions * @return String * @since 1.30 - */ + */ public static function getPageRangesByDimensions( $pagesByDimensions ) { $pageRangesByDimensions = []; @@ -913,11 +915,11 @@ abstract class MediaHandler { } /** - * Get useful response headers for GET/HEAD requests for a file with the given metadata - * @param $metadata Array Contains this handler's unserialized getMetadata() for a file - * @return Array - * @since 1.30 - */ + * Get useful response headers for GET/HEAD requests for a file with the given metadata + * @param array $metadata Contains this handler's unserialized getMetadata() for a file + * @return array + * @since 1.30 + */ public function getContentHeaders( $metadata ) { return []; } diff --git a/includes/media/SVG.php b/includes/media/SVG.php index 0cea6d899f..bd78b49e5d 100644 --- a/includes/media/SVG.php +++ b/includes/media/SVG.php @@ -126,7 +126,7 @@ class SvgHandler extends ImageHandler { /** * @param File $image - * @param array $params + * @param array &$params * @return bool */ function normaliseParams( $image, &$params ) { @@ -205,7 +205,17 @@ class SvgHandler extends ImageHandler { // https://git.gnome.org/browse/librsvg/commit/?id=f01aded72c38f0e18bc7ff67dee800e380251c8e $tmpDir = wfTempDir() . '/svg_' . wfRandomString( 24 ); $lnPath = "$tmpDir/" . basename( $srcPath ); - $ok = mkdir( $tmpDir, 0771 ) && symlink( $srcPath, $lnPath ); + $ok = mkdir( $tmpDir, 0771 ); + if ( !$ok ) { + wfDebugLog( 'thumbnail', + sprintf( 'Thumbnail failed on %s: could not create temporary directory %s', + wfHostname(), $tmpDir ) ); + return new MediaTransformError( 'thumbnail_error', + $params['width'], $params['height'], + wfMessage( 'thumbnail-temp-create' )->text() + ); + } + $ok = symlink( $srcPath, $lnPath ); /** @noinspection PhpUnusedLocalVariableInspection */ $cleaner = new ScopedCallback( function () use ( $tmpDir, $lnPath ) { MediaWiki\suppressWarnings(); diff --git a/includes/media/TransformationalImageHandler.php b/includes/media/TransformationalImageHandler.php index 742a5b7f61..32208cca70 100644 --- a/includes/media/TransformationalImageHandler.php +++ b/includes/media/TransformationalImageHandler.php @@ -36,7 +36,7 @@ use MediaWiki\MediaWikiServices; abstract class TransformationalImageHandler extends ImageHandler { /** * @param File $image - * @param array $params Transform parameters. Entries with the keys 'width' + * @param array &$params Transform parameters. Entries with the keys 'width' * and 'height' are the respective screen width and height, while the keys * 'physicalWidth' and 'physicalHeight' indicate the thumbnail dimensions. * @return bool @@ -588,7 +588,7 @@ abstract class TransformationalImageHandler extends ImageHandler { * Runs the 'BitmapHandlerCheckImageArea' hook. * * @param File $file - * @param array $params + * @param array &$params * @return bool * @since 1.25 */ diff --git a/includes/media/WebP.php b/includes/media/WebP.php index e2c2d2d192..3e4731ae08 100644 --- a/includes/media/WebP.php +++ b/includes/media/WebP.php @@ -86,7 +86,7 @@ class WebPHandler extends BitmapHandler { /** * Extracts the image size and WebP type from a file * - * @param string $chunks Chunks as extracted by RiffExtractor + * @param string $filename * @return array|bool Header data array with entries 'compression', 'width' and 'height', * where 'compression' can be 'lossy', 'lossless', 'animated' or 'unknown'. False if * file is not a valid WebP file. @@ -118,6 +118,7 @@ class WebPHandler extends BitmapHandler { /** * Extracts the image size and WebP type from a file based on the chunk list * @param array $chunks Chunks as extracted by RiffExtractor + * @param string $filename * @return array Header data array with entries 'compression', 'width' and 'height', where * 'compression' can be 'lossy', 'lossless', 'animated' or 'unknown' */ @@ -245,7 +246,7 @@ class WebPHandler extends BitmapHandler { } /** - * @param $file + * @param File $file * @return bool True, not all browsers support WebP */ public function mustRender( $file ) { @@ -253,7 +254,7 @@ class WebPHandler extends BitmapHandler { } /** - * @param $file + * @param File $file * @return bool False if we are unable to render this image */ public function canRender( $file ) { @@ -286,9 +287,9 @@ class WebPHandler extends BitmapHandler { /** * Render files as PNG * - * @param $ext - * @param $mime - * @param $params + * @param string $ext + * @param string $mime + * @param array|null $params * @return array */ public function getThumbType( $ext, $mime, $params = null ) { diff --git a/includes/objectcache/SqlBagOStuff.php b/includes/objectcache/SqlBagOStuff.php index 70795eccd9..2cfd2a1d76 100644 --- a/includes/objectcache/SqlBagOStuff.php +++ b/includes/objectcache/SqlBagOStuff.php @@ -145,27 +145,11 @@ class SqlBagOStuff extends BagOStuff { $this->replicaOnly = !empty( $params['slaveOnly'] ); } - protected function getSeparateMainLB() { - global $wgDBtype; - - if ( $this->usesMainDB() && $wgDBtype !== 'sqlite' ) { - if ( !$this->separateMainLB ) { - // We must keep a separate connection to MySQL in order to avoid deadlocks - $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory(); - $this->separateMainLB = $lbFactory->newMainLB(); - } - return $this->separateMainLB; - } else { - // However, SQLite has an opposite behavior due to DB-level locking - return null; - } - } - /** * Get a connection to the specified database * * @param int $serverIndex - * @return IDatabase + * @return Database * @throws MWException */ protected function getDB( $serverIndex ) { @@ -181,8 +165,8 @@ class SqlBagOStuff extends BagOStuff { throw $this->connFailureErrors[$serverIndex]; } - # If server connection info was given, use that if ( $this->serverInfos ) { + // Use custom database defined by server connection info $info = $this->serverInfos[$serverIndex]; $type = isset( $info['type'] ) ? $info['type'] : 'mysql'; $host = isset( $info['host'] ) ? $info['host'] : '[unknown]'; @@ -190,17 +174,22 @@ class SqlBagOStuff extends BagOStuff { // Use a blank trx profiler to ignore expections as this is a cache $info['trxProfiler'] = new TransactionProfiler(); $db = Database::factory( $type, $info ); - $db->clearFlag( DBO_TRX ); + $db->clearFlag( DBO_TRX ); // auto-commit mode } else { + // Use the main LB database + $lb = MediaWikiServices::getInstance()->getDBLoadBalancer(); $index = $this->replicaOnly ? DB_REPLICA : DB_MASTER; - if ( $this->getSeparateMainLB() ) { - $db = $this->getSeparateMainLB()->getConnection( $index ); - $db->clearFlag( DBO_TRX ); // auto-commit mode + if ( $lb->getServerType( $lb->getWriterIndex() ) !== 'sqlite' ) { + // Keep a separate connection to avoid contention and deadlocks + $db = $lb->getConnection( $index, [], false, $lb::CONN_TRX_AUTO ); + // @TODO: Use a blank trx profiler to ignore expections as this is a cache } else { - $db = wfGetDB( $index ); - // Can't mess with transaction rounds (DBO_TRX) :( + // However, SQLite has the opposite behavior due to DB-level locking. + // Stock sqlite MediaWiki installs use a separate sqlite cache DB instead. + $db = $lb->getConnection( $index ); } } + $this->logger->debug( sprintf( "Connection %s will be used for SqlBagOStuff", $db ) ); $this->conns[$serverIndex] = $db; } @@ -672,7 +661,7 @@ class SqlBagOStuff extends BagOStuff { * On typical message and page data, this can provide a 3X decrease * in storage requirements. * - * @param mixed $data + * @param mixed &$data * @return string */ protected function serialize( &$data ) { @@ -812,9 +801,7 @@ class SqlBagOStuff extends BagOStuff { return true; } - $lb = $this->getSeparateMainLB() - ?: MediaWikiServices::getInstance()->getDBLoadBalancer(); - + $lb = MediaWikiServices::getInstance()->getDBLoadBalancer(); if ( $lb->getServerCount() <= 1 ) { return true; // no replica DBs } diff --git a/includes/page/Article.php b/includes/page/Article.php index e2cf2cf65f..f52cd8d6e9 100644 --- a/includes/page/Article.php +++ b/includes/page/Article.php @@ -1180,7 +1180,7 @@ class Article implements Page { $key = $cache->makeKey( 'page-recent-delete', md5( $title->getPrefixedText() ) ); $loggedIn = $this->getContext()->getUser()->isLoggedIn(); if ( $loggedIn || $cache->get( $key ) ) { - $logTypes = [ 'delete', 'move' ]; + $logTypes = [ 'delete', 'move', 'protect' ]; $dbr = wfGetDB( DB_REPLICA ); @@ -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 ) { @@ -2580,7 +2580,7 @@ class Article implements Page { /** * @param array $limit * @param array $expiry - * @param bool $cascade + * @param bool &$cascade * @param string $reason * @param User $user * @return Status @@ -2594,7 +2594,7 @@ class Article implements Page { /** * @param array $limit * @param string $reason - * @param int $cascade + * @param int &$cascade * @param array $expiry * @return bool */ @@ -2615,7 +2615,7 @@ class Article implements Page { * @param bool $suppress * @param int $u1 Unused * @param bool $u2 Unused - * @param string $error + * @param string &$error * @return bool */ public function doDeleteArticle( @@ -2629,7 +2629,7 @@ class Article implements Page { * @param string $summary * @param string $token * @param bool $bot - * @param array $resultDetails + * @param array &$resultDetails * @param User|null $user * @return array */ @@ -2642,7 +2642,7 @@ class Article implements Page { * @param string $fromP * @param string $summary * @param bool $bot - * @param array $resultDetails + * @param array &$resultDetails * @param User|null $guser * @return array */ @@ -2652,7 +2652,7 @@ class Article implements Page { } /** - * @param bool $hasHistory + * @param bool &$hasHistory * @return mixed */ public function generateReason( &$hasHistory ) { diff --git a/includes/page/ImagePage.php b/includes/page/ImagePage.php index b870831e5f..0e3eaa5bcc 100644 --- a/includes/page/ImagePage.php +++ b/includes/page/ImagePage.php @@ -621,8 +621,8 @@ EOT /** * Make the text under the image to say what size preview * - * @param $params array parameters for thumbnail - * @param $sizeLinkBigImagePreview HTML for the current size + * @param array $params parameters for thumbnail + * @param string $sizeLinkBigImagePreview HTML for the current size * @return string HTML output */ private function getThumbPrevText( $params, $sizeLinkBigImagePreview ) { diff --git a/includes/page/PageArchive.php b/includes/page/PageArchive.php index 11e1a30db8..f6580e9389 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(); diff --git a/includes/page/WikiPage.php b/includes/page/WikiPage.php index c05ba45dae..790845e35e 100644 --- a/includes/page/WikiPage.php +++ b/includes/page/WikiPage.php @@ -383,11 +383,12 @@ class WikiPage implements Page, IDBAccessObject { if ( is_int( $from ) ) { list( $index, $opts ) = DBAccessObjectUtils::getDBOptions( $from ); $data = $this->pageDataFromTitle( wfGetDB( $index ), $this->mTitle, $opts ); + $loadBalancer = MediaWikiServices::getInstance()->getDBLoadBalancer(); if ( !$data && $index == DB_REPLICA - && wfGetLB()->getServerCount() > 1 - && wfGetLB()->hasOrMadeRecentMasterChanges() + && $loadBalancer->getServerCount() > 1 + && $loadBalancer->hasOrMadeRecentMasterChanges() ) { $from = self::READ_LATEST; list( $index, $opts ) = DBAccessObjectUtils::getDBOptions( $from ); @@ -1046,9 +1047,9 @@ class WikiPage implements Page, IDBAccessObject { * * @since 1.19 * @param ParserOptions $parserOptions ParserOptions to use for the parse operation - * @param null|int $oldid Revision ID to get the text from, passing null or 0 will - * get the current revision (default value) - * @param bool $forceParse Force reindexing, regardless of cache settings + * @param null|int $oldid Revision ID to get the text from, passing null or 0 will + * get the current revision (default value) + * @param bool $forceParse Force reindexing, regardless of cache settings * @return bool|ParserOutput ParserOutput or false if the revision was not found */ public function getParserOutput( @@ -1637,7 +1638,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 @@ -1811,7 +1812,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 @@ -2110,13 +2111,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 @@ -2301,7 +2302,7 @@ class WikiPage implements Page, IDBAccessObject { global $wgCascadingRestrictionLevels, $wgContLang; if ( wfReadOnly() ) { - return Status::newFatal( 'readonlytext', wfReadOnlyReason() ); + return Status::newFatal( wfMessage( 'readonlytext', wfReadOnlyReason() ) ); } $this->loadPageData( 'fromdbmaster' ); @@ -2483,6 +2484,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' ] ], [ @@ -2492,8 +2494,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', @@ -2745,7 +2746,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" ); @@ -2809,6 +2810,9 @@ class WikiPage implements Page, IDBAccessObject { $content = null; } + $revCommentStore = new CommentStore( 'rev_comment' ); + $arCommentStore = new CommentStore( 'ar_comment' ); + $fields = Revision::selectFields(); $bitfield = false; @@ -2826,20 +2830,23 @@ 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 = []; 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, @@ -2853,12 +2860,13 @@ 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; } // Copy them into the archive table $dbw->insert( 'archive', $rowsInsert, __METHOD__ ); @@ -2873,6 +2881,9 @@ 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__ ); + } // Log the deletion, if the page was suppressed, put it in the suppression log instead $logtype = $suppress ? 'suppress' : 'delete'; @@ -2918,7 +2929,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() { @@ -3000,7 +3011,7 @@ class WikiPage implements Page, IDBAccessObject { * @param string $token Rollback token. * @param bool $bot If true, mark all reverted edits as bot. * - * @param array $resultDetails Array contains result-specific array of additional values + * @param array &$resultDetails Array contains result-specific array of additional values * 'alreadyrolled' : 'current' (rev) * success : 'summary' (str), 'current' (rev), 'target' (rev) * @@ -3052,7 +3063,7 @@ class WikiPage implements Page, IDBAccessObject { * @param string $summary Custom summary. Set to default summary if empty. * @param bool $bot If true, mark all reverted edits as bot. * - * @param array $resultDetails Contains result-specific array of additional values + * @param array &$resultDetails Contains result-specific array of additional values * @param User $guser The user performing the rollback * @param array|null $tags Change tags to apply to the rollback * Callers are responsible for permission checks @@ -3413,7 +3424,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(); @@ -3632,7 +3643,7 @@ class WikiPage implements Page, IDBAccessObject { return $this->getTitle()->getCanonicalURL(); } - /* + /** * @param WANObjectCache $cache * @return string[] * @since 1.28 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/LinkHolderArray.php b/includes/parser/LinkHolderArray.php index d2a0a1a6d4..bc5182c1dd 100644 --- a/includes/parser/LinkHolderArray.php +++ b/includes/parser/LinkHolderArray.php @@ -264,7 +264,7 @@ class LinkHolderArray { /** * Replace link placeholders with actual links, in the buffer * - * @param string $text + * @param string &$text */ public function replace( &$text ) { $this->replaceInternal( $text ); @@ -273,7 +273,7 @@ class LinkHolderArray { /** * Replace internal links - * @param string $text + * @param string &$text */ protected function replaceInternal( &$text ) { if ( !$this->internals ) { @@ -416,7 +416,7 @@ class LinkHolderArray { /** * Replace interwiki links - * @param string $text + * @param string &$text */ protected function replaceInterwiki( &$text ) { if ( empty( $this->interwikis ) ) { @@ -444,7 +444,7 @@ class LinkHolderArray { /** * Modify $this->internals and $colours according to language variant linking rules - * @param array $colours + * @param array &$colours */ protected function doVariants( &$colours ) { global $wgContLang; diff --git a/includes/parser/Parser.php b/includes/parser/Parser.php index 88439db98a..57e627e4aa 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 * @@ -972,15 +950,10 @@ 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 + * @param array &$matches Out parameter, Array: extracted tags * @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 = []; @@ -2103,7 +2076,7 @@ class Parser { /** * Process [[ ]] wikilinks (RIL) - * @param string $s + * @param string &$s * @throws MWException * @return LinkHolderArray * @@ -2323,8 +2296,11 @@ class Parser { $this->mOutput->addLanguageLink( $nt->getFullText() ); } + /** + * Strip the whitespace interwiki links produce, see T10897 + */ $s = rtrim( $s . $prefix ); - $s .= trim( $trail, "\n" ) == '' ? '' : $prefix . $trail; + $s .= rtrim( $trail, "\n" ); continue; } @@ -2349,7 +2325,11 @@ class Parser { continue; } } elseif ( $ns == NS_CATEGORY ) { - $s = rtrim( $s . "\n" ); # T2087 + /** + * Strip the whitespace Category links produce, see T2087 + */ + $s = rtrim( $s . $prefix ); # T2087, T87753 + $s .= rtrim( $trail, "\n" ); if ( $wasblank ) { $sortkey = $this->getDefaultSort(); @@ -2361,11 +2341,6 @@ class Parser { $sortkey = $this->getConverterLanguage()->convertCategoryKey( $sortkey ); $this->mOutput->addCategory( $nt->getDBkey(), $sortkey ); - /** - * Strip the whitespace Category links produce, see T2087 - */ - $s .= trim( $prefix . $trail, "\n" ) == '' ? '' : $prefix . $trail; - continue; } } @@ -2611,7 +2586,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 +2594,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 +2694,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() ); @@ -3411,7 +3386,7 @@ class Parser { # string or an array containing the string and any flags. This mungs # things around to match what this method should return. if ( !is_array( $result ) ) { - $result =[ + $result = [ 'found' => true, 'text' => $result, ]; @@ -4536,7 +4511,7 @@ class Parser { * Do not reuse this parser instance after calling getUserSig(), * as it may have changed if it's the $wgParser. * - * @param User $user + * @param User &$user * @param string|bool $nickname Nickname to use or false to use user's default nickname * @param bool|null $fancySig whether the nicknname is the complete signature * or null to use default value @@ -4897,7 +4872,7 @@ class Parser { * Replace "" link placeholders with actual links, in the buffer * Placeholders created in Linker::link() * - * @param string $text + * @param string &$text * @param int $options */ public function replaceLinkHolders( &$text, $options = 0 ) { @@ -5406,7 +5381,7 @@ class Parser { * Callback from the Sanitizer for expanding items found in HTML attribute * values, so they can be safely tested and escaped. * - * @param string $text + * @param string &$text * @param bool|PPFrame $frame * @return string */ diff --git a/includes/parser/ParserOptions.php b/includes/parser/ParserOptions.php index 73a99272c2..c7146a1306 100644 --- a/includes/parser/ParserOptions.php +++ b/includes/parser/ParserOptions.php @@ -761,7 +761,7 @@ class ParserOptions { * is it allowed in the specific case of parsing this page. * @see self::getAllowUnsafeRawHtml() * @since 1.29 - * @param bool|null Value to set or null to get current value + * @param bool|null $x Value to set or null to get current value * @return bool Current value for allowUnsafeRawHtml */ public function setAllowUnsafeRawHtml( $x ) { @@ -1062,11 +1062,13 @@ class ParserOptions { 'speculativeRevIdCallback' => null, ]; + // @codingStandardsIgnoreStart Squiz.WhiteSpace.OperatorSpacing.NoSpaceAfterAmp Hooks::run( 'ParserOptionsRegister', [ &self::$defaults, &self::$inCacheKey, &self::$lazyOptions, ] ); + // @codingStandardsIgnoreEnd ksort( self::$inCacheKey ); } 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_DOM.php b/includes/parser/Preprocessor_DOM.php index 3c750ad7dc..2588962604 100644 --- a/includes/parser/Preprocessor_DOM.php +++ b/includes/parser/Preprocessor_DOM.php @@ -625,7 +625,7 @@ class Preprocessor_DOM extends Preprocessor { $curLen = strlen( $curChar ); $count = ( $curLen > 1 ) ? # allow the final character to repeat - strspn( $text, $curChar[$curLen-1], $i+1 ) + 1 : + strspn( $text, $curChar[$curLen - 1], $i + 1 ) + 1 : strspn( $text, $curChar, $i ); # we need to add to stack only if opening brace count is enough for one of the rules diff --git a/includes/parser/Preprocessor_Hash.php b/includes/parser/Preprocessor_Hash.php index 25d253f9b9..8e84cb2c82 100644 --- a/includes/parser/Preprocessor_Hash.php +++ b/includes/parser/Preprocessor_Hash.php @@ -569,7 +569,7 @@ class Preprocessor_Hash extends Preprocessor { $curLen = strlen( $curChar ); $count = ( $curLen > 1 ) ? # allow the final character to repeat - strspn( $text, $curChar[$curLen-1], $i+1 ) + 1 : + strspn( $text, $curChar[$curLen - 1], $i + 1 ) + 1 : strspn( $text, $curChar, $i ); # we need to add to stack only if opening brace count is enough for one of the rules @@ -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/profiler/ProfileSection.php b/includes/profiler/ProfileSection.php index 32daeed4bf..d48f74422f 100644 --- a/includes/profiler/ProfileSection.php +++ b/includes/profiler/ProfileSection.php @@ -40,5 +40,6 @@ class ProfileSection { * @param string $name Name of the function to profile */ public function __construct( $name ) { + wfDeprecated( __CLASS__, '1.25' ); } } diff --git a/includes/profiler/Profiler.php b/includes/profiler/Profiler.php index 252a227a1d..4da7976d82 100644 --- a/includes/profiler/Profiler.php +++ b/includes/profiler/Profiler.php @@ -164,7 +164,7 @@ abstract class Profiler { abstract public function scopedProfileIn( $section ); /** - * @param SectionProfileCallback $section + * @param SectionProfileCallback &$section */ public function scopedProfileOut( SectionProfileCallback &$section = null ) { $section = null; diff --git a/includes/profiler/SectionProfiler.php b/includes/profiler/SectionProfiler.php index fdfb24d8c4..57bd01f8de 100644 --- a/includes/profiler/SectionProfiler.php +++ b/includes/profiler/SectionProfiler.php @@ -66,7 +66,7 @@ class SectionProfiler { } /** - * @param ScopedCallback $section + * @param ScopedCallback &$section */ public function scopedProfileOut( ScopedCallback &$section ) { $section = null; @@ -298,7 +298,7 @@ class SectionProfiler { /* Find all items under this entry */ $level = $stack[$max][1]; $working = []; - for ( $i = $max -1; $i >= 0; $i-- ) { + for ( $i = $max - 1; $i >= 0; $i-- ) { if ( $stack[$i][1] > $level ) { $working[] = $stack[$i]; } else { @@ -439,7 +439,7 @@ class SectionProfiler { protected function calltreeCount( $stack, $start ) { $level = $stack[$start][1]; $count = 0; - for ( $i = $start -1; $i >= 0 && $stack[$i][1] > $level; $i-- ) { + for ( $i = $start - 1; $i >= 0 && $stack[$i][1] > $level; $i-- ) { $count ++; } return $count; 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/ResourceLoader.php b/includes/resourceloader/ResourceLoader.php index 2f292003c1..c58bb00b94 100644 --- a/includes/resourceloader/ResourceLoader.php +++ b/includes/resourceloader/ResourceLoader.php @@ -79,6 +79,15 @@ class ResourceLoader implements LoggerAwareInterface { */ protected $errors = []; + /** + * List of extra HTTP response headers provided by loaded modules. + * + * Populated by makeModuleResponse(). + * + * @var array + */ + protected $extraHeaders = []; + /** * @var MessageBlobStore */ @@ -646,7 +655,7 @@ class ResourceLoader implements LoggerAwareInterface { * * @since 1.26 * @param ResourceLoaderContext $context - * @param string[] $modules List of known module names + * @param string[] $moduleNames List of known module names * @return string Hash */ public function getCombinedVersion( ResourceLoaderContext $context, array $moduleNames ) { @@ -794,7 +803,7 @@ class ResourceLoader implements LoggerAwareInterface { } } - $this->sendResponseHeaders( $context, $etag, (bool)$this->errors ); + $this->sendResponseHeaders( $context, $etag, (bool)$this->errors, $this->extraHeaders ); // Remove the output buffer and output the response ob_end_clean(); @@ -827,9 +836,12 @@ class ResourceLoader implements LoggerAwareInterface { * @param ResourceLoaderContext $context * @param string $etag ETag header value * @param bool $errors Whether there are errors in the response + * @param string[] $extra Array of extra HTTP response headers * @return void */ - protected function sendResponseHeaders( ResourceLoaderContext $context, $etag, $errors ) { + protected function sendResponseHeaders( + ResourceLoaderContext $context, $etag, $errors, array $extra = [] + ) { \MediaWiki\HeaderCallback::warnIfHeadersSent(); $rlMaxage = $this->config->get( 'ResourceLoaderMaxage' ); // Use a short cache expiry so that updates propagate to clients quickly, if: @@ -873,6 +885,9 @@ class ResourceLoader implements LoggerAwareInterface { $exp = min( $maxage, $smaxage ); header( 'Expires: ' . wfTimestamp( TS_RFC2822, $exp + time() ) ); } + foreach ( $extra as $header ) { + header( $header ); + } } /** @@ -1008,6 +1023,9 @@ class ResourceLoader implements LoggerAwareInterface { /** * Generate code for a response. * + * Calling this method also populates the `errors` and `headers` members, + * later used by respond(). + * * @param ResourceLoaderContext $context Context in which to generate a response * @param ResourceLoaderModule[] $modules List of module objects keyed by module name * @param string[] $missing List of requested module names that are unregistered (optional) @@ -1052,6 +1070,10 @@ MESSAGE; $implementKey = $name . '@' . $module->getVersionHash( $context ); $strContent = ''; + if ( isset( $content['headers'] ) ) { + $this->extraHeaders = array_merge( $this->extraHeaders, $content['headers'] ); + } + // Append output switch ( $context->getOnly() ) { case 'scripts': diff --git a/includes/resourceloader/ResourceLoaderContext.php b/includes/resourceloader/ResourceLoaderContext.php index f99114e2b9..cbb0beca8d 100644 --- a/includes/resourceloader/ResourceLoaderContext.php +++ b/includes/resourceloader/ResourceLoaderContext.php @@ -224,7 +224,7 @@ class ResourceLoaderContext implements MessageLocalizer { * @since 1.27 * @param string|string[]|MessageSpecifier $key Message key, or array of keys, * or a MessageSpecifier. - * @param mixed ... + * @param mixed $args,... * @return Message */ public function msg( $key ) { diff --git a/includes/resourceloader/ResourceLoaderJqueryMsgModule.php b/includes/resourceloader/ResourceLoaderJqueryMsgModule.php index 01476ed17c..bef34f993d 100644 --- a/includes/resourceloader/ResourceLoaderJqueryMsgModule.php +++ b/includes/resourceloader/ResourceLoaderJqueryMsgModule.php @@ -65,9 +65,9 @@ class ResourceLoaderJqueryMsgModule extends ResourceLoaderFileModule { } /** - * @param ResourceLoaderContext $context - * @return array - */ + * @param ResourceLoaderContext $context + * @return array + */ public function getScriptURLsForDebug( ResourceLoaderContext $context ) { // Bypass file module urls return ResourceLoaderModule::getScriptURLsForDebug( $context ); diff --git a/includes/resourceloader/ResourceLoaderMediaWikiUtilModule.php b/includes/resourceloader/ResourceLoaderMediaWikiUtilModule.php index 1fe3434466..d16a4ff763 100644 --- a/includes/resourceloader/ResourceLoaderMediaWikiUtilModule.php +++ b/includes/resourceloader/ResourceLoaderMediaWikiUtilModule.php @@ -27,7 +27,7 @@ */ class ResourceLoaderMediaWikiUtilModule extends ResourceLoaderFileModule { /** - * @inheritdoc + * @inheritDoc */ public function getScript( ResourceLoaderContext $context ) { return ResourceLoader::makeConfigSetScript( @@ -38,7 +38,14 @@ class ResourceLoaderMediaWikiUtilModule extends ResourceLoaderFileModule { } /** - * @inheritdoc + * @inheritDoc + */ + public function supportsURLLoading() { + return false; + } + + /** + * @inheritDoc */ public function enableModuleContentVersion() { return true; diff --git a/includes/resourceloader/ResourceLoaderModule.php b/includes/resourceloader/ResourceLoaderModule.php index 16089019dc..b3c1cd14b7 100644 --- a/includes/resourceloader/ResourceLoaderModule.php +++ b/includes/resourceloader/ResourceLoaderModule.php @@ -586,6 +586,81 @@ abstract class ResourceLoaderModule implements LoggerAwareInterface { $this->msgBlobs[$lang] = $blob; } + /** + * Get headers to send as part of a module web response. + * + * It is not supported to send headers through this method that are + * required to be unique or otherwise sent once in an HTTP response + * because clients may make batch requests for multiple modules (as + * is the default behaviour for ResourceLoader clients). + * + * For exclusive or aggregated headers, see ResourceLoader::sendResponseHeaders(). + * + * @since 1.30 + * @param ResourceLoaderContext $context + * @return string[] Array of HTTP response headers + */ + final public function getHeaders( ResourceLoaderContext $context ) { + $headers = []; + + $formattedLinks = []; + foreach ( $this->getPreloadLinks( $context ) as $url => $attribs ) { + $link = "<{$url}>;rel=preload"; + foreach ( $attribs as $key => $val ) { + $link .= ";{$key}={$val}"; + } + $formattedLinks[] = $link; + } + if ( $formattedLinks ) { + $headers[] = 'Link: ' . implode( ',', $formattedLinks ); + } + + return $headers; + } + + /** + * Get a list of resources that web browsers may preload. + * + * Behaviour of rel=preload link is specified at . + * + * Use case for ResourceLoader originally part of T164299. + * + * @par Example + * @code + * protected function getPreloadLinks() { + * return [ + * 'https://example.org/script.js' => [ 'as' => 'script' ], + * 'https://example.org/image.png' => [ 'as' => 'image' ], + * ]; + * } + * @encode + * + * @par Example using HiDPI image variants + * @code + * protected function getPreloadLinks() { + * return [ + * 'https://example.org/logo.png' => [ + * 'as' => 'image', + * 'media' => 'not all and (min-resolution: 2dppx)', + * ], + * 'https://example.org/logo@2x.png' => [ + * 'as' => 'image', + * 'media' => '(min-resolution: 2dppx)', + * ], + * ]; + * } + * @encode + * + * @see ResourceLoaderModule::getHeaders + * @since 1.30 + * @param ResourceLoaderContext $context + * @return array Keyed by url, values must be an array containing + * at least an 'as' key. Optionally a 'media' key as well. + */ + protected function getPreloadLinks( ResourceLoaderContext $context ) { + return []; + } + /** * Get module-specific LESS variables, if any. * @@ -711,6 +786,11 @@ abstract class ResourceLoaderModule implements LoggerAwareInterface { $content['templates'] = $templates; } + $headers = $this->getHeaders( $context ); + if ( $headers ) { + $content['headers'] = $headers; + } + $statTiming = microtime( true ) - $statStart; $statName = strtr( $this->getName(), '.', '_' ); $stats->timing( "resourceloader_build.all", 1000 * $statTiming ); 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 64a6aec806..a2c58e6741 100644 --- a/includes/revisiondelete/RevDelList.php +++ b/includes/revisiondelete/RevDelList.php @@ -402,7 +402,7 @@ abstract class RevDelList extends RevisionListBase { /** * A hook for setVisibility(): do any necessary updates post-commit. * STUB - * @param array [id => ['oldBits' => $oldBits, 'newBits' => $newBits], ... ] + * @param array $visibilityChangeMap [id => ['oldBits' => $oldBits, 'newBits' => $newBits], ... ] * @return Status */ public function doPostCommitUpdates( array $visibilityChangeMap ) { 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 b834c15367..76fa590d03 100644 --- a/includes/revisiondelete/RevisionDeleter.php +++ b/includes/revisiondelete/RevisionDeleter.php @@ -98,7 +98,7 @@ class RevisionDeleter { * @param int $field The bitmask describing the single option. * @param int $diff The xor of the old and new bitfields. * @param int $new The new bitfield - * @param array $arr The array to update. + * @param array &$arr The array to update. */ protected static function checkItem( $desc, $field, $diff, $new, &$arr ) { if ( $diff & $field ) { @@ -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/search/NullIndexField.php b/includes/search/NullIndexField.php index 852e1d5a1b..ff1e8cbf74 100644 --- a/includes/search/NullIndexField.php +++ b/includes/search/NullIndexField.php @@ -17,7 +17,7 @@ class NullIndexField implements SearchIndexField { /** * Set global flag for this field. * - * @param int $flag Bit flag to set/unset + * @param int $flag Bit flag to set/unset * @param bool $unset True if flag should be unset, false by default * @return $this */ @@ -26,7 +26,7 @@ class NullIndexField implements SearchIndexField { /** * Check if flag is set. - * @param $flag + * @param int $flag * @return int 0 if unset, !=0 if set */ public function checkFlag( $flag ) { @@ -44,7 +44,7 @@ class NullIndexField implements SearchIndexField { } /** - * {@inheritDoc} + * @inheritDoc */ public function getEngineHints( SearchEngine $engine ) { return []; diff --git a/includes/search/SearchEngine.php b/includes/search/SearchEngine.php index 70117db76c..7c2f0f25ca 100644 --- a/includes/search/SearchEngine.php +++ b/includes/search/SearchEngine.php @@ -138,7 +138,7 @@ abstract class SearchEngine { * @return mixed the feature value or null if unset */ public function getFeatureData( $feature ) { - if ( isset ( $this->features[$feature] ) ) { + if ( isset( $this->features[$feature] ) ) { return $this->features[$feature]; } return null; @@ -566,6 +566,7 @@ abstract class SearchEngine { /** * Process completion search results. * Resolves the titles and rescores. + * @param string $search * @param SearchSuggestionSet $suggestions * @return SearchSuggestionSet */ @@ -727,7 +728,7 @@ abstract class SearchEngine { * Create a search field definition. * Specific search engines should override this method to create search fields. * @param string $name - * @param int $type One of the types in SearchIndexField::INDEX_TYPE_* + * @param int $type One of the types in SearchIndexField::INDEX_TYPE_* * @return SearchIndexField * @since 1.28 */ diff --git a/includes/search/SearchExactMatchRescorer.php b/includes/search/SearchExactMatchRescorer.php index 40cfe39305..0e99ba91ff 100644 --- a/includes/search/SearchExactMatchRescorer.php +++ b/includes/search/SearchExactMatchRescorer.php @@ -35,8 +35,8 @@ class SearchExactMatchRescorer { * to not be in the results or be lower down the list. * @param string $search the query * @param int[] $namespaces the namespaces - * @param int $limit the max number of results to return * @param string[] $srchres results + * @param int $limit the max number of results to return * @return string[] munged results */ public function rescore( $search, $namespaces, $srchres, $limit ) { diff --git a/includes/search/SearchHighlighter.php b/includes/search/SearchHighlighter.php index cebdb40dbb..20462cf133 100644 --- a/includes/search/SearchHighlighter.php +++ b/includes/search/SearchHighlighter.php @@ -32,6 +32,7 @@ class SearchHighlighter { /** * @warning If you pass false to this constructor, then * the caller is responsible for HTML escaping. + * @param bool $cleanupWikitext */ function __construct( $cleanupWikitext = true ) { $this->mCleanWikitext = $cleanupWikitext; @@ -291,8 +292,8 @@ class SearchHighlighter { /** * Split text into lines and add it to extracts array * - * @param array $extracts Index -> $line - * @param int $count + * @param array &$extracts Index -> $line + * @param int &$count * @param string $text */ function splitAndAdd( &$extracts, &$count, $text ) { @@ -326,8 +327,8 @@ class SearchHighlighter { * @param string $text * @param int $start * @param int $end - * @param int $posStart (out) actual start position - * @param int $posEnd (out) actual end position + * @param int &$posStart (out) actual start position + * @param int &$posEnd (out) actual end position * @return string */ function extract( $text, $start, $end, &$posStart = null, &$posEnd = null ) { @@ -397,10 +398,10 @@ class SearchHighlighter { * * @param string $pattern Regexp for matching lines * @param array $extracts Extracts to search - * @param int $linesleft Number of extracts to make - * @param int $contextchars Length of snippet - * @param array $out Map for highlighted snippets - * @param array $offsets Map of starting points of snippets + * @param int &$linesleft Number of extracts to make + * @param int &$contextchars Length of snippet + * @param array &$out Map for highlighted snippets + * @param array &$offsets Map of starting points of snippets * @protected */ function process( $pattern, $extracts, &$linesleft, &$contextchars, &$out, &$offsets ) { diff --git a/includes/search/SearchIndexField.php b/includes/search/SearchIndexField.php index a348d6dc9a..6f3b207848 100644 --- a/includes/search/SearchIndexField.php +++ b/includes/search/SearchIndexField.php @@ -30,16 +30,19 @@ interface SearchIndexField { * This field is case-insensitive. */ const FLAG_CASEFOLD = 1; + /** * This field contains secondary information, which is * already present in other fields, but can be used for * scoring. */ const FLAG_SCORING = 2; + /** * This field does not need highlight handling. */ const FLAG_NO_HIGHLIGHT = 4; + /** * Do not index this field, just store it. */ @@ -51,20 +54,23 @@ interface SearchIndexField { * @return array|null Null means this field does not map to anything */ public function getMapping( SearchEngine $engine ); + /** * Set global flag for this field. * - * @param int $flag Bit flag to set/unset + * @param int $flag Bit flag to set/unset * @param bool $unset True if flag should be unset, false by default * @return $this */ public function setFlag( $flag, $unset = false ); + /** * Check if flag is set. - * @param $flag + * @param int $flag * @return int 0 if unset, !=0 if set */ public function checkFlag( $flag ); + /** * Merge two field definitions if possible. * diff --git a/includes/search/SearchIndexFieldDefinition.php b/includes/search/SearchIndexFieldDefinition.php index 87d6344bea..a11dff9fc7 100644 --- a/includes/search/SearchIndexFieldDefinition.php +++ b/includes/search/SearchIndexFieldDefinition.php @@ -9,24 +9,28 @@ * @since 1.28 */ abstract class SearchIndexFieldDefinition implements SearchIndexField { + /** * Name of the field * * @var string */ protected $name; + /** * Type of the field, one of the constants above * * @var int */ protected $type; + /** * Bit flags for the field. * * @var int */ protected $flags = 0; + /** * Subfields * @var SearchIndexFieldDefinition[] @@ -40,7 +44,7 @@ abstract class SearchIndexFieldDefinition implements SearchIndexField { /** * @param string $name Field name - * @param int $type Index type + * @param int $type Index type */ public function __construct( $name, $type ) { $this->name = $name; @@ -66,7 +70,7 @@ abstract class SearchIndexFieldDefinition implements SearchIndexField { /** * Set global flag for this field. * - * @param int $flag Bit flag to set/unset + * @param int $flag Bit flag to set/unset * @param bool $unset True if flag should be unset, false by default * @return $this */ @@ -81,7 +85,7 @@ abstract class SearchIndexFieldDefinition implements SearchIndexField { /** * Check if flag is set. - * @param $flag + * @param int $flag * @return int 0 if unset, !=0 if set */ public function checkFlag( $flag ) { @@ -141,7 +145,7 @@ abstract class SearchIndexFieldDefinition implements SearchIndexField { } /** - * {@inheritDoc} + * @inheritDoc */ public function getEngineHints( SearchEngine $engine ) { return []; diff --git a/includes/search/SearchMySQL.php b/includes/search/SearchMySQL.php index 2ea960555b..77dcfe9ce2 100644 --- a/includes/search/SearchMySQL.php +++ b/includes/search/SearchMySQL.php @@ -218,7 +218,7 @@ class SearchMySQL extends SearchDatabase { /** * Add special conditions - * @param array $query + * @param array &$query * @since 1.18 */ protected function queryFeatures( &$query ) { @@ -231,7 +231,7 @@ class SearchMySQL extends SearchDatabase { /** * Add namespace conditions - * @param array $query + * @param array &$query * @since 1.18 (changed) */ function queryNamespaces( &$query ) { @@ -245,7 +245,7 @@ class SearchMySQL extends SearchDatabase { /** * Add limit options - * @param array $query + * @param array &$query * @since 1.18 */ protected function limitResult( &$query ) { diff --git a/includes/search/SearchResult.php b/includes/search/SearchResult.php index 50db84b034..dc294c324e 100644 --- a/includes/search/SearchResult.php +++ b/includes/search/SearchResult.php @@ -65,7 +65,7 @@ class SearchResult { /** * Return a new SearchResult and initializes it with a title. * - * @param Title $title + * @param Title $title * @param SearchResultSet $parentSet * @return SearchResult */ diff --git a/includes/search/SearchSqlite.php b/includes/search/SearchSqlite.php index 2c82c7d9a5..3d4da42ce8 100644 --- a/includes/search/SearchSqlite.php +++ b/includes/search/SearchSqlite.php @@ -145,7 +145,7 @@ class SearchSqlite extends SearchDatabase { $searchChars = parent::legalSearchChars( $type ); if ( $type === self::CHARS_ALL ) { // " for phrase, * for wildcard - $searchChars = "\"*" . $searchChars; + $searchChars = "\"*" . $searchChars; } return $searchChars; } diff --git a/includes/search/SearchSuggestion.php b/includes/search/SearchSuggestion.php index 4e7c782e84..7f433db4ae 100644 --- a/includes/search/SearchSuggestion.php +++ b/includes/search/SearchSuggestion.php @@ -53,7 +53,7 @@ class SearchSuggestion { /** * Construct a new suggestion * @param float $score the suggestion score - * @param string $text|null the suggestion text + * @param string|null $text the suggestion text * @param Title|null $suggestedTitle the suggested title * @param int|null $suggestedTitleID the suggested title ID */ 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/session/PHPSessionHandler.php b/includes/session/PHPSessionHandler.php index 084ac05c96..b76f0ff6b7 100644 --- a/includes/session/PHPSessionHandler.php +++ b/includes/session/PHPSessionHandler.php @@ -145,7 +145,7 @@ class PHPSessionHandler implements \SessionHandlerInterface { * @private Use self::install(). * @param SessionManager $manager * @param BagOStuff $store - * @param LoggerInterface $store + * @param LoggerInterface $logger */ public function setManager( SessionManager $manager, BagOStuff $store, LoggerInterface $logger diff --git a/includes/session/SessionProvider.php b/includes/session/SessionProvider.php index 3cf69b7b33..ba075e0ca8 100644 --- a/includes/session/SessionProvider.php +++ b/includes/session/SessionProvider.php @@ -387,7 +387,7 @@ abstract class SessionProvider implements SessionProviderInterface, LoggerAwareI * reset whatever token it does use here. * * @protected For use by \MediaWiki\Session\SessionManager only - * @param User $user; + * @param User $user */ public function invalidateSessionsForUser( User $user ) { } diff --git a/includes/session/Token.php b/includes/session/Token.php index 523e0cc1c0..14d239d5a9 100644 --- a/includes/session/Token.php +++ b/includes/session/Token.php @@ -56,7 +56,7 @@ class Token { * be able to extract the timestamp. * * @param string $token - * @param int|null + * @return int|null */ public static function getTimestamp( $token ) { $suffixLen = strlen( self::SUFFIX ); diff --git a/includes/site/Site.php b/includes/site/Site.php index 31e1590933..a6e63391da 100644 --- a/includes/site/Site.php +++ b/includes/site/Site.php @@ -333,7 +333,7 @@ class Site implements Serializable { */ public function getLinkPath() { $type = $this->getLinkPathType(); - return $type === null ? null: $this->getPath( $type ); + return $type === null ? null : $this->getPath( $type ); } /** diff --git a/includes/site/SiteImporter.php b/includes/site/SiteImporter.php index 42812e14fb..5e13d06152 100644 --- a/includes/site/SiteImporter.php +++ b/includes/site/SiteImporter.php @@ -191,7 +191,7 @@ class SiteImporter { /** * @param DOMElement $element - * @param $name + * @param string $name * @param string|null|bool $default * * @return null|string diff --git a/includes/skins/BaseTemplate.php b/includes/skins/BaseTemplate.php index aad676f8e3..8d5ce10dd1 100644 --- a/includes/skins/BaseTemplate.php +++ b/includes/skins/BaseTemplate.php @@ -29,7 +29,7 @@ abstract class BaseTemplate extends QuickTemplate { * Get a Message object with its context set * * @param string $name Message name - * @param ... $params Message params + * @param mixed $params,... Message params * @return Message */ public function getMsg( $name /* ... */ ) { @@ -201,13 +201,13 @@ abstract class BaseTemplate extends QuickTemplate { ]; break; case 'LANGUAGES': - if ( $this->data['language_urls'] ) { + if ( $this->data['language_urls'] !== false ) { $msgObj = $this->getMsg( 'otherlanguages' ); $boxes[$boxName] = [ 'id' => 'p-lang', 'header' => $msgObj->exists() ? $msgObj->text() : 'otherlanguages', 'generated' => false, - 'content' => $this->data['language_urls'], + 'content' => $this->data['language_urls'] ?: [], ]; } break; diff --git a/includes/skins/QuickTemplate.php b/includes/skins/QuickTemplate.php index e0ceab5215..d1be4bb0df 100644 --- a/includes/skins/QuickTemplate.php +++ b/includes/skins/QuickTemplate.php @@ -62,11 +62,11 @@ abstract class QuickTemplate { } /** - * extends the value of data with name $name with the value $value - * @since 1.25 - * @param string $name - * @param mixed $value - */ + * extends the value of data with name $name with the value $value + * @since 1.25 + * @param string $name + * @param mixed $value + */ public function extend( $name, $value ) { if ( $this->haveData( $name ) ) { $this->data[$name] = $this->data[$name] . $value; @@ -92,14 +92,14 @@ abstract class QuickTemplate { /** * @param string $name - * @param mixed $value + * @param mixed &$value */ public function setRef( $name, &$value ) { $this->data[$name] =& $value; } /** - * @param MediaWikiI18N $t + * @param MediaWikiI18N &$t */ public function setTranslator( &$t ) { $this->translator = &$t; diff --git a/includes/skins/Skin.php b/includes/skins/Skin.php index 849362aae7..e1d0034675 100644 --- a/includes/skins/Skin.php +++ b/includes/skins/Skin.php @@ -449,7 +449,7 @@ abstract class Skin extends ContextSource { * "" tag, skins can override it if they have a need to add in any * body attributes or classes of their own. * @param OutputPage $out - * @param array $bodyAttrs + * @param array &$bodyAttrs */ function addToBodyAttributes( $out, &$bodyAttrs ) { // does nothing by default @@ -1215,7 +1215,7 @@ abstract class Skin extends ContextSource { /** * make sure we have some title to operate on * - * @param Title $title + * @param Title &$title * @param string $name */ static function checkTitle( &$title, $name ) { @@ -1286,7 +1286,7 @@ abstract class Skin extends ContextSource { * * This is just a wrapper around addToSidebarPlain() for backwards compatibility * - * @param array $bar + * @param array &$bar * @param string $message */ public function addToSidebar( &$bar, $message ) { @@ -1296,7 +1296,7 @@ abstract class Skin extends ContextSource { /** * Add content from plain text * @since 1.17 - * @param array $bar + * @param array &$bar * @param string $text * @return array */ diff --git a/includes/skins/SkinTemplate.php b/includes/skins/SkinTemplate.php index f49d46c2fd..180a6df9c4 100644 --- a/includes/skins/SkinTemplate.php +++ b/includes/skins/SkinTemplate.php @@ -306,8 +306,8 @@ class SkinTemplate extends Skin { $tpl->set( 'pagetitle', $out->getHTMLTitle() ); $tpl->set( 'displaytitle', $out->mPageLinkTitle ); - $tpl->setRef( 'thispage', $this->thispage ); - $tpl->setRef( 'titleprefixeddbkey', $this->thispage ); + $tpl->set( 'thispage', $this->thispage ); + $tpl->set( 'titleprefixeddbkey', $this->thispage ); $tpl->set( 'titletext', $title->getText() ); $tpl->set( 'articleid', $title->getArticleID() ); @@ -336,32 +336,32 @@ class SkinTemplate extends Skin { 'href' => $link ]; } - $tpl->setRef( 'feeds', $feeds ); + $tpl->set( 'feeds', $feeds ); } else { $tpl->set( 'feeds', false ); } - $tpl->setRef( 'mimetype', $wgMimeType ); - $tpl->setRef( 'jsmimetype', $wgJsMimeType ); + $tpl->set( 'mimetype', $wgMimeType ); + $tpl->set( 'jsmimetype', $wgJsMimeType ); $tpl->set( 'charset', 'UTF-8' ); - $tpl->setRef( 'wgScript', $wgScript ); - $tpl->setRef( 'skinname', $this->skinname ); + $tpl->set( 'wgScript', $wgScript ); + $tpl->set( 'skinname', $this->skinname ); $tpl->set( 'skinclass', static::class ); - $tpl->setRef( 'skin', $this ); - $tpl->setRef( 'stylename', $this->stylename ); + $tpl->set( 'skin', $this ); + $tpl->set( 'stylename', $this->stylename ); $tpl->set( 'printable', $out->isPrintable() ); $tpl->set( 'handheld', $request->getBool( 'handheld' ) ); - $tpl->setRef( 'loggedin', $this->loggedin ); + $tpl->set( 'loggedin', $this->loggedin ); $tpl->set( 'notspecialpage', !$title->isSpecialPage() ); $tpl->set( 'searchaction', $this->escapeSearchLink() ); $tpl->set( 'searchtitle', SpecialPage::getTitleFor( 'Search' )->getPrefixedDBkey() ); $tpl->set( 'search', trim( $request->getVal( 'search' ) ) ); - $tpl->setRef( 'stylepath', $wgStylePath ); - $tpl->setRef( 'articlepath', $wgArticlePath ); - $tpl->setRef( 'scriptpath', $wgScriptPath ); - $tpl->setRef( 'serverurl', $wgServer ); - $tpl->setRef( 'logopath', $wgLogo ); - $tpl->setRef( 'sitename', $wgSitename ); + $tpl->set( 'stylepath', $wgStylePath ); + $tpl->set( 'articlepath', $wgArticlePath ); + $tpl->set( 'scriptpath', $wgScriptPath ); + $tpl->set( 'serverurl', $wgServer ); + $tpl->set( 'logopath', $wgLogo ); + $tpl->set( 'sitename', $wgSitename ); $userLang = $this->getLanguage(); $userLangCode = $userLang->getHtmlCode(); @@ -374,8 +374,8 @@ class SkinTemplate extends Skin { $tpl->set( 'capitalizeallnouns', $userLang->capitalizeAllNouns() ? ' capitalize-all-nouns' : '' ); $tpl->set( 'showjumplinks', true ); // showjumplinks preference has been removed $tpl->set( 'username', $this->loggedin ? $this->username : null ); - $tpl->setRef( 'userpage', $this->userpage ); - $tpl->setRef( 'userpageurl', $this->userpageUrlDetails['href'] ); + $tpl->set( 'userpage', $this->userpage ); + $tpl->set( 'userpageurl', $this->userpageUrlDetails['href'] ); $tpl->set( 'userlang', $userLangCode ); // Users can have their language set differently than the @@ -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() ); @@ -1080,7 +1080,12 @@ class SkinTemplate extends Skin { ), // uses 'watch' or 'unwatch' message 'text' => $this->msg( $mode )->text(), - 'href' => $title->getLocalURL( [ 'action' => $mode ] ) + 'href' => $title->getLocalURL( [ 'action' => $mode ] ), + // Set a data-mw=interface attribute, which the mediawiki.page.ajax + // module will look for to make sure it's a trusted link + 'data' => [ + 'mw' => 'interface', + ], ]; } } diff --git a/includes/specialpage/AuthManagerSpecialPage.php b/includes/specialpage/AuthManagerSpecialPage.php index fbc3022a43..500c2e93f5 100644 --- a/includes/specialpage/AuthManagerSpecialPage.php +++ b/includes/specialpage/AuthManagerSpecialPage.php @@ -45,7 +45,7 @@ abstract class AuthManagerSpecialPage extends SpecialPage { * @param AuthenticationRequest[] $requests * @param array $fieldInfo Field information array (union of all * AuthenticationRequest::getFieldInfo() responses). - * @param array $formDescriptor HTMLForm descriptor. The special key 'weight' can be set to + * @param array &$formDescriptor HTMLForm descriptor. The special key 'weight' can be set to * change the order of the fields. * @param string $action Authentication type (one of the AuthManager::ACTION_* constants) * @return bool @@ -474,7 +474,7 @@ abstract class AuthManagerSpecialPage extends SpecialPage { /** * Submit handler callback for HTMLForm * @private - * @param $data array Submitted data + * @param array $data Submitted data * @return Status */ public function handleFormSubmit( $data ) { @@ -598,7 +598,7 @@ abstract class AuthManagerSpecialPage extends SpecialPage { /** * Adds a sequential tabindex starting from 1 to all form elements. This way the user can * use the tab key to traverse the form without having to step through all links and such. - * @param $formDescriptor + * @param array &$formDescriptor */ protected function addTabIndex( &$formDescriptor ) { $i = 1; @@ -709,7 +709,7 @@ abstract class AuthManagerSpecialPage extends SpecialPage { * Sort the fields of a form descriptor by their 'weight' property. (Fields with higher weight * are shown closer to the bottom; weight defaults to 0. Negative weight is allowed.) * Keep order if weights are equal. - * @param array $formDescriptor + * @param array &$formDescriptor * @return array */ protected static function sortFormDescriptorFields( array &$formDescriptor ) { diff --git a/includes/specialpage/ChangesListSpecialPage.php b/includes/specialpage/ChangesListSpecialPage.php index 645fbb288f..acd5d14fe6 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 + */ + protected function isStructuredFilterUiEnabled() { + return $this->getUser()->getOption( 'rcenhancedfilters' ); + } + + abstract function getDefaultLimit(); + + abstract function getDefaultDays(); } diff --git a/includes/specialpage/LoginSignupSpecialPage.php b/includes/specialpage/LoginSignupSpecialPage.php index 0600642476..04d391b3db 100644 --- a/includes/specialpage/LoginSignupSpecialPage.php +++ b/includes/specialpage/LoginSignupSpecialPage.php @@ -26,7 +26,9 @@ use MediaWiki\Auth\AuthenticationResponse; use MediaWiki\Auth\AuthManager; use MediaWiki\Auth\Throttler; use MediaWiki\Logger\LoggerFactory; +use MediaWiki\MediaWikiServices; use MediaWiki\Session\SessionManager; +use Wikimedia\ScopedCallback; /** * Holds shared logic for login and account creation pages. @@ -96,7 +98,7 @@ abstract class LoginSignupSpecialPage extends AuthManagerSpecialPage { /** * Load basic request parameters for this Special page. - * @param $subPage + * @param string $subPage */ private function loadRequestParameters( $subPage ) { if ( $this->mLoadedRequest ) { @@ -212,6 +214,15 @@ abstract class LoginSignupSpecialPage extends AuthManagerSpecialPage { * @param string|null $subPage */ public function execute( $subPage ) { + if ( $this->mPosted ) { + $time = microtime( true ); + $profilingScope = new ScopedCallback( function () use ( $time ) { + $time = microtime( true ) - $time; + $statsd = MediaWikiServices::getInstance()->getStatsdDataFactory(); + $statsd->timing( "timing.login.ui.{$this->authAction}", $time * 1000 ); + } ); + } + $authManager = AuthManager::singleton(); $session = SessionManager::getGlobalSession(); @@ -1145,7 +1156,7 @@ abstract class LoginSignupSpecialPage extends AuthManagerSpecialPage { // Don't show a "create account" link if the user can't. if ( $this->showCreateAccountLink() ) { // link to the other action - $linkTitle = $this->getTitleFor( $this->isSignup() ? 'Userlogin' :'CreateAccount' ); + $linkTitle = $this->getTitleFor( $this->isSignup() ? 'Userlogin' : 'CreateAccount' ); $linkq = $this->getReturnToQueryStringFragment(); // Pass any language selection on to the mode switch link if ( $this->mLanguage ) { @@ -1188,7 +1199,7 @@ abstract class LoginSignupSpecialPage extends AuthManagerSpecialPage { /** * Adds fields provided via the deprecated UserLoginForm / UserCreateForm hooks - * @param $fieldDefinitions array + * @param array $fieldDefinitions * @param FakeAuthTemplate $template * @return array */ @@ -1236,6 +1247,7 @@ abstract class LoginSignupSpecialPage extends AuthManagerSpecialPage { /** * Returns a string that can be appended to the URL (without encoding) to preserve the * return target. Does not include leading '?'/'&'. + * @return string */ protected function getReturnToQueryStringFragment() { $returnto = ''; @@ -1328,7 +1340,8 @@ abstract class LoginSignupSpecialPage extends AuthManagerSpecialPage { } /** - * @param array $formDescriptor + * @param array &$formDescriptor + * @param array $requests */ protected function postProcessFormDescriptor( &$formDescriptor, $requests ) { // Pre-fill username (if not creating an account, T46775). @@ -1384,6 +1397,11 @@ class FakeAuthTemplate extends BaseTemplate { /** * Extensions (AntiSpoof and TitleBlacklist) call this in response to * UserCreateForm hook to add checkboxes to the create account form. + * @param string $name + * @param string $value + * @param string $type + * @param string $msg + * @param string|bool $helptext */ public function addInputItem( $name, $value, $type, $msg, $helptext = false ) { // use the same indexes as UserCreateForm just in case someone adds an item manually @@ -1485,6 +1503,7 @@ class LoginForm extends SpecialPage { /** * @deprecated since 1.27 - call LoginHelper::getValidErrorMessages instead. + * @return array */ public static function getValidErrorMessages() { return LoginHelper::getValidErrorMessages(); @@ -1492,6 +1511,8 @@ class LoginForm extends SpecialPage { /** * @deprecated since 1.27 - don't use LoginForm, use AuthManager instead + * @param string $username + * @return array|false */ public static function incrementLoginThrottle( $username ) { wfDeprecated( __METHOD__, "1.27" ); @@ -1503,6 +1524,8 @@ class LoginForm extends SpecialPage { /** * @deprecated since 1.27 - don't use LoginForm, use AuthManager instead + * @param string $username + * @return bool|int */ public static function incLoginThrottle( $username ) { wfDeprecated( __METHOD__, "1.27" ); @@ -1512,6 +1535,8 @@ class LoginForm extends SpecialPage { /** * @deprecated since 1.27 - don't use LoginForm, use AuthManager instead + * @param string $username + * @return void */ public static function clearLoginThrottle( $username ) { wfDeprecated( __METHOD__, "1.27" ); @@ -1548,6 +1573,7 @@ class LoginForm extends SpecialPage { /** * @deprecated since 1.27 - don't use LoginForm, use AuthManager instead + * @return string */ public static function getCreateaccountToken() { wfDeprecated( __METHOD__, '1.27' ); diff --git a/includes/specialpage/RedirectSpecialPage.php b/includes/specialpage/RedirectSpecialPage.php index 9b5d5f463d..d3e22a0f62 100644 --- a/includes/specialpage/RedirectSpecialPage.php +++ b/includes/specialpage/RedirectSpecialPage.php @@ -52,8 +52,7 @@ abstract class RedirectSpecialPage extends UnlistedSpecialPage { return $redirect; } else { - $class = static::class; - throw new MWException( "RedirectSpecialPage $class doesn't redirect!" ); + $this->showNoRedirectPage(); } } @@ -106,6 +105,11 @@ abstract class RedirectSpecialPage extends UnlistedSpecialPage { public function personallyIdentifiableTarget() { return false; } + + protected function showNoRedirectPage() { + $class = static::class; + throw new MWException( "RedirectSpecialPage $class doesn't redirect!" ); + } } /** diff --git a/includes/specialpage/SpecialPageFactory.php b/includes/specialpage/SpecialPageFactory.php index 8dcb30c907..4433ddb7d6 100644 --- a/includes/specialpage/SpecialPageFactory.php +++ b/includes/specialpage/SpecialPageFactory.php @@ -501,8 +501,8 @@ class SpecialPageFactory { * Returns a title object if the page is redirected, false if there was no such special * page, and true if it was successful. * - * @param Title $title - * @param IContextSource $context + * @param Title &$title + * @param IContextSource &$context * @param bool $including Bool output is being captured for use in {{special:whatever}} * @param LinkRenderer|null $linkRenderer (since 1.28) * diff --git a/includes/specials/SpecialBlock.php b/includes/specials/SpecialBlock.php index 04c04b239c..66e4fbeda2 100644 --- a/includes/specials/SpecialBlock.php +++ b/includes/specials/SpecialBlock.php @@ -233,7 +233,7 @@ class SpecialBlock extends FormSpecialPage { /** * If the user has already been blocked with similar settings, load that block * and change the defaults for the form fields to match the existing settings. - * @param array $fields HTMLForm descriptor array + * @param array &$fields HTMLForm descriptor array * @return bool Whether fields were altered (that is, whether the target is * already blocked) */ diff --git a/includes/specials/SpecialBrokenRedirects.php b/includes/specials/SpecialBrokenRedirects.php index cd9345d1bf..cf9ae07187 100644 --- a/includes/specials/SpecialBrokenRedirects.php +++ b/includes/specials/SpecialBrokenRedirects.php @@ -66,6 +66,7 @@ class BrokenRedirectsPage extends QueryPage { 'value' => 'p1.page_title', 'rd_namespace', 'rd_title', + 'rd_fragment', ], 'conds' => [ // Exclude pages that don't exist locally as wiki pages, @@ -102,7 +103,7 @@ class BrokenRedirectsPage extends QueryPage { function formatResult( $skin, $result ) { $fromObj = Title::makeTitle( $result->namespace, $result->title ); if ( isset( $result->rd_title ) ) { - $toObj = Title::makeTitle( $result->rd_namespace, $result->rd_title ); + $toObj = Title::makeTitle( $result->rd_namespace, $result->rd_title, $result->rd_fragment ); } else { $blinks = $fromObj->getBrokenLinksFrom(); # TODO: check for redirect, not for links if ( $blinks ) { @@ -139,7 +140,7 @@ class BrokenRedirectsPage extends QueryPage { [ 'action' => 'edit' ] ); } - $to = $linkRenderer->makeBrokenLink( $toObj ); + $to = $linkRenderer->makeBrokenLink( $toObj, $toObj->getFullText() ); $arr = $this->getLanguage()->getArrow(); $out = $from . $this->msg( 'word-separator' )->escaped(); diff --git a/includes/specials/SpecialContributions.php b/includes/specials/SpecialContributions.php index 3845649314..1b14fcbe10 100644 --- a/includes/specials/SpecialContributions.php +++ b/includes/specials/SpecialContributions.php @@ -131,17 +131,14 @@ class SpecialContributions extends IncludableSpecialPage { $skip = $request->getText( 'offset' ) || $request->getText( 'dir' ) == 'prev'; # Offset overrides year/month selection - if ( $skip ) { - $this->opts['year'] = ''; - $this->opts['month'] = ''; - } else { + if ( !$skip ) { $this->opts['year'] = $request->getVal( 'year' ); $this->opts['month'] = $request->getVal( 'month' ); $this->opts['start'] = $request->getVal( 'start' ); $this->opts['end'] = $request->getVal( 'end' ); - $this->opts = ContribsPager::processDateFilter( $this->opts ); } + $this->opts = ContribsPager::processDateFilter( $this->opts ); $feedType = $request->getVal( 'feed' ); diff --git a/includes/specials/SpecialDiff.php b/includes/specials/SpecialDiff.php index 9804e777b1..28cd0d195a 100644 --- a/includes/specials/SpecialDiff.php +++ b/includes/specials/SpecialDiff.php @@ -56,11 +56,64 @@ class SpecialDiff extends RedirectSpecialPage { $this->mAddedRedirectParams['oldid'] = $parts[0]; $this->mAddedRedirectParams['diff'] = $parts[1]; } else { - // Wrong number of parameters, bail out - $this->addHelpLink( 'Help:Diff' ); - throw new ErrorPageError( 'nopagetitle', 'nopagetext' ); + return false; } return true; } + + protected function showNoRedirectPage() { + $this->addHelpLink( 'Help:Diff' ); + $this->setHeaders(); + $this->outputHeader(); + $this->showForm(); + } + + private function showForm() { + $form = HTMLForm::factory( 'ooui', [ + 'oldid' => [ + 'name' => 'oldid', + 'type' => 'int', + 'label-message' => 'diff-form-oldid', + ], + 'diff' => [ + 'name' => 'diff', + 'class' => 'HTMLTextField', + 'label-message' => 'diff-form-revid', + ], + ], $this->getContext(), 'diff-form' ); + $form->setSubmitTextMsg( 'diff-form-submit' ); + $form->setSubmitCallback( [ $this, 'onFormSubmit' ] ); + $form->show(); + } + + public function onFormSubmit( $formData ) { + $params = []; + if ( $formData['oldid'] ) { + $params[] = $formData['oldid']; + } + if ( $formData['diff'] ) { + $params[] = $formData['diff']; + } + $title = $this->getPageTitle( $params ? implode( '/', $params ) : null ); + $url = $title->getFullUrlForRedirect(); + $this->getOutput()->redirect( $url ); + } + + public function getDescription() { + // 'diff' message is in lowercase, using own message + return $this->msg( 'diff-form' )->text(); + } + + public function getName() { + return 'diff-form'; + } + + public function isListed() { + return true; + } + + protected function getGroupName() { + return 'redirects'; + } } diff --git a/includes/specials/SpecialDoubleRedirects.php b/includes/specials/SpecialDoubleRedirects.php index d7e99db817..d73ac19875 100644 --- a/includes/specials/SpecialDoubleRedirects.php +++ b/includes/specials/SpecialDoubleRedirects.php @@ -66,14 +66,15 @@ class DoubleRedirectsPage extends QueryPage { 'title' => 'pa.page_title', 'value' => 'pa.page_title', - 'nsb' => 'pb.page_namespace', - 'tb' => 'pb.page_title', + 'b_namespace' => 'pb.page_namespace', + 'b_title' => 'pb.page_title', // Select fields from redirect instead of page. Because there may // not actually be a page table row for this target (e.g. for interwiki redirects) - 'nsc' => 'rb.rd_namespace', - 'tc' => 'rb.rd_title', - 'iwc' => 'rb.rd_interwiki', + 'c_namespace' => 'rb.rd_namespace', + 'c_title' => 'rb.rd_title', + 'c_fragment' => 'rb.rd_fragment', + 'c_interwiki' => 'rb.rd_interwiki', ], 'conds' => [ 'ra.rd_from = pa.page_id', @@ -116,45 +117,41 @@ class DoubleRedirectsPage extends QueryPage { * @return string */ function formatResult( $skin, $result ) { - $titleA = Title::makeTitle( $result->namespace, $result->title ); - - // If only titleA is in the query, it means this came from - // querycache (which only saves 3 columns). + // If no Title B or C is in the query, it means this came from + // querycache (which only saves the 3 columns for title A). // That does save the bulk of the query cost, but now we need to // get a little more detail about each individual entry quickly // using the filter of reallyGetQueryInfo. - if ( $result && !isset( $result->nsb ) ) { - $dbr = wfGetDB( DB_REPLICA ); - $qi = $this->reallyGetQueryInfo( - $result->namespace, - $result->title - ); - $res = $dbr->select( - $qi['tables'], - $qi['fields'], - $qi['conds'], - __METHOD__ - ); - - if ( $res ) { - $result = $dbr->fetchObject( $res ); + $deep = false; + if ( $result ) { + if ( isset( $result->b_namespace ) ) { + $deep = $result; + } else { + $dbr = wfGetDB( DB_REPLICA ); + $qi = $this->reallyGetQueryInfo( + $result->namespace, + $result->title + ); + $res = $dbr->select( + $qi['tables'], + $qi['fields'], + $qi['conds'], + __METHOD__ + ); + + if ( $res ) { + $deep = $dbr->fetchObject( $res ) ?: false; + } } } + + $titleA = Title::makeTitle( $result->namespace, $result->title ); + $linkRenderer = $this->getLinkRenderer(); - if ( !$result ) { + if ( !$deep ) { return '' . $linkRenderer->makeLink( $titleA, null, [], [ 'redirect' => 'no' ] ) . ''; } - $titleB = Title::makeTitle( $result->nsb, $result->tb ); - $titleC = Title::makeTitle( $result->nsc, $result->tc, '', $result->iwc ); - - $linkA = $linkRenderer->makeKnownLink( - $titleA, - null, - [], - [ 'redirect' => 'no' ] - ); - // if the page is editable, add an edit link if ( // check user permissions @@ -172,6 +169,14 @@ class DoubleRedirectsPage extends QueryPage { $edit = ''; } + $linkA = $linkRenderer->makeKnownLink( + $titleA, + null, + [], + [ 'redirect' => 'no' ] + ); + + $titleB = Title::makeTitle( $deep->b_namespace, $deep->b_title ); $linkB = $linkRenderer->makeKnownLink( $titleB, null, @@ -179,7 +184,13 @@ class DoubleRedirectsPage extends QueryPage { [ 'redirect' => 'no' ] ); - $linkC = $linkRenderer->makeKnownLink( $titleC ); + $titleC = Title::makeTitle( + $deep->c_namespace, + $deep->c_title, + $deep->c_fragment, + $deep->c_interwiki + ); + $linkC = $linkRenderer->makeKnownLink( $titleC, $titleC->getFullText() ); $lang = $this->getLanguage(); $arr = $lang->getArrow() . $lang->getDirMark(); @@ -201,13 +212,13 @@ class DoubleRedirectsPage extends QueryPage { $batch = new LinkBatch; foreach ( $res as $row ) { $batch->add( $row->namespace, $row->title ); - if ( isset( $row->nsb ) ) { + if ( isset( $row->b_namespace ) ) { // lazy loaded when using cached results - $batch->add( $row->nsb, $row->tb ); + $batch->add( $row->b_namespace, $row->b_title ); } - if ( isset( $row->iwc ) && !$row->iwc ) { + if ( isset( $row->c_interwiki ) && !$row->c_interwiki ) { // lazy loaded when using cached result, not added when interwiki link - $batch->add( $row->nsc, $row->tc ); + $batch->add( $row->c_namespace, $row->c_title ); } } $batch->execute(); diff --git a/includes/specials/SpecialExport.php b/includes/specials/SpecialExport.php index d5c5528d7a..8e6c446238 100644 --- a/includes/specials/SpecialExport.php +++ b/includes/specials/SpecialExport.php @@ -288,7 +288,7 @@ class SpecialExport extends SpecialPage { $formDescriptor += [ 'wpDownload' => [ 'type' => 'check', - 'name' =>'wpDownload', + 'name' => 'wpDownload', 'id' => 'wpDownload', 'default' => $request->wasPosted() ? $request->getCheck( 'wpDownload' ) : true, 'label-message' => 'export-download', diff --git a/includes/specials/SpecialFilepath.php b/includes/specials/SpecialFilepath.php index 49caaa3a1d..c18faa12d3 100644 --- a/includes/specials/SpecialFilepath.php +++ b/includes/specials/SpecialFilepath.php @@ -35,7 +35,7 @@ class SpecialFilepath extends RedirectSpecialPage { /** * Implement by redirecting through Special:Redirect/file. * - * @param string|null $subpage + * @param string|null $par * @return Title */ public function getRedirect( $par ) { diff --git a/includes/specials/SpecialImport.php b/includes/specials/SpecialImport.php index a827e89263..beb454d669 100644 --- a/includes/specials/SpecialImport.php +++ b/includes/specials/SpecialImport.php @@ -173,10 +173,8 @@ class SpecialImport extends SpecialPage { $out = $this->getOutput(); if ( !$source->isGood() ) { - $out->wrapWikiMsg( - "

\n$1\n

", - [ 'importfailed', $source->getWikiText() ] - ); + $out->addWikiText( "

\n" . + $this->msg( 'importfailed', $source->getWikiText() )->parse() . "\n

" ); } else { $importer = new WikiImporter( $source->value, $this->getConfig() ); if ( !is_null( $this->namespace ) ) { diff --git a/includes/specials/SpecialListredirects.php b/includes/specials/SpecialListredirects.php index 5f3862973b..f81c03c77a 100644 --- a/includes/specials/SpecialListredirects.php +++ b/includes/specials/SpecialListredirects.php @@ -137,7 +137,7 @@ class ListredirectsPage extends QueryPage { # Make a link to the destination page $lang = $this->getLanguage(); $arr = $lang->getArrow() . $lang->getDirMark(); - $targetLink = $linkRenderer->makeLink( $target ); + $targetLink = $linkRenderer->makeLink( $target, $target->getFullText() ); return "$rd_link $arr $targetLink"; } else { diff --git a/includes/specials/SpecialMediaStatistics.php b/includes/specials/SpecialMediaStatistics.php index 44e0db85e2..a6d4a3e91c 100644 --- a/includes/specials/SpecialMediaStatistics.php +++ b/includes/specials/SpecialMediaStatistics.php @@ -30,13 +30,15 @@ use Wikimedia\Rdbms\IDatabase; */ 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; function __construct( $name = 'MediaStatistics' ) { @@ -63,6 +65,7 @@ class MediaStatisticsPage extends QueryPage { * come out of querycache table is the order they went in. Which is hacky. * However, other special pages like Special:Deadendpages and * Special:BrokenRedirects also rely on this. + * @return array */ public function getQueryInfo() { $dbr = wfGetDB( DB_REPLICA ); @@ -169,7 +172,7 @@ class MediaStatisticsPage extends QueryPage { * * @param string $mime mime type (e.g. image/jpeg) * @param int $count Number of images of this type - * @param int $totalBytes Total space for images of this type + * @param int $bytes Total space for images of this type */ protected function outputTableRow( $mime, $count, $bytes ) { $mimeSearch = SpecialPage::getTitleFor( 'MIMEsearch', $mime ); @@ -197,7 +200,7 @@ class MediaStatisticsPage extends QueryPage { $row .= Html::rawElement( 'td', // Make sure js sorts it in numeric order - [ 'data-sort-value' => $bytes ], + [ 'data-sort-value' => $bytes ], $this->msg( 'mediastatistics-nbytes' ) ->numParams( $bytes ) ->sizeParams( $bytes ) @@ -251,6 +254,7 @@ class MediaStatisticsPage extends QueryPage { * Output the start of the table * * Including opening , and first with column headers. + * @param string $mediaType */ protected function outputTableStart( $mediaType ) { $this->getOutput()->addHTML( diff --git a/includes/specials/SpecialNewpages.php b/includes/specials/SpecialNewpages.php index 83482f6f2f..61590d7567 100644 --- a/includes/specials/SpecialNewpages.php +++ b/includes/specials/SpecialNewpages.php @@ -293,6 +293,19 @@ class SpecialNewpages extends IncludableSpecialPage { ); } + /** + * @param stdClass $row Result row from recent changes + * @return Revision|bool + */ + protected function revisionFromRcResult( stdClass $result ) { + return new Revision( [ + 'comment' => CommentStore::newKey( 'rc_comment' )->getComment( $result )->text, + 'deleted' => $result->rc_deleted, + 'user_text' => $result->rc_user_text, + 'user' => $result->rc_user, + ] ); + } + /** * Format a row, providing the timestamp, links to the page/history, * size, user links, and a comment @@ -303,14 +316,9 @@ class SpecialNewpages extends IncludableSpecialPage { public function formatRow( $result ) { $title = Title::newFromRow( $result ); - # Revision deletion works on revisions, so we should cast one - $row = [ - 'comment' => $result->rc_comment, - 'deleted' => $result->rc_deleted, - 'user_text' => $result->rc_user_text, - 'user' => $result->rc_user, - ]; - $rev = new Revision( $row ); + // Revision deletion works on revisions, + // so cast our recent change row to a revision row. + $rev = $this->revisionFromRcResult( $result ); $rev->setTitle( $title ); $classes = []; @@ -382,6 +390,16 @@ class SpecialNewpages extends IncludableSpecialPage { # Display the old title if the namespace/title has been changed $oldTitleText = ''; $oldTitle = Title::makeTitle( $result->rc_namespace, $result->rc_title ); + + if ( !$title->equals( $oldTitle ) ) { + $oldTitleText = $oldTitle->getPrefixedText(); + $oldTitleText = Html::rawElement( + 'span', + [ 'class' => 'mw-newpages-oldtitle' ], + $this->msg( 'rc-old-title' )->params( $oldTitleText )->escaped() + ); + } + $ret = "{$time} {$dm}{$plink} {$hist} {$dm}{$length} {$dm}{$ulink} {$comment} " . "{$tagDisplay} {$oldTitleText}"; @@ -393,15 +411,6 @@ class SpecialNewpages extends IncludableSpecialPage { $attribs['class'] = implode( ' ', $classes ); } - if ( !$title->equals( $oldTitle ) ) { - $oldTitleText = $oldTitle->getPrefixedText(); - $oldTitleText = Html::rawElement( - 'span', - [ 'class' => 'mw-newpages-oldtitle' ], - $this->msg( 'rc-old-title' )->params( $oldTitleText )->escaped() - ); - } - return Html::rawElement( 'li', $attribs, $ret ) . "\n"; } @@ -486,16 +495,21 @@ class SpecialNewpages extends IncludableSpecialPage { protected function feedItemDesc( $row ) { $revision = Revision::newFromId( $row->rev_id ); - if ( $revision ) { - // XXX: include content model/type in feed item? - return '

' . htmlspecialchars( $revision->getUserText() ) . - $this->msg( 'colon-separator' )->inContentLanguage()->escaped() . - htmlspecialchars( FeedItem::stripComment( $revision->getComment() ) ) . - "

\n
\n
" . - nl2br( htmlspecialchars( $revision->getContent()->serialize() ) ) . "
"; + if ( !$revision ) { + return ''; + } + + $content = $revision->getContent(); + if ( $content === null ) { + return ''; } - return ''; + // XXX: include content model/type in feed item? + return '

' . htmlspecialchars( $revision->getUserText() ) . + $this->msg( 'colon-separator' )->inContentLanguage()->escaped() . + htmlspecialchars( FeedItem::stripComment( $revision->getComment() ) ) . + "

\n
\n
" . + nl2br( htmlspecialchars( $content->serialize() ) ) . "
"; } protected function getGroupName() { diff --git a/includes/specials/SpecialPageLanguage.php b/includes/specials/SpecialPageLanguage.php index 2943fd4e3d..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 @@ -135,6 +145,16 @@ class SpecialPageLanguage extends FormSpecialPage { return Status::newFatal( $ex->getMessageObject() ); } + // Check permissions and make sure the user has permission to edit the page + $errors = $title->getUserPermissionsErrors( 'edit', $this->getUser() ); + + if ( $errors ) { + $out = $this->getOutput(); + $wikitext = $out->formatPermissionsErrorMessage( $errors ); + // Hack to get our wikitext parsed + return Status::newFatal( new RawMessage( '$1', [ $wikitext ] ) ); + } + // Url to redirect to after the operation $this->goToUrl = $title->getFullUrlForRedirect( $title->isRedirect() ? [ 'redirect' => 'no' ] : [] diff --git a/includes/specials/SpecialPermanentLink.php b/includes/specials/SpecialPermanentLink.php index 2bd3ab7d76..b1772b78e3 100644 --- a/includes/specials/SpecialPermanentLink.php +++ b/includes/specials/SpecialPermanentLink.php @@ -39,11 +39,44 @@ class SpecialPermanentLink extends RedirectSpecialPage { public function getRedirect( $subpage ) { $subpage = intval( $subpage ); if ( $subpage === 0 ) { - # throw an error page when no subpage was given - throw new ErrorPageError( 'nopagetitle', 'nopagetext' ); + return false; } $this->mAddedRedirectParams['oldid'] = $subpage; return true; } + + protected function showNoRedirectPage() { + $this->setHeaders(); + $this->outputHeader(); + $this->showForm(); + } + + private function showForm() { + $form = HTMLForm::factory( 'ooui', [ + 'revid' => [ + 'type' => 'int', + 'name' => 'revid', + 'label-message' => 'permanentlink-revid', + ], + ], $this->getContext(), 'permanentlink' ); + $form->setSubmitTextMsg( 'permanentlink-submit' ); + $form->setSubmitCallback( [ $this, 'onFormSubmit' ] ); + $form->show(); + } + + public function onFormSubmit( $formData ) { + $revid = $formData['revid']; + $title = $this->getPageTitle( $revid ?: null ); + $url = $title->getFullUrlForRedirect(); + $this->getOutput()->redirect( $url ); + } + + public function isListed() { + return true; + } + + protected function getGroupName() { + return 'redirects'; + } } diff --git a/includes/specials/SpecialPreferences.php b/includes/specials/SpecialPreferences.php index 40b50ea5bf..ba5a57ea5a 100644 --- a/includes/specials/SpecialPreferences.php +++ b/includes/specials/SpecialPreferences.php @@ -81,7 +81,7 @@ class SpecialPreferences extends SpecialPage { $user = $this->getUser(); } - $htmlForm = Preferences::getFormObject( $user, $this->getContext() ); + $htmlForm = $this->getFormObject( $user, $this->getContext() ); $htmlForm->setSubmitCallback( [ 'Preferences', 'tryUISubmit' ] ); $sectionTitles = $htmlForm->getPreferenceSections(); @@ -117,6 +117,16 @@ class SpecialPreferences extends SpecialPage { $htmlForm->show(); } + /** + * Get the preferences form to use. + * @param User $user The user. + * @param IContextSource $context The context. + * @return PreferencesForm|HtmlForm + */ + protected function getFormObject( $user, IContextSource $context ) { + return Preferences::getFormObject( $user, $context ); + } + private function showResetForm() { if ( !$this->getUser()->isAllowed( 'editmyoptions' ) ) { throw new PermissionsError( 'editmyoptions' ); diff --git a/includes/specials/SpecialRecentchanges.php b/includes/specials/SpecialRecentchanges.php index 6ef75e07c0..547a1b06c2 100644 --- a/includes/specials/SpecialRecentchanges.php +++ b/includes/specials/SpecialRecentchanges.php @@ -164,98 +164,16 @@ 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() + 'wgStructuredChangeFiltersSavedQueriesPreferenceName', + 'rcfilters-saved-queries' ); - $out->addJsConfigVars( - 'StructuredChangeFiltersDisplayConfig', - [ - 'maxDays' => (int)$this->getConfig()->get( 'RCMaxAge' ) / ( 24 * 3600 ), // Translate to days - 'limitArray' => $this->getConfig()->get( 'RCLinkLimits' ), - 'daysArray' => $this->getConfig()->get( 'RCLinkDays' ), - ] - ); - } - } - - /** - * 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 + * @inheritDoc */ protected function transformFilterDefinition( array $filterDefinition ) { if ( isset( $filterDefinition['showHideSuffix'] ) ) { @@ -266,7 +184,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage { } /** - * @inheritdoc + * @inheritDoc */ protected function registerFilters() { parent::registerFilters(); @@ -323,7 +241,6 @@ class SpecialRecentChanges extends ChangesListSpecialPage { $opts->add( 'categories', '' ); $opts->add( 'categories_any', false ); - $opts->add( 'tagfilter', '' ); return $opts; } @@ -380,7 +297,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage { } /** - * @inheritdoc + * @inheritDoc */ protected function buildQuery( &$tables, &$fields, &$conds, &$query_options, &$join_conds, FormOptions $opts @@ -404,7 +321,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage { } /** - * @inheritdoc + * @inheritDoc */ protected function doMainQuery( $tables, $fields, $conds, $query_options, $join_conds, FormOptions $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' ); - } } /** @@ -868,7 +782,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage { /** * Filter $rows by categories set in $opts * - * @param ResultWrapper $rows Database rows + * @param ResultWrapper &$rows Database rows * @param FormOptions $opts */ function filterByCategories( &$rows, FormOptions $opts ) { @@ -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/SpecialRecentchangeslinked.php b/includes/specials/SpecialRecentchangeslinked.php index fee336e435..e353f0cbdd 100644 --- a/includes/specials/SpecialRecentchangeslinked.php +++ b/includes/specials/SpecialRecentchangeslinked.php @@ -47,7 +47,7 @@ class SpecialRecentChangesLinked extends SpecialRecentChanges { } /** - * @inheritdoc + * @inheritDoc */ protected function doMainQuery( $tables, $select, $conds, $query_options, $join_conds, FormOptions $opts diff --git a/includes/specials/SpecialRevisiondelete.php b/includes/specials/SpecialRevisiondelete.php index 4b0fa008b6..e1d4dd1b5d 100644 --- a/includes/specials/SpecialRevisiondelete.php +++ b/includes/specials/SpecialRevisiondelete.php @@ -73,28 +73,28 @@ class SpecialRevisionDelete extends UnlistedSpecialPage { 'success' => 'revdelete-success', 'failure' => 'revdelete-failure', 'text' => 'revdelete-text-text', - 'selected'=> 'revdelete-selected-text', + 'selected' => 'revdelete-selected-text', ], 'archive' => [ 'check-label' => 'revdelete-hide-text', 'success' => 'revdelete-success', 'failure' => 'revdelete-failure', 'text' => 'revdelete-text-text', - 'selected'=> 'revdelete-selected-text', + 'selected' => 'revdelete-selected-text', ], 'oldimage' => [ 'check-label' => 'revdelete-hide-image', 'success' => 'revdelete-success', 'failure' => 'revdelete-failure', 'text' => 'revdelete-text-file', - 'selected'=> 'revdelete-selected-file', + 'selected' => 'revdelete-selected-file', ], 'filearchive' => [ 'check-label' => 'revdelete-hide-image', 'success' => 'revdelete-success', 'failure' => 'revdelete-failure', 'text' => 'revdelete-text-file', - 'selected'=> 'revdelete-selected-file', + 'selected' => 'revdelete-selected-file', ], 'logging' => [ 'check-label' => 'revdelete-hide-name', diff --git a/includes/specials/SpecialSearch.php b/includes/specials/SpecialSearch.php index eeb8823ffb..85b4572bd5 100644 --- a/includes/specials/SpecialSearch.php +++ b/includes/specials/SpecialSearch.php @@ -352,7 +352,7 @@ class SpecialSearch extends SpecialPage { $out->addHTML( $dymWidget->render( $term, $textMatches ) ); } - $hasErrors = $textStatus && $textStatus->getErrors(); + $hasErrors = $textStatus && $textStatus->getErrors() !== []; $hasOtherResults = $textMatches && $textMatches->hasInterwikiResults( SearchResultSet::INLINE_RESULTS ); @@ -555,7 +555,7 @@ class SpecialSearch extends SpecialPage { * Extract "power search" namespace settings from the request object, * returning a list of index numbers to search. * - * @param WebRequest $request + * @param WebRequest &$request * @return array */ protected function powerSearch( &$request ) { diff --git a/includes/specials/SpecialUncategorizedcategories.php b/includes/specials/SpecialUncategorizedcategories.php index 77b6926457..5ff9e04ef7 100644 --- a/includes/specials/SpecialUncategorizedcategories.php +++ b/includes/specials/SpecialUncategorizedcategories.php @@ -68,7 +68,7 @@ class UncategorizedCategoriesPage extends UncategorizedPagesPage { } public function getQueryInfo() { - $dbr = wfGetDB( DB_SLAVE ); + $dbr = wfGetDB( DB_REPLICA ); $query = parent::getQueryInfo(); $exceptionList = $this->getExceptionList(); if ( $exceptionList ) { diff --git a/includes/specials/SpecialWatchlist.php b/includes/specials/SpecialWatchlist.php index 549362f20f..ba3cb87ecf 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 ); @@ -58,6 +60,7 @@ class SpecialWatchlist extends ChangesListSpecialPage { 'mediawiki.special.changeslist.visitedstatus', 'mediawiki.special.watchlist', ] ); + $output->addModuleStyles( [ 'mediawiki.special.watchlist.styles' ] ); $mode = SpecialEditWatchlist::getMode( $request, $subpage ); if ( $mode !== false ) { @@ -92,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() + ); + } + } + + protected function isStructuredFilterUiEnabled() { + return parent::isStructuredFilterUiEnabled() + && ( $this->getConfig()->get( 'StructuredChangeFiltersOnWatchlist' ) + || $this->getRequest()->getBool( 'rcfilters' ) ); } /** @@ -109,7 +132,7 @@ class SpecialWatchlist extends ChangesListSpecialPage { } /** - * @inheritdoc + * @inheritDoc */ protected function transformFilterDefinition( array $filterDefinition ) { if ( isset( $filterDefinition['showHideSuffix'] ) ) { @@ -120,11 +143,92 @@ class SpecialWatchlist extends ChangesListSpecialPage { } /** - * @inheritdoc + * @inheritDoc */ 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' ); @@ -170,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 ); } @@ -232,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; + } } } } @@ -250,7 +358,7 @@ class SpecialWatchlist extends ChangesListSpecialPage { } /** - * @inheritdoc + * @inheritDoc */ protected function buildQuery( &$tables, &$fields, &$conds, &$query_options, &$join_conds, FormOptions $opts @@ -267,7 +375,7 @@ class SpecialWatchlist extends ChangesListSpecialPage { } /** - * @inheritdoc + * @inheritDoc */ protected function doMainQuery( $tables, $fields, $conds, $query_options, $join_conds, FormOptions $opts @@ -275,31 +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'] ) { - $limitWatchlist = $user->getIntOption( 'wllimit' ); - $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 - ); - } - $limitWatchlist = 0; - $usePage = true; - } - $tables = array_merge( [ 'recentchanges', 'watchlist' ], $tables ); $fields = array_merge( RecentChange::selectFields(), $fields ); - $query_options = array_merge( [ 'ORDER BY' => 'rc_timestamp DESC' ], $query_options ); $join_conds = array_merge( [ 'watchlist' => [ @@ -314,21 +400,11 @@ class SpecialWatchlist extends ChangesListSpecialPage { $join_conds ); - if ( $this->getConfig()->get( 'ShowUpdatedMarker' ) ) { - $fields[] = 'wl_notificationtimestamp'; - } - if ( $limitWatchlist ) { - $query_options['LIMIT'] = $limitWatchlist; - } + $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. @@ -346,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, @@ -433,6 +531,23 @@ class SpecialWatchlist extends ChangesListSpecialPage { $list = ChangesList::newFromContext( $this->getContext(), $this->filterGroups ); $list->setWatchlistDivs(); $list->initChangesListRows( $rows ); + if ( $user->getOption( 'watchlistunwatchlinks' ) ) { + $list->setChangeLinePrefixer( function ( RecentChange $rc, ChangesList $cl, $grouped ) { + // Don't show unwatch link if the line is a grouped log entry using EnhancedChangesList, + // since EnhancedChangesList groups log entries by performer rather than by target article + if ( $rc->mAttribs['rc_type'] == RC_LOG && $cl instanceof EnhancedChangesList && + $grouped ) { + return ''; + } else { + return $this->getLinkRenderer() + ->makeKnownLink( $rc->getTitle(), + $this->msg( 'watchlist-unwatch' )->text(), [ + 'class' => 'mw-unwatch-link', + 'title' => $this->msg( 'tooltip-ca-unwatch' )->text() + ], [ 'action' => 'unwatch' ] ) . ' '; + } + } ); + } $dbr->dataSeek( $rows, 0 ); if ( $this->getConfig()->get( 'RCShowWatchingUsers' ) @@ -442,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 ) { @@ -502,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']; @@ -509,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() ) { @@ -529,7 +674,8 @@ class SpecialWatchlist extends ChangesListSpecialPage { $nondefaults, $filter->getShowHide(), $filterName, - $opts[$filterName] + $opts[$filterName], + $filter->isFeatureAvailableOnStructuredUi( $this ) ); } } @@ -546,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' => '', @@ -567,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 ); } @@ -598,7 +785,7 @@ class SpecialWatchlist extends ChangesListSpecialPage { // default string representation, for example, and would confuse comparisons. // Misleadingly, the 'days' option supports hours too. - $days = array_map( 'strval', [ 1/24, 2/24, 6/24, 12/24, 1, 3, 7 ] ); + $days = array_map( 'strval', [ 1 / 24, 2 / 24, 6 / 24, 12 / 24, 1, 3, 7 ] ); $userWatchlistOption = (string)$this->getUser()->getOption( 'watchlistdays' ); // add the user preference, if it isn't available already @@ -639,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', @@ -676,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 + ) + ); } /** @@ -716,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/helpers/LoginHelper.php b/includes/specials/helpers/LoginHelper.php index cfcbf652c0..a35a420ee6 100644 --- a/includes/specials/helpers/LoginHelper.php +++ b/includes/specials/helpers/LoginHelper.php @@ -75,7 +75,7 @@ class LoginHelper extends ContextSource { // Allow modification of redirect behavior Hooks::run( 'PostLoginRedirect', [ &$returnTo, &$returnToQuery, &$type ] ); - $returnToTitle = Title::newFromText( $returnTo ) ?: Title::newMainPage(); + $returnToTitle = Title::newFromText( $returnTo ) ?: Title::newMainPage(); if ( $wgSecureLogin && !$stickHTTPS ) { $options = [ 'http' ]; diff --git a/includes/specials/pagers/BlockListPager.php b/includes/specials/pagers/BlockListPager.php index 51e446d593..2206be8f01 100644 --- a/includes/specials/pagers/BlockListPager.php +++ b/includes/specials/pagers/BlockListPager.php @@ -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 6bd7eb0e9f..d7819c42b3 100644 --- a/includes/specials/pagers/ContribsPager.php +++ b/includes/specials/pagers/ContribsPager.php @@ -583,10 +583,10 @@ class ContribsPager extends RangeChronologicalPager { * @return array Options array with processed start and end date filter options */ public static function processDateFilter( $opts ) { - $start = $opts['start'] ?: ''; - $end = $opts['end'] ?: ''; - $year = $opts['year'] ?: ''; - $month = $opts['month'] ?: ''; + $start = isset( $opts['start'] ) ? $opts['start'] : ''; + $end = isset( $opts['end'] ) ? $opts['end'] : ''; + $year = isset( $opts['year'] ) ? $opts['year'] : ''; + $month = isset( $opts['month'] ) ? $opts['month'] : ''; if ( $start !== '' && $end !== '' && $start > $end ) { $temp = $start; 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 45dced8829..20b44d2150 100644 --- a/includes/specials/pagers/ProtectedPagesPager.php +++ b/includes/specials/pagers/ProtectedPagesPager.php @@ -36,9 +36,9 @@ class ProtectedPagesPager extends TablePager { /** * @param SpecialProtectedpages $form * @param array $conds - * @param $type - * @param $level - * @param $namespace + * @param string $type + * @param string $level + * @param int $namespace * @param string $sizetype * @param int $size * @param bool $indefonly @@ -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/specials/pagers/UsersPager.php b/includes/specials/pagers/UsersPager.php index cdb9130bc0..a68fe66881 100644 --- a/includes/specials/pagers/UsersPager.php +++ b/includes/specials/pagers/UsersPager.php @@ -270,7 +270,7 @@ class UsersPager extends AlphabeticPager { function getPageHeader() { list( $self ) = explode( '/', $this->getTitle()->getPrefixedDBkey() ); - $groupOptions = [ $this->msg( 'group-all' )->text() => '' ]; + $groupOptions = [ $this->msg( 'group-all' )->text() => '' ]; foreach ( $this->getAllGroups() as $group => $groupText ) { $groupOptions[ $groupText ] = $group; } diff --git a/includes/templates/EnhancedChangesListGroup.mustache b/includes/templates/EnhancedChangesListGroup.mustache index 3a37c2ebcc..6493df8836 100644 --- a/includes/templates/EnhancedChangesListGroup.mustache +++ b/includes/templates/EnhancedChangesListGroup.mustache @@ -1,10 +1,11 @@ -
+
+ - {{# lines }} + -
{{{ prefix }}} {{{ collectedRcFlags }}} {{ timestamp }}  + {{# rev-deleted-event }}{{{ . }}}{{/ rev-deleted-event }} {{{ articleLink }}}{{{ languageDirMark }}}{{{ logText }}} . . @@ -15,9 +16,10 @@
{{{ recentChangesFlags }}}  + {{# timestampLink }} {{{ . }}} {{/ timestampLink }} diff --git a/includes/tidy/Balancer.php b/includes/tidy/Balancer.php index 4852ce5211..947a572480 100644 --- a/includes/tidy/Balancer.php +++ b/includes/tidy/Balancer.php @@ -1203,7 +1203,7 @@ class BalanceStack implements IteratorAggregate { $furthestBlock = null; $furthestBlockIndex = -1; $stackLength = $this->length(); - for ( $i = $index+1; $i < $stackLength; $i++ ) { + for ( $i = $index + 1; $i < $stackLength; $i++ ) { if ( $this->node( $i )->isA( BalanceSets::$specialSet ) ) { $furthestBlock = $this->node( $i ); $furthestBlockIndex = $i; @@ -1225,7 +1225,7 @@ class BalanceStack implements IteratorAggregate { // Let the common ancestor be the element immediately above // the formatting element in the stack of open elements. - $ancestor = $this->node( $index-1 ); + $ancestor = $this->node( $index - 1 ); // Let a bookmark note the position of the formatting // element in the list of active formatting elements @@ -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; @@ -2116,7 +2116,7 @@ class Balancer { return $this->insertToken( $token, $value, $attribs, $selfClose ); } // "Any other start tag" - $adjusted = ( $this->fragmentContext && $this->stack->length()===1 ) ? + $adjusted = ( $this->fragmentContext && $this->stack->length() === 1 ) ? $this->fragmentContext : $this->stack->currentNode; $this->stack->insertForeignElement( $adjusted->namespaceURI, $value, $attribs @@ -2242,7 +2242,7 @@ class Balancer { private function switchMode( $mode ) { Assert::parameter( - substr( $mode, -4 )==='Mode', '$mode', 'should end in Mode' + substr( $mode, -4 ) === 'Mode', '$mode', 'should end in Mode' ); $oldMode = $this->parseMode; $this->parseMode = $mode; @@ -2267,8 +2267,8 @@ class Balancer { switch ( $node->localName ) { case 'select': $stackLength = $this->stack->length(); - for ( $j = $i + 1; $j < $stackLength-1; $j++ ) { - $ancestor = $this->stack->node( $stackLength-$j-1 ); + for ( $j = $i + 1; $j < $stackLength - 1; $j++ ) { + $ancestor = $this->stack->node( $stackLength - $j - 1 ); if ( $ancestor->isHtmlNamed( 'template' ) ) { break; } 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 660c5b7e67..da3f9f82ac 100644 --- a/includes/upload/UploadBase.php +++ b/includes/upload/UploadBase.php @@ -155,7 +155,7 @@ abstract class UploadBase { /** * Create a form of UploadBase depending on wpSourceType and initializes it * - * @param WebRequest $request + * @param WebRequest &$request * @param string|null $type * @return null|UploadBase */ @@ -241,13 +241,13 @@ abstract class UploadBase { /** * Initialize from a WebRequest. Override this in a subclass. * - * @param WebRequest $request + * @param WebRequest &$request */ abstract public function initializeFromRequest( &$request ); /** * @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; @@ -1496,6 +1496,7 @@ abstract class UploadBase { * @param string $type PUBLIC or SYSTEM * @param string $publicId The well-known public identifier for the dtd * @param string $systemId The url for the external dtd + * @return bool|array */ public static function checkSvgExternalDTD( $type, $publicId, $systemId ) { // This doesn't include the XHTML+MathML+SVG doctype since we don't @@ -1521,6 +1522,7 @@ abstract class UploadBase { * @todo Replace this with a whitelist filter! * @param string $element * @param array $attribs + * @param array $data * @return bool */ public function checkSvgScriptCallback( $element, $attribs, $data = null ) { diff --git a/includes/upload/UploadFromChunks.php b/includes/upload/UploadFromChunks.php index c0c2cb5c31..68bcb9d9c7 100644 --- a/includes/upload/UploadFromChunks.php +++ b/includes/upload/UploadFromChunks.php @@ -64,7 +64,7 @@ class UploadFromChunks extends UploadFromFile { } /** - * {@inheritdoc} + * @inheritDoc */ public function tryStashFile( User $user, $isPartial = false ) { try { @@ -77,7 +77,7 @@ class UploadFromChunks extends UploadFromFile { } /** - * {@inheritdoc} + * @inheritDoc * @throws UploadChunkVerificationException * @deprecated since 1.28 Use tryStashFile() instead */ @@ -88,7 +88,7 @@ class UploadFromChunks extends UploadFromFile { } /** - * {@inheritdoc} + * @inheritDoc * @throws UploadChunkVerificationException * @deprecated since 1.28 */ @@ -99,7 +99,7 @@ class UploadFromChunks extends UploadFromFile { } /** - * {@inheritdoc} + * @inheritDoc * @throws UploadChunkVerificationException * @deprecated since 1.28 */ diff --git a/includes/upload/UploadFromFile.php b/includes/upload/UploadFromFile.php index acfabbac26..675bb8d453 100644 --- a/includes/upload/UploadFromFile.php +++ b/includes/upload/UploadFromFile.php @@ -34,7 +34,7 @@ class UploadFromFile extends UploadBase { protected $mUpload = null; /** - * @param WebRequest $request + * @param WebRequest &$request */ function initializeFromRequest( &$request ) { $upload = $request->getUpload( 'wpUploadFile' ); diff --git a/includes/upload/UploadFromStash.php b/includes/upload/UploadFromStash.php index 1fbdb7d86d..a9f399b7cc 100644 --- a/includes/upload/UploadFromStash.php +++ b/includes/upload/UploadFromStash.php @@ -113,7 +113,7 @@ class UploadFromStash extends UploadBase { } /** - * @param WebRequest $request + * @param WebRequest &$request */ public function initializeFromRequest( &$request ) { // sends wpSessionKey as a default when wpFileKey is missing diff --git a/includes/upload/UploadFromUrl.php b/includes/upload/UploadFromUrl.php index 2b13dd8b52..f5367bb64f 100644 --- a/includes/upload/UploadFromUrl.php +++ b/includes/upload/UploadFromUrl.php @@ -141,7 +141,7 @@ class UploadFromUrl extends UploadBase { /** * Entry point for SpecialUpload - * @param WebRequest $request + * @param WebRequest &$request */ public function initializeFromRequest( &$request ) { $desiredDestName = $request->getText( 'wpDestFile' ); @@ -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/user/User.php b/includes/user/User.php index fa84c94ca7..08f054d286 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 ) { @@ -1252,7 +1252,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 ) { @@ -3519,7 +3519,7 @@ class User implements IDBAccessObject { /** * Check if user is allowed to access a feature / make an action * - * @param string ... Permissions to test + * @param string $permissions,... Permissions to test * @return bool True if user is allowed to perform *any* of the given actions */ public function isAllowedAny() { @@ -3534,7 +3534,7 @@ class User implements IDBAccessObject { /** * - * @param string ... Permissions to test + * @param string $permissions,... Permissions to test * @return bool True if the user is allowed to perform *all* of the given actions */ public function isAllowedAll() { @@ -3661,7 +3661,7 @@ class User implements IDBAccessObject { * If e-notif e-mails are on, they will receive notification mails on * the next change of the page if it's watched etc. * @note If the user doesn't have 'editmywatchlist', this will do nothing. - * @param Title $title Title of the article to look at + * @param Title &$title Title of the article to look at * @param int $oldid The revision id being viewed. If not given or 0, latest revision is assumed. */ public function clearNotification( &$title, $oldid = 0 ) { diff --git a/includes/utils/AutoloadGenerator.php b/includes/utils/AutoloadGenerator.php index 8931e3ca17..19f5100a4c 100644 --- a/includes/utils/AutoloadGenerator.php +++ b/includes/utils/AutoloadGenerator.php @@ -372,7 +372,7 @@ class ClassCollector { /** * Accepts the next token in an expect sequence * - * @param array + * @param array $token */ protected function tryEndExpect( $token ) { switch ( $this->startToken[0] ) { 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/BatchRowUpdate.php b/includes/utils/BatchRowUpdate.php index fc8bde9ae6..f42b5a072a 100644 --- a/includes/utils/BatchRowUpdate.php +++ b/includes/utils/BatchRowUpdate.php @@ -64,9 +64,9 @@ class BatchRowUpdate { protected $output; /** - * @param BatchRowIterator $reader Iterator that returns an + * @param BatchRowIterator $reader Iterator that returns an * array of database rows - * @param BatchRowWriter $writer Writer capable of pushing + * @param BatchRowWriter $writer Writer capable of pushing * row updates to the database * @param RowUpdateGenerator $generator Generates single row updates * based on the rows content diff --git a/includes/utils/BatchRowWriter.php b/includes/utils/BatchRowWriter.php index 70afb91c1b..59dcbd63f9 100644 --- a/includes/utils/BatchRowWriter.php +++ b/includes/utils/BatchRowWriter.php @@ -41,8 +41,8 @@ class BatchRowWriter { /** * @param IDatabase $db The database to write to - * @param string $table The name of the table to update - * @param string|bool $clusterName A cluster name valid for use with LBFactory + * @param string $table The name of the table to update + * @param string|bool $clusterName A cluster name valid for use with LBFactory */ public function __construct( IDatabase $db, $table, $clusterName = false ) { $this->db = $db; 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/includes/widget/search/InterwikiSearchResultSetWidget.php b/includes/widget/search/InterwikiSearchResultSetWidget.php index 9145bb66aa..81a1a43111 100644 --- a/includes/widget/search/InterwikiSearchResultSetWidget.php +++ b/includes/widget/search/InterwikiSearchResultSetWidget.php @@ -176,7 +176,7 @@ class InterwikiSearchResultSetWidget implements SearchResultSetWidget { $iwIconUrl = $parsed['scheme'] . $parsed['delimiter'] . $parsed['host'] . - ( isset ( $parsed['port'] ) ? ':' . $parsed['port'] : '' ) . + ( isset( $parsed['port'] ) ? ':' . $parsed['port'] : '' ) . '/favicon.ico'; $iwIcon = new OOUI\IconWidget( [ diff --git a/includes/widget/search/InterwikiSearchResultWidget.php b/includes/widget/search/InterwikiSearchResultWidget.php index bcd1c16f4d..4eead5e7e9 100644 --- a/includes/widget/search/InterwikiSearchResultWidget.php +++ b/includes/widget/search/InterwikiSearchResultWidget.php @@ -61,6 +61,6 @@ class InterwikiSearchResultWidget implements SearchResultWidget { } return Html::rawElement( 'div', [ 'class' => 'iw-result__title' ], $link . ' ' . $redirect ) . - Html::rawElement( 'div', [ 'class'=> 'iw-result__content' ], $snippet ); + Html::rawElement( 'div', [ 'class' => 'iw-result__content' ], $snippet ); } } diff --git a/languages/Language.php b/languages/Language.php index 12f26c3b9f..c514cdc595 100644 --- a/languages/Language.php +++ b/languages/Language.php @@ -203,7 +203,7 @@ class Language { /** * Create a language object for a given language code * @param string $code - * @param $fallback boolean Whether we're going through language fallback chain + * @param bool $fallback Whether we're going through language fallback chain * @throws MWException * @return Language */ @@ -1092,7 +1092,7 @@ class Language { * YYYYMMDDHHMMSS * 01234567890123 * @param DateTimeZone $zone Timezone of $ts - * @param[out] int $ttl The amount of time (in seconds) the output may be cached for. + * @param int &$ttl The amount of time (in seconds) the output may be cached for. * Only makes sense if $ts is the current time. * @todo handling of "o" format character for Iranian, Hebrew, Hijri & Thai? * @@ -1584,9 +1584,9 @@ class Language { * @return int[] */ private static function tsToIranian( $ts ) { - $gy = substr( $ts, 0, 4 ) -1600; - $gm = substr( $ts, 4, 2 ) -1; - $gd = substr( $ts, 6, 2 ) -1; + $gy = substr( $ts, 0, 4 ) - 1600; + $gm = substr( $ts, 4, 2 ) - 1; + $gd = substr( $ts, 6, 2 ) - 1; # Days passed from the beginning (including leap years) $gDayNo = 365 * $gy @@ -1666,7 +1666,7 @@ class Language { (int)( ( 275 * $zm ) / 9 ) + $zd + 1729777; } - $zl = $zjd -1948440 + 10632; + $zl = $zjd - 1948440 + 10632; $zn = (int)( ( $zl - 1 ) / 10631 ); $zl = $zl - 10631 * $zn + 354; $zj = ( (int)( ( 10985 - $zl ) / 5316 ) ) * ( (int)( ( 50 * $zl ) / 17719 ) ) + @@ -3346,7 +3346,7 @@ class Language { if ( $start < 0 ) { $start = 0; } - $groupedNumber = substr( $number, $start, $end -$start ) . $groupedNumber; + $groupedNumber = substr( $number, $start, $end - $start ) . $groupedNumber; $end = $start; if ( $numMatches > 1 ) { // use the last pattern for the rest of the number @@ -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 ) { @@ -4537,7 +4537,7 @@ class Language { public function formatExpiry( $expiry, $format = true, $infinity = 'infinity' ) { static $dbInfinity; if ( $dbInfinity === null ) { - $dbInfinity = wfGetDB( DB_SLAVE )->getInfinity(); + $dbInfinity = wfGetDB( DB_REPLICA )->getInfinity(); } if ( $expiry == '' || $expiry === 'infinity' || $expiry == $dbInfinity ) { diff --git a/languages/LanguageCode.php b/languages/LanguageCode.php index 7c9da77ba6..3fa3dc16e5 100644 --- a/languages/LanguageCode.php +++ b/languages/LanguageCode.php @@ -27,6 +27,27 @@ * @ingroup Language */ class LanguageCode { + /** + * Mapping of deprecated language codes that were used in previous + * versions of MediaWiki to up-to-date, current language codes. + * + * @var array Mapping from language code to language code + * + * @since 1.30 + */ + private static $deprecatedLanguageCodeMapping = [ + // Note that als is actually a valid ISO 639 code (Tosk Albanian), but it + // was previously used in MediaWiki for Alsatian, which comes under gsw + 'als' => 'gsw', + 'bat-smg' => 'sgs', + 'be-x-old' => 'be-tarask', + 'fiu-vro' => 'vro', + 'roa-rup' => 'rup', + 'zh-classical' => 'lzh', + 'zh-min-nan' => 'nan', + 'zh-yue' => 'yue', + ]; + /** * Returns a mapping of deprecated language codes that were used in previous * versions of MediaWiki to up-to-date, current language codes. @@ -36,19 +57,27 @@ class LanguageCode { * MediaWiki's localisation system. * * @return string[] + * + * @since 1.29 */ public static function getDeprecatedCodeMapping() { - return [ - // Note that als is actually a valid ISO 639 code (Tosk Albanian), but it - // was previously used in MediaWiki for Alsatian, which comes under gsw - 'als' => 'gsw', - 'bat-smg' => 'sgs', - 'be-x-old' => 'be-tarask', - 'fiu-vro' => 'vro', - 'roa-rup' => 'rup', - 'zh-classical' => 'lzh', - 'zh-min-nan' => 'nan', - 'zh-yue' => 'yue', - ]; + return self::$deprecatedLanguageCodeMapping; + } + + /** + * Replace deprecated language codes that were used in previous + * versions of MediaWiki to up-to-date, current language codes. + * Other values will returned unchanged. + * + * @param string $code Old language code + * @return string New language code + * + * @since 1.30 + */ + public static function replaceDeprecatedCodes( $code ) { + if ( isset( self::$deprecatedLanguageCodeMapping[$code] ) ) { + return self::$deprecatedLanguageCodeMapping[$code]; + } + return $code; } } diff --git a/languages/classes/LanguageEn.php b/languages/classes/LanguageEn.php index dcb7a9194b..1cfcd2c74e 100644 --- a/languages/classes/LanguageEn.php +++ b/languages/classes/LanguageEn.php @@ -36,8 +36,8 @@ class EnConverter extends LanguageConverter { * Translates text into Pig Latin. This allows developers to test the language variants * functionality and user interface without having to switch wiki language away from default. * - * @param $text string - * @param $toVariant string + * @param string $text + * @param string $toVariant * @return string */ function translate( $text, $toVariant ) { diff --git a/languages/classes/LanguageKk.php b/languages/classes/LanguageKk.php index f6f03c48af..1a1438c6b2 100644 --- a/languages/classes/LanguageKk.php +++ b/languages/classes/LanguageKk.php @@ -282,7 +282,7 @@ class KkConverter extends LanguageConverter { $ret = ''; foreach ( $matches as $m ) { - $ret .= substr( $text, $mstart, $m[1] -$mstart ); + $ret .= substr( $text, $mstart, $m[1] - $mstart ); $ret .= $this->regsConverter( $m[0], $toVariant ); $mstart = $m[1] + strlen( $m[0] ); } diff --git a/languages/classes/LanguageSr.php b/languages/classes/LanguageSr.php index 6491f55140..e0ff5e1676 100644 --- a/languages/classes/LanguageSr.php +++ b/languages/classes/LanguageSr.php @@ -131,7 +131,7 @@ class SrConverter extends LanguageConverter { $ret = $this->mTables[$toVariant]->replace( $m[0] ); $mstart = $m[1] + strlen( $m[0] ); foreach ( $matches as $m ) { - $ret .= substr( $text, $mstart, $m[1] -$mstart ); + $ret .= substr( $text, $mstart, $m[1] - $mstart ); $ret .= parent::translate( $m[0], $toVariant ); $mstart = $m[1] + strlen( $m[0] ); } diff --git a/languages/data/Names.php b/languages/data/Names.php index 19ff2a4ffb..e2ed910686 100644 --- a/languages/data/Names.php +++ b/languages/data/Names.php @@ -314,7 +314,7 @@ class Names { 'nl' => 'Nederlands', # Dutch 'nl-informal' => "Nederlands (informeel)\xE2\x80\x8E", # Dutch (informal address ("je")) 'nn' => 'norsk nynorsk', # Norwegian (Nynorsk) - 'no' => 'norsk bokmÃ¥l', # Norwegian (falls back to nb). + 'no' => 'norsk', # Norwegian macro language (falls back to nb). 'nov' => 'Novial', # Novial 'nrm' => 'Nouormand', # Norman 'nso' => 'Sesotho sa Leboa', # Northern Sotho @@ -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 0affa8c52e..90b3ca90a0 100644 --- a/languages/i18n/af.json +++ b/languages/i18n/af.json @@ -23,7 +23,8 @@ "Macofe", "Fwolff", "Oesjaar", - "Matma Rex" + "Matma Rex", + "Biggs ZA" ] }, "tog-underline": "Onderstreep skakels.", @@ -341,7 +342,7 @@ "actionthrottled": "Outo-rem op aksie uitgevoer", "actionthrottledtext": "As 'n teen-strooi aksie, word u beperk om hierdie aksie te veel keer in 'n kort tyd uit te voer, en u het hierdie limiet oorskry.\nProbeer asseblief weer oor 'n paar minute.", "protectedpagetext": "Hierdie bladsy is beskerm om wysigings en ander aksies te verhoed.", - "viewsourcetext": "U mag die bronteks van hierdie bladsy lees en kopieer.", + "viewsourcetext": "U het toestemming om die bronteks te bekyk en te kopieer.", "viewyourtext": "U kan '''u wysigings''' aan die bronteks van hierdie bladsy bekyk en kopieer:", "protectedinterface": "Hierdie bladsy verskaf teks vir die koppelvlak van die sagteware, en is beskerm om misbruik te voorkom.\nGebruik asseblief [https://translatewiki.net/ translatewiki.net] om vertalings by te voeg of te wysig.", "editinginterface": "'''Waarskuwing:''' U is besig om 'n bladsy te redigeer wat koppelvlakinligting aan die programmatuur voorsien. Wysigings aan hierdie bladsy sal die voorkoms van die gebruikerskoppelvlak vir ander gebruikers beïnvloed. Vir vertalings, oorweeg om eerder [https://translatewiki.net/wiki/Main_Page?setlang=af translatewiki.net] (die vertalingsprojek vir MediaWiki) te gebruik.", @@ -679,7 +680,7 @@ "page_first": "eerste", "page_last": "laaste", "histlegend": "Byskrif: (huidige) = verskil van huidige weergawe,\n(vorige) = verskil van vorige weergawe, M = klein wysiging", - "history-fieldset-title": "Soek vir wysigings", + "history-fieldset-title": "Soek na wysigings", "history-show-deleted": "Slegs geskrapte", "histfirst": "oudste", "histlast": "nuutste", @@ -1098,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", @@ -2904,6 +2908,10 @@ "compare-invalid-title": "Die titel wat u verskaf het is ongeldig.", "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..e320fdb414 --- /dev/null +++ b/languages/i18n/ais.json @@ -0,0 +1,526 @@ +{ + "@metadata": { + "authors": [ + "Akamycoco", + "Benel", + "Bunukwiki", + "Tokoabibi" + ] + }, + "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 u", + "newwindow": "(paynin baluhay a azih-sasingalan miwawah)", + "cancel": "palawpes", + "moredotdotdot": "yadah...", + "mypage": "kasabelih", + "mytalk": "sasukamu", + "anontalk": "sasukamu", + "navigation": "pasubana’ tu miidangay", + "and": " ", + "namespaces": "pangangananay a salaedan", + "variants": "masazumaay", + "navigation-heading": "pasubana’ tu miidangay pipili’an", + "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", + "view": "ciwsace", + "view-foreign": "i $1 miciwsace", + "edit": "mikawaway tu kalumyiti", + "create": "patizeng", + "create-local": "cunusen itiniay a buhci tu kamu", + "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 u {{SITENAME}}", + "aboutpage": "Project:mahizaay u...", + "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", + "retrievedfrom": "miala i \"$1\"", + "editsection": "mikawaway tu kalumyiti", + "editold": "mikawaway tu kalumyiti", + "viewsourceold": "ciwsace sakatizeng bangu", + "editlink": "mikawaway tu kalumyiti", + "viewsourcelink": "ciwsace sakatizeng bangu", + "editsectionhint": "mikawaway tu kalumyiti tusil: $1", + "toc": "dilyikotoling", + "showtoc": "paazih", + "hidetoc": "midimut", + "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-template": "taazihan mitudung", + "nstab-category": "kakuniza", + "mainpage-nstab": "saayaway a belih", + "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", + "userlogin-yourname": "misaungayay a kalungangan", + "userlogin-yourname-ph": "pisulitan tu nu misay a misaungayay a kalungangan", + "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", + "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-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}}", + "loginlanguagelabel": "kamu: $1", + "pt-login": "patalabu", + "pt-login-button": "patalabu", + "pt-createaccount": "panganganen ku canghaw", + "pt-userlogout": "katahkal", + "botpasswords-label-cancel": "palawpes", + "resetpass-submit-cancel": "palawpes", + "passwordreset": "miliyaw miteka setin mima", + "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:", + "minoredit": "payni mikilulay a mikawaway tu kalumyiti", + "watchthis": "miazih tuyni kasabelih", + "savearticle": "misuped kasabelih", + "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", + "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.", + "editing": "mikawaway tu kalumyiti $1 ayza", + "creating": "patizeng ayza $1", + "editingsection": "mikawaway tu kalumyiti ayza $1 (tusil)", + "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.", + "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", + "last": "ayaway", + "revdelete-show-file-submit": "hang", + "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?", + "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.", + "mypreferences": "setin tu kanamuhan", + "prefs-rc": "capi a demaiday a sumad", + "searchresultshead": "kilim", + "prefs-searchoptions": "kilim", + "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]])", + "rcfilters-savedqueries-cancel-label": "palawpes", + "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-hide": "midimut", + "rcshowhidemine": "$1 mikawaway tu kalumyiti nu maku", + "rcshowhidemine-show": "paazih", + "rcshowhidemine-hide": "midimut", + "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}}", + "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", + "upload-dialog-button-cancel": "palawpes", + "license": "sapabeli tu kinli a cedang", + "license-header": "sapabeli tu kinli a cedang", + "imgfile": "tangan", + "listfiles": "tangan-tangan misiket", + "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.", + "upload-disallowed-here": "la’cus kisu mitahpu tuyni a tangan.", + "randompage": "kakibalucu’ ay a kasabelih", + "randomincategory-submit": "mileku", + "pageswithprop-submit": "mileku", + "nbytes": "$1 {{PLURAL:$1|wyiyincu}}", + "ncategories": "{{PLURAL:$1|kakuniza}}", + "nmembers": "$1 {{PLURAL:$1|ku mamikawaw}}", + "newpages": "baluhay kasabelih", + "move": "milimad", + "pager-older-n": "{{PLURAL:$1| kusa malumanay}}", + "apisandbox-continue": "palalid", + "booksources": "nu cudad atu laculaculan", + "booksources-search-legend": "mikilim ku cudad atu laculaculan", + "booksources-search": "kilim", + "log": "nasulitan nakawawan", + "allpages": "hamin nu kasabelih", + "allarticles": "hamin nu kasabelih", + "allpagessubmit": "mileku", + "categories": "kakuniza", + "linksearch-ok": "kilim", + "watchlist": "miazihay a piazihan tu sulit", + "mywatchlist": "miazihay a piazihan tu sulit", + "watch": "miazih", + "watchlist-hide": "midimut", + "dellogpage": "masipu ku nasulitan nakawawan", + "rollbacklink": "panukasan", + "rollbacklinkcount": "patiku {{PLURAL:$1|mikawaway tu kalumyiti}}", + "protectlogpage": "midiput nasulitan nakawawan", + "restriction-edit": "mikawaway tu kalumyiti", + "restriction-move": "milimad", + "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-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", + "autoblocklist-submit": "kilim", + "ipblocklist-submit": "kilim", + "blocklink": "malangat", + "contribslink": "paanin", + "blocklogpage": "milangat tu nasulitan nakawawan", + "movelogpage": "milimad ku nasulitan nakawawan", + "export": "patahkal ku kasabelih", + "allmessages-filter-submit": "mileku", + "thumbnail-more": "patabaki(micuwat)", + "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", + "simpleantispam-label": "sapi tena’ babakahen a sulit kinsa.\nyu amana misulit kuyni pisinga’an!", + "pageinfo-toolboxlink": "kasabelih cesyun", + "pageinfo-contentpage-yes": "hang", + "pageinfo-protect-cascading-yes": "hang", + "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", + "ilsubmit": "kilim", + "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-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-exifversion": "Exif baziyong / sapad", + "exif-colorspace": "kalukulit salaedan", + "exif-datetimeoriginal": "kalunasulitan masangaay’ a demiad atu tuki", + "exif-datetimedigitized": "suwyihwaay a demiad atu tuki", + "exif-orientation-1": "tatungus", + "namespacesall": "hamin", + "monthsall": "hamin", + "imgmultigo": "mileku!", + "img-lang-go": "mileku", + "table_pager_limit_submit": "mileku", + "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1| sasukamu ]])", + "version-specialpages": "sazumaay a kasabelih", + "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-list-wrapper": "([[Special:Tags|{{PLURAL:$1|aazihen paya’}}]]: $2)", + "tags-active-yes": "hang", + "tags-active-no": "caay", + "permanentlink": "saluimengay misiket", + "htmlform-no": "caay", + "htmlform-yes": "hang", + "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", + "feedback-cancel": "palawpes", + "searchsuggest-search": "kilim {{SITENAME}}" +} diff --git a/languages/i18n/ar.json b/languages/i18n/ar.json index 69e204c8b9..e608a0caad 100644 --- a/languages/i18n/ar.json +++ b/languages/i18n/ar.json @@ -101,13 +101,14 @@ "tog-shownumberswatching": "اعرض عدد المستخدمين المراقبين", "tog-oldsig": "توقيعك الحالي:", "tog-fancysig": "جعل التوقيع مثل نص الويكي (دون وصلة تلقائية)", - "tog-uselivepreview": "استعمال المعاينة المباشرة", + "tog-uselivepreview": "عرض المعاينات بدون إعادة تحميل الصفحة", "tog-forceeditsummary": "نبهني عند عدم إدخال ملخص تعديل", "tog-watchlisthideown": "أخف تعديلاتي من قائمة المراقبة", "tog-watchlisthidebots": "أخف تعديلات البوتات من قائمة المراقبة", "tog-watchlisthideminor": "أخف التعديلات الطفيفة من قائمة المراقبة", "tog-watchlisthideliu": "أخف تعديلات المستخدمين المسجلين في قائمة المراقبة", "tog-watchlistreloadautomatically": "أعد تحميل قائمة المراقبة بصفة آلية حينما يتغير مرشح ما (يتطلب جافاسكربت)", + "tog-watchlistunwatchlinks": "إضافة روابط مباشرة للمراقبة/إزالة المراقبة إلى إدخالات قائمة المراقبة (جافا سكريبت مطلوبة للحصول على وظيفة التبديل)", "tog-watchlisthideanons": "أخف تعديلات المستخدمين المجهولين في قائمة المراقبة", "tog-watchlisthidepatrolled": "أخف التعديلات المراجعة في قائمة المراقبة", "tog-watchlisthidecategorization": "أخف تصنيف الصفحات", @@ -757,8 +758,8 @@ "permissionserrorstext-withaction": "لا تملك الصلاحيات ل$2، لل{{PLURAL:$1||سبب التالي|سببين التاليين|أسباب التالية}}:", "contentmodelediterror": "أنت لا يمكنك تعديل هذه المراجعة لأن موديل محتواها هو $1، والذي يختلف عن موديل المحتوى الحالي للصفحة $2.", "recreate-moveddeleted-warn": "'''تحذير: أنت تعيد إنشاء صفحة سبق حذفها.'''\n\nيجب عليك التيقن من أن الاستمرار بتحرير هذه الصفحة ملائم.\nسجلا الحذف والنقل لهذه الصفحة معروضان هنا للتيسير:", - "moveddeleted-notice": "هذه الصفحة تم حذفها.\nسجلا الحذف والنقل للصفحة معروضان بالأسفل كمرجع.", - "moveddeleted-notice-recent": "عذرا، هذه الصفحة تم حذفها مؤخرا (في آخر 24 ساعة).\nسجلا الحذف والنقل للصفحة معروضان بالأسفل كمرجع.", + "moveddeleted-notice": "هذه الصفحة تم حذفها.\nسجلا حذف ونقل الصفحة معروضان بالأسفل كمرجع.", + "moveddeleted-notice-recent": "عذرا، هذه الصفحة تم حذفها مؤخرا (في آخر 24 ساعة).\nسجلا حذف ونقل الصفحة معروضان بالأسفل كمرجع.", "log-fulllog": "أظهر السجل الكامل", "edit-hook-aborted": "التعديل تم تركه بواسطة الخطاف.\nلم يعط تفسيرا.", "edit-gone-missing": "لم يمكن تحديث الصفحة.\nيبدو أنه تم حذفها.", @@ -1026,7 +1027,7 @@ "prefs-editwatchlist-clear": "امسح قائمة المراقبة", "prefs-watchlist-days": "عدد الأيام للعرض في قائمة المراقبة:", "prefs-watchlist-days-max": "الحد الأقصى {{PLURAL:$1|أقل من يوم|يوم واحد|يومان|$1 أيام|$1 يوما|$1 يوم}}", - "prefs-watchlist-edits": "عدد التعديلات التي تعرض في قائمة المراقبة الموسعة:", + "prefs-watchlist-edits": "عدد التعديلات التي تعرض في قائمة المراقبة:", "prefs-watchlist-edits-max": "العدد الأقصى: 1000", "prefs-watchlist-token": "مفتاح قائمة المراقبة:", "prefs-misc": "متفرقات", @@ -1341,33 +1342,42 @@ "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-limit-shownum": "إظهار آخر {{PLURAL:$1|تغيير|$1 تغييرات}}", "rcfilters-days-title": "عدد الأيام الأخيرة", "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": "لحفظ إعدادات الفلتر وإعادة استخدامها في وقت لاحق; انقر فوق رمز الإشارة المرجعية في منطقة الفلتر النشط أدناه.", "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-whatsthis": "كيف تعمل هذه؟", "rcfilters-filterlist-feedbacklink": "تقديم مراجعات لمرشحات (بيتا) الجديدة", "rcfilters-highlightbutton-title": "التعليم على النتائج", "rcfilters-highlightmenu-title": "اختر لونًا", @@ -1375,23 +1385,23 @@ "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": "مساهماتك الشخصية.", "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": "غير مسجل", - "rcfilters-filter-user-experience-level-unregistered-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-newcomer-description": "المحررون المسجلون الذين لديهم أقل من 10 تعديلات و 4 أيام من النشاط.", "rcfilters-filter-user-experience-level-learner-label": "المتعلمون", - "rcfilters-filter-user-experience-level-learner-description": "خبرة أكثر من \"القادمين الجدد\" ولكن أقل من \"المستخدمين ذوي الخبرة\".", + "rcfilters-filter-user-experience-level-learner-description": "المحررون المسجلون الذين تقع تجربتهم بين \"القادمين الجدد\" و \"المستخدمين ذوي الخبرة\".", "rcfilters-filter-user-experience-level-experienced-label": "المستخدمون ذوو الخبرة", - "rcfilters-filter-user-experience-level-experienced-description": "أكثر من 30 يوما من النشاط و500 تعديل.", + "rcfilters-filter-user-experience-level-experienced-description": "المحررون المسجلون الذين لديهم أكثر من 500 تعديل و 30 يوما من النشاط.", "rcfilters-filtergroup-automated": "المساهمات الأوتوماتيكية", "rcfilters-filter-bots-label": "بوت", "rcfilters-filter-bots-description": "التعديلات بواسطة الأدوات الأوتوماتيكية.", @@ -1414,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": "التعديلات لمحتوى الويكي، النقاشات، وصوفات التصنيفات…", @@ -1426,17 +1441,24 @@ "rcfilters-hideminor-conflicts-typeofchange-global": "مرشح \"التعديلات الطفيفة\" يتعارض مع مرشح واحد أو أكثر من مرشحات نوع التغيير، وذلك لأن بعض أنواع التغيير لا يمكن التعليم عليها ك\"طفيفة.\" المرشحات المتعارضة معلم عليها في مساحة المرشحات النشطة بالأعلى.", "rcfilters-hideminor-conflicts-typeofchange": "بعض أنواع التغييرات لا يمكن التعليم عليها ك\"طفيفة،\" لذا فهذا المرشح يتعارض مع مرشحات نوع التغيير التالية: $1", "rcfilters-typeofchange-conflicts-hideminor": "مرشح نوع التغيير هذا يتعارض مع مرشح \"التعديلات الطفيفة\". بعض أنواع التغييرات لا يمكن التعليم عليها ك\"طفيفة.\"", - "rcfilters-filtergroup-lastRevision": "آخر مراجعة", + "rcfilters-filtergroup-lastRevision": "أحدث المراجعات", "rcfilters-filter-lastrevision-label": "آخر مراجعة", - "rcfilters-filter-lastrevision-description": "أخر تعديل للصفحة.", - "rcfilters-filter-previousrevision-label": "نسخ سابقة", - "rcfilters-filter-previousrevision-description": "كل تعديلات الصفحة ما عدا التعديل الأخير.", + "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-exclude-button-on": "استثناء المختارة", + "rcfilters-view-advanced-filters-label": "مرشحات متقدمة", "rcfilters-view-tags": "تعديلات موسومة", "rcfilters-view-namespaces-tooltip": "رشح النتائج حسب النطاق", "rcfilters-view-tags-tooltip": "رشح النتائج حسب وسوم التعديل", "rcfilters-view-return-to-default-tooltip": "ارجع لقائمة المرشحات الرئيسية", "rcfilters-liveupdates-button": "تحديثات حية", + "rcfilters-liveupdates-button-title-on": "إيقاف التحديثات الحية", + "rcfilters-liveupdates-button-title-off": "عرض التغييرات الجديدة فور حدوثها", + "rcfilters-watchlist-markSeen-button": "التعليم على كل التغييرات كمرئية", "rcnotefrom": "بالأسفل {{PLURAL:$5|التغيير|التغييرات}} منذ $2 (إلى $1 معروضة).", "rclistfromreset": "إعادة ضبط خيار التاريخ", "rclistfrom": "أظهر التغييرات بدء من $3 $2", @@ -1818,6 +1840,8 @@ "pageswithprop-legend": "صفحات مع خاصية الصفحة", "pageswithprop-text": "تسرد هذه الصفحة الصفحات التي تستخدم خاصية صفحة معينة.", "pageswithprop-prop": "اسم الخاصية:", + "pageswithprop-reverse": "فرز بترتيب عكسي", + "pageswithprop-sortbyvalue": "ترتيب حسب قيمة الخاصية", "pageswithprop-submit": "اذهب", "pageswithprop-prophidden-long": "قيمة خاصية النص الطويل المخفية ($1)", "pageswithprop-prophidden-binary": "قيمة الخاصية الثنائية المخفية ($1)", @@ -1950,6 +1974,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": "مسار الطلب:", @@ -2154,6 +2179,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نظام {{SITENAME}} للإشعار\n\n--\nلتغيير إعدادات الإشعار بالبريد الإلكتروني الخاص بك، قم بزيارة\n{{canonicalurl:{{#special:Preferences}}}}\n\nلتغيير إعدادات قائمة مراقبتك، قم بزيارة\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nلحذف الصفحة من قائمة مراقبتك، قم بزيارة\n$UNWATCHURL\n\nللمقترحات وللحصول على مساعدة إضافية:\n$HELPPAGE", + "enotif_minoredit": "هذا تعديل طفيف", "created": "أنشئت", "changed": "غيرت", "deletepage": "حذف الصفحة", @@ -2182,6 +2208,7 @@ "delete-warning-toobig": "لهذه الصفحة تاريخ تعديل طويل، أكثر من {{PLURAL:$1||مراجعة واحدة|مراجعتين|$1 مراجعات|$1 مراجعة}}.\nقد يؤدي حذفها إلى اضطراب عمليات قاعدة البيانات في {{SITENAME}}؛\nاستمر مع الحذر.", "deleteprotected": "لا يمكنك حذف هذه الصفحة لأنها محمية.", "deleting-backlinks-warning": "تحذير: [[Special:WhatLinksHere/{{FULLPAGENAME}}|صفحات أخرى]] تصل إلى أو تضمن الصفحة التي أنت على وشك حذفها.", + "deleting-subpages-warning": "تحذير: اللصفحة التي على وشك أن تحذفها لديها [[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|صفحة فرعية|$1 صفحات فرعية|51=أكثر من 50 صفحة فرعية}}]].", "rollback": "التراجع عن التعديلات", "rollbacklink": "استرجع", "rollbacklinkcount": "استرجع {{PLURAL:$1|لا تعديلات|تعديلا واحدا|تعديلين|$1 تعديلات|$1 تعديلاً|تعديل}}", @@ -2636,7 +2663,7 @@ "import-nonewrevisions": "لا مراجعات تم استيرادها (كل المراجعات إما أنها كانت موجودة بالفعل، وأو تم تجاوزها نتيجة أخطاء).", "xml-error-string": "$1 عند السطر $2، العمود $3 (بايت $4): $5", "import-upload": "رفع بيانات XML", - "import-token-mismatch": "فقد لبيانات الجلسة.\n\nأنت لابد من أنه قد تم تسجيل خروجك. من فضلك تأكد من أنك مازلت مسجل الدخول وحاول مرة أخرى.\nلو كان مازال لا يعمل، فحاول [[Special:UserLogout|تسجيل الخروج]] وتسجيل الدخول مرة أخرى، وتحقق من أن متصفحك يسمح بالكوكيز من هذا الموقع.", + "import-token-mismatch": "فقد لبيانات الجلسة.\nربما تم تسجيل خروجك. '''الرجاء التحقق من أنك لا تزال مسجلا الدخول وإعادة المحاولة'''.\nإذا كان لا يزال لا يعمل، حاول [[Special:UserLogout|تسجيل الخروج]] وتسجيل الدخول مرة أخرى، وتحقق من أن متصفحك يسمح بملفات تعريف الارتباط من هذا الموقع.", "import-invalid-interwiki": "لم يمكن الاستيراد من الويكي المحدد.", "import-error-edit": "الصفحة \"$1\" لم يتم استيرادها لأنه لا يمكن لك تحريرها.", "import-error-create": "الصفحة \"$1\" لم يتم استيرادها لأنه لا يمكن لك استحداثها أصلا.", @@ -3478,7 +3505,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": "البرنامج المثبت", @@ -3516,6 +3543,7 @@ "fileduplicatesearch-noresults": "لا ملف بالاسم \"$1\" تم العثور عليه.", "specialpages": "الصفحات الخاصة", "specialpages-note-top": "المفتاح", + "specialpages-note-restricted": "* صفحات خاصة عادية.\n* صفحات خاصة مقيدة.", "specialpages-group-maintenance": "تقارير الصيانة", "specialpages-group-other": "صفحات خاصة أخرى", "specialpages-group-login": "دخول / إنشاء حساب", @@ -3634,6 +3662,13 @@ "compare-invalid-title": "العنوان الذي حددته غير متاح.", "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)", @@ -4040,6 +4075,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/ast.json b/languages/i18n/ast.json index bef877babc..05c414b6f4 100644 --- a/languages/i18n/ast.json +++ b/languages/i18n/ast.json @@ -45,13 +45,14 @@ "tog-shownumberswatching": "Amosar el númberu d'usuarios que tán vixilando la páxina", "tog-oldsig": "La to firma actual:", "tog-fancysig": "Tratar la firma como testu wiki (ensin enllaz automáticu)", - "tog-uselivepreview": "Usar vista previa en tiempu real", + "tog-uselivepreview": "Amosar les vistes previes ensin recargar la páxina", "tog-forceeditsummary": "Avisame cuando grabe col resume d'edición en blanco", "tog-watchlisthideown": "Anubrir les mios ediciones na llista de siguimientu", "tog-watchlisthidebots": "Anubrir les ediciones de bots na llista de siguimientu", "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", @@ -701,8 +702,8 @@ "permissionserrorstext-withaction": "Nun tien permisu pa $2 {{PLURAL:$1|pol siguiente motivu|polos siguientes motivos}}:", "contentmodelediterror": "Nun ye posible editar esta revisión porque'l so modelu de conteníu ye $1, que ye distintu del modelu de conteníu actual de la páxina, $2.", "recreate-moveddeleted-warn": "'''Avisu: Tas volviendo a crear una páxina que se desanició anteriormente.'''\n\nHabríes considerar si ye afechisco siguir editando esta páxina.\nEquí tienes el rexistru de desanicios y tresllaos d'esta páxina:", - "moveddeleted-notice": "Esta páxina se desanició.\nComo referencia, embaxo s'ufre'l rexistru de desanicios y tresllaos de la páxina.", - "moveddeleted-notice-recent": "Esta páxina desanicióse apocayá (dientro de les postreres 24 hores).\nLos rexistros de desaniciu y treslláu de la páxina amuésense de siguío como referencia.", + "moveddeleted-notice": "Esta páxina se desanició.\nComo referencia, embaxo s'ufre'l rexistru de desanicios, proteiciones y tresllaos de la páxina.", + "moveddeleted-notice-recent": "Esta páxina desanicióse apocayá (dientro de les postreres 24 hores).\nEl rexistru de desanicios, proteiciones y tresllaos de la páxina amuésense de siguío como referencia.", "log-fulllog": "Ver el rexistru ensembre", "edit-hook-aborted": "Edición albortada pol enganche.\nNun dio esplicación.", "edit-gone-missing": "Nun se pudo actualizar la páxina.\nPaez que se desanició.", @@ -970,7 +971,7 @@ "prefs-editwatchlist-clear": "Llimpiar la to llista de siguimientu", "prefs-watchlist-days": "Númberu de díes qu'amosar na llista de siguimientu:", "prefs-watchlist-days-max": "Máximo $1 {{PLURAL:$1|día|díes}}", - "prefs-watchlist-edits": "Númberu máximu d'ediciones qu'amosar na llista de siguimientu espandida:", + "prefs-watchlist-edits": "Númberu máximu de cambios qu'amosar na llista de siguimientu:", "prefs-watchlist-edits-max": "Númberu máximu: 1000", "prefs-watchlist-token": "Pase de la llista de siguimientu:", "prefs-misc": "Varios", @@ -1286,16 +1287,20 @@ "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", + "rcfilters-grouping-title": "Agrupamientu", "rcfilters-activefilters": "Filtros activos", "rcfilters-advancedfilters": "Filtros avanzaos", "rcfilters-limit-title": "Cambios a amosar", - "rcfilters-limit-shownum": "Amosar los últimos $1 cambios", + "rcfilters-limit-shownum": "Amosar {{PLURAL:$1|l'últimu cambiu|los últimos $1 cambios}}", "rcfilters-days-title": "Últimos díes", "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.", @@ -1307,10 +1312,12 @@ "rcfilters-savedqueries-new-name-label": "Nome", "rcfilters-savedqueries-new-name-placeholder": "Describe'l propósitu del filtru", "rcfilters-savedqueries-apply-label": "Crear un filtru", + "rcfilters-savedqueries-apply-and-setdefault-label": "Crear filtru predetermináu", "rcfilters-savedqueries-cancel-label": "Encaboxar", "rcfilters-savedqueries-add-new-title": "Guardar les preferencies de filtru actuales", "rcfilters-restore-default-filters": "Restaurar los filtros predeterminaos", "rcfilters-clear-all-filters": "Borrar tolos filtros", + "rcfilters-show-new-changes": "Ver los cambeos más recién", "rcfilters-search-placeholder": "Filtriar los cambeos recién (restola o empieza a escribir)", "rcfilters-invalid-filter": "Filtru inválidu", "rcfilters-empty-filter": "Nun hai filtros activos. Amuésense toles contribuciones.", @@ -1323,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.", @@ -1362,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...", @@ -1383,11 +1395,15 @@ "rcfilters-tag-prefix-namespace-inverted": ":non $1", "rcfilters-exclude-button-off": "Torgar los seleicionaos", "rcfilters-exclude-button-on": "Torgando los seleicionaos", + "rcfilters-view-advanced-filters-label": "Filtros avanzaos", "rcfilters-view-tags": "Ediciones etiquetaes", "rcfilters-view-namespaces-tooltip": "Filtriar los resultaos por espaciu de nomes", "rcfilters-view-tags-tooltip": "Filtriar los resultaos usando les etiquetes d'edición", "rcfilters-view-return-to-default-tooltip": "Volver al menú principal de filtros", "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", @@ -1768,6 +1784,8 @@ "pageswithprop-legend": "Páxines con una propiedá de páxina", "pageswithprop-text": "Esta páxina llista les páxines qu'usen una propiedá de páxina determinada.", "pageswithprop-prop": "Nome de la propiedá:", + "pageswithprop-reverse": "Ordenar a la inversa", + "pageswithprop-sortbyvalue": "Ordenar por valor de propiedá", "pageswithprop-submit": "Dir", "pageswithprop-prophidden-long": "valor de propiedá de testu llargu tapecíu ($1)", "pageswithprop-prophidden-binary": "valor de propiedá binaria tapecíu ($1)", @@ -2104,6 +2122,7 @@ "enotif_lastdiff": "Pa ver esti cambiu mira en $1", "enotif_anon_editor": "usuariu anónimu $1", "enotif_body": "Estimáu $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nResume del editor: $PAGESUMMARY $PAGEMINOREDIT\n\nPa comunicate col editor:\ncorréu: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nEn casu de producise más actividá, nun habrá más notificaciones a nun ser que visites esta páxina teniendo sesión aniciada. Tamién podríes reaniciar na to llista de siguimientu los marcadores de notificación de toles páxines que sigues.\n\nEl to abertable sistema de notificación de {{SITENAME}}\n\n--\nPa camudar les preferencies d'avisos per corréu, visita\n{{canonicalurl:{{#special:Preferences}}}}\n\nPa camudar la configuración de la to llista de siguimientu, visita\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nPa desaniciar la páxina de la to llista de siguimientu, visita\n$UNWATCHURL\n\nMás ayuda y sofitu:\n$HELPPAGE", + "enotif_minoredit": "Esta ye una edición menor", "created": "creada", "changed": "camudada", "deletepage": "Esborrar páxina", @@ -2586,7 +2605,7 @@ "import-nonewrevisions": "Nun s'importó denguna revision (o yá taben toes presentes, o se saltaron por errores).", "xml-error-string": "$1 na llinia $2, col $3 (byte $4): $5", "import-upload": "Xubir datos XML", - "import-token-mismatch": "Perda de datos de la sesión.\n\nSeique zarróse la sesión. Comprueba si tienes abierta la sesión y vuelve a intentalo.\nSi inda nun funcionara, tenta [[Special:UserLogout|colar]] y volver a aniciar sesión y comprueba que'l restolador permite les cookies d'esti sitiu.", + "import-token-mismatch": "Perda de datos de la sesión.\n\nSeique zarróse la sesión. '''Comprueba si tienes abierta la sesión y tenta nuevamente'''.\nSi entá nun funciona, tenta [[Special:UserLogout|colar]] y volver a aniciar sesión y comprueba que'l restolador permite les cookies d'esti sitiu.", "import-invalid-interwiki": "Nun se puede importar d'esi wiki.", "import-error-edit": "La páxina «$1» nun s'importó porque nun tienes permisu pa editala.", "import-error-create": "La páxina «$1» nun s'importó porque nun tienes permisu pa creala.", @@ -3355,6 +3374,7 @@ "fileduplicatesearch-noresults": "Nun s'alcontró dengún ficheru nomáu «$1».", "specialpages": "Páxines especiales", "specialpages-note-top": "Lleenda", + "specialpages-note-restricted": "* Páxines especiales normales.\n* Páxines especiales restrinxíes.", "specialpages-group-maintenance": "Informes de mantenimientu", "specialpages-group-other": "Otres páxines especiales", "specialpages-group-login": "Entrar / crear cuenta", @@ -3473,6 +3493,13 @@ "compare-invalid-title": "El títulu que conseñasti nun ye válidu.", "compare-title-not-exists": "El títulu que conseñasti nun esiste.", "compare-revision-not-exists": "La revisión que conseñasti nun esiste.", + "diff-form": "Diferencies", + "diff-form-oldid": "Antiguu identificador de revisión (opcional)", + "diff-form-revid": "Identificador de revisión de la diferencia", + "diff-form-submit": "Amosar les diferencies", + "permanentlink": "Enllaz permanente", + "permanentlink-revid": "ID de la revisión", + "permanentlink-submit": "Dir a la revisión", "dberr-problems": "¡Sentímoslo! Esti sitiu ta esperimentando dificultaes téuniques.", "dberr-again": "Tenta esperar dellos minutos y recargar.", "dberr-info": "(Nun se pue entrar na base de datos: $1)", diff --git a/languages/i18n/awa.json b/languages/i18n/awa.json index 3dbda51b1c..34b01844cc 100644 --- a/languages/i18n/awa.json +++ b/languages/i18n/awa.json @@ -4,7 +4,8 @@ "1AnuraagPandey", "राम प्रसाद जोशी", "Macofe", - "Matma Rex" + "Matma Rex", + "Sfic" ] }, "tog-underline": "कड़ि अधोरेखन:", @@ -144,13 +145,7 @@ "anontalk": "ई आइ॰पी कय खरतिन बातचीत", "navigation": "घुमाई", "and": " अउर", - "qbfind": "खोजा जाय", - "qbbrowse": "ब्राउज़", - "qbedit": "सम्पादन", - "qbpageoptions": "ई पन्ना", - "qbmyoptions": "हमार पन्ना", "faq": "साधारण सवाल", - "faqpage": "Project:ढेर पूछा जाय वाला सवाल", "actions": "काम कुल", "namespaces": "नामस्थान", "variants": "संस्करण", @@ -175,29 +170,19 @@ "edit-local": "स्थानीय विवरण सम्पादन", "create": "बनावो", "create-local": "स्थानीय विवरण जोडो", - "editthispage": "ई पन्ना कय सम्पादन करा जाय", - "create-this-page": "ई पन्ना बनावा जाय", "delete": "मिटावा जाय", - "deletethispage": "ई पन्ना मेटावा जाय", - "undeletethispage": "ई पन्ना कय पुनर्स्थापित करा जाय।", "undelete_short": "{{PLURAL:$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": "साँचा पन्ना देखा जाय", @@ -1541,7 +1526,7 @@ "querypage-disabled": "प्रदर्शन कारणन् से इ विशेष पन्ना अक्षम कै गा है।", "apihelp": "API सहयोग", "apihelp-no-such-module": "मोड्युल \"$1\" नाइ मिला ।", - "apisandbox": "ए॰पी॰आइ प्रयोगस्थल", + "apisandbox": "एपीआई प्रयोगस्थल", "apisandbox-api-disabled": "इ साइट पे ए.पी.आइ अक्षम है ।", "apisandbox-submit": "अनुरोध करा जाय", "apisandbox-reset": "स्पष्ट", @@ -2822,7 +2807,6 @@ "fileduplicatesearch-noresults": "कवनो \"$1\" फाइल नाइ मिला।", "specialpages": "खाश पन्ना", "specialpages-note-top": "कुंजी", - "specialpages-note": "* साधारण विशेष पन्ना।\n* प्रतिबंधित विशेष पन्ना।", "specialpages-group-maintenance": "अनुरक्षण रिपोर्ट", "specialpages-group-other": "अउर खाश पन्ना", "specialpages-group-login": "लाग इन / खाता खोला जाय", 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 1bd2656e18..ac3cdc631d 100644 --- a/languages/i18n/ba.json +++ b/languages/i18n/ba.json @@ -65,6 +65,7 @@ "tog-watchlisthideminor": "Әҙ үҙгәрештәрҙе күҙәтеү исемлегенән йәшерергә", "tog-watchlisthideliu": "Танылған ҡулланыусыларҙың үҙгәртеүҙәрен күҙәтеү исемлегенән йәшерергә", "tog-watchlistreloadautomatically": "Һөҙгөс үҙгәргән һайын күҙәтеү исемлеген автоматик рәүештә яңыртырға (JavaScript кәрәк)", + "tog-watchlistunwatchlinks": "Күҙәтеү исемлегендәге яҙмаларға туранан-тура индереү/алыу (JavaScript кәрәк)", "tog-watchlisthideanons": "Аноним ҡулланыусыларҙың үҙгәртеүҙерен күҙәтеү исемлегенән йәшерергә", "tog-watchlisthidepatrolled": "Тикшерелгән үҙгәртеүҙәрҙе күҙәтеү исемлегенән йәшерергә", "tog-watchlisthidecategorization": "Биттәр категоризацияһын йәшереү", @@ -190,6 +191,7 @@ "searcharticle": "Күсеү", "history": "Бит тарихы", "history_short": "Тарих", + "history_small": "тарихы", "updatedmarker": "һуңғы инеүемдән һуң яңыртылған", "printableversion": "Баҫтырыу өлгөһө", "permalink": "Даими һылтанма", @@ -638,6 +640,7 @@ "blockedtitle": "Ҡулланыусы блокланған", "blockedtext": "'''Иҫәп яҙыуығыҙ йәки IP-адресығыҙ блокланған.'''\n\nБлоклаусы хаким: $1.\nБелдерелгән сәбәп: ''$2''.\n\n* Блоклау башланған ваҡыт: $8\n* Блоклау аҙағы: $6\n* Блоклауҙар һаны: $7\n\nҺеҙ $1 йәки башҡа [[{{MediaWiki:Grouppage-sysop}}|хакимгә]] блоклау буйынса һорауҙарығыҙҙы ебәрә алаһығыҙ.\nИҫегеҙҙе тотоғоҙ: әгәр һеҙ теркәлмәгән һәм электрон почта адресығыҙҙы раҫламаған булһағыҙ ([[Special:Preferences|көйләүҙәрем битендә]]), хакимгә хат ебәрә алмайһығыҙ. Шулай ук блоклау ваҡытында һеҙҙең хат ебәреү мөмкинлегегеҙ сикләгән булырға ла мөмкин.\nҺеҙҙең IP-адрес — $3, блоклау идентификаторы — #$5.\nХаттарҙа был мәғлүмәттәрҙе күрһәтергә онотмағыҙ.", "autoblockedtext": "Һеҙҙең IP-адресығыҙ автоматик рәүештә блокланған. Сәбәбе, был адрес элек блокланған ҡулланыусыларҙың береһе тарафынан ҡулланылған. Блоклаусы хаким ($1) киләһе сәбәпте белдергән:\n\n:«$2»\n\nБлоклаусы хаким: $1.\nБелдерелгән сәбәп: ''$2''.\n\n* Блоклау башланған ваҡыт: $8\n* Блоклау аҙағы: $6\n* Блоклауҙар һаны: $7\n\nҺеҙ $1 йәки башҡа [[{{MediaWiki:Grouppage-sysop}}|хакимгә]] блоклау буйынса һорауҙарығыҙҙы ебәрә алаһығыҙ.\nИҫегеҙҙе тотоғоҙ: әгәр һеҙ теркәлмәгән һәм электрон почта адресығыҙҙы раҫламаған булһағыҙ ([[Special:Preferences|көйләүҙәрем битендә]]), хакимгә хат ебәрә алмайһығыҙ. Шулай ук блоклау ваҡытында һеҙҙең хат ебәреү мөмкинлегегеҙ сикләгән булырға ла мөмкин.\nҺеҙҙең IP-адрес — $3, блоклау идентификаторы — #$5.\nХаттарҙа был мәғлүмәттәрҙе күрһәтергә онотмағыҙ.", + "systemblockedtext": " Ҡулланыусы исемен йәки IP-адресығыҙҙы MediaWiki автоматик рәүештә туҡтатты. \nСәбәптәре:\n\n: <ем>$2\n\n* Туҡтатыу башланды:$8\n* Туҡтатыу оҙайлығы:$6\n* Туҡтатыу маҡсаты:$7\n\nӘлеге IP-адресығыҙ $3.\nЗинһар, һорау менән мөрәжәғәт иткәндә ошо мәғлүмәттәрҙе һәр ваҡыт күрһәтегеҙ.", "blockednoreason": "сәбәп белдерелмәгән", "whitelistedittext": "Биттәрҙә үҙгәртеү өсөн $1 кәрәк.", "confirmedittext": "Биттәрҙе үҙгәртерҙән алда электрон почта адресығыҙҙы раҫларға тейешһегеҙ.\nБыны [[Special:Preferences|көйләүҙәр битендә]] эшләй алаһығыҙ.", @@ -709,8 +712,8 @@ "permissionserrorstext-withaction": "«'''$2'''» ғәмәлен башҡара алмайһығыҙ. {{PLURAL:$1|1=Сәбәбе|Сәбәптәре}}:", "contentmodelediterror": "Был версияны мөхәррирләй алмайһығыҙ — $1, моделе ғәмәлдәге — $2 моделенан айырыла.", "recreate-moveddeleted-warn": "'''Иғтибар: Һеҙ, элек юйылған битте яңынан яһарға теләйһегеҙ.'''\n\nҺеҙгә был битте яңынан яһау кәрәклеген яңынан уйлап ҡарағыҙ.\nТүбәндә биттең юйыу һәм исем үҙгәртеү яҙмалары килтерелә:", - "moveddeleted-notice": "Был бит юйылған.\nБелешмә өсөн киләһе юйыу һәм исем үҙгәртеү яҙмалары килтерелә.", - "moveddeleted-notice-recent": "Үкенескә ҡаршы бит бит юйылған (һуүғы 24 сәғәт эсендә). Түбәндә юйыуҙар журналы һәм был журналға күсереүҙәр бирелгән.", + "moveddeleted-notice": "Был бит юйылған.\nБелешмә өсөн түбәндә был биттең юйыу, һаҡлау һәм үҙгәртеү яҙмалары килтерелә.", + "moveddeleted-notice-recent": "Үкенескә ҡаршы был бит юйылған (һуңғы 24 сәғәт эсендә). Түбәндә, мәғлүмәт өсөн, был биткә тәғәйен юйыуҙар, һаҡлау һәм күсереп ҡуйыуҙарҙың журналы күрһәтелгән.", "log-fulllog": "Бар яҙмаларҙы ҡарарға", "edit-hook-aborted": "Үҙгәртеүҙе ҡармаҡ-процедура кире ҡаҡты.\nӨҫтәмә аңлатма килтерелмәй.", "edit-gone-missing": "Битте яңыртып булмай.\nБәлки ул юйылғандыр.", @@ -726,6 +729,7 @@ "content-not-allowed-here": "\"$1\" эстәлеге [[$2]] бит өсөн ярамай", "editwarning-warning": "Икенсе биткә күсеү һеҙ индергән үҙгәрештәрҙең юғалыуына килтереүе мөмкин.\nӘгәр системала танылыу үтһәгеҙ, көйләүҙәрегеҙ битенең \"Мөхәррирләү\" бүлегендә был киҫәтеүҙе һүндерә алаһығыҙ.", "editpage-invalidcontentmodel-title": "Йөкмәтке форматы ҡабул ителмәй", + "editpage-invalidcontentmodel-text": "\"$1\" йөкмәткеһенең моделе бармай", "editpage-notsupportedcontentformat-title": "Йөкмәтке форматы асылмай", "editpage-notsupportedcontentformat-text": "$1 эстәлеге форматы $2 моделе форматы менән тап килмәй.", "content-model-wikitext": "викитекст", @@ -734,6 +738,8 @@ "content-model-css": "CSS", "content-json-empty-object": "Буш объект", "content-json-empty-array": "Буш массив", + "deprecated-self-close-category": "Үҙенән-үҙе ябыла торған HTML-тегтарҙы ҡулланған биттәр", + "deprecated-self-close-category-desc": "Был биттең үҙенән-үҙе ябыла торған, мәҫәлән <b/> йәки <span/> кеүек HTML-тегтары бар. Тиҙҙән уларҙың тәъҫире, HTML5 спецификацияһына ярашлы булыу өсөн, үҙгәрәсәк. Шуға ла был иҫкергән тегтарҙы вики-текста ҡулланмау хәйерлерәк.", "duplicate-args-warning": "Иғтибар: [[:$1]] берәүҙән артыҡ [[:$2]] параметры «$3» менән саҡыра. Һуңғы дәүмәл ҡулланыласаҡ.", "duplicate-args-category": "Ҡалыпты сығарғанда ҡабатланған аргументтарҙы ҡулланған биттәр", "duplicate-args-category-desc": "Түбәндәге ҡабатланған аргументтары {{foo|bar=1|bar=2}} или {{foo|bar|1=bar}} булған ҡалыпты сығарыу эстәлекле биттәр.", @@ -744,6 +750,8 @@ "post-expand-template-argument-warning": "'''Иғтибар:''' Был бит, асыу өсөн бик ҙур күләмле кәмендә бер ҡалып аргументына эйә.\nБындай аргументтар төшөрөп ҡалдырылды.", "post-expand-template-argument-category": "Төшөрөп ҡалдырылған ҡалып аргументтары булған биттәр", "parser-template-loop-warning": "Төйөн табылған ҡалыптар: [[$1]]", + "template-loop-category": "Ҡалыплы биттәр", + "template-loop-category-desc": "Был биткә элмәкле, йәғни үҙенән-үҙе килеп сыға торған ҡалып бәйләнгән,", "parser-template-recursion-depth-warning": "($1) ҡалыбын рекурсия итеп ҡулланыу тәрәнлеге рөхсәт ителгәндән артып киткән", "language-converter-depth-warning": "Телдәрҙе үҙгәртеү тәрәнлегенең сиге үткән ($1)", "node-count-exceeded-category": "Төйөндәр һаны артҡан биттәр", @@ -935,6 +943,7 @@ "search-interwiki-caption": "Туғандаш проекттар һөҙөмтәләре", "search-interwiki-default": "$1 һөҙөмтәһе:", "search-interwiki-more": "(тағы)", + "search-interwiki-more-results": "Күберәк һөҙөмтә кәрәк", "search-relatedarticle": "Ҡағылышлы", "searchrelated": "ҡағылышлы", "searchall": "барыһы", @@ -952,6 +961,7 @@ "search-external": "Тышҡы эҙләү", "searchdisabled": "{{SITENAME}} эҙләүе ябыҡ.\nХәҙергә эҙләүҙе Google менән үтәй алаһығыҙ.\nТик унда {{SITENAME}} өсөн индекслауҙың иҫке булыуы мөмкинлеген онотмағыҙ.", "search-error": "Эҙләүҙә хата китте: $1", + "search-warning": "Эҙләү мәлендә хата китте:$1", "preferences": "Көйләүҙәр", "mypreferences": "Көйләүҙәр", "prefs-edits": "Төҙәтеүҙәр һаны:", @@ -971,7 +981,7 @@ "prefs-editwatchlist-clear": "Күҙәтеүҙәр исемлеген таҙартыу", "prefs-watchlist-days": "Күҙәтеү исемлегендә нисә көн керетелгән үҙгәртеүҙәрҙе күрһәтергә:", "prefs-watchlist-days-max": "Иң күбе $1 {{PLURAL:$1|1=көн|көн}}", - "prefs-watchlist-edits": "Киңәйтелгән күҙәтеү исемлегендә күрһәтелә торған үҙгәртеүҙәр һанының сиге:", + "prefs-watchlist-edits": "Күҙәтеүҙәр исемлегендә күрһәтеү өсөн төҙәтеүҙәр һанының сиге:", "prefs-watchlist-edits-max": "Иң күбе: 1000", "prefs-watchlist-token": "Күҙәтеү исемлеге токены:", "prefs-misc": "Башҡа көйләүҙәр", @@ -1023,6 +1033,7 @@ "youremail": "Электрон почта :", "username": "{{GENDER:$1|Ҡулланыусы исеме}}:", "prefs-memberingroups": "{{GENDER:$2|Ағза}} {{PLURAL:$1|төркөмө|төркөмдәре}}:", + "group-membership-link-with-expiry": "$1($2 ҡәҙәре)", "prefs-registration": "Теркәлеү ваҡыты:", "yourrealname": "Һеҙҙең ысын исемегеҙ:", "yourlanguage": "Тышҡы күренештә ҡулланылған тел:", @@ -1066,17 +1077,27 @@ "userrights-user-editname": "Ҡулланыусы исемен керетерегеҙ:", "editusergroup": "Ҡатнашыусы төркөмдәрен тейәү", "editinguser": "{{GENDER:$1|ҡатнашыусы}} [[User:$1|$1]] $2 хоҡуҡтарын үҙгәртеү", + "viewinguserrights": "{{GENDER:$1|ҡатнашыусы}} [[User:$1|$1]] $2 хоҡуҡтарын ҡарау", "userrights-editusergroup": "{{GENDER:$1|Ҡатнашыусы}} төркөмдәрен үҙгәртеү", + "userrights-viewusergroup": "{{GENDER:$1|Ҡатнашыусы}} төркөмдәрен ҡарау", "saveusergroups": "{{GENDER:$1|user}} ҡатнашыусының төркөмдәрен һаҡлау", "userrights-groupsmember": "Ағза булған төркөмдәр:", "userrights-groupsmember-auto": "Йәшерен ағза булған төркөмдәр:", - "userrights-groups-help": "Был ҡулланыусы кергән төркөмдәрҙе үҙгәртә алаһығыҙ.\n* Әгәр төркөм исеме эргәһендә билдә булһа, ҡулланыусы төркөмгә кергән була.\n* Әгәр билдә булмаһа, ҡулланыусы ул төркөмгә кермәй тимәк.\n* * билдәһе, әгәр төркөмдән ҡулланыусыны юйһағыҙ кире ҡуя алмаясағығыҙҙы аңлата һәм киреһенсә.", + "userrights-groups-help": "{{GENDER:$1|Был ҡатнашыусы}} кергән төркөмдәрҙе үҙгәртә алаһығыҙ.\n* Әгәр төркөм исеме эргәһендә билдә булһа, {{GENDER:$1|ҡатнашыусы}} төркөмгә кергән була.\n* Әгәр билдә булмаһа, {{GENDER:$1|ҡатнашыусы}} ул төркөмгә инмәгән.\n* * билдәһе, {{GENDER:$1|ҡатнашыусыны}} төркөмгә өҫтәһәгеҙ, {{GENDER:$1|уны}} юйып булмағанды аңлата (йәки киреһенсә).\n* # билдәһе төркөмдәге ағзалыҡтан сығыуҙы кисектерә генә алыуығыҙҙы, уны алдараҡ ваҡытҡа күсерә алмауығыҙҙы аңлата.", "userrights-reason": "Сәбәп:", "userrights-no-interwiki": "Һеҙҙең башҡа вики-проекттарҙа ҡатнашыусыларҙың хоҡуҡтарын үҙгәртергә хоҡуҡтарығыҙ юҡ.", "userrights-nodatabase": "$1 базаһы юҡ йәки урындағы (локаль) база түгел.", "userrights-changeable-col": "Һеҙ үҙгәртә алған төркөмдәр", "userrights-unchangeable-col": "Һеҙ үҙгәртә алмаған төркөмдәр", + "userrights-expiry-current": "$1 мөҙҙәте сығып килә", + "userrights-expiry-none": "Сикләүһеҙ", + "userrights-expiry": "Тамамлана:", + "userrights-expiry-existing": "Әлеге ваҡыт сыға:$2, $3", + "userrights-expiry-othertime": "Башҡа ваҡыт:", "userrights-expiry-options": "1 көн:1 day,1 аҙна:1 week,1 ай:1 mopnth, 3 ай:3 months,6 ай:6 months,1 йыл:1 year", + "userrights-invalid-expiry": "«$1» төркөмө өсөн ваҡыт бөтөүе яңылыш бирелгән", + "userrights-expiry-in-past": "Время истечения для группы «$1» задано в прошлом.\n«$1» төркөмө өсөн ваҡыт бөтөүе үткән ваҡытта бирелгән.", + "userrights-cannot-shorten-expiry": "«$1» төркөмөндә ағза булыу осоро датаһын алғараҡ күсерә алмайһың. Был төркөмгә өҫтәү йәки алыуға хоҡуғы булған ҡатнашыусылар ғына уны алғараҡ күсерә ала.", "userrights-conflict": "Ҡатнашыусының хоҡуҡтарын үҙгәртеү яраманы! Зинһар, үҙгәрештәрҙе тикшерегеҙ һәм яңынан индерегеҙ.", "group": "Төркөм:", "group-user": "Ҡулланыусылар", @@ -1179,6 +1200,7 @@ "grant-group-high-volume": "Юғары әүҙемлекле алым эшләргә", "grant-group-customization": "Көйләүҙәр һәм өҫтөнлөк биргән көйләүҙәр", "grant-group-administration": "Административ алымдар ҡулланыу", + "grant-group-private-information": "Доступ к конфиденциальным данным о вас\nҺеҙҙең туралағы йәшерелгән белешмәләргә инеү", "grant-group-other": "Әүҙемлек төрлө", "grant-blockusers": "Иҫәп яҙмаларын блоклау һәм блоклауҙы асыу", "grant-createaccount": "Иҫәп яҙмаһын булдырырға", @@ -1193,6 +1215,7 @@ "grant-highvolume": " Юғары әүҙемлектә мөхәррирләү", "grant-oversight": "Башҡа ҡатнашыусылар тәҙәтеүенән бит версияһын йәшерергә", "grant-patrol": "Бит үҙгәрештәрен күҙәтеү", + "grant-privateinfo": "Шәхси белешмәләргә инеү", "grant-protect": "Битте һаҡлау һәм һаҡты сисеү", "grant-rollback": "Биттеге үҙгәрештәрҙе кире ҡайтарыу", "grant-sendemail": "Башҡа ҡатнашыусыларға электрон почта аша хат ебәреү", @@ -1201,6 +1224,7 @@ "grant-basic": "Төп хоҡуҡтар", "grant-viewdeleted": "Юйылған файлдарҙы һәм биттерҙе тейәү", "grant-viewmywatchlist": "һеҙҙең күҙәтеүҙәр исемлеген байҡау", + "grant-viewrestrictedlogs": "рөхсәте сикле журналдағы яҙманы ҡарау", "newuserlogpage": "Яңы ҡулланыусы яҙмалары", "newuserlogpagetext": "Яңы теркәлгән ҡатнашыусылар яҙмалары журналы.", "rightslog": "Ҡулланыусының хоҡуҡтары көндәлеге", @@ -1225,7 +1249,9 @@ "action-writeapi": "Яҙҙырыу өсөн API ҡулланыу", "action-delete": "Был битте юйыу", "action-deleterevision": "биттең өлгөләрен юйыу", + "action-deletelogentry": "журналдағы яҙманы юҡ итеү", "action-deletedhistory": "биттең юйылған тарихын ҡарау", + "action-deletedtext": "текстың юйылған нөсхәһен ҡарау", "action-browsearchive": "Юйылған биттәрҙе эҙләү", "action-undelete": "биттәрҙе тергеҙеү", "action-suppressrevision": "биттәрҙең йәшерелгән өлгөләрен ҡарау һәм тергеҙеү", @@ -1243,6 +1269,7 @@ "action-userrights-interwiki": "Ҡатнашыусыларҙың башҡа Викиларҙағы хоҡуҡтарын үҙгәртеү", "action-siteadmin": "Мәғлүмәттәр базаһын асыу һәм ябыу", "action-sendemail": "электрон хат ебәреү", + "action-editmyoptions": "Көйләүҙәрегеҙҙе мөхәррирләү", "action-editmywatchlist": "һеҙҙең күҙәтеүҙәр исемлеген мөхәррирләү", "action-viewmywatchlist": "һеҙҙең күҙәтеүҙәр исемлеген байҡау", "action-viewmyprivateinfo": "һеҙҙең шәхси мәғлүмәтте байҡау", @@ -1252,6 +1279,7 @@ "action-applychangetags": "Һеҙҙең үҙгәрештәр ТЕГын булдырырға", "action-changetags": "Айырым үҙгәртеүҙәрҙә һәм журнал яҙмаланыда тег өҫтәү һәм юйыу", "action-deletechangetags": "билдәләрҙе мәғлүмәт базаһынан юйыу", + "action-purge": "был биттең кешын таҙартыу", "nchanges": "$1 {{PLURAL:$1|үҙгәртәү|үҙгәртеүҙәр}}", "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|һеҙҙең һуңғы визит}}", "enhancedrc-history": "тарих", @@ -1268,7 +1296,125 @@ "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": "{{PLURAL:$1|һуңғы үҙгәреш|$1 һуңғы үҙгәрештәр|$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-quickfilters-placeholder-description": "Фильтрҙың көйләүҙәрен һаҡлар һәм аҙаҡтан уларҙы яңынан ҡулланыу өсөн аҫтағы \"Әүҙем фильтр\" төймәһенә сиртегеҙ.", + "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-highlightmenu-help": "Был сифатты белгертеү өсөн төҫ һайлағыҙ", + "rcfilters-filterlist-noresults": "Фильтрҙар табылманы", + "rcfilters-noresults-conflict": "Эҙләү критерийҙары ҡаршылыҡлы булған өсөн яуабы табылманы", + "rcfilters-state-message-subset": "Фильтр һөҙөмтәһеҙ буласаҡ, сөнки уның һөҙөмтәһе {{PLURAL:$2|киләһе киңерәк фильтр}} индерелгән (айырыу өсөн төҫ биреп ҡарағыҙ):$1", + "rcfilters-state-message-fullcoverage": "Төркөмдәге барлыҡ фильтрҙы ла һайлау бер нимәне лә һайламау менән бер, шуға ла был фильтрҙың әһәмиәте булмаясаҡ. Бәйле төркөмдәр:$1", + "rcfilters-filtergroup-authorship": "Авторлыҡты мөхәррирләү", + "rcfilters-filter-editsbyself-label": "Һин индергән үҙгәртеүҙәр", + "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": "Теркәлмәгән", + "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-learner-description": "Тәжрибәһе \"Яңы килеүсе\" һәм \"Оҫта ҡулланыусы\" кимәле араһында булған теркәлгән мөхәррирҙәр", + "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-filtergroup-reviewstatus": "Тикшереү статусы", + "rcfilters-filter-patrolled-label": "Тикшерелгән", + "rcfilters-filter-patrolled-description": "Тикшерелгән тип билдәләнгән төҙәтеүҙәр", + "rcfilters-filter-unpatrolled-label": "Тикшерелмәгәндәр", + "rcfilters-filter-unpatrolled-description": "Тикшерелгән тип күрһәтелмәгән төҙәтеүҙәр", + "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-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": "Вики йөкмәткеһен, фекерләшеү, категориялар яҙмаһын мөхәррирләү...", + "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-hideminor-conflicts-typeofchange-global": "\"Аҙ ғына үҙгәртеүҙәр\" фильтры башҡа бер йәки бер нисә фильтр менән талаша, сөнки билдәләнгән төр үҙгәрештәр \"аҙ ғына\" була алмай. Талашҡан фильтрҙар \"Әүҙем фильтрҙар\" өлкәһендә өҫтә күрһәтелгән.", + "rcfilters-hideminor-conflicts-typeofchange": "Билдәләнгән үҙгәрештәр \"аҙ ғына\" тип атала алмай, шуға был фильтр үҙгәртеүҙәрҙең $1 фильтры менән талаша.", + "rcfilters-typeofchange-conflicts-hideminor": "Был төҙәтеү һымаҡ фильтр \"аҙ ғына төҙәтеү\" фильтрҙары менән талаша. Билдәләнгән был төҙәтеүҙәр \"аҙ ғына\" була алмай.", + "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": ": $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": "Үҙгәртеү билдәләрен ҡулланған фильтрҙың һөҙөмтәһе", + "rcfilters-view-return-to-default-tooltip": "Фильтрҙың төп менюһына ҡайтыу", + "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 алып яңы үҙгәртеүҙәрҙе күрһәт.", "rcshowhideminor": "бәләкәй төҙәтеүҙәрҙе $1", "rcshowhideminor-show": "Күрһәтергә", @@ -1317,7 +1463,7 @@ "recentchanges-page-added-to-category": "[[:$1]] категорияға өҫтәлгән", "recentchanges-page-added-to-category-bundled": "[[:$1]] категорияға өҫтәлгән, [[Special:WhatLinksHere/$1|был бит икенсе биттәргә өҫтәлгән]]", "recentchanges-page-removed-from-category": "[[:$1]] категориянан алынған", - "recentchanges-page-removed-from-category-bundled": "[[:$1]] һәм [[Special:WhatLinksHere/$1|{{PLURAL:$2|one page|$2 pages}}]] категориянан алынған", + "recentchanges-page-removed-from-category-bundled": "[[:$1]] категориянан юйылған, [[Special:WhatLinksHere/$1|был бит икенсе биттәргә индерелгән]]", "autochange-username": "Автоматик рәүештә MediaWiki үҙгәртелә", "upload": "Файл тейәү", "uploadbtn": "Файлды тейәргә", @@ -1375,6 +1521,8 @@ "file-thumbnail-no": "Файлдың исеме $1 менән башлана.\nБәлки, ул рәсемдең бәләкәйтелгән өлгөһөлөр ''(шартлы рәсем)''.\nӘгәр һеҙҙә был рәсемдең ҙур өлгөһө булһа, зинһар, уны керетегеҙ йәки файлдың исемен үҙгәртегеҙ.", "fileexists-forbidden": "Бындай исемле файл бар инде һәм ул үҙгәртелә алмай.\nӘгәр һеҙ шулай ҙа был файлды тейәргә теләһәгеҙ, зинһар, кире ҡайтығыҙ һәм уны икенсе исем аҫтында тейәгеҙ.\n[[File:$1|thumb|center|$1]]", "fileexists-shared-forbidden": "Бындай исемле файл дөйөм файл һаҡлағыста бар инде.\nӘгәр һеҙ шулай ҙа был файлды тейәргә теләһәгеҙ, зинһар, кире ҡайтығыҙ һәм яңы исем һайлағыҙ.\n[[File:$1|thumb|center|$1]]", + "fileexists-no-change": "Был тейәү файлдың ағымдағы версияһы [[:$1]] там ише", + "fileexists-duplicate-version": "Был тейәү [[:$1]] файлының {{PLURAL:$2|иҫкерәк версияһының|иҫкерәк версияларының}} там ише булып тора.", "file-exists-duplicate": "Был файл түбәндәге {{PLURAL:$1|1=файл|файлдар}} менән тап килә:", "file-deleted-duplicate": "Оҡшаш файл ([[:$1]]) юйылғайны инде. Уны ҡайтанан тейәр алдынан, зинһар, файлды юйыу тарихын ҡарағыҙ.", "file-deleted-duplicate-notitle": "Ошоға оҡшаған файл юйылған,ә исеме тыйылған булған. Яңынан тейәү алдынан администратор хоҡуғы булған кешенән тыйылған файлдарҙы ҡарап сығыуын һорарға кәрәк.", @@ -1387,6 +1535,7 @@ "php-uploaddisabledtext": "Файлдар тейәү PHP көйләүҙәрендә рөхсәт ителмәй. Зинһар, file_uploads көйләүен тикшерегеҙ.", "uploadscripted": "Файлда булған HTML-кодты йәки скриптты браузер дөрөҫ эшкәртмәүе мөмкин.", "upload-scripted-pi-callback": "XML стилендәге таблицаны эшкәртеү инструкцияһы булған файлды тейеп булмай.", + "upload-scripted-dtd": "Ят DTD-белдереүе булған SVG-файлдарҙы тейәп булмай.", "uploaded-script-svg": "Тейәлгән SVG-файлында хәүефле «$1» элементы табылды.", "uploaded-hostile-svg": "Тейәлгән SVG-файлда хәүефле CSS-код табылды.", "uploaded-event-handler-on-svg": "SVG-файлдары өсөн $1=\"$2\" атрибуты ҡуйыу рөхсәт ителмәй.", @@ -1424,8 +1573,11 @@ "upload-http-error": "HTTP хата килеп сыҡты: $1", "upload-copy-upload-invalid-domain": "Был доменға ҡараған сайттарҙан файл күсереү асыҡ түгел", "upload-foreign-cant-upload": "Вики ситтәге репозиторийға файл тейәргә көйләнмәгән.", + "upload-foreign-cant-load-config": "Файлдарҙы тейәү юлын тыштағы файл-һаҡлағысҡа тейәп булманы.", + "upload-dialog-disabled": "Был вики-сайтта файлдарҙы диалог тәҙрәһе ярҙамында тейәү мөмкинлеге һүндерелгән.", "upload-dialog-title": "Файлды тейәргә", "upload-dialog-button-cancel": "Кире алырға", + "upload-dialog-button-back": "Артҡа", "upload-dialog-button-done": "Әҙер", "upload-dialog-button-save": "Һаҡларға", "upload-dialog-button-upload": "Тейәргә", @@ -1494,6 +1646,7 @@ "uploadstash-errclear": "Файлдарҙы таҙартып булманы.", "uploadstash-refresh": "Файлдар исемлеген яңыртырға", "uploadstash-thumbnail": "һүрәттәрҙе ҡарау", + "uploadstash-exception": "Тейәлгәнде ваҡытлыса һаҡлауыста ($1):«$2» һаҡлап булманы.", "invalid-chunk-offset": "Ҡабул ителмәгән фрагмент шылыуы", "img-auth-accessdenied": "Керергә рөхсәт ителмәй", "img-auth-nopathinfo": "PATH_INFO юҡ.\nҺеҙҙең сервер был мәғлүмәтте ебәреү өсөн көйләнмәгән.\nУның CGI нигеҙендә эшләүе һәм img_auth ҡулланмауы мөмкин.\nТулыраҡ мәғлүмәт: https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization", @@ -1581,6 +1734,7 @@ "filerevert-submit": "Кире алырға", "filerevert-success": "'''[[Media:$1|$1]]''' [$2 $3 булдырылған $4 өлгөһөнә] ҡайтарылды.", "filerevert-badversion": "Файлдың күрһәтелгән ваҡыт билдәһе менән алдағы урындағы өлгөһө юҡ.", + "filerevert-identical": "Ағымдағы версия һайланғаны менән бер иш.", "filedelete": "$1 юйырға", "filedelete-legend": "Файлды юйырға", "filedelete-intro": "Һеҙ '''[[Media:$1|$1]]''' файлын бөтә тарихы менән бергә юйырға йыйынаһығыҙ.", @@ -1637,6 +1791,8 @@ "pageswithprop-legend": "Үҙенсәлектәре ҡайтанан билдәләнгән биттәр", "pageswithprop-text": "Бында айырым үҙенсәлектәре ҡулдан яңыртып билдәләнгән биттәр һанала.", "pageswithprop-prop": "Үҙенсәлектең атамаһы:", + "pageswithprop-reverse": "Кире тәртиптә айырыу.", + "pageswithprop-sortbyvalue": "Сифаты буйынса айырыу", "pageswithprop-submit": "Табырға", "pageswithprop-prophidden-long": "Текст үҙенсәлегенең оҙон мәғәнәһе йәшерелгән ($1)", "pageswithprop-prophidden-binary": "ике тармаҡлы үҙенсәлектең мәғәнәһе йәшерелгән ($1)", @@ -1670,6 +1826,7 @@ "uncategorizedcategories": "Категорияланмаған категориялар", "uncategorizedimages": "Категорияланмаған файлдар", "uncategorizedtemplates": "Категорияланмаған ҡалыптар", + "uncategorized-categories-exceptionlist": "# Бында Special:UncategorizedCategories телгә алынырға тейеш булмаған категориялар теҙмәһе бар. Берәр юллап, «*» тамғаһынан башлап. Башҡа тамға (ара ҡалдырыуҙы ла ҡушып) менән башланған юлдар кире ҡағыла. Фекерҙәрегеҙ өсөн «#» ҡулланығыҙ.", "unusedcategories": "Ҡулланылмаған категориялар", "unusedimages": "Ҡулланылмаған файлдар", "wantedcategories": "Кәрәкле категориялар", @@ -1768,17 +1925,33 @@ "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": "URL-һорау юлы", "apisandbox-request-url-label": "Һоратыуҙың URL-адресы:", + "apisandbox-request-json-label": "JSON-ды һорап алырға:", "apisandbox-request-time": "Мөрәжәғәт ваҡыты:{{PLURAL:$1|$1 мс}}", "apisandbox-results-fixtoken": "Токенды төҙөтегеҙ, ебәреүҙе ҡабатлағыҙ", "apisandbox-results-fixtoken-fail": " «$1» токенына инеп булманы", "apisandbox-alert-page": "Был биттә ҡайһы бер ҡырҙар дөрөҫ түгел.", "apisandbox-alert-field": "Был ҡыр дәүмәле ярамай.", + "apisandbox-continue": "Дауам итергә", + "apisandbox-continue-clear": "Таҙартыу", + "apisandbox-continue-help": "{{int:apisandbox-continue}} [https://www.mediawiki.org/wiki/API:Query#Continuing_queries дауам итәсәк] һуңғы һорау; {{int:apisandbox-continue-clear}} дауам итеү менән бәйләнгән параметрҙарҙы юйырға.", + "apisandbox-param-limit": "максималь сикте ҡулланыуҙы максимальное ҡуйығыҙ.", + "apisandbox-multivalue-all-namespaces": "$1 (Барлыҡ исемдәр яланы)", + "apisandbox-multivalue-all-values": "$1 (барлыҡ мәғәнәләр)", "booksources": "Китап сығанаҡтары", "booksources-search-legend": "Китап сығанаҡтарын эҙлә", "booksources-search": "Эҙләү", "booksources-text": "Түбәндәге исемлектә — китаптар һатыу менән шөғөлләнеүсе сайттарға һәм китапханаларҙың эҙләү системаларына һылтанмалар, һәм уларҙа һеҙ эҙләгән китаптар тураһында өҫтәмә мәғлүмәт булыуы мөмкин.", "booksources-invalid-isbn": "Күрһәтелгән ISBN номерҙа хата булырға тейеш. Зинһар, номерҙы сығанаҡтан дөрөҫ күсереүегеҙҙе тикшерегеҙ.", + "magiclink-tracking-rfc": "RFC һылтанмаһы булған биттәр", + "magiclink-tracking-rfc-desc": "Был бит RFC һылтанмаһын ҡуллана. Ҡара [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] - нисек күсереү тураһында.", + "magiclink-tracking-pmid": "PMID серле һылтанмаһын ҡулланған биттәр", + "magiclink-tracking-pmid-desc": "Был бит PMID серле һылтанмаһын ҡуллана. Ҡара [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] нисек күсереү тураһында.", + "magiclink-tracking-isbn": "ISBN серле һылтанмаһын ҡулланған биттәр", + "magiclink-tracking-isbn-desc": "Был биттең ISBN серле һылтанмаһы бар. Ҡара [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] уға нисек күсеү тураһында.", "specialloguserlabel": "Башҡарыусы:", "speciallogtitlelabel": "Маҡсат (исем йәки ҡулланыусы {{ns:user}}):", "log": "Журналдар", @@ -1792,7 +1965,7 @@ "checkbox-select": "Һайланған: $1", "checkbox-all": "Барыһы", "checkbox-none": "Юҡ", - "checkbox-invert": "Әйләндерү", + "checkbox-invert": "Әйләндереү", "allpages": "Бөтә биттәр", "nextpage": "Киләһе бит ($1)", "prevpage": "Алдағы бит ($1)", @@ -1830,6 +2003,8 @@ "activeusers-intro": "Был — һуңғы $1 {{PLURAL:$1|көн}} эсендә ниҙер башҡарған ҡатнашыусылар исемлеге.", "activeusers-count": "Һуңғы {{PLURAL:$3|$3 көндә}} $1 {{PLURAL:$1|үҙгәртеү}}", "activeusers-from": "Ошондай хәрефтәрҙән башланған ҡатнашыусыларҙы күрһәтергә:", + "activeusers-groups": "Был төркөмдәргә ҡараған ҡатнашыусыларҙы күрһәтеү:", + "activeusers-excludegroups": "Был төркөмдәрҙең ҡатнашыусыларын һыҙырға:", "activeusers-noresult": "Ҡатнашыусылар табылманы", "activeusers-submit": "Әүҙем ҡулланыусыларҙы күрһәтергә", "listgrouprights": "Ҡатнашыусылар төркөмө хоҡуҡтары", @@ -1859,6 +2034,8 @@ "trackingcategories-msg": "Күҙәтеүсе категория", "trackingcategories-name": "Хәбәр исеме", "trackingcategories-desc": "Категорияға индереү критерийҙары", + "restricted-displaytitle-ignored": "Күренгән атамалары кире ҡағылған биттәр", + "restricted-displaytitle-ignored-desc": "Был биттә кире ҡағылған {{DISPLAYTITLE}} бар, сөнки уның атамаһы биттең исеменә тап килмәй.", "noindex-category-desc": "Бит эҙләүсе роботтар тарафынан индексацияланмай, сөнки унда \"тылсымлы һүҙ\" __NOINDEX__ бар һәм ул был флаг рөхсәт ителгән исемдәр киңлегендә урынлашҡан.", "index-category-desc": "Биттә «тылсымлы һүҙ» бар__INDEX__ (бит рөхсәт ителгән исемдәр арауығында ята), шуға күрә эҙләү системаһында индекслана.", "post-expand-template-inclusion-category-desc": "Барлыҡ ҡалыптарҙы ла күрһәткәндән һуң биттең күләме арта$wgMaxArticleSize, шуға күрә ҡайһы берҙәре тулыһынса күрһәтелмәне.", @@ -1894,7 +2071,7 @@ "emailccsubject": "$1 өсөн хатығыҙҙың күсермәһе: $2", "emailsent": "Хат ебәрелде", "emailsenttext": "Һеҙҙең электрон хатығыҙ ебәрелде.", - "emailuserfooter": "Был электрон хат $1 ҡатнашыусыһынан $2 ҡатнашыусыһына {{SITENAME}} проектының \"Ҡатнашыусыға хат\" формаһы аша ебәрелде.", + "emailuserfooter": "Был электрон хат $1 {{GENDER:$1|ҡатнашыусынан}} $2 {{GENDER:$2|ҡатнашыусыға}} {{SITENAME}} проектының \"Ҡатнашыусыға хат\" формаһы аша ебәрелде. Әгәр {{GENDER:$2|һеҙ}} хатҡа яуап бирһәгеҙ, ул тура {{GENDER:$1|хат яҙыусыға}} ебәреләсәк, шуға күрә {{GENDER:$2|һеҙҙең}} электрон почта адресы {{GENDER:$1|уға}} билдәле буласаҡ.", "usermessage-summary": "Система хәбәрен ҡалдырырға.", "usermessage-editor": "Система хәбәрсеһе", "watchlist": "Күҙәтеү исемлеге", @@ -1905,9 +2082,11 @@ "watchnologin": "Үҙегеҙҙе танытырға кәрәк", "addwatch": "Күҙәтеү исемлегенә өҫтәргә", "addedwatchtext": "\"[[:$1]]\" бите [[Special:Watchlist|күҙәтеү исемлегегеҙгә]] өҫтәлде.\nБыл биттә һәм уның фекер алышыу битендә буласаҡ бар үҙгәртеүҙәр ундағы исемлектә күрһәтеләсәк.", + "addedwatchtext-talk": "«[[:$1]]» үҙенә бәйләнгән бит менән бергә һеҙҙең [[Special:Watchlist|күҙәтеү исемлеге]]нә өҫтәлде.", "addedwatchtext-short": "\"$1\" бите Һеҙҙең күҙәтеү исемлегенә өҫтәлгән", "removewatch": "Күҙәтеү исемлегенән сығарырға", "removedwatchtext": "«[[:$1]]» мәҡәләһе һәм уның фекер алышыу бите һеҙҙең [[Special:Watchlist|күҙәтеү исемлегенән]] сығарылды.", + "removedwatchtext-talk": "«[[:$1]]» үҙенә бәйләнгән бит менән бергә һеҙҙең [[Special:Watchlist|күҙәтеү исемлеге]]нән алып ташланды.", "removedwatchtext-short": "\"$1\" бите һеҙҙең күҙәтеү исемлегенән алып ташланды.", "watch": "Күҙәтергә", "watchthispage": "Был битте күҙәтергә", @@ -1946,10 +2125,11 @@ "enotif_body_intro_moved": "{{SITENAME}} проектының $1 исемле бите {{gender:$2|$2}} тарафынан күсерелде. Ваҡыты: $PAGEEDITDATE. Ҡарағыҙ: $3.", "enotif_body_intro_restored": "{{SITENAME}} проектының $1 исемле бите {{gender:$2|$2}} тарафынан тергеҙелде. Ваҡыты: $PAGEEDITDATE. Ҡарағыҙ: $3.", "enotif_body_intro_changed": "{{SITENAME}} проектының $1 исемле бите {{gender:$2|$2}} тарафынан үҙгәртелде. Ваҡыты: $PAGEEDITDATE. Ҡарағыҙ: $3.", - "enotif_lastvisited": "Һеҙҙең аҙаҡҡы кереүегеҙҙән һуңғы үҙгәртеүҙәрҙе ҡарау өсөн, $1 ҡарағыҙ.", - "enotif_lastdiff": "Был үҙгәртеүҙе ҡарау өсөн, $1 ҡарағыҙ.", + "enotif_lastvisited": "Һеҙҙең аҙаҡҡы кереүегеҙҙән һуңғы бөтә үҙгәртеүҙәрҙе күрер өсөн, $1 ҡарағыҙ.", + "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\n {{grammar:genitive|{{SITENAME}}}} белдереү системаһы\n\n--\nБелдереүҙәрен көйләүен үҙгәртергә:\n{{canonicalurl:{{#special:Preferences}}}}\n\nКүҙәтеү исемлеге көйләүҙәрен үҙгәртергә:\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nКүҙәтеү исемлегенән биттәрҙе юйырға:\n$UNWATCHURL\n\nКире бәйләнеш һәм ярҙам:\n$HELPPAGE", + "enotif_minoredit": "Был әҙ үҙгәреш", "created": "булдырылды", "changed": "үҙгәртелгән", "deletepage": "Битте юйырға", @@ -1978,17 +2158,21 @@ "delete-warning-toobig": "Был биттең үҙгәртеүҙәр тарихы бик оҙон, $1 {{PLURAL:$1|өлгөнән}} күберәк.\nБитте юйыу {{SITENAME}} проектының эшмәкәрлеге боҙолоуына килтереүе мөмкин, һаҡлыҡ менән эш итегеҙ.", "deleteprotected": "Был бит һаҡланған, уны юйҙыра алмайһығыҙ.", "deleting-backlinks-warning": "Иҫкәртеү: [[Special:WhatLinksHere/{{FULLPAGENAME}}|Башҡа ҡатнашыусылар]] һеҙ юйырға теләгән биткә һылтана.", + "deleting-subpages-warning": "Иҫкәрмә: Һеҙ юйырға йыйынған биттә [[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|$1 бәләкәй бит|$1 бәләкәй биттәре|51=50 бәләкәй биттән ашыу}}]] бар.", "rollback": "Үҙгәртеүҙәрҙе кире ҡайтарырға", "rollbacklink": "кире", "rollbacklinkcount": "$1 {{PLURAL:$1|1=төҙәтеүҙе|төҙәтеүҙе}} кире алырға", "rollbacklinkcount-morethan": "$1 {{PLURAL:$1|1=төҙәтеүҙән|төҙәтеүҙән}} күберәк кире алырға", "rollbackfailed": "Кире ҡайтарырғанда барлыҡҡа килгән хата", + "rollback-missingparam": "Һеҙ һораған параметрҙар юҡ.", + "rollback-missingrevision": "Версияның билдәләмәләрен тейәп булманы", "cantrollback": "Үҙгәртеүҙәрҙе кире алыу мөмкин түгел. Битте һуңғы үҙгәртеүсе ҡатнашыусы уның берҙән-бер авторы булып тора.", "alreadyrolled": "[[User:$2|$2]] ([[User talk:$2|фекер алышыу]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) кереткән [[:$1]] һуңғы үҙгәртеүҙәрҙе кире алыу мөмкин түгел; башҡа ҡатнашыусы был битте мөхәррирләгән йәки үҙгәртеүҙәрҙе кире алған инде.\n\nҺуңғы үҙгәртеүҙәрҙе [[User:$3|$3]] ([[User talk:$3| фекер алышыу]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) кереткән.", "editcomment": "Үҙгәртеүҙең тасуирламаһы $1 ине.", "revertpage": "[[Special:Contributions/$2|$2]] ([[User talk:$2|фекер алышыу]]) уҙгәртеүҙәре [[User:$1|$1]] өлгөһөнә ҡайтарылды", "revertpage-nouser": "(Ҡатнашыусының исеме йәшерелгән) үҙгәртеүҙәре {{GENDER:$1|[[User:$1|$1]]}}өлгөһөнә ҡайтарылды", - "rollback-success": "$1 уҙгәртеүҙәре кире алдынды;\n$2 өлгөһөнә ҡайтыу.", + "rollback-success": "{{GENDER:$3|$1}} үҙгәртеүҙәре кире алынды; {{GENDER:$4|$2}} версияһына ҡайтарылды.", + "rollback-success-notify": "Төҙәтеүҙәр кире тейәлгән $1; һуңғы $2 версияға кире ҡайтыу. [$3 Үҙгәрештәрҙе күрһәтеү]", "sessionfailure-title": "Сеанс хатаһы", "sessionfailure": "Хәҙерге сеанста хаталар килеп сыҡҡан, булырға тейеш;\n\"сеансты баҫып алыу\"ға юл ҡуймау өсөн был ғәмәл үтәлмәне.\nАлдағы биткә кире ҡайтығыҙ, битте яңыртығыҙ һәм яңынан ҡабатлап ҡарағыҙ.", "changecontentmodel": "Биттең контент моделен мөхәррирләү", @@ -2001,8 +2185,10 @@ "changecontentmodel-success-text": "[[:$1]] эстәлек моделе үҙгәртелде", "changecontentmodel-cannot-convert": "[[:$1]] эстәлеге $2 тибына үҙгәртелә алмай", "changecontentmodel-nodirectediting": "$1 эстәлеге моделен тураға мөхәррирләп булмай", + "changecontentmodel-emptymodels-title": "Йөкмәткенең рөхсәтле төрҙәре юҡ", + "changecontentmodel-emptymodels-text": "[[:$1]]тағы йөкмәтке башҡа бер төргә лә үҙгәрә алмай.", "log-name-contentmodel": "Эстәлек моделен үҙгәртеүҙәр журналы", - "log-description-contentmodel": "Эстәлек моделен үҙгәртеүҙәр менән бәйле ваҡиғалар", + "log-description-contentmodel": "Бында биттең эстәлек моделенең үҙгәртеүҙәре һәм стандарт эстәлек моделенән айырмалы модель буйынса төҙөлгән биттәр күрһәтелгән.", "logentry-contentmodel-new": "$1 $3 {{GENDER:$2|}} битен булдырҙы, стандарт булмаған «$5» моделе ҡулланылды.", "logentry-contentmodel-change": "$3 битендәге $1 {{GENDER:$2||}} эстәлек моделен $3 «$4» -тән «$5»-кә үҙгәртте.", "logentry-contentmodel-change-revertlink": "кире алырға", @@ -2013,6 +2199,9 @@ "modifiedarticleprotection": "\"[[$1]]\" битенең һаҡлау дәрәжәһен үҙгәрткән", "unprotectedarticle": "«[[$1]]» битенән һаҡлау алынды", "movedarticleprotection": "һаҡлау көйләүҙәрен «[[$2]]» битенән «[[$1]]» битенә күсергән", + "protectedarticle-comment": "[[$1]]тигән битте {{GENDER:$2||а}} һаҡланы", + "modifiedarticleprotection-comment": "[[$1]] өсөн {{GENDER:$2||а}}һаҡланыу кимәлен үҙгәртте", + "unprotectedarticle-comment": "«[[$1]]»нан {{GENDER:$2||а}} һаҡланыуы алынды", "protect-title": "\"$1\" битенең һаҡлау дәрәжәһен үҙгәртеү", "protect-title-notallowed": "\"$1\" битенең һаҡлау дәрәжәһен байҡау", "prot_1movedto2": "[[$1]] битенең исемен [[$2]] тип үҙгәрткән", @@ -2075,6 +2264,7 @@ "undeletehistorynoadmin": "Мәҡәлә юйылған.\nТүбәндә юйыу сәбәптәре һәм мәҡәләне юйғанға тиклем мөхәррирләүсе ҡатнашыусылар исемлеге килтерелгән. \nЮйылған мәҡәләне хакимдәр генә ҡарай ала.", "undelete-revision": "$1 битенең $3 ҡатнашыусыһының ($4 $5 мөхәррирләгән) юйылған өлгөһө:", "undeleterevision-missing": "Был өлгө дөрөҫ түгел йәки бөтөнләй юҡ.\nҺеҙ дөрөҫ булмаған һылтанма аша кергәнһегеҙ йәки был өлгө архивтан юйылған, булырға тейеш.", + "undeleterevision-duplicate-revid": "$1 {{PLURAL:$1|версия|версиялар}} терелтелмәйәсәк, сөнки {{PLURAL:$1|ул|улар}} rev_id инде ҡулланыла.", "undelete-nodiff": "Алдағы өлгө табылманы.", "undeletebtn": "Тергеҙергә", "undeletelink": "ҡарарға/тергеҙергә", @@ -2087,6 +2277,7 @@ "undelete-search-title": "Юйылған биттәрҙе эҙләү", "undelete-search-box": "Юйылған биттәрҙе эҙләү", "undelete-search-prefix": "Ошолай башланған биттәрҙе күрһәтергә:", + "undelete-search-full": "Шундай атамалары булған биттәрҙе күрһәтергә:", "undelete-search-submit": "Эҙләү", "undelete-no-results": "Юйыу яҙмалары архивында кәрәкле биттәр юҡ.", "undelete-filename-mismatch": "$1 ваҡыт билдәһе менән файл өлгөһөн тергеҙеү мөмкин түгел: файл исеме тап килмәй", @@ -2131,6 +2322,7 @@ "sp-contributions-username": "Ҡулланыусының IP-адресы йәки исеме:", "sp-contributions-toponly": "Һуңғы өлгөләрҙе генә күрһәтергә", "sp-contributions-newonly": "Яңы бит яһаған төҙәтеүҙәрҙе генә күрһәтергә", + "sp-contributions-hideminor": "Әҙ төҙәтеүҙәрҙе йәшерергә", "sp-contributions-submit": "Эҙлә", "whatlinkshere": "Бында һылтанмалар", "whatlinkshere-title": "«$1» битенә һылтанған биттәр", @@ -2192,6 +2384,13 @@ "unblocked-id": "$1 биге алынған", "unblocked-ip": "[[Special:Contributions/$1|$1]] блоктан азат ителде", "blocklist": "Тыйылған ҡатнашыусылар", + "autoblocklist": "Автоблоклауҙар", + "autoblocklist-submit": "Табыу", + "autoblocklist-legend": "Автоблокировкалар исемлеге", + "autoblocklist-localblocks": "{{PLURAL:$1|Локаль автоблокировка|Локаль автоблокировкалар}}", + "autoblocklist-total-autoblocks": "Автоблоктар барлығы: $1", + "autoblocklist-empty": "Автоблокировкалар исемлеге буш.", + "autoblocklist-otherblocks": "{{PLURAL:$1|Башҡа автоблокировка|Башҡа автоблокировкалар}}", "ipblocklist": "Тыйылған ҡатнашыусылар", "ipblocklist-legend": "Бикләнгән ҡатнашыусыны эҙләү", "blocklist-userblocks": "Иҫәп яҙыуҙарын бикләүҙе йәшер", @@ -2253,6 +2452,7 @@ "proxyblockreason": "Һеҙҙең IP адресығыҙ бикләнгән, сөнки ул — асыҡ прокси.\nЗинһар, Интернет менән тәъмин итеүсегеҙгә йәки ярҙам хеҙмәтенә мөрәжәғәт итегеҙ һәм уларға был едти хәүефһеҙлек хатаһы тураһында хәбәр итегеҙ.", "sorbsreason": "Һеҙҙең IP адресығыҙ {{SITENAME}} проекты ҡулланған DNSBL исемлегендә асыҡ прокси тип иҫәпләнә.", "sorbs_create_account_reason": "Һеҙҙең IP адресығыҙ {{SITENAME}} проекты ҡулланған DNSBL исемлегендә асыҡ прокси тип иҫәпләнә.\nҺеҙ иҫәп яҙмаһы булдыра алмайһығыҙ.", + "softblockrangesreason": "Һеҙҙең IP-адрестан аноним төҙәтеүҙәр тыйылған ($1). Зинһар, системаға инегеҙ.", "xffblockreason": "X-Forwarded-For атамаһы эсенә ингән һәм һеҙҙекеме, һеҙ ҡулланған прокси-серверҙыҡымы булған IP-адрес бикләнде. Бикләүҙең тәүсәбәбе ошо ине: $1", "cant-see-hidden-user": "Һеҙ бикләргә тырышҡан ҡатнашыусы әлеге ваҡытта бикләнгән һәм йәшерелгән.\nҠатнашыусыларҙы йәшереү хоҡуғығыҙ булмағанға күрә, һеҙ был бикләүҙе ҡарай йәки үҙгәртә алмайһығыҙ.", "ipbblocked": "Үҙегеҙ бикләнгән ваҡытта һеҙ башҡа ҡатнашыусыларҙы бикләй йәки бикте ала алмайһығыҙ.", @@ -2288,6 +2488,8 @@ "cant-move-to-user-page": "Һеҙҙең битте ҡатнашыусы бите итеп үҙгәртергә хоҡуғығыҙ юҡ (ҡатнашыусы биттәренән тыш).", "cant-move-category-page": "Һеҙҙең категория исемен үҙгәртергә хоҡуғығыҙ юҡ", "cant-move-to-category-page": "Һеҙҙең битте категория бите тип төҙәтергә хоҡуғығыҙ юҡ.", + "cant-move-subpages": "Һеҙгә бәләкәй биттәрҙең исемен алыштырырға рөхсәт юҡ.", + "namespace-nosubpages": "«$1» исемдәр яланы яңы бит булдырырға рәхсәт итмәй.", "newtitle": "Яңы атама", "move-watch": "Был битте күҙәтеү исемлегенә өҫтәргә", "movepagebtn": "Биттең исемен үҙгәртергә", @@ -2308,6 +2510,7 @@ "movelogpagetext": "Түбәндә — исемдәре үҙгәртелгән биттәр.", "movesubpage": "{{PLURAL:$1|ярҙамсы бит}}", "movesubpagetext": "Был биттә $1 {{PLURAL:$1|ярҙамсы бит}}.", + "movesubpagetalktext": "Фекер алышыу битендә $1 {{PLURAL: $ 1 | бәләкәй бит| бәләкәй биттәр}} бар. Улар аҫта күрһәтелгән.", "movenosubpage": "Был биткә бер бит тә кермәгән.", "movereason": "Сәбәп:", "revertmove": "кирегә", @@ -2409,7 +2612,7 @@ "import-nonewrevisions": "Бөтә өлгөләр бығаса тейәлгән булған.", "xml-error-string": "$2 юлда, $3 урында ($4 байт) $1: $5", "import-upload": "XML-мәғлүмәт тейәргә", - "import-token-mismatch": "Сессия мәғлүмәттәре юғалған.\nЗинһар, тағы ҡабатлап ҡарағыҙ. [[Special:UserLogout|системанан сығырға]]", + "import-token-mismatch": "Сессия мәғлүмәттәре юғалған.\nҺеҙ эш сеансын бөтөргәнһегеҙ. '''Ултырыш идентификаторығыҙҙы тикшереп, ҡабатлап ҡарағыҙ.'''\nБарыбер килеп сыҡмаһа, [[Special:UserLogout|системанан сығып]], яңынан инегеҙ, шулай уҡ браузер был сайттың cookies ҡабул итеү мөмкинлеген тикшерегеҙ.", "import-invalid-interwiki": "Күрһәтелгән вики проекттан тейәү мөмкин түгел.", "import-error-edit": "«$1» битен импортлап булманы, сөнки һеҙгә ул битте мөхәррирләү тыйылған.", "import-error-create": "«$1» битен импортлап булманы, сөнки һеҙгә ул битте яһау тыйылған.", @@ -2437,6 +2640,7 @@ "tooltip-pt-mycontris": "{{GENDER:|Һеҙҙең}} төҙәтеүҙәр исемлеге", "tooltip-pt-anoncontribs": "Был IP-адрестан яһалған төҙәтеүҙәр", "tooltip-pt-login": "Бында теркәлеү үтергә була, әммә был эш мәжбүри түгел", + "tooltip-pt-login-private": "Был викиҙы ҡулланыу өсөн һеҙгә инергә кәрәк.", "tooltip-pt-logout": "Сығырға", "tooltip-pt-createaccount": "Мотлаҡ булмаһа ла, Һеҙгә иҫәп яҙмаһы төҙөргә һәм системала танылырға тәҡдим итәбеҙ", "tooltip-ca-talk": "Биттең эстәлеге тураһында фекерләшеү", @@ -2527,7 +2731,9 @@ "pageinfo-length": "Бит оҙонлоғо (байттарҙа)", "pageinfo-article-id": "Бит идентификаторы", "pageinfo-language": "Бит эстәлегенең теле", + "pageinfo-language-change": "Үҙгәртергә", "pageinfo-content-model": "Бит эстәлегенең моделе", + "pageinfo-content-model-change": "Үҙгәрт", "pageinfo-robot-policy": "Эҙләү роботтары тарафынан индексацияланыу", "pageinfo-robot-index": "Рөхсәт ителгән", "pageinfo-robot-noindex": "Рөхсәт ителмәй", @@ -2563,6 +2769,7 @@ "pageinfo-category-pages": "Биттәр һаны", "pageinfo-category-subcats": "Категория бүлемдәре һаны", "pageinfo-category-files": "Файлдар һаны", + "pageinfo-user-id": "Ҡатнашыусыны раҫлау", "markaspatrolleddiff": "Тикшерелгән, тип билдәләргә", "markaspatrolledtext": "Бил битте тикшерелгән, тип билдәләргә", "markaspatrolledtext-file": "Был өлөгөнө патрулләнгән тип ҡуйырға", @@ -2579,6 +2786,8 @@ "patrol-log-header": "Был — тикшерелгән өлгөләр яҙмалары журналы.", "log-show-hide-patrol": "тикшереү яҙмалары журналын $1", "log-show-hide-tag": "$1 билдәләр журналы", + "confirm-markpatrolled-button": "Яҡшы", + "confirm-markpatrolled-top": "$2 битенең $3 версияһын тикшерелгән тип һанарғамы?", "deletedrevision": "Иҫке $1 өлгөһө юйылды", "filedeleteerror-short": "Файлды юйыу хатаһы: $1", "filedeleteerror-long": "Файлды юйыу ваҡытында хаталар килеп сыҡты:\n\n$1", @@ -2616,9 +2825,13 @@ "newimages-summary": "Был махсус бит һуңғы тейәлгән файлдарҙы күрһәтә.", "newimages-legend": "Һайлау", "newimages-label": "Файл исеме (йәки өлөшө):", + "newimages-user": "Ҡатнашыусының исеме һәм IP-адресы", + "newimages-newbies": "Яңы иҫәп яҙмалары индергән өлөштө генә күрһәтергә", "newimages-showbots": "Роботтан тейегәнде күрһәтергә", "newimages-hidepatrolled": "Патрулләнгән күсереүҙәрҙе йәшерергә", + "newimages-mediatype": "Медиа төрө:", "noimages": "Рәсемдәр юҡ.", + "gallery-slideshow-toggle": "Миниатюраларҙы алыштырырға", "ilsubmit": "Эҙләү", "bydate": "булдырыу көнө буйынса", "sp-newimages-showfrom": "$1 $2 ваҡытынан башлап яңы файлдарҙы күрһәтергә", @@ -3007,6 +3220,10 @@ "confirmemail_body_set": "Кемдер (бәлки, һеҙҙер) $1 IP-адресынан \n{{SITENAME}} проектында \"$2\" иҫәп яҙмаһының электрон почта адресы итеп ошо адресты күрһәткән.\n\nБыл иҫәп яҙмаһы ысынлап та һеҙҙеке икәнен раҫлау һәм {{SITENAME}} сайтынан хат ебәреү мөмкинлектәрен яңынан тоҡандырыу өсөн, браузерығыҙҙа түбәндәге һылтанманы асығыҙ:\n\n$3\n\nӘгәр иҫәп яҙмаһы һеҙҙеке *түгел* икән,\nэлектрон почта адресын раҫлауҙы үткәрмәү өсөн түбәндәге һылтанманы асығыҙ:\n\n$5\n\nБыл раҫлау коды $4 ғәмәлдән сыға.", "confirmemail_invalidated": "Электрон почта адресын раҫлау туҡтатылды", "invalidateemail": "Электрон почта адресын раҫлауҙы туҡтатыу", + "notificationemail_subject_changed": "{{SITENAME}} өсөн электрон почтаһы адресы үҙгәртелгән", + "notificationemail_subject_removed": "{{SITENAME}} теркәлгән электрон почта адресы юйылған", + "notificationemail_body_changed": "Кемдер, бәлки һеҙҙер, $1 IP-адресынан, {{SITENAME}} \"$3\" да \"$2\" иҫәп яҙмаһының электрон почтаһы адресын үҙгәрткән.\n\nӘгәр быны һеҙ эшләмәһәгеҙ, тиҙ генә сайттың администраторына белгертегеҙ.", + "notificationemail_body_removed": "Кемдер, бәлки һеҙҙер, $1 IP-адресынан, {{SITENAME}} та \"$2\" иҫәп яҙмаһының электрон почтаһы адресын юйған.\n\nӘгәр быны һеҙ эшләмәһәгеҙ, тиҙ генә сайттың администраторына белгертегеҙ.", "scarytranscludedisabled": "[Интервики индереү мөмкинлеге һүндерелгән]", "scarytranscludefailed": "[$1 ҡалыбына мөрәжәғәт итеү хатаһы]", "scarytranscludefailed-httpstatus": "[$1 өсөн ҡалып алып булманы: HTTP $2]", @@ -3015,6 +3232,7 @@ "confirmrecreate": "[[User:$1|$1]] ([[User talk:$1|фекер алышыу]]) был битте һеҙ мөхәррирләй башлағандан һуң юйған, сәбәбе:\n: ''$2''\nЗинһар, был битте ысынлап та яңынан булдырырға теләүегеҙҙе раҫлағыҙ.", "confirmrecreate-noreason": "[[User:$1|$1]] ([[User talk:$1|фекер алышыу]]) һеҙ был битте мөхәррирләй башлағандан һуң юйған. Зинһар, был битте ысынлап та яңынан яһарға теләүегеҙҙе раҫлағыҙ.", "recreate": "Яңынан булдырырға", + "confirm-purge-title": "Был биттең кешын таҙартыу", "confirm_purge_button": "Тамам", "confirm-purge-top": "Был биттең кэшын таҙартырғамы?", "confirm-purge-bottom": "Биттең кэшы таҙартылғандан һун, уның һуңғы өлгөһө күрһәтеләсәк.", @@ -3078,6 +3296,7 @@ "timezone-local": "Локаль", "duplicate-defaultsort": "'''Иҫкәртеү:''' \"$2\" ғәҙәттәге тәпртипкә килтереү асҡысы элекке \"$1\" ғәҙәттәге тәртипкә килтереү асҡысын үҙгәртә.", "duplicate-displaytitle": "Иғтибар: Күрһәтелгән «$2» алдағы «$1» исемде ҡабатлай.", + "restricted-displaytitle": " Иғтибар: «$1» баш яҙмаһы кире ҡағылды, сөнки ул биттең ысын исеменә тап килмәй.", "invalid-indicator-name": "Хата: Биттең торошон күрһәтеүсе атрибут индикаторы name буш була алмай.", "version": "MediaWiki өлгөһө", "version-extensions": "Ҡуйылған киңәйтеүҙәр", @@ -3145,6 +3364,7 @@ "fileduplicatesearch-noresults": "\"$1\" исемле файл табылманы", "specialpages": "Махсус биттәр", "specialpages-note-top": "Легенда", + "specialpages-note-restricted": "* Ябай махсус биттәр.\n* Сикләнгән махсус биттәр.", "specialpages-group-maintenance": "Техник хеҙмәтләндереү хисапламалары", "specialpages-group-other": "Башҡа махсус биттәр", "specialpages-group-login": "Танылыу йәки теркәлеү", @@ -3165,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": "Билдә исеме", @@ -3192,7 +3414,7 @@ "tags-create-reason": "Сәбәп:", "tags-create-submit": "Яһау", "tags-create-no-name": "Тамға исемен яҙығыҙ", - "tags-create-invalid-chars": "Тамға исемдәрендә өтөр (,) йәки һыҙыҡ (/) булмаҫҡа тейеш.", + "tags-create-invalid-chars": "Тамға исемдәрендә өтөр (,), пайп (|) йәки һыҙыҡ (/) булмаҫҡа тейеш.", "tags-create-invalid-title-chars": "Билдә исемдәрендә бит атамаларында файҙаланып булмаған символдар булмаҫҡа тейеш", "tags-create-already-exists": "$1 тамғаһы бар инде.", "tags-create-warnings-above": "«$1» билдәһен яһарға тырышҡанда асыҡлана{{PLURAL:$2|о киләһе иҫкәрмә|ы киләһе иҫкәрмә}}:", @@ -3208,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": "Сәбәп:", @@ -3220,11 +3443,11 @@ "tags-deactivate-not-allowed": "«$1» тамғаһын һүндереп булмай.", "tags-deactivate-submit": "һүндерергә", "tags-apply-no-permission": "Һеҙҙең үҙгәртеү тамғаһы ҡуйыу хоҡуғы юҡ.", - "tags-apply-blocked": "Бикле булғансы, үҙгәртеүҙәргә тамға ҡуйырға хоҡуғығыҙ юҡ.", + "tags-apply-blocked": "{{GENDER:$1|Һеҙ}} бикле булғансы, үҙгәртеүҙәргә тамға ҡуйырға хоҡуғығыҙ юҡ.", "tags-apply-not-allowed-one": " «$1» тамғаһын ҡулдан файҙаланып булмай", "tags-apply-not-allowed-multi": "Ҡулдан {{PLURAL:$2|түбәндәге тамғаны өҫтәп булмай}}: $1", "tags-update-no-permission": "Һеҙҙең айырым өлгөләрҙә һәм журнал яҙмаларында тамға йәки үҙгәртеү тамғаһы ҡуйырға хоҡуғығыҙ юҡ.", - "tags-update-blocked": "Блок алынғансы, үҙгәртеү тамғалары менән идара итә алмайһығыҙ.", + "tags-update-blocked": "Блок алынғансы, {{GENDER:$1|һеҙ}} үҙгәртеү тамғалары менән идара итә алмайһығыҙ.", "tags-update-add-not-allowed-one": " «$1» тамғаһын ҡулдан файҙаланып булмай", "tags-update-add-not-allowed-multi": "{{PLURAL:$2|түбәндәге тег}} ҡулдан өҫтәлмәй: $1", "tags-update-remove-not-allowed-one": " «$1» тамғаһын юйып булмай", @@ -3260,6 +3483,13 @@ "compare-invalid-title": "Керетелгән исем дөрөҫ түгел.", "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)", @@ -3283,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 юҡ", @@ -3334,7 +3576,7 @@ "logentry-protect-protect-cascade": "$1 һаҡланы{{GENDER:$2||}} $3 $4 [каскадлы]", "logentry-protect-modify": "$1$ һаҡлау кимәлен {{GENDER:$2||үҙгәртте}} $3 $4", "logentry-protect-modify-cascade": "$1 һаҡлау кимәлен{{GENDER:$2||үҙгәртте}} $3 $4 [каскадлы]", - "logentry-rights-rights": "$1 $3 файҙаланыусының төркөмдәрҙәге ағзалығын $4 урынына $5 тип {{GENDER:$2|үҙгәртте}}", + "logentry-rights-rights": "$1 $3 ҡатнашыусының төркөмдәрҙәге ағзалығын $4 урынына $5 тип {{GENDER:$2|үҙгәртте}}", "logentry-rights-rights-legacy": "$1 $3 өсөн төркөмдәрҙәге ағзалыҡты {{GENDER:$2|үҙгәртте}}", "logentry-rights-autopromote": "$1 {{GENDER:$2|}} автоматик рәүештә {{GENDER:$2|}} $4 урынына $5 ителде.", "logentry-upload-upload": "$1 $3 {{GENDER:$2|күсерҙе}}", diff --git a/languages/i18n/be-tarask.json b/languages/i18n/be-tarask.json index ee362ac73c..651d491268 100644 --- a/languages/i18n/be-tarask.json +++ b/languages/i18n/be-tarask.json @@ -53,6 +53,7 @@ "tog-watchlisthideminor": "Хаваць дробныя праўкі ў сьпісе назіраньня", "tog-watchlisthideliu": "Хаваць праўкі зарэгістраваных удзельнікаў у сьпісе назіраньня", "tog-watchlistreloadautomatically": "Аўтаматычна перазагружаць сьпіс назіраньня пры зьмене фільтру (патрэбны JavaScript)", + "tog-watchlistunwatchlinks": "Дадаць спасылкі «назіраць/не назіраць» да элемэнтаў сьпісу назіраньня (патрабуецца JavaScript для актывацыі функцыі)", "tog-watchlisthideanons": "Хаваць праўкі ананімаў у сьпісе назіраньня", "tog-watchlisthidepatrolled": "Хаваць патруляваныя праўкі ў сьпісе назіраньня", "tog-watchlisthidecategorization": "Хаваць катэгарызацыю старонак", @@ -701,8 +702,8 @@ "permissionserrorstext-withaction": "Вы ня маеце дазволу на $2 з {{PLURAL:$1|1=наступнай прычыны|наступных прычынаў}}:", "contentmodelediterror": "Вы ня можаце рэдагаваць гэтую вэрсію, бо яе мадэль зьместу — $1, якая адрозьніваецца ад цяперашняй мадэлі зьместу старонкі — $2.", "recreate-moveddeleted-warn": "Увага: вы ствараеце старонку, якая раней была выдаленая.\n\nУпэўніцеся, што стварэньне гэтай старонкі неабходнае.\nНіжэй пададзеныя журналы выдаленьняў і пераносаў гэтай старонкі:", - "moveddeleted-notice": "Гэта старонка была выдаленая. Журналы выдаленьняў і пераносаў для гэтай старонкі пададзеныя ніжэй.", - "moveddeleted-notice-recent": "Выбачайце, гэтая старонка была нядаўна выдаленая (цягам апошніх 24 гадзінаў).\nЖурналы выдаленьняў і пераносаў для гэтай старонкі пададзеныя ніжэй для даведкі.", + "moveddeleted-notice": "Гэта старонка была выдаленая. Журналы выдаленьняў, абаронаў і пераносаў для гэтай старонкі пададзеныя ніжэй для даведкі.", + "moveddeleted-notice-recent": "Выбачайце, гэтая старонка была нядаўна выдаленая (цягам апошніх 24 гадзінаў).\nЖурналы выдаленьняў, абаронаў і пераносаў для гэтай старонкі пададзеныя ніжэй для даведкі.", "log-fulllog": "Паказаць журнал цалкам", "edit-hook-aborted": "Рэдагаваньне скасаванае працэдурай-перахопнікам.\nТлумачэньняў не было.", "edit-gone-missing": "Немагчыма абнавіць старонку.\nПадобна, што яна была выдаленая.", @@ -970,7 +971,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": "Рознае", @@ -1285,9 +1286,11 @@ "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": "Паказаць зьменаў", @@ -1296,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": "Каб захаваць налады вашага фільтру і выкарыстаць іх пазьней, націсьніце на выяву закладкі ў зоне актыўнага фільтру ніжэй.", @@ -1312,7 +1316,7 @@ "rcfilters-savedqueries-add-new-title": "Захаваць цяперашнія налады фільтру", "rcfilters-restore-default-filters": "Аднавіць фільтры па змоўчаньні", "rcfilters-clear-all-filters": "Ачысьціць усе фільтры", - "rcfilters-show-new-changes": "Паказаць новыя зьмены", + "rcfilters-show-new-changes": "Праглядзець найноўшыя зьмены", "rcfilters-search-placeholder": "Фільтар апошніх зьменаў (праглядзець або пачніце друкаваць)", "rcfilters-invalid-filter": "Няслушны фільтар", "rcfilters-empty-filter": "Няма актыўных фільтраў. Паказаны ўвесь унёсак.", @@ -1325,7 +1329,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": "Ваш уласны ўнёсак.", @@ -1364,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": "Рэдагаваньні вікізьместу, абмеркаваньняў, апісаньняў катэгорыяў…", @@ -1384,11 +1393,16 @@ "rcfilters-filter-excluded": "Выключаны", "rcfilters-tag-prefix-namespace-inverted": ":не $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": "Фільтар вынікаў з дапамогай метак правак", "rcfilters-view-return-to-default-tooltip": "Вярнуцца да галоўнага мэню фільтраў", "rcfilters-liveupdates-button": "Імгненныя абнаўленьні", + "rcfilters-liveupdates-button-title-on": "Адключыць аўтаматычнае абнаўленьне", + "rcfilters-liveupdates-button-title-off": "Паказваць новыя зьмены як толькі яны адбываюцца", + "rcfilters-watchlist-markSeen-button": "Пазначыць усе зьмены як прагледжаныя", "rcnotefrom": "Ніжэй {{PLURAL:$5|знаходзіцца зьмена|знаходзяцца зьмены}} з $4 $3 (да $1 на старонку).", "rclistfromreset": "Скінуць выбар даты", "rclistfrom": "Паказаць зьмены з $2 $3", @@ -1768,6 +1782,8 @@ "pageswithprop-legend": "Старонкі з уласьцівасьцямі старонак", "pageswithprop-text": "На гэтай старонцы адлюстроўваюцца старонкі, якія ўжываюць пэўную ўласьцівасьць старонкі.", "pageswithprop-prop": "Імя ўласьцівасьці:", + "pageswithprop-reverse": "Сартаваць у адваротным парадку", + "pageswithprop-sortbyvalue": "Сартаваць паводле значэньня ўласьцівасьці", "pageswithprop-submit": "Паказаць", "pageswithprop-prophidden-long": "доўгае тэкставае значэньне ўласьцівасьці схавана ($1)", "pageswithprop-prophidden-binary": "двайковае значэньне ўласьцівасьці схавана ($1)", @@ -2105,6 +2121,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": "Выдаліць старонку", @@ -2133,6 +2150,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|рэдагаваньне|рэдагаваньні|рэдагаваньняў}}", @@ -2586,7 +2604,7 @@ "import-nonewrevisions": "Ніякія праўкі не былі імпартаваныя (усе ўжо або былі апрацаваныя, або прапушчаныя праз памылкі).", "xml-error-string": "$1 у радку $2, пазыцыі $3 (байт $4): $5", "import-upload": "Загрузіць XML-зьвесткі", - "import-token-mismatch": "Страчаныя зьвесткі сэсіі.\n\nМагчыма, вы выйшлі з сыстэмы. Калі ласка, праверце, што вы ўсё яшчэ знаходзіцеся ў сыстэме і паспрабуйце яшчэ раз. Калі не спрацуе, паспрабуйце [[Special:UserLogout|выйсьці]] і ўвайсьці яшчэ раз, а таксама праверце, што ваш браўзэр дазваляе кукі-файлы з гэтага сайту.", + "import-token-mismatch": "Страчаныя зьвесткі сэсіі.\n\nМагчыма, вы выйшлі з сыстэмы. '''Калі ласка, праверце, што вы ўсё яшчэ знаходзіцеся ў сыстэме і паспрабуйце яшчэ раз'''. Калі не спрацуе, паспрабуйце [[Special:UserLogout|выйсьці]] і ўвайсьці яшчэ раз, а таксама праверце, што ваш браўзэр дазваляе кукі-файлы з гэтага сайту.", "import-invalid-interwiki": "Немагчыма імпартаваць з вызначанай вікі.", "import-error-edit": "Старонка «$1» не была імпартаваная, бо Вы ня маеце правоў на яе рэдагаваньне.", "import-error-create": "Старонка «$1» не была імпартаваная, бо Вы ня маеце правоў на яе стварэньне.", @@ -2720,11 +2738,11 @@ "pageinfo-subpages-name": "Колькасьць падстаронак", "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|перанакіраваньне|перанакіраваньні|перанакіраваньняў}}; $3 {{PLURAL:$3|звычайная|звычайныя|звычайных}})", "pageinfo-firstuser": "Стваральнік старонкі", - "pageinfo-firsttime": "Дата стварэньня", + "pageinfo-firsttime": "Дата стварэньня старонкі", "pageinfo-lastuser": "Апошні рэдактар", "pageinfo-lasttime": "Дата апошняга рэдагаваньня", - "pageinfo-edits": "Колькасьць рэдагаваньняў", - "pageinfo-authors": "Колькасьць аўтараў", + "pageinfo-edits": "Агульная колькасьць рэдагаваньняў", + "pageinfo-authors": "Агульная колькасьць асобных аўтараў", "pageinfo-recent-edits": "Колькасьць апошніх рэдагаваньняў (за $1)", "pageinfo-recent-authors": "Колькасьць апошніх аўтараў", "pageinfo-magic-words": "{{PLURAL:$1|1=Магічнае слова|Магічныя словы}} ($1)", @@ -2734,7 +2752,7 @@ "pageinfo-toolboxlink": "Зьвесткі пра старонку", "pageinfo-redirectsto": "Перанакіроўвае на", "pageinfo-redirectsto-info": "інфармацыя", - "pageinfo-contentpage": "Лічыцца артыкулам", + "pageinfo-contentpage": "Лічыцца як старонка зь зьместам", "pageinfo-contentpage-yes": "Так", "pageinfo-protect-cascading": "Адсюль пачынаецца каскадная абарона", "pageinfo-protect-cascading-yes": "Так", @@ -3344,8 +3362,8 @@ "redirect-submit": "Перайсьці", "redirect-lookup": "Шукаць паводле:", "redirect-value": "Значэньне:", - "redirect-user": "Ідэнтыфікатара ўдзельніка", - "redirect-page": "Ідэнтыфікатар старонкі", + "redirect-user": "Ідэнтыфікатару ўдзельніка", + "redirect-page": "Ідэнтыфікатару старонкі", "redirect-revision": "Вэрсіі старонкі", "redirect-file": "Імя файла", "redirect-logid": "ID журнала", @@ -3360,6 +3378,7 @@ "fileduplicatesearch-noresults": "Файл з назвай «$1» ня знойдзены.", "specialpages": "Спэцыяльныя старонкі", "specialpages-note-top": "Легенда", + "specialpages-note-restricted": "* Звычайныя спэцыяльныя старонкі.\n* Спэцыяльныя старонкі з абмежаваным доступам.", "specialpages-group-maintenance": "Тэхнічныя справаздачы", "specialpages-group-other": "Іншыя спэцыяльныя старонкі", "specialpages-group-login": "Уваход / стварэньне рахунку", @@ -3478,6 +3497,7 @@ "compare-invalid-title": "Пазначаная няслушная назва.", "compare-title-not-exists": "Пазначаная старонка не існуе.", "compare-revision-not-exists": "Пазначаная вэрсія не існуе.", + "diff-form": "Адрозьненьні", "dberr-problems": "Прабачце! На гэтым сайце ўзьніклі тэхнічныя цяжкасьці.", "dberr-again": "Паспрабуйце пачакаць некалькі хвілінаў і абнавіць.", "dberr-info": "(Немагчыма злучыцца з базай зьвестак: $1)", diff --git a/languages/i18n/bg.json b/languages/i18n/bg.json index f7ccc4d82d..db4c73892d 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Вероятно междувременно е била изтрита.", @@ -1397,7 +1401,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 +1412,7 @@ "unknown-error": "Възникна неизвестна грешка.", "tmp-create-error": "Грешка при създаването на временен файл.", "tmp-write-error": "Грешка при записа на временен файл.", - "large-file": "Не се препоръчва файловете да се по-големи от $1; този файл е $2.", + "large-file": "Не се препоръчва файловете да са по-големи от $1; този файл е $2.", "largefileserver": "Файлът е по-голям от допустимия от сървъра размер.", "emptyfile": "Каченият от вас файл е празен. Това може да е предизвикано от грешка в името на файла. Уверете се дали наистина желаете да го качите.", "windows-nonascii-filename": "Уикито не поддържа имена на файлове със специални знаци.", @@ -1896,7 +1900,7 @@ "watchlist-details": "{{PLURAL:$1|Една наблюдавана страница|$1 наблюдавани страници}} от списъка Ви за наблюдение (без беседи).", "wlheader-enotif": "Известяването по е-поща е включено.", "wlheader-showupdated": "Страниците, които са били променени след последния път, когато сте ги посетили, са показани в '''получер'''.", - "wlnote": "{{PLURAL:$1|Показана е последната промяна|Показани са последните $1 промени}} през {{PLURAL:$2|последния час|последните $2 часа}}, започвайки от от $3, $4.", + "wlnote": "{{PLURAL:$1|Показана е последната промяна|Показани са последните $1 промени}} през {{PLURAL:$2|последния час|последните $2 часа}}, започвайки от $3, $4.", "wlshowlast": "Показване на последните $1 часа $2 дни", "watchlist-hide": "Скриване", "watchlist-submit": "Показване", @@ -3181,6 +3185,7 @@ "compare-invalid-title": "Посоченото заглавие е невалидно.", "compare-title-not-exists": "Посоченото заглавие не съществува.", "compare-revision-not-exists": "Посочената версия не съществува.", + "diff-form": "'''формуляр'''", "dberr-problems": "Съжаляваме! Сайтът изпитва технически затруднения.", "dberr-again": "Изчакайте няколко минути и опитайте да презаредите.", "dberr-info": "(Няма достъп до базата от данни: $1)", @@ -3216,6 +3221,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", @@ -3224,6 +3230,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", @@ -3241,6 +3250,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/bho.json b/languages/i18n/bho.json index 3bd3da1dba..3ca3fd5caa 100644 --- a/languages/i18n/bho.json +++ b/languages/i18n/bho.json @@ -690,7 +690,7 @@ "permissionserrorstext-withaction": "नीचे दिहल {{PLURAL:$1|कारण|कारणन}} के चलते रउआँ के $2 के परमीशन नइखे:", "contentmodelediterror": "रउआँ एह अवतरण के संपादन नइखीं कर सकत काहें से कि एकर सामग्री मॉडल $1 बा जवन पन्ना के के वर्तमान मॉडल $2 से अलग बाटे।", "recreate-moveddeleted-warn": "चेतावनी: रउआँ एगो अइसन पन्ना दुबारा बनावे जा रहल बानी जेवन पहिले हटावल जा चुकल बा\n\nआपके ई बिचार क लेवे के चाहीं की आगे संपादन कइल ठीक बा की ना।\n\nसुविधा खातिर, ए पन्ना के हटवले आ स्थानांतरण के लॉग नीचे दिहल जात बा:", - "moveddeleted-notice": "ई पन्ना हटा दिहल गइल बा।\nसंदर्भ खातिर हटावे आ स्थानांतरण के लॉग नीचे दिहल जात बाटे।", + "moveddeleted-notice": "ई पन्ना हटा दिहल गइल बा।\nसंदर्भ खातिर हटवले, सुरक्षा आ स्थानांतरण के लॉग नीचे दिहल जात बाटे।", "moveddeleted-notice-recent": "माफ करीं, ई पन्ना हाले में हटा दिहल गइल बा (पछिला 24 घंटा के भीतर)।\nहटवले आ स्थानांतरण के लॉग हवाला खातिर नीचे दिहल जा रहल बा।", "log-fulllog": "पूरा लॉग देखीं", "edit-hook-aborted": "संपादन के हुक निरस्त क दिहलस।\nई कौनों कारन ना बतवलस।", @@ -915,6 +915,7 @@ "searchrelated": "संबंधित", "searchall": "सगरी", "showingresults": "नीचे देखावल जा रहल बा {{PLURAL:$1|'''1''' परिणाम|'''$1''' परिणाम}} #'''$2''' से शुरु होवे वाला।", + "search-showingresults": "{{PLURAL:$4|$1 के रिजल्ट $3|$3 में से $1 - $2 के रिजल्ट}}", "search-nonefound": "राउर खोज से मेल खात कौनों परिणाम नइखे मिलत", "powersearch-legend": "उन्नत खोज", "powersearch-ns": "सन्दर्भ में खोजीं", @@ -1632,6 +1633,7 @@ "metadata-help": "ए फाइल में एक्स्ट्रा जानकारी उपलब्ध बा, हो सकत बा कि ई डिजिटल कैमरा या स्कैनर से लेवल गइल होखे। अगर ई वर्तमान फाइल एकरी ओरिजनल फाइल से सुधार के बनल बा त हो सकेला कुछ जानकारी ना लउके।", "metadata-expand": "विस्तृत विवरण देखाईं", "metadata-collapse": "विस्तृत विवरण छुपाँईं", + "metadata-fields": "एह सनेसा में बतावल गइल इमेज मेटाडेटा फील्ड सभ इमेज के पन्ना पर के डिस्प्ले में शामिल कइल जइहें जब मेटाडेटा सारणी के सिकुड़ा दिहल गइल होखी।\nबाकी सगरी डिफाल्ट रूप से छिपल रहिहें।\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": "चौड़ाई", "exif-imagelength": "ऊँचाई", "exif-bitspersample": "अवयव प्रति बीट", diff --git a/languages/i18n/bn.json b/languages/i18n/bn.json index 4e8e792fb3..9f20dedce4 100644 --- a/languages/i18n/bn.json +++ b/languages/i18n/bn.json @@ -64,7 +64,7 @@ "tog-shownumberswatching": "নজরদারী করছে এমন ব্যবহারকারীর সংখ্যা দেখানো হোক", "tog-oldsig": "আপনার বর্তমান স্বাক্ষর:", "tog-fancysig": "স্বাক্ষরকে উইকিটেক্সট হিসেবে মনে করা হোক (কোন স্বয়ংক্রিয় সংযোগ ছাড়া)", - "tog-uselivepreview": "তাৎক্ষণিক প্রাকদর্শন ব্যবহার করা হোক", + "tog-uselivepreview": "পৃষ্ঠা পুনরায় লোড না করে প্রাকদর্শন দেখান", "tog-forceeditsummary": "খালি সম্পাদনা সারাংশ প্রবেশ করানোর সময় আমাকে জানানো হোক", "tog-watchlisthideown": "আমার সম্পাদনাগুলি আমার নজরতালিকায় লুকিয়ে রাখা হোক", "tog-watchlisthidebots": "বটের করা সম্পাদনাগুলি নজরতালিকায় লুকিয়ে রাখা হোক", @@ -722,7 +722,7 @@ "contentmodelediterror": "আপনি এই পুনর্বিবেচনা সম্পাদনা করতে পারবেন না কারণ এর বিষয়বস্তু মডেল $1, যা বর্তমান বিষয়বস্তু মডেল $2-এর থেকে ভিন্ন।", "recreate-moveddeleted-warn": "'''সতর্কীকরণ: আপনি এমন একটি পাতা পুনরায় তৈরি করছেন যা পূর্বে অপসারণ করা হয়েছিল।'''\n\nআপনি পাতাটি সম্পাদনা চালিয়ে যাওয়া ঠিক হবে কিনা, তা বিবেচনা করুন।\nআপনার সুবিধার্থে পাতাটির অপলুপ্তি লগ এখানে দেয়া হলো:", "moveddeleted-notice": "এই পাতাটি অপসারণ করা হয়েছে।\nসূত্র হিসেবে নিচে এ পাতার অবলুপ্তি লগ দেওয়া হলো।", - "moveddeleted-notice-recent": "দুঃখিত, এই পাতাটি সাম্প্রতি অপসারিত হয়েছে (সর্বশেষ ২৪ ঘণ্টায়)।\nসূত্র হিসেবে নিচে এই পাতা অপসারণ ও স্থানান্তর লগ দেয়া হয়েছে।", + "moveddeleted-notice-recent": "দুঃখিত, এই পাতাটি সাম্প্রতি অপসারিত হয়েছে (সর্বশেষ ২৪ ঘণ্টায়)।\nসূত্র হিসেবে নিচে এই পাতা অপসারণ, সুরক্ষা ও স্থানান্তর লগ দেয়া হয়েছে।", "log-fulllog": "সম্পূর্ণ লগ দেখুন", "edit-hook-aborted": "হূক দ্বারা সম্পাদনা পরিত্যক্ত হয়েছে।\nএর কোন ব্যাখ্যা নাই।", "edit-gone-missing": "পাতাটি হালনাগাদ হয়নি।\nসম্ভবতঃ পাতাটি মুছে ফেলা হয়েছে।", @@ -990,7 +990,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": "বিবিধ", @@ -1306,15 +1306,19 @@ "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": "পাতা অনুযায়ী দলের ফলাফল", "rcfilters-activefilters": "সক্রিয় ছাঁকনিসমূহ", "rcfilters-advancedfilters": "উন্নত ছাঁকনি", "rcfilters-limit-title": "দেখানোর জন্য পরিবর্তনগুলি", - "rcfilters-limit-shownum": "শেষ $1টি পরিবর্তন দেখান", + "rcfilters-limit-shownum": "শেষ {{PLURAL:$1|পরিবর্তনটি|$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-quickfilters-placeholder-description": "আপনার ছাঁকনির সেটিং সংরক্ষণ করতে ও পরে পুনরায় ব্যবহার করতে, নীচে, সক্রিয় ছাঁকনি এলাকায় বুকমার্ক আইকনে ক্লিক করুন।", @@ -1330,6 +1334,7 @@ "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": "কোনো সক্রিয় ফিল্টার নেই। সমস্ত অবদান দেখানো হয়েছে।", @@ -1381,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": "উইকি বিষয়বস্তু, আলোচনা, বিষয়শ্রেণীর বিবরণ... ইত্যাদিতে সম্পাদনা", @@ -1400,10 +1406,12 @@ "rcfilters-filter-previousrevision-description": "সব পরিবর্তন যা \"সর্বশেষ সংশোধন\" নয়।", "rcfilters-filter-excluded": "বর্জিত", "rcfilters-tag-prefix-namespace-inverted": "$1 :নয়", + "rcfilters-view-advanced-filters-label": "উন্নত ছাঁকনি", "rcfilters-view-tags": "ট্যাগকৃত সম্পাদনা", "rcfilters-view-tags-tooltip": "সম্পাদনা ট্যাগ ব্যবহার করে ফলাফল ছাঁকুন", "rcfilters-view-return-to-default-tooltip": "মূল ছাঁকনির মেনুতে ফিরুন", "rcfilters-liveupdates-button": "সরাসরি হালনাগাদ", + "rcfilters-liveupdates-button-title-on": "সরাসরি হালনাগাদ বন্ধ করুন", "rcnotefrom": "$2টা থেকে সংঘটিত পরিবর্তনগুলি (সর্বোচ্চ $1টি দেখানো হয়েছে)।", "rclistfromreset": "তারিখ নির্বাচন পুনঃস্থাপন করুন", "rclistfrom": "$2, $3 তারিখের পর সংঘটিত নতুন পরিবর্তনগুলো দেখাও", @@ -2604,7 +2612,7 @@ "import-nonewrevisions": "কোনো সংস্করণ আমদানী করা হয়নি।", "xml-error-string": "$1 যে লাইনে $2, কলামে $3 (বাইট $4): $5", "import-upload": "XML ডাটা আপলোড", - "import-token-mismatch": "সেশন ডাটা হারিয়ে গেছে।\n\nআপনি সম্ভবত সংযোগ হারিয়েছেন। দয়া করে যাচাই করুন যে আপনি এখনও প্রবেশরত রয়েছেন এবং আবার চেষ্টা করুন। যদি এটি এখনও কাজ না করে, তাহলে দয়া করে [[Special:UserLogout|অ্যাকাউন্ট থেকে প্রস্থান করুন]] এবং আবার অ্যাকাউন্টে প্রবেশ করে চেষ্টা করুন এবং এবং পরীক্ষা করুন যে আপনার ব্রাউজার এই সাইটে কুকি ব্যবহারের অনুমতি দেয়।", + "import-token-mismatch": "সেশন ডাটা হারিয়ে গেছে।\n\nআপনি সম্ভবত সংযোগ হারিয়েছেন। '''দয়া করে যাচাই করুন যে আপনি এখনও প্রবেশরত রয়েছেন এবং আবার চেষ্টা করুন'''। যদি এটি এখনও কাজ না করে, তাহলে দয়া করে [[Special:UserLogout|অ্যাকাউন্ট থেকে প্রস্থান করুন]] এবং আবার অ্যাকাউন্টে প্রবেশ করে চেষ্টা করুন এবং এবং পরীক্ষা করুন যে আপনার ব্রাউজার এই সাইটে কুকি ব্যবহারের অনুমতি দেয়।", "import-invalid-interwiki": "নির্ধারিত উইকি থেকে আমদানী করা যাবে না।", "import-error-edit": "\"$1\" পাতাটি আমদানি করা যায়নি কারণ আপনার এটি সম্পাদনা করার অনুমতি নেই।", "import-error-create": "\"$1\" পাতাটি আমদানি করা যায়নি কারণ আপনার এটি তৈরী করার অনুমতি নেই।", @@ -3566,6 +3574,8 @@ "compare-invalid-title": "আপনার প্রদেয় শিরোনামটি সঠিক নয়।", "compare-title-not-exists": "আপনার কাঙ্ক্ষিত শিরোনামটি নেই।", "compare-revision-not-exists": "আপনার কাঙ্ক্ষিত সংস্করণটি নেই।", + "diff-form": "পার্থক্য", + "permanentlink-submit": "এই সংশোধনে যান", "dberr-problems": " দুঃখিত! এই সাইটটি বর্তমানে কারীগরী অসুবিধার মুখোমুখি হয়েছে।", "dberr-again": "কয়েক মিনিট পর পুনরায় পরিদর্শনের চেষ্টা করুন।", "dberr-info": "(ডেটাবেজ প্রবেশ করা সম্ভব হয়নি: $1)", 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 7bee277f2a..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.", @@ -1294,7 +1294,7 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|spisak novih stranica]])", "recentchanges-submit": "Prikaži", "rcfilters-legend-heading": "Spisak skraćenica:", - "rcfilters-other-review-tools": "Drugi alati za pregled:", + "rcfilters-other-review-tools": "Drugi alati za pregled", "rcfilters-activefilters": "Aktivni filteri", "rcfilters-advancedfilters": "Napredni filteri", "rcfilters-limit-title": "Izmjena za prikaz", @@ -1374,7 +1374,7 @@ "rcfilters-filter-categorization-label": "Izmjene kategorija", "rcfilters-filter-categorization-description": "Izmjene kojima se dodavaju ili uklanjaju stranice iz kategorija.", "rcfilters-filter-logactions-label": "Zapisane radnje", - "rcfilters-filter-logactions-description": "Administrativne radnje, pravljenje računa, brisanje stranica, postavljenje datoteka…", + "rcfilters-filter-logactions-description": "Administrativne radnje, pravljenje računa, brisanje stranica, postavljanje datoteka…", "rcfilters-hideminor-conflicts-typeofchange": "Određene vrste izmjena ne mogu se označiti \"manjim\", tako da je ovaj filter u sukobu sa sljedećim filterima za vrstu izmjene: $1", "rcfilters-typeofchange-conflicts-hideminor": "Ovaj filter za vrstu izmjene u sukobu je s filterom za \"manje izmjene\". Izvjesne vrste izmjena ne mogu se označiti kao \"manje\".", "rcfilters-filtergroup-lastRevision": "Posljednja izmjena", @@ -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.", @@ -3495,6 +3495,7 @@ "compare-invalid-title": "Naslov koji ste unijeli je nevaljan.", "compare-title-not-exists": "Naslov koji ste naveli ne postoji.", "compare-revision-not-exists": "Izmjena koji ste naveli ne postoji.", + "diff-form": "'''obrazac'''", "dberr-problems": "Žao nam je! Ova stranica ima određene tehničke poteÅ¡koće.", "dberr-again": "PokuÅ¡ajte pričekati par minuta i zatim osvježiti.", "dberr-info": "(ne može se pristupiti bazi podataka: $1)", diff --git a/languages/i18n/ca.json b/languages/i18n/ca.json index 64845e3221..3cecdd7f93 100644 --- a/languages/i18n/ca.json +++ b/languages/i18n/ca.json @@ -86,7 +86,7 @@ "tog-shownumberswatching": "Mostra el nombre d'usuaris que hi vigilen", "tog-oldsig": "La vostra signatura actual:", "tog-fancysig": "Tractar la signatura com a text wiki (sense enllaç automàtic)", - "tog-uselivepreview": "Utilitza la previsualització automàtica", + "tog-uselivepreview": "Mostra previsualitzacions sense recarregar la pàgina", "tog-forceeditsummary": "Avisa'm en deixar el resum de la modificació en blanc", "tog-watchlisthideown": "Amaga les meues edicions de la llista de seguiment", "tog-watchlisthidebots": "Amaga de la llista de seguiment les edicions fetes per usuaris bots", @@ -750,8 +750,8 @@ "permissionserrorstext-withaction": "No teniu permís per a $2, {{PLURAL:$1|pel motiu següent|pels motius següents}}:", "contentmodelediterror": "No podeu modificar aquesta revisió perquè el seu model de contingut és $1, que difereix del model de contingut actual de la pàgina $2.", "recreate-moveddeleted-warn": "'''Avís: esteu creant una pàgina que s'ha suprimit prèviament.'''\n\nHauríeu de considerar si és realment necessari continuar editant aquesta pàgina.\nA continuació s'ofereix el registre de supressions i de reanomenaments de la pàgina:", - "moveddeleted-notice": "S'ha suprimit aquesta pàgina.\nA continuació us mostrem com a referència el registre d'esborraments i reanomenaments de la pàgina.", - "moveddeleted-notice-recent": "S’ha suprimit aquesta pàgina recentment (en les últimes 24 hores).\nA continuació us mostrem com a referència el registre de supressions i reanomenaments de la pàgina.", + "moveddeleted-notice": "S'ha suprimit aquesta pàgina.\nA continuació us mostrem com a referència el registre d'esborraments, proteccions i reanomenaments de la pàgina.", + "moveddeleted-notice-recent": "S’ha suprimit aquesta pàgina recentment (en les últimes 24 hores).\nA continuació us mostrem com a referència el registre de supressions, proteccions i reanomenaments de la pàgina.", "log-fulllog": "Veure tot el registre", "edit-hook-aborted": "Modificació avortada pel hook.\nNo s'ha donat cap explicació.", "edit-gone-missing": "No s'ha pogut actualitzar la pàgina.\nSembla haver estat esborrada.", @@ -1020,7 +1020,7 @@ "prefs-editwatchlist-clear": "Neteja la llista de seguiment", "prefs-watchlist-days": "Nombre de dies per mostrar en la llista de seguiment:", "prefs-watchlist-days-max": "Màxim $1 {{PLURAL:$1|dia|dies}}", - "prefs-watchlist-edits": "Nombre de modificacions a mostrar en una llista estesa de seguiment:", + "prefs-watchlist-edits": "Nombre màxim de modificacions a mostrar en la llista de seguiment:", "prefs-watchlist-edits-max": "Nombre màxim: 1000", "prefs-watchlist-token": "Testimoni de llista de seguiment:", "prefs-misc": "Altres preferències", @@ -1337,13 +1337,24 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (vegeu també la [[Special:NewPages|llista de pàgines noves]])", "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Mostra", + "rcfilters-legend-heading": "Llista d'abreviatures:", + "rcfilters-other-review-tools": "Altres eines de supervisió", + "rcfilters-group-results-by-page": "Agrupa els resultats per pàgina", + "rcfilters-grouping-title": "Agrupació", "rcfilters-activefilters": "Filtres actius", + "rcfilters-advancedfilters": "Filtres avançats", + "rcfilters-days-title": "Darrers dies", + "rcfilters-hours-title": "Hores recents", + "rcfilters-days-show-days": "$1 {{PLURAL:$1|dia|dies}}", + "rcfilters-days-show-hours": "$1 {{PLURAL:$1|hora|hores}}", + "rcfilters-quickfilters": "Filtres desats", "rcfilters-quickfilters-placeholder-title": "Encara no s’ha desat cap enllaç", "rcfilters-savedqueries-defaultlabel": "Filtres desats", "rcfilters-savedqueries-rename": "Reanomena", "rcfilters-savedqueries-setdefault": "Defineix per defecte", "rcfilters-savedqueries-remove": "Suprimeix", "rcfilters-savedqueries-new-name-label": "Nom", + "rcfilters-savedqueries-new-name-placeholder": "Descriviu el propòsit del filtre", "rcfilters-savedqueries-apply-label": "Crea un filtre", "rcfilters-savedqueries-cancel-label": "Cancel·la", "rcfilters-savedqueries-add-new-title": "Desa els paràmetres de filtres actuals", @@ -1353,7 +1364,7 @@ "rcfilters-invalid-filter": "Filtre no vàlid", "rcfilters-empty-filter": "No hi ha cap filtre actiu. Es mostren totes les contribucions.", "rcfilters-filterlist-title": "Filtres", - "rcfilters-filterlist-whatsthis": "Què és això?", + "rcfilters-filterlist-whatsthis": "Com funciona això?", "rcfilters-highlightbutton-title": "Ressalta els resultats", "rcfilters-highlightmenu-title": "Selecciona un color", "rcfilters-highlightmenu-help": "Seleccioneu un color per ressaltar la propietat", @@ -1406,7 +1417,7 @@ "rcfilters-filter-categorization-description": "Registres de pàgines afegides o suprimides de les categories.", "rcfilters-filter-logactions-label": "Accions registrades", "rcfilters-filter-logactions-description": "Accions administratives, creacions de comptes, eliminacions de pàgines, càrregues…", - "rcfilters-filtergroup-lastRevision": "Darrera revisió", + "rcfilters-filtergroup-lastRevision": "Darreres revisions", "rcfilters-filter-lastrevision-label": "Darrera revisió", "rcfilters-filter-lastrevision-description": "El canvi més recent a una pàgina.", "rcfilters-filter-previousrevision-label": "Revisions anteriors", @@ -3385,7 +3396,6 @@ "fileduplicatesearch-noresults": "No s'ha trobat cap fitxer anomenat «$1».", "specialpages": "Pàgines especials", "specialpages-note-top": "Llegenda", - "specialpages-note": "* Pàgines especials normals.\n* Pàgines especials restringides.", "specialpages-group-maintenance": "Informes de manteniment", "specialpages-group-other": "Altres pàgines especials", "specialpages-group-login": "Iniciar sessió / Crear un compte", @@ -3501,6 +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": "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..c8990bdb4a 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,16 @@ "recentchanges-legend-heading": "Легенда: ", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (хьажа кхин [[Special:NewPages|керла агӀонийн могӀа]])", "recentchanges-submit": "Гайта", - "rcfilters-savedqueries-defaultlabel": "Ӏалашъе луьттург", + "rcfilters-other-review-tools": "Талларан кхин гӀирсаш", + "rcfilters-activefilters": "Жигара литтарш", + "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-savedqueries-defaultlabel": "Ӏалашдина литтарш", "rcfilters-savedqueries-rename": "ЦӀе хийцар", "rcfilters-savedqueries-setdefault": "Ӏадйитаран кеп хӀоттае", "rcfilters-savedqueries-unsetdefault": "Ӏадйитаран кеп дӀаяккха", @@ -1156,7 +1166,11 @@ "rcfilters-savedqueries-add-new-title": "Ӏалашде литтар нисъяр", "rcfilters-restore-default-filters": "Литтарш Ӏадйитаран кепе меттахӀоттае", "rcfilters-clear-all-filters": "Ерриге литтарш цӀанъян", + "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": "Хьан дисдарш", @@ -1167,14 +1181,25 @@ "rcfilters-filter-user-experience-level-newcomer-label": "Керланиш", "rcfilters-filter-user-experience-level-learner-label": "Доьшуш берш", "rcfilters-filter-bots-label": "Бот", + "rcfilters-filter-humans-label": "Адам ду (бот яц)", + "rcfilters-filter-humans-description": "Декъашхоша дина нисдарш.", "rcfilters-filter-patrolled-label": "Патрулйина", + "rcfilters-filter-pageedits-label": "АгӀонан нисдарш", + "rcfilters-filter-pageedits-description": "Дийцарийн а, категорийн а чулацаман дина нисдарш...", + "rcfilters-filter-newpages-label": "АгӀонаш кхоллар", + "rcfilters-filter-newpages-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-excluded": "ДӀаяьккхина", "rcfilters-tag-prefix-namespace-inverted": ":not $1", + "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}} бина болу", @@ -2519,6 +2544,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 +2856,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 +2971,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 +3036,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 e6c038a70a..7435ca6ea8 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,6 +2807,7 @@ "compare-rev2": "پێداچوونەوەی Ù¢", "compare-submit": "ھەڵسەنگاندن", "compare-invalid-title": "ئەم سەردێڕە دەستنیشانت کردووە نادروستە.", + "diff-form": "جیاوازیەکان", "dberr-problems": "ببورە! ئەم ماڵپەڕە ئێستا خەریک ئەزموونێکی کێشەی تەکنیکیە.", "dberr-again": "چەن خولک ڕاوەستە و نوێی بکەوە.", "dberr-info": "(ناتوانیت بگەیت بە بنکەدراو: $1)", @@ -2826,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,7 +2842,7 @@ "revdelete-unrestricted": "ئەو سنووری بەرگریانەی لابردراوە لە سەر بەڕێوبەران", "logentry-block-block": "$1 {{GENDER:$4|$3}}ی بۆ ماوەی $5 {{GENDER:$2|بەربەست کرد}} $6", "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|نیشان کرد}}", @@ -2856,6 +2859,7 @@ "logentry-rights-rights": "$1 ئەندامێتیی {{GENDER:$6|$3}}ی لە $4 بۆ $5 {{GENDER:$2|گۆڕی}}", "logentry-upload-upload": "$1 $3ی {{GENDER:$2|بار کرد}}", "logentry-upload-overwrite": "$1 وەشانێکی نوێی $3ی {{GENDER:$2|بار کرد}}", + "logentry-managetags-create": "$1 تاگی \"$4\"ی دروست کرد", "rightsnone": "(ھیچ)", "feedback-back": "گەڕانەوە", "feedback-cancel": "ھەڵوەشاندنەوە", diff --git a/languages/i18n/cs.json b/languages/i18n/cs.json index c564c3baf1..bf31a15ff5 100644 --- a/languages/i18n/cs.json +++ b/languages/i18n/cs.json @@ -66,13 +66,14 @@ "tog-shownumberswatching": "Zobrazovat počet sledujících uživatelů", "tog-oldsig": "Váš stávající podpis:", "tog-fancysig": "Používat v podpisu wikitext (bez automatického odkazu)", - "tog-uselivepreview": "Používat rychlý náhled", + "tog-uselivepreview": "Zobrazovat náhledy bez obnovení stránky", "tog-forceeditsummary": "Upozornit, když nevyplním shrnutí editace", "tog-watchlisthideown": "Na seznamu sledovaných stránek skrýt moje editace", "tog-watchlisthidebots": "Na seznamu sledovaných stránek skrýt editace botů", "tog-watchlisthideminor": "Na seznamu sledovaných stránek skrýt malé editace", "tog-watchlisthideliu": "Na seznamu sledovaných stránek skrýt editace přihlášených uživatelů", "tog-watchlistreloadautomatically": "Při změně filtru automaticky aktualizovat seznam sledovaných stránek (vyžaduje JavaScript)", + "tog-watchlistunwatchlinks": "K položkám sledovaných stránek přidat odkazy pro sledování/nesledování (rychlé přepnutí vyžaduje JavaScript)", "tog-watchlisthideanons": "Na seznamu sledovaných stránek skrýt editace nepřihlášených uživatelů", "tog-watchlisthidepatrolled": "Skrýt prověřené editace ve sledovaných stránkách", "tog-watchlisthidecategorization": "Skrýt kategorizaci stránek", @@ -723,8 +724,8 @@ "permissionserrorstext-withaction": "Z {{PLURAL:$1|následujícího důvodu|následujících důvodů}} nemáte oprávnění $2:", "contentmodelediterror": "Tuto revizi nemůžete editovat, protože model jejího obsahu je $1, což se liší od aktuálního modelu obsahu této stránky, kterým je $2.", "recreate-moveddeleted-warn": "'''Upozornění: Pokoušíte se znovuzaložit stránku, která byla v minulosti smazána.'''\n\nZvažte, zda je vhodné v editaci této stránky pokračovat.\nNíže vidíte soupis přesunů a smazání této stránky:", - "moveddeleted-notice": "Tato stránka byla smazána.\nPodrobnosti si můžete prohlédnout v níže zobrazeném seznamu provedených přesunů a smazání této stránky.", - "moveddeleted-notice-recent": "Omlouváme se, ale tato stránka byla nedávno (v posledních 24 hodinách) smazána. Pro úplnost je níže zobrazen soupis přesunů a smazání této stránky.", + "moveddeleted-notice": "Tato stránka byla smazána.\nPodrobnosti si můžete prohlédnout v níže zobrazeném seznamu provedených smazání, zamčení a přesunů této stránky.", + "moveddeleted-notice-recent": "Omlouváme se, ale tato stránka byla nedávno (v posledních 24 hodinách) smazána. Pro úplnost je níže zobrazen soupis smazání, zamčení a přesunů této stránky.", "log-fulllog": "Zobrazit vÅ¡echny záznamy", "edit-hook-aborted": "Editace byla bez bližšího vysvětlení zruÅ¡ena přípojným bodem.", "edit-gone-missing": "Stránku se nepodařilo aktualizovat.\nZřejmě byla smazána.", @@ -992,7 +993,7 @@ "prefs-editwatchlist-clear": "Vyprázdnit seznam sledovaných stránek", "prefs-watchlist-days": "Počet dní zobrazených ve sledovaných stránkách:", "prefs-watchlist-days-max": "Maximálně $1 {{PLURAL:$1|den|dny|dní}}", - "prefs-watchlist-edits": "Počet editací zobrazených ve zdokonalených sledovaných stránkách:", + "prefs-watchlist-edits": "Maximální počet editací zobrazených ve sledovaných stránkách:", "prefs-watchlist-edits-max": "Maximum: 1000", "prefs-watchlist-token": "Klíč k seznamu sledovaných stránek:", "prefs-misc": "Různé", @@ -1308,15 +1309,20 @@ "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", "rcfilters-advancedfilters": "Pokročilé filtry", "rcfilters-limit-title": "Zobrazit změny", - "rcfilters-limit-shownum": "Zobrazit posledních $1 změn", + "rcfilters-limit-shownum": "Zobrazit {{PLURAL:$1|poslední jednu změnu|poslední $1 změny|posledních $1 změn}}", "rcfilters-days-title": "Poslední dny", "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.", @@ -1328,10 +1334,12 @@ "rcfilters-savedqueries-new-name-label": "Název", "rcfilters-savedqueries-new-name-placeholder": "PopiÅ¡te účel filtru", "rcfilters-savedqueries-apply-label": "Vytvořit filtr", + "rcfilters-savedqueries-apply-and-setdefault-label": "Vytvořit výchozí filtr", "rcfilters-savedqueries-cancel-label": "ZruÅ¡it", "rcfilters-savedqueries-add-new-title": "Uložit současné nastavení filtrů", "rcfilters-restore-default-filters": "Obnovit výchozí filtry", "rcfilters-clear-all-filters": "ZruÅ¡it vÅ¡echny filtry", + "rcfilters-show-new-changes": "Zobrazit nejnovější změny", "rcfilters-search-placeholder": "Filtrovat nedávné změny (prohlížejte nebo začněte psát)", "rcfilters-invalid-filter": "Neplatný filtr", "rcfilters-empty-filter": "Žádné aktivní filtry. Zobrazeny jsou vÅ¡echny příspěvky.", @@ -1344,7 +1352,7 @@ "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.", @@ -1383,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í…", @@ -1404,11 +1417,15 @@ "rcfilters-tag-prefix-namespace-inverted": ":ne $1", "rcfilters-exclude-button-off": "Vynechat vybrané", "rcfilters-exclude-button-on": "Vybrané vynechány", + "rcfilters-view-advanced-filters-label": "Pokročilé filtry", "rcfilters-view-tags": "Označené editace", "rcfilters-view-namespaces-tooltip": "Filtrovat výsledky podle jmenného prostoru", "rcfilters-view-tags-tooltip": "Filtrovat výsledky pomocí značek editací", "rcfilters-view-return-to-default-tooltip": "Vrátit se do hlavního filtrovacího menu", "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é", "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", @@ -2610,7 +2627,7 @@ "import-nonewrevisions": "Žádné revize nebyly importovány (buď již byly vÅ¡echny importovány dříve, nebo byly přeskočeny kvůli chybám).", "xml-error-string": "$1 na řádku $2, sloupec $3 (bajt $4): $5", "import-upload": "Importovat XML data", - "import-token-mismatch": "Ztratila se data relace.\n\nMožná jste byli odhlášeni. Zkontrolujte, že jste stále přihlášeni a zkuste to prosím znovu.\nPokud se tento problém bude opakovat, zkuste se [[Special:UserLogout|odhlásit]] a znovu přihlásit a zkontrolujte, že váš prohlížeč dovoluje přijímat cookie z tohoto serveru.", + "import-token-mismatch": "Ztratila se data relace.\n\nMožná jste byli odhlášeni. '''Zkontrolujte, že jste stále přihlášeni a zkuste to prosím znovu.'''\nPokud se tento problém bude opakovat, zkuste se [[Special:UserLogout|odhlásit]] a znovu přihlásit a zkontrolujte, že váš prohlížeč dovoluje přijímat cookie z tohoto serveru.", "import-invalid-interwiki": "Ze zadané wiki nelze importovat.", "import-error-edit": "Stránka „$1“ se nenaimportovala, protože nemáte oprávnění ji editovat.", "import-error-create": "Stránka „$1“ se nenaimportovala, protože nemáte oprávnění ji založit.", @@ -3434,6 +3451,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", @@ -3552,6 +3570,13 @@ "compare-invalid-title": "Zadaný název je neplatný.", "compare-title-not-exists": "Zadaný název neexistuje.", "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", + "permanentlink-submit": "Přejít na revizi", "dberr-problems": "Promiňte! Tento server má v tuto chvíli technické problémy.", "dberr-again": "Zkuste několik minut počkat a poté znovu načíst stránku.", "dberr-info": "(Nelze se připojit k databázi: $1)", diff --git a/languages/i18n/csb.json b/languages/i18n/csb.json index 6a78683280..c66fdf9f56 100644 --- a/languages/i18n/csb.json +++ b/languages/i18n/csb.json @@ -146,7 +146,7 @@ "index-category": "Indeksowóné starnë", "noindex-category": "Nieindeksowóné starnë", "broken-file-category": "Starnë lënkùjącé do nieegzystëjących lopków", - "about": "Ò serwise", + "about": "Ò serwisu", "article": "Artikel", "newwindow": "(òtmëkô sã w nowim òknie)", "cancel": "Anulëje", @@ -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/cv.json b/languages/i18n/cv.json index ec4fe66083..cac833e37a 100644 --- a/languages/i18n/cv.json +++ b/languages/i18n/cv.json @@ -11,7 +11,8 @@ "아라", "Chuvash2014", "Macofe", - "Chuvash" + "Chuvash", + "Marat-avgust" ] }, "tog-underline": "Ссылкăсене аялтан туртса палармалла:", @@ -527,6 +528,7 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (пăхăр [[Special:NewPages|çĕнĕ страницăсен списокĕ]])", "recentchanges-legend-plusminus": "(±123)", "recentchanges-submit": "Кăтарт", + "rcfilters-filter-user-experience-level-newcomer-label": "Çĕнĕ хутшăнакансем", "rclistfrom": "$2, $3 тытăнса çĕнĕ улăшăнисене кăтартни", "rcshowhideminor": "пĕчĕк тӳрлетнисене $1", "rcshowhideminor-show": "кăтартмалла", diff --git a/languages/i18n/cy.json b/languages/i18n/cy.json index d4ad69ffee..85449b7d2e 100644 --- a/languages/i18n/cy.json +++ b/languages/i18n/cy.json @@ -49,13 +49,14 @@ "tog-shownumberswatching": "Dangos y nifer o ddefnyddwyr sy'n gwylio", "tog-oldsig": "Eich llofnod cyfredol:", "tog-fancysig": "Trin y llofnod fel testun wici (heb gyswllt wici awtomatig)", - "tog-uselivepreview": "Defnyddio rhagolwg byw", + "tog-uselivepreview": "Defnyddio rhagolwg heb ail-lwytho'r ddalen", "tog-forceeditsummary": "Tynnu fy sylw pan adawaf flwch crynodeb golygu yn wag", "tog-watchlisthideown": "Cuddio fy ngolygiadau fy hunan yn fy rhestr wylio", "tog-watchlisthidebots": "Cuddio golygiadau bot yn fy rhestr wylio", "tog-watchlisthideminor": "Cuddio golygiadau bychain rhag y rhestr wylio", "tog-watchlisthideliu": "Cuddio golygiadau gan ddefnyddwyr mewngofnodedig rhag y rhestr wylio", "tog-watchlistreloadautomatically": "Ail-lwyther y Rhestr wylio yn otomatigpan newider ffiltr (angen JavaScript)", + "tog-watchlistunwatchlinks": "Ychwanegwch ddolenau 'gwylio/heb eu gwylio' i'r cofnodion rydych yn eu gwylio (angen JavaScript)", "tog-watchlisthideanons": "Cuddio golygiadau gan ddefnyddwyr anhysbys rhag y rhestr wylio", "tog-watchlisthidepatrolled": "Cuddio golygiadau sydd wedi derbyn ymweliad patrôl rhag y rhestr wylio", "tog-watchlisthidecategorization": "Cuddiwch y categoriau", @@ -345,7 +346,7 @@ "title-invalid-characters": "Mae'r ddalen a geisiwch yn cynnwys symbloau na ellir eu derbyn: \"$1\".", "title-invalid-relative": "Mae gan y teitl lwybr perthnasol. Mae cynnwys (./, ../) yn annilys, gan eu bod yn bygro'r porwr.", "title-invalid-magic-tilde": "Mae'r ddalen a geisiwch yn cynnwys symbolau annilys: (~~~).", - "title-invalid-too-long": "Mae teitl y ddalen a geisiwch yn rhy hir o lawer. Rhaid iddi fod yn llai na $1 {{PLURAL:$1|beit|beit}} mewn cod UTF-8.", + "title-invalid-too-long": "Mae teitl y ddalen a geisiwch yn rhy hir. Rhaid iddi fod yn llai na $1 {{PLURAL:$1|beit}} mewn cod UTF-8.", "title-invalid-leading-colon": "Mae teitl y ddalen a geisiwch yn cynnwys colon annilys, ar y dechrau.", "perfcached": "Mae'r wybodaeth ganlynol yn gopi cadw; mae'n bosib nad y fersiwn diweddaraf ydyw. Cedwir hyd at {{PLURAL:$1||un canlyniad yn unig|ddau ganlyniad|dri canlyniad|$1 chanlyniad|$1 canlyniad}} yn y copi cadw.", "perfcachedts": "Rhoddwyd y data canlynol ar gadw mewn celc a ddiweddarwyd ddiwethaf am $1. Cedwir hyd at {{PLURAL:$4||un canlyniad yn unig|ddau ganlyniad|dri canlyniad|$4 chanlyniad|$4 canlyniad}} yn y celc.", @@ -360,7 +361,7 @@ "protectedinterface": "Testun ar gyfer rhyngwyneb y wici yw cynnwys y dudalen hon. Clowyd y dudalen er mwyn ei diogeli. Os am gyfieithu'r neges neu ei newid ym mhob wici yn hytrach nag yn hwn yn unig, defnyddiwch [https://translatewiki.net/ translatewiki.net], y prosiect MediaWiki sy'n hyrwyddo'r gwaith cyfieithu.", "editinginterface": "Dalier sylw: Rydych yn golygu tudalen sy'n rhan o destun rhyngwyneb y meddalwedd. Bydd newidiadau i'r dudalen hon yn effeithio ar y rhyngwyneb a ddefnyddir ar y wici hwn yn unig.", "translateinterface": "I ychwanegu neu newid y cyfieithiad ar gyfer pob wici, defnyddiwch [https://translatewiki.net/ translatewiki.net], sef prosiect lleol MediaWiki.", - "cascadeprotected": "Diogelwyd y ddalen hon rhag ei newid, oherwydd ei bod wedi ei chynnwys yn y {{PLURAL:$1|ddalen ganlynol|ddalen ganlynol|dalennau canlynol|dalennau canlynol|dalennau canlynol|dalennau canlynol}}, a ddiogelwyd, a'r dewisiad hwn yn weithredol: $2", + "cascadeprotected": "Diogelwyd y ddalen hon rhag ei newid, oherwydd ei bod wedi ei chynnwys yn y {{PLURAL:$1|ddalen ganlynol|dalennau canlynol}}, a ddiogelwyd, gyda'r dewisiad hwn yn weithredol: $2", "namespaceprotected": "Nid oes caniatâd gennych i olygu tudalennau yn y parth '''$1'''.", "customcssprotected": "Nid oes caniatâd ganddoch i olygu'r dudalen CSS hon oherwydd bod gosodiadau personol defnyddiwr arall arno.", "customjsprotected": "Nid oes caniatâd ganddoch i olygu'r dudalen JavaScript hon oherwydd bod gosodiadau personol defnyddiwr arall arno.", @@ -370,7 +371,7 @@ "mypreferencesprotected": "Nid oes caniatad gennych i olygu eich dewisiadau eich hunan.", "ns-specialprotected": "Ni ellir golygu tudalennau arbennig.", "titleprotected": "Diogelwyd y teitl hwn rhag ei greu gan [[User:$1|$1]].\nRhoddwyd y rheswm hwn - $2.", - "filereadonlyerror": "Nid oes modd newid y ffeil \"$1\" oherwydd nad oes modd gwneud dim heblaw darllen storfa'r ffeil yn \"$2\" yn unig.\n\nY rheswm a roddwyd gan y gweinyddwr a roddodd y ffeil dan glo yw \"''$3''\".", + "filereadonlyerror": "Nid oes modd newid y ffeil \"$1\" gan fod ffeil \"$2\" yn y modd 'darllen-yn-unig'.\n\nY rheswm a roddwyd gan y gweinyddwr a roddodd y ffeil dan glo yw \"''$3''\".", "invalidtitle-knownnamespace": "Teitl annilys o'r enw \"$3\" yn y parth \"$2\"", "invalidtitle-unknownnamespace": "Teitl annilys ag iddi'r rhif parth anhysbys $1 a'r enw \"$2\"", "exception-nologin": "Nid ydych wedi mewngofnodi", @@ -425,6 +426,7 @@ "createacct-email-ph": "Rhowch eich cyfeiriad ebost", "createacct-another-email-ph": "Rhowch y cyfeiriad e-bost", "createaccountmail": "Defnyddio cyfrinair ar hap dros dro a'i anfon i'r cyfeiriad e-bost a roddwyd", + "createaccountmail-help": "Gellir creu cyfri ar gyfer person arall heb ddysgu'r cyfrinair.", "createacct-realname": "Enw cywir (dewisiol)", "createacct-reason": "Rheswm", "createacct-reason-ph": "Pam ydych yn creu cyfrif arall?", @@ -450,7 +452,7 @@ "noname": "Dydych chi ddim wedi cynnig enw defnyddiwr dilys.", "loginsuccesstitle": "Llwyddodd y mewngofnodi", "loginsuccess": "'''Yr ydych wedi mewngofnodi i {{SITENAME}} fel \"$1\".'''", - "nosuchuser": "Does dim defnyddiwr o'r enw \"$1\".\nMae'r rhaglen yn gwahaniaethu rhwng llythrennau bach a mawr.\nSicrhewch eich bod chi wedi sillafu'r enw'n gywir, neu [[Special:CreateAccount|crëwch gyfrif newydd]].", + "nosuchuser": "Does dim defnyddiwr o'r enw \"$1\".\nMae'r rhaglen yn gwahaniaethu rhwng llythrennau bach a mawr.\nGwirwch eich sillafu, neu [[Special:CreateAccount|crëwch gyfrif newydd]].", "nosuchusershort": "Does dim defnyddiwr o'r enw \"$1\". Gwiriwch eich sillafu.", "nouserspecified": "Mae'n rhaid nodi enw defnyddiwr.", "login-userblocked": "Mae'r defnyddiwr hwn wedi ei flocio. Ni ellir mewngofnodi.", @@ -471,7 +473,7 @@ "eauthentsent": "Anfonwyd e-bost o gadarnhâd at y cyfeiriad a benwyd.\nCyn y gellir anfon unrhywbeth arall at y cyfeiriad hwnnw rhaid i chi ddilyn y cyfarwyddiadau yn yr e-bost er mwyn cadarnhau mai chi sydd berchen y cyfeiriad hwnnw.", "throttled-mailpassword": "Anfonwyd e-bost atoch eisoes i'ch atgoffa o'ch cyfrinair, a hynny yn ystod y $1 {{PLURAL:$1|awr}} diwethaf.\nEr mwyn rhwystro camddefnydd, dim ond un e-bost i'ch atgoffa o'ch cyfrinair gaiff ei anfon bob yn $1 {{PLURAL:$1|awr}}.", "mailerror": "Gwall wrth ddanfon yr e-bost: $1", - "acct_creation_throttle_hit": "Mae ymwelwyr sy'n defnyddio'ch cyfeiriad IP wedi creu $1 {{PLURAL:$1|cyfrif|cyfrif|gyfrif|chyfrif|chyfrif|cyfrif}} yn ystod y diwrnod diwethaf, sef y mwyafswm a ganiateir mewn diwrnod.\nFelly ni chaiff defnyddwyr sy'n defnyddio'r cyfeiriad IP hwn greu rhagor o gyfrifon ar hyn o bryd.", + "acct_creation_throttle_hit": "Mae ymwelwyr sy'n defnyddio'ch cyfeiriad IP wedi creu $1 {{PLURAL:$1|cyfrif|cyfrif|gyfrif|chyfrif|chyfrif|cyfrif}} yn ystod y $2 diwethaf, sef yr uchafswm a ganiateir yn y cyfnod hwn.\nO ganlyniad, ni chaiff defnyddwyr sy'n defnyddio'r cyfeiriad IP hwn greu rhagor o gyfrifon ar hyn o bryd.", "emailauthenticated": "Cadarnhawyd eich cyfeiriad e-bost am $3 ar $2.", "emailnotauthenticated": "Nid yw eich cyfeiriad e-bost wedi'i gadarnhau eto. Ni fydd unrhyw negeseuon e-bost yn cael eu hanfon atoch ar gyfer y nodweddion canlynol.", "noemailprefs": "Mae'n rhaid i chi gynnig cyfeiriad e-bost er mwyn i'r nodweddion hyn weithio.", @@ -484,7 +486,7 @@ "createaccount-title": "Creu cyfrif ar {{SITENAME}}", "createaccount-text": "Creodd rhywun gyfrif o'r enw $2 ar {{SITENAME}} ($4) ar gyfer y cyfeiriad e-bost hwn. \"$3\" yw'r cyfrinair ar gyfer \"$2\". Dylech fewngofnodi a newid eich cyfrinair yn syth.\n\nRhydd ichi anwybyddu'r neges hon os mai camgymeriad oedd creu'r cyfrif.", "login-throttled": "Rydych wedi ceisio mewngofnodi gormod o weithiau ar ben ei gilydd.\nOedwch $1 cyn mentro eto.", - "login-abort-generic": "Ni lwyddodd y mewngofnodi - Rhoddwyd y gorau iddo", + "login-abort-generic": "Ni lwyddodd y mewngofnodi", "login-migrated-generic": "Trosglwyddwyd eich cyfrif ac nid yw eich enw defnyddiwr bellach yn bodoli ar y wici hwn.", "loginlanguagelabel": "Iaith: $1", "suspicious-userlogout": "Gwrthodwyd eich cais i allgofnodi oherwydd ei fod yn ymddangos mai gweinydd wedi torri neu ddirprwy gelc a anfonodd y cais.", @@ -678,7 +680,7 @@ "permissionserrorstext": "Nid yw'r gallu ganddoch i weithredu yn yr achos yma, am y {{PLURAL:$1|rheswm|rheswm|rhesymau|rhesymau|rhesymau|rhesymau}} canlynol:", "permissionserrorstext-withaction": "Nid yw'r gallu hwn ($2) ganddoch, am y {{PLURAL:$1|rheswm|rheswm|rhesymau|rhesymau|rhesymau|rhesymau}} canlynol:", "recreate-moveddeleted-warn": "'''Dalier sylw: Rydych yn ail-greu tudalen a ddilewyd rhywdro.'''\n\nYstyriwch a fyddai'n dda o beth i barhau i olygu'r dudalen hon.\nDyma'r logiau dileu a symud ar gyfer y dudalen, er gwybodaeth:", - "moveddeleted-notice": "Dilëwyd y dudalen hon.\nDangosir y logiau dileu a symud ar gyfer y dudalen isod.", + "moveddeleted-notice": "Dilëwyd y ddalen hon.\nDangosir y logiau dileu, cloi a symud ar gyfer y ddalen isod.", "moveddeleted-notice-recent": "Ymddiheurwn! Dilewyd y ddalen hon yn ddiweddar (yn y 24 awr diwethaf).\nEr gwybodaeth, darperir isod yr holl wybodaeth berthnasol.", "log-fulllog": "Gweld y lòg cyflawn", "edit-hook-aborted": "Terfynwyd y golygiad cyn pryd gan fachyn.\nNi roddodd eglurhad.", @@ -749,7 +751,7 @@ "page_last": "olaf", "histlegend": "Cymharu dau fersiwn: marciwch y cylchoedd ar y ddau fersiwn i'w cymharu, yna pwyswch ar 'return' neu'r botwm 'Cymharer y fersiynau dewisedig'.
\nEglurhad: '''({{int:cur}})''' = gwahaniaethau rhyngddo a'r fersiwn cyfredol,\n'''({{int:last}})''' = gwahaniaethau rhyngddo a'r fersiwn cynt, '''({{int:minoreditletter}})''' = golygiad bychan", "history-fieldset-title": "Chwilio drwy'r hanes", - "history-show-deleted": "Y rhai a ddilëwyd yn unig", + "history-show-deleted": "Yr ddalen a adolygwyd yn unig a ddilëwyd", "histfirst": "cynharaf", "histlast": "diweddaraf", "historysize": "({{PLURAL:$1|$1 beit|$1 beit|$1 feit|$1 beit|$1 beit|$1 beit}})", @@ -900,7 +902,7 @@ "search-file-match": "(yn cyfateb i gynnwys y ffeil)", "search-suggest": "Ai am hyn y chwiliwch: $1", "search-rewritten": "Dangosir canlyniadauar gyfer $1. Chwiliwch am $2.", - "search-interwiki-caption": "Chwaer-brosiectau", + "search-interwiki-caption": "Canlyniadau o chhwaer-brosiectau", "search-interwiki-default": "Y canlyniadau o $1:", "search-interwiki-more": "(rhagor)", "search-interwiki-more-results": "rhagor o ganlyniadau", @@ -941,7 +943,7 @@ "prefs-editwatchlist-clear": "Clirio eich rhestr wylio", "prefs-watchlist-days": "Nifer y diwrnodau i'w dangos yn y rhestr wylio:", "prefs-watchlist-days-max": "Hyd at $1 {{PLURAL:$1||diwrnod|ddiwrnod|diwrnod|diwrnod|diwrnod}}", - "prefs-watchlist-edits": "Nifer y golygiadau i'w dangos wrth ehangu'r rhestr wylio:", + "prefs-watchlist-edits": "Uchafswm nifer y golygiadau i'w dangos yn eich rhestr wylio:", "prefs-watchlist-edits-max": "Hyd at uchafswm o 1000", "prefs-watchlist-token": "Tocyn y rhestr wylio:", "prefs-misc": "Amrywiol", @@ -1032,7 +1034,7 @@ "prefs-help-prefershttps": "Bydd y dewis yma'n cael ei roi ar waith y tro nesaf i chi fewngofnodi.", "prefswarning-warning": "Rydych wedi newid eich Dewisiadau, ac nid ydynt eto wedi'u cadw.\nOs gadewch y dudalen hon heb glicio \"$1\" yna fe gollwch y newidiadau hyn.", "prefs-tabs-navigation-hint": "Awgrym: Gallwch ddefnyddio'r allweddellau sy'n saethau i'r chwith neu i'r dde i lywio rhwng y tabiau ar restr y tabiau.", - "userrights": "Rheoli galluoedd defnyddwyr", + "userrights": "Galluoedd defnyddwyr", "userrights-lookup-user": "Dewisiwch ddefnyddiwr", "userrights-user-editname": "Rhowch enw defnyddiwr:", "editusergroup": "Golygu grwpiau defnyddwyr", @@ -1043,7 +1045,7 @@ "saveusergroups": "Cadw'r Grwpiau {{GENDER:$1|Defnyddwyr}}", "userrights-groupsmember": "Yn aelod o:", "userrights-groupsmember-auto": "Ac ynghlwm wrth aelodaeth y grwpiau uchod, yn aelod o:", - "userrights-groups-help": "Gallwch newid y grwpiau y perthyn y defnyddiwr hwn iddynt:\n* Mae defnyddiwr yn perthyn i grŵp pan mae tic yn y bocs.\n* Nid yw defnyddiwr yn perthyn i grŵp pan nad oes tic yn y bocs.\n* Mae * yn golygu na fyddwch yn gallu dad-wneud unrhyw newid yn y grŵp hwnnw.", + "userrights-groups-help": "Gallwch newid y grwpiau y perthyn y defnyddiwr hwn iddynt:\n* Mae defnyddiwr yn perthyn i grŵp pan mae tic yn y bocs.\n* Nid yw defnyddiwr yn perthyn i grŵp pan nad oes tic yn y bocs.\n* Mae * yn golygu na fyddwch yn gallu dad-wneud unrhyw newid yn y grŵp hwnnw.\n* Mae # yn golygu mai yn ôl yn unig y medrwch chi droi'r cyfnod y daw'r grwp i ben, nid ymlaen.", "userrights-reason": "Rheswm:", "userrights-no-interwiki": "Nid yw'r gallu ganddoch i newid galluoedd defnyddwyr ar wicïau eraill.", "userrights-nodatabase": "Nid yw'r bas data $1 yn bod neu nid yw'n un lleol.", @@ -1055,6 +1057,7 @@ "userrights-expiry-existing": "Amser dod i ben: $3, $2", "userrights-expiry-othertime": "Cyfnod arall:", "userrights-expiry-options": "1 dydd:1 day,1 wythnos:1 week,1 mis:1 month,3 mis:3 months,6 mis:6 months,1 blynedd:1 year", + "userrights-invalid-expiry": "Mae terfyn amser y grwp \"$1\" yn annilys.", "userrights-conflict": "Gwrthdaro oherwydd newid i hawliau defnyddiwr! Adolygwch eich newidiadau a'u cadarnhau.", "group": "Grŵp:", "group-user": "Defnyddwyr", @@ -1152,6 +1155,8 @@ "grant-group-email": "Danfon ebost", "grant-group-customization": "Eich dewisiadau chi", "grant-group-administration": "Rhoi materion gweinyddol ar waith", + "grant-group-private-information": "Edrychwch ar ddata preifat amdanoch", + "grant-group-other": "Gweithgaredd amrywiol", "grant-blockusers": "Blociwch a dadflociwch defnyddwyr", "grant-createaccount": "Crewch gyfri", "grant-createeditmovepage": "Creu, golygu a symud dalennau", @@ -1165,6 +1170,7 @@ "grant-highvolume": "Golygu nifer ar yr un pryd", "grant-oversight": "Cuddiwch y defnyddwyr a'u golygiadau", "grant-patrol": "Newidiadau patrol y dalennau", + "grant-privateinfo": "Edrychwch ar wybodaeth preifat", "grant-protect": "Cloi a datgloi dalennau", "grant-rollback": "Dadwneud newidiadau dalennau", "grant-sendemail": "Danfonwch ebost i ddefnyddwyr", @@ -1245,7 +1251,28 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (gweler hefyd [[Special:NewPages|restr y tudalennau newydd]])", "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Dangos", + "rcfilters-legend-heading": "Rhestr o fyrfoddau:", + "rcfilters-other-review-tools": "Teclynau adolygu eraill", + "rcfilters-group-results-by-page": "Canlyniadau'r grwp bob yn ddalen", + "rcfilters-grouping-title": "Grwpio", "rcfilters-activefilters": "Hidlau sydd ar waith", + "rcfilters-advancedfilters": "Ffiltrau ychwanegol", + "rcfilters-limit-title": "Newidiadau a ddangosir", + "rcfilters-limit-shownum": "Dangos y {{PLURAL:$1|newid}}", + "rcfilters-days-title": "Dyddiau diweddar", + "rcfilters-hours-title": "Oriau diweddar", + "rcfilters-days-show-days": "$1 {{PLURAL:$1|diwrnod}}", + "rcfilters-days-show-hours": "$1 {{PLURAL:$1|awr}}", + "rcfilters-quickfilters": "Ffiltrau a arbedwyd", + "rcfilters-quickfilters-placeholder-title": "Dim dolenni wedi'u cadw hyd yma", + "rcfilters-savedqueries-defaultlabel": "Ffiltrau a arbedwyd", + "rcfilters-savedqueries-rename": "Ailenwi", + "rcfilters-savedqueries-setdefault": "Gosod yn ddiofyn (''Set as default'')", + "rcfilters-savedqueries-unsetdefault": "Diddymu fel gweithred ddiofyn (''Remove as default'')", + "rcfilters-savedqueries-remove": "Cael gwared", + "rcfilters-savedqueries-new-name-label": "Enw", + "rcfilters-savedqueries-new-name-placeholder": "Disgrifiwch bwrpas y ffiltr", + "rcfilters-savedqueries-apply-label": "Crewch ffiltr", "rcfilters-restore-default-filters": "Ailosodwch y ffiltrau di-ofyn", "rcfilters-clear-all-filters": "Cliriwch yr holl hidlau (ffiltrau)", "rcfilters-search-placeholder": "Ffiltrwch y newidiadau diweddaraf", @@ -1257,19 +1284,62 @@ "rcfilters-highlightmenu-title": "Dewisiwch liw", "rcfilters-highlightmenu-help": "Dewisiwch liw sy'n cyd-fynd gyda'r nodwedd hon", "rcfilters-filterlist-noresults": "Dim hidl ar gael", - "rcfilters-filter-editsbyself-label": "Eich golygiadau chi", - "rcfilters-filter-editsbyself-description": "Golygiadau gennych chi.", - "rcfilters-filter-editsbyother-label": "Golygiadau gan eraill", - "rcfilters-filter-editsbyother-description": "Golygiadau a grewyd gan eraill (nid gennych chi).", - "rcfilters-filtergroup-userExpLevel": "Lefel profiad (defnyddwyr cofrestredig yn unig)", - "rcfilters-filter-user-experience-level-registered-label": "Cofrestr", + "rcfilters-filter-editsbyself-label": "Eich newidiadau chi", + "rcfilters-filter-editsbyself-description": "Eich cyfraniadau chi.", + "rcfilters-filter-editsbyother-label": "Newidiadau gan eraill", + "rcfilters-filter-editsbyother-description": "Pob golygiad ond nid gennych chi.", + "rcfilters-filtergroup-userExpLevel": "Cofrestriad y Defnyddiwr a'i brofiad", + "rcfilters-filter-user-experience-level-registered-label": "Cofrestrwyd", "rcfilters-filter-user-experience-level-registered-description": "Golygyddion sydd wedi mewngofnodi.", "rcfilters-filter-user-experience-level-unregistered-label": "Heb gofrestru", "rcfilters-filter-user-experience-level-unregistered-description": "Golygyddion nad ydynt wedi cofrestru.", + "rcfilters-filter-user-experience-level-newcomer-label": "Newydd-ddyfodiaid", + "rcfilters-filter-user-experience-level-newcomer-description": "Defnyddwyr cofrestredig gyda llai na 10 golygiad a 4 diwrnod o weithgaredd.", + "rcfilters-filter-user-experience-level-learner-label": "Dysgwyr", + "rcfilters-filter-user-experience-level-learner-description": "Defnyddwyr cofrestredig ble mae eu profiad yn syrthio rhwng \"Newydd-ddyfodiaid\" a \"Defnyddwyr profiadol.\"", + "rcfilters-filter-user-experience-level-experienced-label": "Defnyddwyr profiadol", + "rcfilters-filter-user-experience-level-experienced-description": "Defnyddwyr profiadol gyda mwy na 500 golygiad a 30 diwrnod o weithgaredd.", + "rcfilters-filtergroup-automated": "Cyfraniadau otomatig", + "rcfilters-filter-bots-label": "Bot", + "rcfilters-filter-bots-description": "Golygiaidau a wnaed gyda theclynnau otomatig.", + "rcfilters-filter-humans-label": "Dynol (nid bot)", + "rcfilters-filter-humans-description": "Golygiadau a wnaed gan olygyddion go-iawn.", + "rcfilters-filtergroup-reviewstatus": "Statws adolygu", "rcfilters-filter-patrolled-label": "Wedi derbyn patrol", "rcfilters-filter-patrolled-description": "Marciwyd y golygiadau fel rhai sydd wedi derbyn patrol.", + "rcfilters-filter-unpatrolled-label": "Heb ei gadarnhau (''Unpatrolled'')", "rcfilters-filter-unpatrolled-description": "Ni farciwyd y golygiadau fel rhai sydd wedi derbyn patrol.", + "rcfilters-filtergroup-significance": "Arwyddocaol", + "rcfilters-filter-minor-label": "Golygiadau bach", + "rcfilters-filter-minor-description": "Golygiadau a nodwyd gan y golygydd fel rhai bach.", + "rcfilters-filter-major-label": "Golygiadau nad ydynt yn rhai bach", + "rcfilters-filter-major-description": "Golygiadau nad ydynt yn rhai bach.", + "rcfilters-filtergroup-watchlist": "Dalennau sy'n cael eu gwylio", + "rcfilters-filter-watchlist-watched-label": "Ar y Rhestr Wylio", + "rcfilters-filter-watchlist-watched-description": "Newidiadau i'r dalennau yn eich Rhestr Wylio.", + "rcfilters-filter-watchlist-watchednew-label": "Newidiadau newydd i'ch Rhestr Wylio", + "rcfilters-filter-watchlist-notwatched-label": "Heb fod yn eich Rhestr Wylio", + "rcfilters-filter-watchlist-notwatched-description": "Popeth ar wahan i'r newidiadau i'ch Rhestr Wylio.", + "rcfilters-filtergroup-changetype": "Math o newid", + "rcfilters-filter-pageedits-label": "Golygiadau i'r ddalen", + "rcfilters-filter-pageedits-description": "Golygiadau i gynnwys wici, y sgyrsiau, categoriau...", + "rcfilters-filter-newpages-label": "Dalennau a grewyd", + "rcfilters-filter-newpages-description": "Golygiadau creu dalennau", + "rcfilters-filter-categorization-label": "Newidiadau i'r Categoriau", + "rcfilters-filter-categorization-description": "Cofnodion y dalennau a ychwanegwyd neu a symudwyd o'r categoriau.", + "rcfilters-filter-logactions-label": "Gweithredoedd a logiwyd", + "rcfilters-filtergroup-lastRevision": "Yr adolygiadau diweddaraf", + "rcfilters-filter-lastrevision-label": "Yr adolygiad diweddaraf", + "rcfilters-filter-lastrevision-description": "Dim ond yn newidiadau diweddaraf i'r ddalen.", + "rcfilters-filter-previousrevision-label": "Nid yr adolygiad diweddaraf", + "rcfilters-filter-previousrevision-description": "Pob newid nad ydynt yn yr \"adolygiad diweddaraf\".", + "rcfilters-filter-excluded": "Eithriadau", + "rcfilters-tag-prefix-namespace-inverted": ":nid $1", + "rcfilters-liveupdates-button": "Diweddariadau, byw (''Live updates'')", + "rcfilters-liveupdates-button-title-on": "Diffod y 'Diweddariadau, byw'", + "rcfilters-liveupdates-button-title-off": "Arddangos newidiadau wrth iddynt ddigwydd", "rcnotefrom": "Isod rhestrir pob newid er $3, $4 (ymddengys $1 ohonynt).", + "rclistfromreset": "Ailosod dyddiad yr hyn rydych wedi'i ddewis", "rclistfrom": "Dangos newidiadau newydd, gan ddechrau ers $3 $2", "rcshowhideminor": "$1 golygiadau bychain", "rcshowhideminor-show": "Dangoser", @@ -1292,7 +1362,7 @@ "rcshowhidecategorization": "Categoreiddio tudalen $1", "rcshowhidecategorization-show": "Dangos", "rcshowhidecategorization-hide": "Cuddio", - "rclinks": "Dangos y $1 newid diweddaraf yn ystod y(r) $2 diwrnod diwethaf", + "rclinks": "Dangos y $1 newid diweddaraf yn y $2 diwrnod diwethaf", "diff": "gwahan", "hist": "hanes", "hide": "Cuddier", @@ -1316,7 +1386,7 @@ "recentchangeslinked-page": "Tudalen:", "recentchangeslinked-to": "Dangos newidiadau i'r tudalennau â chyswllt arnynt sy'n arwain at y dudalen a enwir", "recentchanges-page-added-to-category": "Ychwanegwyd [[:$1]] at y categori", - "recentchanges-page-added-to-category-bundled": "[[:$1]] ac [[Special:WhatLinksHere/$1|{{PLURAL:$2|un ddalen|$2 dalen}}]] wedi'u hychwanegu at y categori", + "recentchanges-page-added-to-category-bundled": "ychwanegwyd [[:$1]] i'r categori, ac mae'r [[Special:WhatLinksHere/$1|ddalen hon o fewn dalennau eraill}}]]", "recentchanges-page-removed-from-category": "Symudwyd [[:$1]] o'r categori", "upload": "Uwchlwytho ffeil", "uploadbtn": "Uwchlwytho ffeil", @@ -1721,12 +1791,17 @@ "apihelp-no-such-module": "Ni chafwyd hyd i fodiwl \"$1\".", "apisandbox": "Pwll tywod API", "apisandbox-fullscreen": "Ehangu'r panel", + "apisandbox-fullscreen-tooltip": "Engangu'r blwch tywod i lenwi ffenest y porwr", "apisandbox-unfullscreen": "Dangos y ddalen", + "apisandbox-unfullscreen-tooltip": "Lleihau'r blwch tywod, er mwyn gweld y dolennau fforio (''navigation links'')", "apisandbox-submit": "Gwnewch gais", "apisandbox-reset": "Clirio", "apisandbox-retry": "Ailgeisio", "apisandbox-helpurls": "Dolennau cymorth", "apisandbox-examples": "Engreifftiau", + "apisandbox-dynamic-parameters": "Paramedrau ychwanegol", + "apisandbox-dynamic-parameters-add-label": "Ychwanegu paramedrau", + "apisandbox-dynamic-parameters-add-placeholder": "Enw'r paramedr", "apisandbox-results": "Canlyniadau", "apisandbox-continue": "Parhau", "apisandbox-continue-clear": "Clirio", @@ -1843,7 +1918,7 @@ "emailccsubject": "Copi o'ch neges at $1: $2", "emailsent": "Neges e-bost wedi'i hanfon", "emailsenttext": "Mae eich neges e-bost wedi cael ei hanfon.", - "emailuserfooter": "Danfonwyd yr ebost {{GENDER:$1|hwn}} gan $1 i {{GENDER:$2|$2}} drwy \"{{int:emailuser}}\" ar {{SITENAME}}.", + "emailuserfooter": "Danfonwyd yr ebost {{GENDER:$1|hwn}} gan $1 i {{GENDER:$2|$2}} drwy \"{{int:emailuser}}\" ar {{SITENAME}}. Os ydych {{GENDER:$2|chi'n}} ateb yr ebost hwn, yna bydd {{GENDER:$2|eich}} ebost yn cael ei danfon yn uniongyrchol i'r {{GENDER:$1|danfonwr gwreiddiol}}, ac felly'n datgelu {{GENDER:$2|eich}} cyfeiriad ebost {{GENDER:$1|iddyn nhw}}.", "usermessage-summary": "Yn gadael neges am ddigwyddiad yn y sustem.", "usermessage-editor": "Golygydd neges y system", "watchlist": "Rhestr wylio", @@ -1854,9 +1929,11 @@ "watchnologin": "Nid ydych wedi mewngofnodi", "addwatch": "Ychwanegu at y rhestr wylio", "addedwatchtext": "Mae \"[[:$1]]\" a'i dudalen Sgwrs wedi cael eu hychwanegu at eich [[Special:Watchlist|rhestr wylio]].", + "addedwatchtext-talk": "Mae \"[[:$1]]\" wedi'i ychwanegu i'ch [[Special:Watchlist|Rhestr Wylio]].", "addedwatchtext-short": "Mae'r dudalen \"$1\" wedi'i hychwanegu i'ch rhestr wylio.", "removewatch": "Tynnu oddi ar eich rhestr wylio", "removedwatchtext": "Mae'r dudalen \"[[:$1]]\" a'i thudalen Sgwrs wedi'u tynnu oddi ar [[Special:Watchlist|eich rhestr wylio]].", + "removedwatchtext-talk": "Mae \"[[:$1]]\" wedi'i ddileu o'ch [[Special:Watchlist|Rhestr Wylio]].", "removedwatchtext-short": "Mae'r dudalen \"$1\" wedi'i thynnu o'ch tudalen wylio.", "watch": "Gwylio", "watchthispage": "Gwylier y dudalen hon", @@ -1871,13 +1948,14 @@ "wlshowlast": "Dangoser newidiadau'r $1 awr ddiwethaf neu'r $2 {{PLURAL:$2|diwrnod|diwrnod|ddiwrnod|diwrnod|diwrnod|diwrnod}} diwethaf neu'r newidiadau.", "watchlist-hide": "Cuddio", "watchlist-submit": "Dangos", - "wlshowtime": "Dangos y diwethaf:", + "wlshowtime": "Dangos y cyfnod:", "wlshowhideminor": "golygiadau bychan", "wlshowhidebots": "botiau", "wlshowhideliu": "defnyddwyr cofrestredig", "wlshowhideanons": "defnyddwyr heb gofnodi", "wlshowhidepatr": "golygiadau sydd wedi derbyn patrol", "wlshowhidemine": "fy ngolygiadau", + "wlshowhidecategorization": "categori'r ddalen", "watchlist-options": "Dewisiadau ar gyfer y rhestr wylio", "watching": "Wrthi'n ychwanegu...", "unwatching": "Wrthi'n tynnu...", @@ -1895,9 +1973,10 @@ "enotif_body_intro_restored": "Adferwyd y dudalen $1 ar {{SITENAME}} ar $PAGEEDITDATE gan {{gender:$2|$2}}. Gweler y diwygiad cyfredol ohoni ar $3.", "enotif_body_intro_changed": "Newidiwyd y dudalen $1 ar {{SITENAME}} ar $PAGEEDITDATE gan {{gender:$2|$2}}. Gweler y diwygiad cyfredol ohoni ar $3.", "enotif_lastvisited": "Gwelwch $1 am bob newid ers eich ymweliad blaenorol.", - "enotif_lastdiff": "Gallwch weld y newid ar $1.", + "enotif_lastdiff": "Gallwch weld y newid ar $1", "enotif_anon_editor": "defnyddiwr anhysbys $1", "enotif_body": "Annwyl $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nCrynodeb y golygydd: $PAGESUMMARY $PAGEMINOREDIT\n\nCysylltu â'r golygydd:\ne-bost: $PAGEEDITOR_EMAIL\nwici: $PAGEEDITOR_WIKI\n\nOs bydd mwy o drin a thrafod ar y dudalen cyn i chi ymweld â hi tra eich bod wedi mewngofnodi, ni chewch ragor o negeseuon hysbysu. Nodwn bod modd i chi ailosod y fflagiau hysbysu ar eich rhestr wylio, ar gyfer y tudalennau rydych yn eu gwylio.\n\n Sustem hysbysu {{SITENAME}}\n\n--\nI newid eich gosodiadau negeseuon hysbysu, ewch i \n{{canonicalurl:{{#special:Preferences}}}}\n\nI newid eich gosodiadau gwylio, ewch i\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nI dynnu'r dudalen oddi ar eich rhestr wylio, ewch i\n$UNWATCHURL\n\nAm fwy o gymorth ac adborth:\n$HELPPAGE", + "enotif_minoredit": "Golygiad bach yw hwn", "created": "crëwyd", "changed": "Newidiwyd", "deletepage": "Dilëir y dudalen", @@ -1925,18 +2004,22 @@ "delete-toobig": "Cafwyd dros $1 {{PLURAL:$1|o olygiadau}} i'r dudalen hon.\nCyfyngwyd ar y gallu i ddileu tudalennau sydd wedi eu golygu cymaint â hyn, er mwyn osgoi amharu ar weithrediad databas {{SITENAME}} yn ddamweiniol.", "delete-warning-toobig": "Cafwyd dros $1 {{PLURAL:$1|o olygiadau}} i'r dudalen hon.\nGallai dileu tudalen, gyda hanes golygu cymaint â hyn iddi, beri dryswch i weithrediadau'r databas ar {{SITENAME}}; ewch ati'n ofalus.", "deleteprotected": "Ni allwch ddileu'r dudalen hon gan ei bod wedi'i chloi.", - "deleting-backlinks-warning": "'''Rhybudd:''' Mae [[Special:WhatLinksHere/{{FULLPAGENAME}}|tudalennau eraill]] yn cysylltu i'r dudalen yr ydych ar fin ei dileu, neu'n trawsgynnwys y dudalen hon.", + "deleting-backlinks-warning": "'''Rhybudd:''' Mae [[Special:WhatLinksHere/{{FULLPAGENAME}}|tudalennau eraill]] yn cysylltu i'r ddalen rydych ar fin ei dileu.", + "deleting-subpages-warning": "Rhybudd: Mae gan y ddalen rydych ar fin ei dileu [[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|is-ddalen|$1 is-ddalennau|51=dros 50 o is-ddalennau}}]].", "rollback": "Gwrthdroi golygiadau", "rollbacklink": "gwrthdröer", "rollbacklinkcount": "gwrthdröer $1 {{PLURAL:$1||golygiad|olygiad|golygiad}}", "rollbacklinkcount-morethan": "gwrthdröer mwy na $1 {{PLURAL:$1||golygiad|olygiad|golygiad}}", "rollbackfailed": "Methodd y gwrthdroi", + "rollback-missingparam": "Parametrau coll", + "rollback-missingrevision": "Methwyd a llwytho'r data adolygu", "cantrollback": "Wedi methu gwrthdroi'r golygiad; y cyfrannwr diwethaf oedd unig awdur y dudalen hon.", "alreadyrolled": "Nid yw'n bosib dadwneud y golygiad diwethaf i'r dudalen [[:$1|$1]] gan [[User:$2|$2]] ([[User talk:$2|Sgwrs]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);\nmae rhywun arall eisoes wedi dadwneud y golygiad neu wedi golygu'r dudalen.\n\n[[User:$3|$3]] ([[User talk:$3|Sgwrs]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) a wnaeth y golygiad diwethaf.", "editcomment": "Crynodeb y golygiad oedd: $1.", "revertpage": "Wedi gwrthdroi golygiadau gan [[Special:Contributions/$2|$2]] ([[User talk:$2|Sgwrs]]); wedi adfer y golygiad diweddaraf gan [[User:$1|$1]]", "revertpage-nouser": "Wedi gwrthdroi golygiadau gan ddefnyddiwr cudd; wedi adfer y golygiad diweddaraf gan {{GENDER:$1|[[User:$1|$1]]}}", - "rollback-success": "Gwrthdrowyd y golygiadau gan $1;\nwedi gwrthdroi i'r golygiad olaf gan $2.", + "rollback-success": "Gwrthdrowyd y golygiadau gan {{GENDER:$3|$1}};\nailosodwyd y golygiad olaf gan {{GENDER:$4|$2}}.", + "rollback-success-notify": "Gwrthdrowyd y golygiadau gan $1;\nailosodwyd y golygiad olaf gan $2. [$3 Dangoser y gwahaniaeth]", "sessionfailure-title": "Sesiwn wedi methu", "sessionfailure": "Mae'n debyg fod yna broblem gyda'ch sesiwn mewngofnodi; diddymwyd y weithred er mwyn diogelu'r sustem rhag ddefnyddwyr maleisus. Gwasgwch botwm 'nôl' eich porwr ac ail-lwythwch y dudalen honno, yna ceisiwch eto.", "changecontentmodel-title-label": "Teitl y ddalen", @@ -2016,7 +2099,7 @@ "undeleteviewlink": "gweld", "undeleteinvert": "Gwrthdroi'r dewis", "undeletecomment": "Rheswm:", - "cannotundelete": "Mae'r cais i ddad-ddileu wedi methu:\n$1", + "cannotundelete": "Methwyd a dad-ddileu rhan neu'r cyfan:\n$1", "undeletedpage": "'''Adferwyd $1'''\n\nCeir cofnod o'r tudalennau a ddilëwyd neu a adferwyd yn ddiweddar ar y [[Special:Log/delete|lòg ddileuon]].", "undelete-header": "Ewch i'r [[Special:Log/delete|lòg ddileuon]] i weld tudalennau a ddilëwyd yn ddiweddar.", "undelete-search-title": "Chwilio drwy'r tudalennau dilëedig", @@ -2207,9 +2290,9 @@ "lockedbyandtime": "(gan {{GENDER:$1|$1}} at $2 am $3)", "move-page": "Symud $1", "move-page-legend": "Symud tudalen", - "movepagetext": "Drwy ddefnyddio'r ffurflen isod, byddwch yn ailenwi tudalen, ac felly yn symud ei holl hanes i'r dudalen a'r enw newydd.\nCaiff y dudalen a'r hen deitl ei throi'n dudalen sy'n ailgyfeirio i'r teitl newydd.\nGallwch ddiweddaru tudalennau ailgyfeirio sy'n cyfeirio at y teitl gwreiddiol yn awtomatig.\nOs ydych yn dewis peidio â gwneud hyn, gwiriwch [[Special:DoubleRedirects|dudalennau ailgyfeirio dwbl]] neu \n[[Special:BrokenRedirects|dudalennau ailgyfeirio nad ydynt yn ailgyfeirio]].\nChi sy'n gyfrifol am sicrhau bod cysylltiadau yn cyfeirio at y tudalennau cywir.\n\nSylwer '''na''' chaiff y dudalen ei symud os oes tudalen a'r enw newydd ar gael yn barod, oni bai bod y dudalen a'r enw newydd yn dudalen ailgyfeirio ac nad oes hanes golygu ganddi.\nMae hyn yn golygu y gallwch ailenwi tudalen yn ôl i'w henw gwreiddiol os ydych yn gwneud camgymeriad, ond na allwch drosysgrifo tudalen sy'n bodoli'n barod.\n\n'''Rhybudd!'''\nGall hwn fod yn newid mawr ac annisgwyl i dudalen boblogaidd;\ngwnewch yn siŵr eich bod yn deall canlyniadau'r broses hon cyn i chi barhau.", + "movepagetext": "Drwy ddefnyddio'r ffurflen isod, byddwch yn ailenwi dalen, ac felly yn symud ei holl hanes i'r ddalen a'r enw newydd.\nCaiff y ddalen a'r hen deitl ei throi'n ddalen sy'n ailgyfeirio i'r teitl newydd.\nGallwch ddiweddaru dalennau ailgyfeirio sy'n cyfeirio at y teitl gwreiddiol yn awtomatig.\nOs ydych yn dewis peidio â gwneud hyn, gwiriwch [[Special:DoubleRedirects|dudalennau ailgyfeirio dwbl]] neu \n[[Special:BrokenRedirects|ddalennau ailgyfeirio nad ydynt yn ailgyfeirio]].\nChi sy'n gyfrifol am sicrhau bod cysylltiadau yn cyfeirio at y dalennau cywir.\n\nSylwer na chaiff y ddalen ei symud os oes tudalen a'r enw newydd ar gael yn barod, oni bai bod y dudalen a'r enw newydd yn dudalen ailgyfeirio ac nad yw wedi'i golygu.\n\nGallwch, felly, ailenwi tudalen yn ôl i'w henw gwreiddiol os ydych yn gwneud camgymeriad, ond na allwch drosysgrifo dalen sy'n bodoli'n barod.\n\n'''Rhybudd!'''\nGall hwn fod yn newid mawr ac annisgwyl i dudalen boblogaidd;\ngwnewch yn siŵr eich bod yn deall canlyniadau'r broses hon cyn i chi barhau.", "movepagetext-noredirectfixer": "Wrth ddefnyddio'r ffurflen isod byddwch yn ail-enwi tudalen, gan symud ei hanes gyfan i'r enw newydd.\nBydd yr hen deitl yn troi'n dudalen ailgyfeirio i'r teitl newydd.\nByddwch gystal â thrwsio [[Special:DoubleRedirects|ailgyfeiriadau dwbl]] ac [[Special:BrokenRedirects|ailgyfeiriadau tor]].\nEich cyfrifoldeb chi yw sicrhau bod cysylltiadau wici'n dal i arwain at y man iawn.\n\nSylwch '''na fydd''' y dudalen yn symud os oes yna dudalen o'r enw newydd ar gael yn barod (heblaw ei bod hi'n wag neu'n ailgyfeiriad heb unrhyw hanes golygu).\nFelly, os y gwnewch gamgymeriad wrth ail-enwi tudalen dylai fod yn bosibl ei hail-enwi eto ar unwaith wrth yr enw gwreiddiol. \nHefyd, mae'n amhosibl ysgrifennu dros ben tudalen sydd yn bodoli'n barod.\n\n'''Dalier Sylw!'''\nGall hwn fod yn newid sydyn a llym i dudalen boblogaidd;\ngwnewch yn siwr eich bod chi'n deall y canlyniadau cyn mynd ati.", - "movepagetalktext": "Bydd y dudalen sgwrs yn symud gyda'r dudalen hon '''onibai:'''\n*bod tudalen sgwrs wrth yr enw newydd yn bodoli'n barod\n*bod y blwch isod heb ei farcio.\n\nOs felly, gallwch symud y dudalen sgwrs neu ei gyfuno ar ôl symud y dudalen ei hun.", + "movepagetalktext": "Bydd y ddalen sgwrs yn symud gyda'r ddalen hon '''onibai:'''\n*bod dalen sgwrs wrth yr enw newydd yn bodoli'n barod\n*bod y blwch isod heb ei farcio.\n\nOs felly, gallwch symud y ddalen sgwrs neu ei gyfuno ar ôl symud y ddalen ei hun.", "moveuserpage-warning": "'''Sylwer:''' Yr ydych ar fin symud tudalen defnyddiwr. Sylwch mai'r dudalen yn unig a gaiff ei symud ac ''na fydd'' y defnyddiwr yn cael ei ail-enwi.", "movecategorypage-warning": "Rhybudd: Rydych ar fin dileu categori. Sylwch mai dim ond y dudalen a gaiff ei symud, a bydd y tudalennau o fewn yr hen gategori yn aros fel ag yr oeddent.", "movenologintext": "Mae'n rhaid bod yn ddefnyddiwr cofrestredig a'ch bod wedi [[Special:UserLogin|mewngofnodi]] cyn medru symud tudalen.", @@ -2219,6 +2302,7 @@ "cant-move-to-user-page": "Nid yw'r gallu ganddoch i symud tudalen i dudalen defnyddiwr (heblaw am i isdudalen defnyddiwr).", "cant-move-category-page": "Nid oes gennych yr hawl i symud categoriau.", "cant-move-to-category-page": "Nid oes gennych yr hawl i droi tudalen yn gategori.", + "cant-move-subpages": "Nid oes gennych yr hawl i symud isddalennau.", "newtitle": "Teitl newydd:", "move-watch": "Gwylier y dudalen hon", "movepagebtn": "Symud y dudalen", @@ -2242,7 +2326,7 @@ "movenosubpage": "Nid oes isdudalennau i gael i'r dudalen hon.", "movereason": "Rheswm:", "revertmove": "symud nôl", - "delete_and_move_text": "==Angen dileu==\n\nMae'r erthygl \"[[:$1]]\" yn bodoli'n barod. Ydych chi am ddileu'r erthygl er mwyn cwblhau'r symudiad?", + "delete_and_move_text": "==Angen dileu==\n\nMae'r erthygl \"[[:$1]]\" yn bodoli'n barod. Ydych chi am ddileu'r erthygl er mwyn paratoi lle?", "delete_and_move_confirm": "Ie, dileu'r dudalen", "delete_and_move_reason": "Wedi'i dileu er mwyn gallu symud y dudalen \"[[$1]]\" i gymryd ei lle", "selfmove": "Mae'r teitlau hen a newydd yn union yr un peth;\nnid yw'n bosib cyflawnu'r symud.", @@ -2260,7 +2344,7 @@ "move-leave-redirect": "Creu tudalen ail-gyfeirio â'r teitl gwreiddiol", "protectedpagemovewarning": "'''Sylwer:''' Clowyd y dudalen ac felly dim ond defnyddwyr a galluoedd gweinyddu ganddynt sy'n gallu ei symud.\nDyma'r cofnod lòg diweddaraf, er gwybodaeth:", "semiprotectedpagemovewarning": "'''Sylwer:''' Clowyd y dudalen ac felly dim ond defnyddwyr mewngofnodedig sy'n gallu ei symud.\nDyma'r cofnod lòg diweddaraf, er gwybodaeth:", - "move-over-sharedrepo": "== Y ffeil ar gael ==\nMae'r ffeil [[:$1]] ar gael mewn storfa gyfrannol. Pe byddech yn symud y ffeil i'r teitl hwn, yna byddai'r ffeil o'r storfa gyfrannol yn cael ei disodli.", + "move-over-sharedrepo": "Mae'r ffeil [[:$1]] ar gael mewn storfa gyfrannol. Pe byddech yn symud y ffeil i'r teitl hwn, yna byddai'r ffeil o'r storfa gyfrannol yn cael ei disodli.", "file-exists-sharedrepo": "Mae'r enw y dewisoch ar y ffeil yn cael ei ddefnyddio'n barod ar storfa gyfrannol.\nDewiswch enw arall os gwelwch yn dda.", "export": "Allforio tudalennau", "exporttext": "Gallwch allforio testun a hanes golygu tudalen penodol neu set o dudalennau wedi'u lapio mewn côd XML. Gall hwn wedyn gael ei fewnforio i wici arall sy'n defnyddio meddalwedd MediaWiki, trwy ddefnyddio'r [[Special:Import|dudalen mewnforio]].\n\nI allforio tudalennau, teipiwch y teitlau yn y bocs testun isod, bobi linell i'r teitlau; a dewis p'un ai ydych chi eisiau'r diwygiad presennol a'r holl fersiynnau blaenorol, gyda hanes y dudalen; ynteu a ydych am y diwygiad presennol a'r wybodaeth am y golygiad diweddaraf yn unig.\n\nYn achos yr ail ddewis, mae modd defnyddio cyswllt, e.e. [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] ar gyfer y dudalen \"[[{{MediaWiki:Mainpage}}]]\".", @@ -2339,7 +2423,7 @@ "import-nonewrevisions": "Ni fewnforwyd unrhyw ddiwygiadau (y cwbl eisoes yn bresennol, neu wedi eu hepgor oherwydd eu bod yn wallus).", "xml-error-string": "$1 ar linell $2, col $3 (beit $4): $5", "import-upload": "Uwchlwytho data XML", - "import-token-mismatch": "Collwyd y data.\n\nEfallai i chi allgofnodi (logio allan).Cadarnhewch eich bod yn dal wedi mewngofnodi a cheisiwch eto\nOs yw'n parhau i fethu, ceisiwch [[Special:UserLogout|allgofnodi]] a mewngofnodwch drachefn, a gwirwch fod eich porwr yn caniatau cwcis o'r wefan hon.", + "import-token-mismatch": "Collwyd y data.\n\nEfallai i chi allgofnodi. '''Cadarnhewch eich bod yn dal wedi mewngofnodi a cheisiwch eto'''.\nOs yw'n parhau i fethu, ceisiwch [[Special:UserLogout|allgofnodi]] a mewngofnodwch drachefn, a gwirwch fod eich porwr yn caniatau cwcis o'r wefan hon.", "import-invalid-interwiki": "Ni ellir uwchlwytho o'r wici dewisedig.", "import-error-edit": "Ni fewnforiwyd y dudalen \"$1\" oherwydd nad yw'r gallu i'w golygu gennych.", "import-error-create": "Ni fewnforiwyd y dudalen \"$1\" oherwydd nad yw'r hawl i'w chreu gennych.", @@ -2365,7 +2449,9 @@ "tooltip-pt-preferences": "Eich dewisiadau", "tooltip-pt-watchlist": "Rydych yn dilyn hynt y tudalennau sydd ar y rhestr hon", "tooltip-pt-mycontris": "Rhestr o'ch cyfraniadau", + "tooltip-pt-anoncontribs": "Rhestr golygiadau o'r cyfeiriad IP hwn", "tooltip-pt-login": "Fe'ch anogir i fewngofnodi, er nad oes rhaid gwneud.", + "tooltip-pt-login-private": "Mae'n rhaid i chi fewngofnodi i ddefnyddio'r wici hwn", "tooltip-pt-logout": "Allgofnodi", "tooltip-pt-createaccount": "Rydym yn argymell eich bod yn creu cyfri ac yn menwgofnodi. Fodd bynnag, dydy hyn ddim yn orfodol", "tooltip-ca-talk": "Sgwrsio am y dudalen", @@ -2396,7 +2482,7 @@ "tooltip-feed-rss": "Porthiant RSS ar gyfer y dudalen hon", "tooltip-feed-atom": "Porthiant atom ar gyfer y dudalen hon", "tooltip-t-contributions": "Rhestr o gyfraniadau'r {{GENDER:$1|defnyddiwr hwn}}", - "tooltip-t-emailuser": "Anfonwch e-bost at y defnyddiwr hwn", + "tooltip-t-emailuser": "Anfonwch e-bost at {{GENDER:$1|y defnyddiwr hwn}}", "tooltip-t-info": "Mwy o wybodaeth am y dudalen hon", "tooltip-t-upload": "Uwchlwythwch ffeil delwedd, sain, fideo, ayb", "tooltip-t-specialpages": "Rhestr o'r holl dudalennau arbennig", @@ -2434,7 +2520,7 @@ "lastmodifiedatby": "Newidiwyd y dudalen hon ddiwethaf am $2, $1 gan $3.", "othercontribs": "Yn seiliedig ar waith gan $1.", "others": "eraill", - "siteusers": "y {{PLURAL:$2|defnyddiwr|defnyddiwr|defnyddwyr|defnyddwyr|defnyddwyr|defnyddwyr}} {{SITENAME}} $1", + "siteusers": "{{SITENAME}} {{PLURAL:$2|{{GENDER:$1|defnyddiwr}}|defnyddwyr}} $1", "anonusers": "{{PLURAL:$2|defnyddiwr|defnyddiwr|defnyddwyr|defnyddwyr|defnyddwyr|defnyddwyr}} {{SITENAME}} anhysbys $1", "creditspage": "Cydnabyddiaethau'r dudalen", "nocredits": "Does dim cydnabyddiaethau i'r dudalen hon.", @@ -2457,11 +2543,14 @@ "pageinfo-length": "Hyd y dudalen (beitiau)", "pageinfo-article-id": "ID y dudalen", "pageinfo-language": "Iaith cynnwys y dudalen", + "pageinfo-language-change": "newid", "pageinfo-content-model": "Ffurf cynnwys y dudalen", + "pageinfo-content-model-change": "newid", "pageinfo-robot-policy": "Rhestrwyd gan robot", "pageinfo-robot-index": "Caniateir", "pageinfo-robot-noindex": "Gwrthodedig", "pageinfo-watchers": "Nifer gwylwyr y dudalen", + "pageinfo-visiting-watchers": "Nifer y golygyddion sy'n gwylio'r ddalen, sydd hefyd wedi ymweld a'r golygiadau diweddaraf", "pageinfo-few-watchers": "Llai na $1 {{PLURAL:$1|gwyliwr|gwyliwr|wyliwr|gwyliwr|o wylwyr}}", "pageinfo-redirects-name": "Nifer yr ailgyfeiriadau i'r dudalen hon", "pageinfo-subpages-name": "Nifer yr is-dudalennau i'r dudalen hon", @@ -2487,9 +2576,11 @@ "pageinfo-protect-cascading-yes": "Oes", "pageinfo-protect-cascading-from": "Mae'r diogelu sgydol yn dechrau ar", "pageinfo-category-info": "Gwybodaeth am y categori", + "pageinfo-category-total": "Cyfanswm yr aelodau", "pageinfo-category-pages": "Nifer y tudalennau", "pageinfo-category-subcats": "Nifer yr is-gategorïau", "pageinfo-category-files": "Nifer y ffeiliau", + "pageinfo-user-id": "ID'r defnyddiwr", "markaspatrolleddiff": "Marcio ei bod wedi derbyn ymweliad patrôl", "markaspatrolledtext": "Marcio bod y dudalen wedi derbyn ymweliad patrôl", "markaspatrolledtext-file": "Marcio fod fersiwn y ffeil wedi cael ymweliad", @@ -2505,6 +2596,8 @@ "patrol-log-page": "Lòg patrolio", "patrol-log-header": "Mae'r lòg hwn yn dangos y golygiadau sydd wedi derbyn ymweliad patrôl.", "log-show-hide-patrol": "$1 lòg patrolio", + "confirm-markpatrolled-button": "Iawn", + "confirm-markpatrolled-top": "Nodi fod diwygiad $3 o $2 wedi cael sêl-bendith golygydd?", "deletedrevision": "Wedi dileu hen ddiwygiad $1.", "filedeleteerror-short": "Gwall wrth ddileu'r ffeil: $1", "filedeleteerror-long": "Cafwyd gwallau wrth ddileu'r ffeil:\n\n$1", @@ -2527,6 +2620,7 @@ "svg-long-error": "Ffeil SVG annilys: $1", "show-big-image": "Y ffeil gwreiddiol", "show-big-image-preview": "Maint y rhagolwg: $1.", + "show-big-image-preview-differ": "Maint rhagolwg $3 o ffeil $2 yw: $1.", "show-big-image-other": "{{PLURAL:$2|Datrysiad arall|Datrysiad arall|Datrysiadau eraill|Datrysiadau eraill|Datrysiadau eraill|Datrysiadau eraill}}: $1.", "show-big-image-size": "$1 × $2 picsel", "file-info-gif-looped": "dolennog", @@ -2541,8 +2635,13 @@ "newimages-summary": "Mae'r dudalen arbennig hon yn dangos y ffeiliau a uwchlwythwyd yn ddiweddar.", "newimages-legend": "Hidlo", "newimages-label": "Enw'r ffeil (neu ran ohono):", + "newimages-user": "Cyfeiriad IP neu enw defnyddiwr", + "newimages-newbies": "Dangos cyfraniadau cyfrifon newydd yn unig", "newimages-showbots": "Dangoswch uwchlwythiadau'r botiaid", + "newimages-hidepatrolled": "Cuddio uwchlwythiadau gwaith a ddilyswyd gan olygydd profiadol", + "newimages-mediatype": "Math o gyfrwng:", "noimages": "Does dim byd i'w weld.", + "gallery-slideshow-toggle": "Toglwch y cipluniau", "ilsubmit": "Chwilio", "bydate": "yn ôl dyddiad", "sp-newimages-showfrom": "Dangos ffeiliau sy'n newydd ers: $2, $1", @@ -2757,6 +2856,7 @@ "exif-compression-4": "Amgodio ffacs Grŵp 4 CCITT", "exif-copyrighted-true": "Hawlfraint", "exif-copyrighted-false": "Statws yr hawlfraint heb ei osod", + "exif-photometricinterpretation-1": "Du a gwyn (du yw 0)", "exif-unknowndate": "Dyddiad anhysbys", "exif-orientation-1": "Normal", "exif-orientation-2": "Wedi troi tu chwith ar lorwedd", @@ -2933,13 +3033,17 @@ "confirmemail_body_set": "Mae rhywun (chi, yn fwy na thebyg, o'r cyfeiriad IP $1) wedi gosod cyfeiriad e-bost y cyfrif \"$2\" ar {{SITENAME}} i'r cyfeiriad e-bost hwn.\n\nI gadarnhau mai chi yn wir yw perchennog y cyfrif hwn, ac i alluogi nodweddion e-bost ar {{SITENAME}}, agorwch y cyswllt hwn yn eich porwr:\n\n$3\n\nOs *nad* chi sydd berchen y cyfrif hwn, dilynwch y cyswllt hwn er mwyn diddymu cadarnhad y cyfeiriad e-bost:\n\n$5\n\nBydd y côd cadarnhau yn dod i ben am $4.", "confirmemail_invalidated": "Diddymwyd y weithred o gadarnhau'r cyfeiriad e-bost", "invalidateemail": "Diddymu cadarnhad y cyfeiriad e-bost.", + "notificationemail_subject_changed": "Mae cyfeiriad ebost {{SITENAME}} wedi'i newid", + "notificationemail_subject_removed": "Mae cyfeiriad ebost {{SITENAME}} wedi'i ddileu", + "notificationemail_body_changed": "Mae rhywun, efallai chi, o gyfeiriad IP $1,\nwedi newid cyfeiriad ebost cyfrif \"$2\" i \"$3\" ar {{SITENAME}}.\n\nOs nad y chi sy'n gyfrifol am hyn, yna cysylltwch ag un o'r Gweinyddwyr ar unwaith.", + "notificationemail_body_removed": "Mae rhywun, efallai chi, o gyfeiriad IP $1,\nwedi dileu cyfeiriad ebost cyfrif \"$2\" ar {{SITENAME}}.\n\nOs nad y chi sy'n gyfrifol am hyn, yna cysylltwch ag un o'r Gweinyddwyr ar unwaith.", "scarytranscludedisabled": "[Analluogwyd cynhwysiad rhyng-wici]", "scarytranscludefailed": "[Methwyd nôl y nodyn ar gyfer $1]", "scarytranscludefailed-httpstatus": "[Methwyd nôl y nodyn ar gyfer $1: HTTP $2]", "scarytranscludetoolong": "[Mae'r URL yn rhy hir]", "deletedwhileediting": "'''Rhybudd''': Dilëwyd y dudalen wedi i chi ddechrau ei golygu!", - "confirmrecreate": "Mae'r defnyddiwr [[User:$1|$1]] ([[User talk:$1|Sgwrs]]) wedi dileu'r dudalen hon ers i chi ddechrau ei golygu. Y rheswm a roddwyd yw:\n: ''$2''\nCadarnhewch eich bod chi wir am ail-greu'r dudalen.", - "confirmrecreate-noreason": "Dileodd y defnyddiwr [[User:$1|$1]] ([[User talk:$1|sgwrs]]) y dudalen hon wedi i chi ddechrau ei golygu. Cadarnhewch eich bod chi wir am ail-greu'r dudalen hon.", + "confirmrecreate": "Mae defnyddiwr [[User:$1|$1]] ([[User talk:$1|Sgwrs]]) wedi dileu'r ddalen hon ers i chi ddechrau ei golygu. Y rheswm a roddwyd yw:\n: $2\nCadarnhewch eich bod chi am ail-greu'r dudalen.", + "confirmrecreate-noreason": "Dileodd y defnyddiwr [[User:$1|$1]] ([[User talk:$1|sgwrs]]) y ddalen hon wedi i chi ddechrau ei golygu. Cadarnhewch eich bod chi am ail-greu'r ddalen hon.", "recreate": "Ail-greu", "confirm-purge-title": "Ailgyrchu'r ddalen", "confirm_purge_button": "Iawn", @@ -3005,6 +3109,7 @@ "timezone-local": "Lleol", "duplicate-defaultsort": "Rhybudd: Mae'r allwedd trefnu diofyn \"$2\" yn gwrthwneud yr allwedd trefnu diofyn blaenorol \"$1\".", "duplicate-displaytitle": "Gofal: Mae arddangos \"$2\" yn clirio'r arddangosiadau cynharach \"$1\".", + "restricted-displaytitle": "Rhybudd: Mae'n rhaid i'r teitl a anrddangosir \"$1\" fod yn hafal i union deitl y ddalen; anwybyddwyd y cais i'w newid.", "invalid-indicator-name": "Gan bwyll: Ni ddylid gadael y man nodi statws name yn wag.", "version": "Fersiwn", "version-extensions": "Estyniadau gosodedig", @@ -3051,8 +3156,8 @@ "version-libraries-license": "Trwydded", "version-libraries-description": "Disgrifiad", "version-libraries-authors": "Awduron", - "redirect": "Ailgyfeirio yn ôl enw ffeil, defnyddiwr, tudalen neu ID y diwygiad", - "redirect-summary": "Mae'r dudalen arbennig hon yn ailgyfeirio at ffeil (o roi enw'r ffeil), at dudalen (o roi ID rhyw ddiwygiad o'r dudalen neu ID y dudalen), neu at dudalen defnyddiwr (o roi rhif ID y defnyddiwr).\nDefnydd: \n[[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], neu [[{{#Special:Redirect}}/user/101]].", + "redirect": "Ailgyfeirio yn ôl enw ffeil, defnyddiwr, dalen neu log yr ID", + "redirect-summary": "Mae'r ddalen arbennig hon yn ailgyfeirio at ffeil (o roi enw'r ffeil), at ddalen (o roi ID rhyw ddiwygiad o'r ddalen neu ID y dudalen), neu at ddalen defnyddiwr (o roi rhif ID y defnyddiwr).\nDefnydd: \n[[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], neu [[{{#Special:Redirect}}/user/101]].", "redirect-submit": "Ati", "redirect-lookup": "Chwilio drwy:", "redirect-value": "Chwilio am:", @@ -3060,6 +3165,7 @@ "redirect-page": "ID tudalennau", "redirect-revision": "Rhifau diwygiadau tudalennau", "redirect-file": "Enwau ffeiliau", + "redirect-logid": "Log yr ID", "redirect-not-exists": "Heb lwyddo i'w ganfod", "fileduplicatesearch": "Chwilio am ffeiliau dyblyg", "fileduplicatesearch-summary": "Chwilier am ffeiliau dyblyg ar sail ei werth stwnsh.", @@ -3071,6 +3177,7 @@ "fileduplicatesearch-noresults": "Ni ddaethpwyd o hyd i ffeil o'r enw \"$1\".", "specialpages": "Tudalennau arbennig", "specialpages-note-top": "Allwedd", + "specialpages-note-restricted": "* Tudalennau arbennig agored.\n* Tudalennau arbennig a gyfyngir.", "specialpages-group-maintenance": "Adroddiadau cynnal a chadw", "specialpages-group-other": "Eraill", "specialpages-group-login": "Mewngofnodi / creu cyfrif", @@ -3116,6 +3223,8 @@ "tags-create-reason": "Rheswm:", "tags-create-submit": "Dechrau", "tags-create-no-name": "Mae'n rhaid nodi tag enw.", + "tags-create-already-exists": "Mae tag \"$1\" yn bodoli'n barod.", + "tags-delete-title": "Dileu tag", "comparepages": "Cymharu tudalennau", "compare-page1": "Tudalen 1", "compare-page2": "Tudalen 2", @@ -3125,6 +3234,7 @@ "compare-invalid-title": "Ysgrifennwyd teitl annilys.", "compare-title-not-exists": "Nid yw'r teitl a enwyd ar gael.", "compare-revision-not-exists": "Nid yw'r diwygiad a enwyd ar gael.", + "diff-form": "'''ffurflen'''", "dberr-problems": "Mae'n ddrwg gennym! Mae'r wefan hon yn dioddef anawsterau technegol.", "dberr-again": "Oedwch am ychydig funudau cyn ceisio ail-lwytho.", "dberr-info": "(Ni ellir cysylltu â chronfa ddata: $1)", @@ -3150,7 +3260,7 @@ "htmlform-cloner-required": "Mae angen o leiaf un peth!", "htmlform-title-not-exists": "Nid yw $1 yn bodoli.", "logentry-delete-delete": "Dileodd $1 dudalen $3", - "logentry-delete-restore": "Adferodd $1 y dudalen $3", + "logentry-delete-restore": "Adferodd $1 ddalen $3 ($4)", "logentry-delete-event": "Newidiodd $1 ymddangosiad {{PLURAL:$5||cofnod lòg|$5 gofnod lòg|$5 chofnod lòg|$5 chofnod lòg|$5 cofnod lòg}} ar $3: $4", "logentry-delete-revision": "{{GENDER:$2|Newidiodd}} $1 ymddangosiad {{PLURAL:$5||diwygiad|$5 ddiwygiad|$5 diwygiad}} o'r dudalen $3: $4", "logentry-delete-event-legacy": "{{GENDER:$2|Newidiodd}} $1 welededd cofnodion lòg ar $3", @@ -3193,6 +3303,7 @@ "feedback-bugornote": "Os ydych yn barod i ddisgrifio problem technegol yn fanwl gallwch [$1 gyflwyno adroddiad am y bỳg]. Fel arall, gallwch ddefnyddio'r ffurflen syml isod. Fe roddir eich sylwadau ar y dudalen \"[$3 $2]\", ynghyd â'ch enw defnyddiwr ac enw'r gweinydd sydd ar waith gennych.", "feedback-cancel": "Diddymer", "feedback-close": "Yn barod", + "feedback-dialog-title": "Rhowch adborth", "feedback-error1": "Gwall: Canlyniad anhysbys o'r API", "feedback-error2": "Gwall: Methodd y golygu", "feedback-error3": "Gwall: Dim ymateb gan yr API", @@ -3201,7 +3312,7 @@ "feedback-submit": "Cyflwyner", "feedback-thanks": "Diolch! Gosodwyd eich adborth ar y dudalen \"[$2 $1]\".", "feedback-thanks-title": "Diolch o galon!", - "searchsuggest-search": "Chwilio", + "searchsuggest-search": "Chwilio {{SITENAME}}", "searchsuggest-containing": "yn cynnwys...", "api-error-badtoken": "Gwall mewnol: tocyn gwael.", "api-error-emptypage": "Ni chaniateir dechrau tudalen newydd, a honno'n wag.", @@ -3303,20 +3414,28 @@ "special-characters-title-endash": "heiffen en", "special-characters-title-emdash": "heiffen em", "special-characters-title-minus": "arwydd minws", + "mw-widgets-dateinput-no-date": "Ni ddewisiwyd dyddiad", "mw-widgets-dateinput-placeholder-day": "BBBB-MM-DD", "mw-widgets-dateinput-placeholder-month": "BBBB-MM", + "mw-widgets-mediasearch-input-placeholder": "Chwiliwch am gyfryngau", + "mw-widgets-mediasearch-noresults": "Dim canlyniad.", + "mw-widgets-titleinput-description-new-page": "nid yw'r ddalen wedi'i chreu eto", + "mw-widgets-titleinput-description-redirect": "ailgyfeiriwyd i $1", "mw-widgets-categoryselector-add-category-placeholder": "Ychwanega gategori...", "mw-widgets-usersmultiselect-placeholder": "Ychwanega ragor...", "date-range-from": "O'r dyddiad:", "date-range-to": "Hyd at y dydiad:", + "randomrootpage": "Dalen graidd ar hap", "log-action-filter-block": "Math o floc:", "log-action-filter-block-block": "Bloc", "log-action-filter-block-reblock": "Newid y bloc", "log-action-filter-block-unblock": "Dadflocio", "log-action-filter-delete-delete": "Dileu dalennau", + "authmanager-retype-help": "Rhowch eich cyfrinair eto, i gadarnhau.", "authmanager-email-label": "Ebost", "authmanager-email-help": "Cyfeiriadau ebyst", "authmanager-realname-label": "Enw cywir", "authmanager-realname-help": "Enw cywir y defnyddiwr", + "authmanager-provider-temporarypassword": "Cyfrinair dros-dro", "credentialsform-account": "Enw'r cyfri:" } diff --git a/languages/i18n/da.json b/languages/i18n/da.json index 2c080f663b..453af88fc7 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,6 +568,7 @@ "botpasswords-label-delete": "Slet", "botpasswords-label-resetpassword": "Nulstil adgangskode", "botpasswords-label-grants": "Tilgængelige bevillinger:", + "botpasswords-bad-appid": "Robotnavnet »$1« er ikke gyldigt.", "botpasswords-created-title": "Botkodeord oprettet", "botpasswords-updated-title": "Bot kodeord opdateret", "botpasswords-deleted-title": "Bot kodeord slettet", @@ -1298,8 +1300,17 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (se også [[Special:NewPages|listen over nye sider]])", "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Vis", + "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-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 +1318,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.", @@ -1727,6 +1740,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 +1855,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 +2043,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 +2073,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 +2091,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 +2470,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 +2653,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 +2713,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 +3109,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 +3171,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 +3231,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 +3281,36 @@ "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-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 +3321,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 +3511,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 +3541,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 4693a0e84e..391963eb41 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", @@ -126,6 +127,7 @@ "tog-watchlisthideminor": "Kleine Bearbeitungen in der Beobachtungsliste ausblenden", "tog-watchlisthideliu": "Bearbeitungen angemeldeter Benutzer in der Beobachtungsliste ausblenden", "tog-watchlistreloadautomatically": "Sofern ein Filter geändert wurde, die Beobachtungsliste automatisch neu laden (erfordert JavaScript)", + "tog-watchlistunwatchlinks": "Direkte Links zum (Ent-)Beobachten bei Einträgen in der Beobachtungsliste hinzufügen (für diese Funktion ist JavaScript erforderlich)", "tog-watchlisthideanons": "Bearbeitungen anonymer Benutzer (IP-Adressen) in der Beobachtungsliste ausblenden", "tog-watchlisthidepatrolled": "Kontrollierte Änderungen in der Beobachtungsliste ausblenden", "tog-watchlisthidecategorization": "Kategorisierungen von Seiten in der Beobachtungsliste ausblenden", @@ -776,8 +778,8 @@ "permissionserrorstext-withaction": "Du bist aus {{PLURAL:$1|dem folgenden Grund|den folgenden Gründen}} nicht berechtigt, $2:", "contentmodelediterror": "Du kannst diese Version nicht bearbeiten, da das Inhaltsmodell $1 vom aktuellen Inhaltsmodell der Seite $2 abweicht.", "recreate-moveddeleted-warn": "Achtung: Du erstellst eine Seite, die bereits früher gelöscht wurde.\n\nBitte prüfe sorgfältig, ob die erneute Seitenerstellung den Richtlinien entspricht.\nZu deiner Information folgt das Lösch- und Verschiebungs-Logbuch mit der Begründung für die vorhergehende Löschung:", - "moveddeleted-notice": "Diese Seite wurde gelöscht.\nZur Information folgt das Lösch- und Verschiebungs-Logbuch dieser Seite.", - "moveddeleted-notice-recent": "Diese Seite wurde kürzlich gelöscht (innerhalb der letzten 24 Stunden).\nZur Information folgt das Lösch- und Verschiebungs-Logbuch dieser Seite.", + "moveddeleted-notice": "Diese Seite wurde gelöscht.\nZur Information folgt das Lösch-, Seitenschutz- und Verschiebungs-Logbuch dieser Seite.", + "moveddeleted-notice-recent": "Diese Seite wurde kürzlich gelöscht (innerhalb der letzten 24 Stunden).\nZur Information folgt das Lösch-, Seitenschutz- und Verschiebungs-Logbuch dieser Seite.", "log-fulllog": "Alle Logbucheinträge ansehen", "edit-hook-aborted": "Die Bearbeitung wurde ohne Erklärung durch eine Schnittstelle abgebrochen.", "edit-gone-missing": "Die Seite konnte nicht aktualisiert werden.\nSie wurde anscheinend gelöscht.", @@ -1364,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", @@ -1376,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.", @@ -1393,7 +1397,6 @@ "rcfilters-restore-default-filters": "Standardfilter wiederherstellen", "rcfilters-clear-all-filters": "Alle Filter löschen", "rcfilters-show-new-changes": "Neueste Änderungen ansehen", - "rcfilters-previous-changes-label": "Zuletzt angesehene Änderungen", "rcfilters-search-placeholder": "Letzte Änderungen filtern (durchsuchen oder beginne mit der Eingabe)", "rcfilters-invalid-filter": "Ungültiger Filter", "rcfilters-empty-filter": "Keine aktiven Filter. Es werden alle Beiträge angezeigt.", @@ -1406,7 +1409,7 @@ "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,7 @@ "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", "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.", @@ -2677,7 +2686,7 @@ "import-nonewrevisions": "Es wurden keine Versionen importiert. Entweder waren alle bereits vorhanden oder wurden aufgrund von Fehlern übersprungen.", "xml-error-string": "$1 Zeile $2, Spalte $3, (Byte $4): $5", "import-upload": "XML-Dateien importieren", - "import-token-mismatch": "Die Sitzungsdaten sind verloren gegangen.\n\nDu wurdest eventuell abgemeldet. Bitte verifiziere, dass du noch angemeldet bist und versuche es erneut.\nFalls dies nicht funktioniert, versuche dich [[Special:UserLogout|abzumelden]] und anschließend wieder anzumelden und überprüfe, ob dein Browser Cookies von dieser Website akzeptiert.", + "import-token-mismatch": "Die Sitzungsdaten sind verloren gegangen.\n\nDu wurdest eventuell abgemeldet. '''Bitte verifiziere, dass du noch angemeldet bist und versuche es erneut'''.\nFalls dies nicht funktioniert, versuche dich [[Special:UserLogout|abzumelden]] und anschließend wieder anzumelden und überprüfe, ob dein Browser Cookies von dieser Website akzeptiert.", "import-invalid-interwiki": "Aus dem angegebenen Wiki ist kein Import möglich.", "import-error-edit": "Die Seite „$1“ wurde nicht importiert, da du nicht berechtigt bist, sie zu bearbeiten.", "import-error-create": "Die Seite „$1“ wurde nicht importiert, da du nicht berechtigt bist, sie zu erstellen.", @@ -3591,6 +3600,13 @@ "compare-invalid-title": "Der angegebene Seitenname ist ungültig.", "compare-title-not-exists": "Der angegebene Seitenname ist nicht vorhanden.", "compare-revision-not-exists": "Die angegebene Version ist nicht vorhanden.", + "diff-form": "Unterschiede", + "diff-form-oldid": "Alte Versionskennung (optional)", + "diff-form-revid": "Versionskennung des Unterschieds", + "diff-form-submit": "Unterschiede anzeigen", + "permanentlink": "Permanenter Link", + "permanentlink-revid": "Versionskennung", + "permanentlink-submit": "Gehe zu Version", "dberr-problems": "Entschuldigung. Diese Seite hat momentan technische Schwierigkeiten.", "dberr-again": "Warte einige Minuten und versuche dann neu zu laden.", "dberr-info": "(Auf die Datenbank konnte nicht zugegriffen werden: $1)", 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 ad4e4236ca..62bbc75d64 100644 --- a/languages/i18n/el.json +++ b/languages/i18n/el.json @@ -53,7 +53,8 @@ "GR", "Thodoris", "Ftsalamp", - "Kostas20142" + "Kostas20142", + "Nikosgranturismogt" ] }, "tog-underline": "Υπογράμμιση συνδέσμων:", @@ -426,7 +427,7 @@ "createacct-another-username-ph": "Εισαγάγετε το όνομα χρήστη", "yourpassword": "Κωδικός:", "userlogin-yourpassword": "Κωδικός", - "userlogin-yourpassword-ph": "Εισαγάγετε τον κωδικό σας", + "userlogin-yourpassword-ph": "Εισαγάγετε το συνθηματικό σας", "createacct-yourpassword-ph": "Εισαγωγή κωδικού", "yourpasswordagain": "Επαναπληκτρολόγηση κωδικού:", "createacct-yourpasswordagain": "Επιβεβαίωση κωδικού", @@ -480,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|συνδεθείτε με το χέρι]].", @@ -500,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Σας παρακαλούμε να ξανασυνδεθείτε μόλις τον λάβετε.", @@ -535,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": "Συνθηματικά για ρομπότ", @@ -579,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": "Αν υπάρχει μια διεύθυνση ηλεκτρονικού ταχυδρομείου που συνδέεται με αυτό το όνομα χρήστη, τότε θα σας αποσταλεί ένα μήνυμα ηλεκτρονικού ταχυδρομείου για την επαναφορά του κωδικού πρόσβασης.", @@ -776,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", @@ -989,7 +990,7 @@ "prefs-labs": "Λειτουργίες των Labs", "prefs-user-pages": "Σελίδες του χρήστη", "prefs-personal": "Στοιχεία χρήστη", - "prefs-rc": "Πρόσφατες αλλαγές και εμφάνιση πολύ σύντομων άρθρων", + "prefs-rc": "Πρόσφατες αλλαγές", "prefs-watchlist": "Λίστα παρακολούθησης", "prefs-editwatchlist": "Επεξεργασία λίστας παρακολούθησης", "prefs-editwatchlist-label": "Επεξεργασία καταχωρίσεων στη λίστα παρακολούθησής σας:", @@ -1067,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": "Βασικές πληροφορίες", @@ -1312,8 +1313,17 @@ "recentchanges-legend-plusminus": "(±123)", "recentchanges-submit": "Προβολή", "rcfilters-activefilters": "Ενεργά φίλτρα", + "rcfilters-advancedfilters": "Σύνθετα Φίλτρα", + "rcfilters-limit-title": "Αλλαγές για εμφάνιση", + "rcfilters-days-title": "Πρόσφατες ημέρες", + "rcfilters-hours-title": "Πρόσφατες ώρες", + "rcfilters-days-show-days": "$1 {{PLURAL:$1|μέρα|μέρες}}", + "rcfilters-days-show-hours": "$1 {{PLURAL:$1|ώρα|ώρες}}", + "rcfilters-quickfilters": "Αποθηκευμένα φίλτρα", "rcfilters-savedqueries-rename": "Μετονομασία", "rcfilters-savedqueries-setdefault": "Ορισμός ως προεπιλογή", + "rcfilters-savedqueries-remove": "Αφαίρεση", + "rcfilters-savedqueries-new-name-label": "Όνομα", "rcfilters-restore-default-filters": "Επαναφορά προεπιλεγμένων φίλτρων", "rcfilters-clear-all-filters": "Εκκαθάριση όλων των φίλτρων", "rcfilters-search-placeholder": "Φιλτράρισμα πρόσφατων αλλαγών (περιηγηθείτε ή αρχίστε να πληκτρολογείτε)", @@ -3349,6 +3359,7 @@ "compare-invalid-title": "Ο τίτλος που καθορίσατε δεν είναι έγκυρος.", "compare-title-not-exists": "Ο τίτλος που καθορίσατε δεν υπάρχει.", "compare-revision-not-exists": "Η αναθεώρηση που καθορίσατε δεν υπάρχει.", + "diff-form": "μια '''φόρμα'''", "dberr-problems": "Λυπούμαστε! Αυτός ο ιστότοπος αντιμετωπίζει τεχνικές δυσκολίες.", "dberr-again": "Δοκιμάστε να περιμενένετε λίγα λεπτά και να ανανεώσετε.", "dberr-info": "(Δεν είναι δυνατή η πρόσβαση στη βάση δεδομένων: $1)", diff --git a/languages/i18n/en-gb.json b/languages/i18n/en-gb.json index 53f98f917a..f2a51b92b5 100644 --- a/languages/i18n/en-gb.json +++ b/languages/i18n/en-gb.json @@ -30,7 +30,9 @@ "Anomie", "Dr. Shikha Jaggi", "Xð", - "Matma Rex" + "Matma Rex", + "Dejavu", + "Jdforrester" ] }, "tog-underline": "Link underlining:", @@ -60,14 +62,16 @@ "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", "tog-watchlisthideminor": "Hide minor edits from the watchlist", "tog-watchlisthideliu": "Hide edits by logged in users from the watchlist", + "tog-watchlistreloadautomatically": "Reload the watchlist automatically whenever a filter is changed (JavaScript required)", "tog-watchlisthideanons": "Hide edits by anonymous users from the watchlist", "tog-watchlisthidepatrolled": "Hide patrolled edits from the watchlist", + "tog-watchlisthidecategorization": "Hide categorization of pages", "tog-ccmeonemails": "Send me copies of emails I send to other users", "tog-diffonly": "Do not show page content below diffs", "tog-showhiddencats": "Show hidden categories", @@ -144,6 +148,8 @@ "october-date": "October $1", "november-date": "November $1", "december-date": "December $1", + "period-am": "AM", + "period-pm": "PM", "pagecategories": "{{PLURAL:$1|Category|Categories}}", "category_header": "Pages in category ‘$1’", "subcategories": "Subcategories", @@ -172,13 +178,7 @@ "anontalk": "Talk", "navigation": "Navigation", "and": " and", - "qbfind": "Find", - "qbbrowse": "Browse", - "qbedit": "Edit", - "qbpageoptions": "This page", - "qbmyoptions": "My pages", "faq": "FAQ", - "faqpage": "Project:FAQ", "actions": "Actions", "namespaces": "Namespaces", "variants": "Variants", @@ -194,6 +194,7 @@ "searcharticle": "Go", "history": "Page history", "history_short": "History", + "history_small": "history", "updatedmarker": "updated since my last visit", "printableversion": "Printable version", "permalink": "Permanent link", @@ -204,29 +205,22 @@ "edit-local": "Edit local description", "create": "Create", "create-local": "Add local description", - "editthispage": "Edit this page", - "create-this-page": "Create this page", "delete": "Delete", - "deletethispage": "Delete this page", - "undeletethispage": "Undelete this page", "undelete_short": "Undelete {{PLURAL:$1|one edit|$1 edits}}", "viewdeleted_short": "View {{PLURAL:$1|one deleted edit|$1 deleted edits}}", "protect": "Protect", "protect_change": "change", - "protectthispage": "Protect this page", "unprotect": "Change protection", - "unprotectthispage": "Change protection of this page", "newpage": "New page", - "talkpage": "Discuss this page", "talkpagelinktext": "talk", "specialpage": "Special page", "personaltools": "Personal tools", - "articlepage": "View content page", "talk": "Discussion", "views": "Views", "toolbox": "Tools", - "userpage": "View user page", - "projectpage": "View project page", + "tool-link-userrights": "Change {{GENDER:$1|user}} groups", + "tool-link-userrights-readonly": "View {{GENDER:$1|user}} groups", + "tool-link-emailuser": "Email this {{GENDER:$1|user}}", "imagepage": "View file page", "mediawikipage": "View message page", "templatepage": "View template page", @@ -323,20 +317,238 @@ "nosuchspecialpage": "No such special page", "nospecialpagetext": "You have requested an invalid special page.\n\nA list of valid special pages can be found at [[Special:SpecialPages|{{int:specialpages}}]].", "error": "Error", + "databaseerror": "Database error", + "databaseerror-text": "A database query error has occurred.\nThis may indicate a bug in the software.", + "databaseerror-textcl": "A database query error has occurred.", + "databaseerror-query": "Query: $1", + "databaseerror-function": "Function: $1", + "databaseerror-error": "Error: $1", + "transaction-duration-limit-exceeded": "To avoid creating high replication lag, this transaction was aborted because the write duration ($1) exceeded the $2 second limit.\nIf you are changing many items at once, try doing multiple smaller operations instead.", + "laggedslavemode": "Warning: Page may not contain recent updates.", + "readonly": "Database locked", + "enterlockreason": "Enter a reason for the lock, including an estimate of when the lock will be released", + "readonlytext": "The database is currently locked to new entries and other modifications, probably for routine database maintenance, after which it will be back to normal.\n\nThe system administrator who locked it offered this explanation: $1", "missing-article": "The database did not find the text of a page that it should have found, named ‘$1’ $2.\n\nThis is usually caused by following an outdated diff or history link to a page that has been deleted.\n\nIf this is not the case, you may have found a bug in the software.\nPlease report this to an [[Special:ListUsers/sysop|administrator]], making note of the URL.", + "missingarticle-rev": "(revision#: $1)", + "missingarticle-diff": "(Diff: $1, $2)", + "readonly_lag": "The database has been automatically locked while the slave database servers catch up to the master", + "nonwrite-api-promise-error": "The 'Promise-Non-Write-API-Action' HTTP header was sent but the request was to an API write module.", + "internalerror": "Internal error", + "internalerror_info": "Internal error: $1", + "internalerror-fatal-exception": "Fatal exception of type \"$1\"", "filecopyerror": "Could not copy file ‘$1’ to ‘$2’.", "filerenameerror": "Could not rename file ‘$1’ to ‘$2.’", "filedeleteerror": "Could not delete file ‘$1’.", "directorycreateerror": "Could not create directory ‘$1’.", + "directoryreadonlyerror": "Directory \"$1\" is read-only.", + "directorynotreadableerror": "Directory \"$1\" is not readable.", "filenotfound": "Could not find file ‘$1’.", "unexpected": "Unexpected value: ‘$1’=‘$2’.", + "formerror": "Error: Could not submit form.", + "badarticleerror": "This action cannot be performed on this page.", "cannotdelete": "The page or file ‘$1’ could not be deleted.\nIt may have already been deleted by someone else.", + "cannotdelete-title": "Cannot delete page \"$1\"", + "delete-hook-aborted": "Deletion aborted by hook.\nIt gave no explanation.", + "no-null-revision": "Could not create new null revision for page \"$1\"", + "badtitle": "Bad title", + "badtitletext": "The requested page title was invalid, empty, or an incorrectly linked inter-language or inter-wiki title.\nIt may contain one or more characters that cannot be used in titles.", + "title-invalid-empty": "The requested page title is empty or contains only the name of a namespace.", + "title-invalid-utf8": "The requested page title contains an invalid UTF-8 sequence.", + "title-invalid-interwiki": "The requested page title contains an interwiki link which cannot be used in titles.", + "title-invalid-talk-namespace": "The requested page title refers to a talk page that can not exist.", + "title-invalid-characters": "The requested page title contains invalid characters: \"$1\".", + "title-invalid-relative": "Title has relative path. Relative page titles (./, ../) are invalid, because they will often be unreachable when handled by user's browser.", + "title-invalid-magic-tilde": "The requested page title contains invalid magic tilde sequence (~~~).", + "title-invalid-too-long": "The requested page title is too long. It must be no longer than $1 {{PLURAL:$1|byte|bytes}} in UTF-8 encoding.", + "title-invalid-leading-colon": "The requested page title contains an invalid colon at the beginning.", + "perfcached": "The following data is cached and may not be up to date. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.", + "perfcachedts": "The following data is cached, and was last updated $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.", + "querypage-no-updates": "Updates for this page are currently disabled.\nData here will not presently be refreshed.", + "viewsource": "View source", + "viewsource-title": "View source for $1", + "actionthrottled": "Action throttled", + "actionthrottledtext": "As an anti-abuse measure, you are limited from performing this action too many times in a short space of time, and you have exceeded this limit.\nPlease try again in a few minutes.", + "protectedpagetext": "This page has been protected to prevent editing or other actions.", + "viewsourcetext": "You can view and copy the source of this page.", + "viewyourtext": "You can view and copy the source of your edits to this page.", "protectedinterface": "This page provides interface text for the software on this wiki, and is protected to prevent abuse.\nTo add or change translations for all wikis, please use [https://translatewiki.net/ translatewiki.net], the MediaWiki localisation project.", "editinginterface": "'''Warning:''' You are editing a page which is used to provide interface text for the software.\nChanges to this page will affect the appearance of the user interface for other users on this wiki.\nTo add or change translations for all wikis, please use [https://translatewiki.net/ translatewiki.net], the MediaWiki localisation project.", + "translateinterface": "To add or change translations for all wikis, please use [https://translatewiki.net/ translatewiki.net], the MediaWiki localisation project.", "cascadeprotected": "This page has been protected from editing because it is transcluded in the following {{PLURAL:$1|page, which is|pages, which are}} protected with the \"cascading\" option turned on:\n$2", + "namespaceprotected": "You do not have permission to edit pages in the $1 namespace.", + "customcssprotected": "You do not have permission to edit this CSS page because it contains another user's personal settings.", + "customjsprotected": "You do not have permission to edit this JavaScript page because it contains another user's personal settings.", + "mycustomcssprotected": "You do not have permission to edit this CSS page.", + "mycustomjsprotected": "You do not have permission to edit this JavaScript page.", + "myprivateinfoprotected": "You do not have permission to edit your private information.", + "mypreferencesprotected": "You do not have permission to edit your preferences.", + "ns-specialprotected": "Special pages cannot be edited.", + "titleprotected": "This title has been protected from creation by [[User:$1|$1]].\nThe reason given is $2.", + "filereadonlyerror": "Unable to modify the file \"$1\" because the file repository \"$2\" is in read-only mode.\n\nThe system administrator who locked it offered this explanation: \"$3\".", + "invalidtitle-knownnamespace": "Invalid title with namespace \"$2\" and text \"$3\"", + "invalidtitle-unknownnamespace": "Invalid title with unknown namespace number $1 and text \"$2\"", + "exception-nologin": "Not logged in", + "exception-nologin-text": "Please log in to be able to access this page or action.", + "exception-nologin-text-manual": "Please $1 to be able to access this page or action.", + "virus-badscanner": "Bad configuration: Unknown virus scanner: $1", + "virus-scanfailed": "scan failed (code $1)", + "virus-unknownscanner": "unknown antivirus:", + "logouttext": "You are now logged out.\n\nNote that some pages may continue to be displayed as if you were still logged in, until you clear your browser cache.", + "cannotlogoutnow-title": "Cannot log out now", + "cannotlogoutnow-text": "Logging out is not possible when using $1.", + "welcomeuser": "Welcome, $1!", + "welcomecreation-msg": "Your account has been created.\nYou can change your {{SITENAME}} [[Special:Preferences|preferences]] if you wish.", + "yourname": "Username:", + "userlogin-yourname": "Username", + "userlogin-yourname-ph": "Enter your username", + "createacct-another-username-ph": "Enter the username", + "yourpassword": "Password:", + "userlogin-yourpassword": "Password", + "userlogin-yourpassword-ph": "Enter your password", + "createacct-yourpassword-ph": "Enter a password", + "yourpasswordagain": "Retype password:", + "createacct-yourpasswordagain": "Confirm password", + "createacct-yourpasswordagain-ph": "Enter password again", + "userlogin-remembermypassword": "Keep me logged in", + "userlogin-signwithsecure": "Use secure connection", + "cannotlogin-title": "Cannot log in", + "cannotlogin-text": "Logging in is not possible.", + "cannotloginnow-title": "Cannot log in now", + "cannotloginnow-text": "Logging in is not possible when using $1.", + "cannotcreateaccount-title": "Cannot create accounts", + "cannotcreateaccount-text": "Direct account creation is not enabled on this wiki.", + "yourdomainname": "Your domain:", + "password-change-forbidden": "You cannot change passwords on this wiki.", + "externaldberror": "There was either an authentication database error or you are not allowed to update your external account.", + "login": "Log in", + "login-security": "Verify your identity", + "nav-login-createaccount": "Log in / create account", + "logout": "Log out", + "userlogout": "Log out", + "notloggedin": "Not logged in", + "userlogin-noaccount": "Don't have an account?", + "userlogin-joinproject": "Join {{SITENAME}}", + "createaccount": "Create account", + "userlogin-resetpassword-link": "Forgot your password?", + "userlogin-helplink2": "Help with logging in", + "userlogin-loggedin": "You are already logged in as {{GENDER:$1|$1}}.\nUse the form below to log in as another user.", + "userlogin-reauth": "You must log in again to verify that you are {{GENDER:$1|$1}}.", + "userlogin-createanother": "Create another account", + "createacct-emailrequired": "Email address", + "createacct-emailoptional": "Email address (optional)", + "createacct-email-ph": "Enter your email address", + "createacct-another-email-ph": "Enter email address", + "createaccountmail": "Use a temporary random password and send it to the specified email address", + "createaccountmail-help": "Can be used to create account for another person without learning the password.", + "createacct-realname": "Real name (optional)", + "createacct-reason": "Reason", + "createacct-reason-ph": "Why you are creating another account", + "createacct-reason-help": "Message shown in the account creation log", + "createacct-submit": "Create your account", + "createacct-another-submit": "Create account", + "createacct-continue-submit": "Continue account creation", + "createacct-another-continue-submit": "Continue account creation", + "createacct-benefit-heading": "{{SITENAME}} is made by people like you.", + "createacct-benefit-body1": "{{PLURAL:$1|edit|edits}}", + "createacct-benefit-body2": "{{PLURAL:$1|page|pages}}", + "createacct-benefit-body3": "recent {{PLURAL:$1|contributor|contributors}}", + "badretype": "The passwords you entered do not match.", + "usernameinprogress": "An account creation for this user name is already in progress.\nPlease wait.", + "userexists": "Username entered already in use.\nPlease choose a different name.", + "loginerror": "Login error", + "createacct-error": "Account creation error", + "createaccounterror": "Could not create account: $1", + "nocookiesnew": "The user account was created, but you are not logged in.\n{{SITENAME}} uses cookies to log in users.\nYou have cookies disabled.\nPlease enable them, then log in with your new username and password.", + "nocookieslogin": "{{SITENAME}} uses cookies to log in users.\nYou have cookies disabled.\nPlease enable them and try again.", + "nocookiesfornew": "The user account was not created, as we could not confirm its source.\nEnsure you have cookies enabled, reload this page and try again.", + "createacct-loginerror": "The account was successfully created but you could not be logged in automatically. Please proceed to [[Special:UserLogin|manual login]].", + "noname": "You have not specified a valid username.", + "loginsuccesstitle": "Logged in", + "loginsuccess": "You are now logged in to {{SITENAME}} as \"$1\".", + "nosuchuser": "There is no user by the name \"$1\".\nUsernames are case sensitive.\nCheck your spelling, or [[Special:CreateAccount|create a new account]].", + "nosuchusershort": "There is no user by the name \"$1\".\nCheck your spelling.", + "nouserspecified": "You have to specify a username.", + "login-userblocked": "This user is blocked. Login not allowed.", + "wrongpassword": "Incorrect password entered.\nPlease try again.", + "wrongpasswordempty": "Password entered was blank.\nPlease try again.", + "passwordtooshort": "Passwords must be at least {{PLURAL:$1|1 character|$1 characters}}.", + "passwordtoolong": "Passwords cannot be longer than {{PLURAL:$1|1 character|$1 characters}}.", + "passwordtoopopular": "Commonly chosen passwords cannot be used. Please choose a more unique password.", + "password-name-match": "Your password must be different from your username.", + "password-login-forbidden": "The use of this username and password has been forbidden.", + "mailmypassword": "Reset password", + "passwordremindertitle": "New temporary password for {{SITENAME}}", + "passwordremindertext": "Someone (probably you, from IP address $1) requested a new\npassword for {{SITENAME}} ($4). A temporary password for user\n\"$2\" has been created and was set to \"$3\". If this was your\nintent, you will need to log in and choose a new password now.\nYour temporary password will expire in {{PLURAL:$5|one day|$5 days}}.\n\nIf someone else made this request, or if you have remembered your password,\nand you no longer wish to change it, you may ignore this message and\ncontinue using your old password.", + "noemail": "There is no email address recorded for user \"$1\".", + "noemailcreate": "You need to provide a valid email address.", + "passwordsent": "A new password has been sent to the email address registered for \"$1\".\nPlease log in again after you receive it.", + "blocked-mailpassword": "Your IP address is blocked from editing. To prevent abuse, it is not allowed to use password recovery from this IP address.", + "eauthentsent": "A confirmation email has been sent to the specified email address.\nBefore any other email is sent to the account, you will have to follow the instructions in the email, to confirm that the account is actually yours.", + "throttled-mailpassword": "A password reset email has already been sent, within the last {{PLURAL:$1|hour|$1 hours}}.\nTo prevent abuse, only one password reset email will be sent per {{PLURAL:$1|hour|$1 hours}}.", + "mailerror": "Error sending mail: $1", + "acct_creation_throttle_hit": "Visitors to this wiki using your IP address have created {{PLURAL:$1|1 account|$1 accounts}} in the last $2, which is the maximum allowed in this time period.\nAs a result, visitors using this IP address cannot create any more accounts at the moment.", + "emailauthenticated": "Your email address was confirmed on $2 at $3.", + "emailnotauthenticated": "Your email address is not yet confirmed.\nNo email will be sent for any of the following features.", + "noemailprefs": "Specify an email address in your preferences for these features to work.", + "emailconfirmlink": "Confirm your email address", + "invalidemailaddress": "The email address cannot be accepted as it appears to have an invalid format.\nPlease enter a well-formatted address or empty that field.", + "cannotchangeemail": "Account email addresses cannot be changed on this wiki.", + "emaildisabled": "This site cannot send emails.", + "accountcreated": "Account created", + "accountcreatedtext": "The user account for [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]]) has been created.", + "createaccount-title": "Account creation for {{SITENAME}}", + "createaccount-text": "Someone created an account for your email address on {{SITENAME}} ($4) named \"$2\", with password \"$3\".\nYou should log in and change your password now.\n\nYou may ignore this message, if this account was created in error.", + "login-throttled": "You have made too many recent login attempts.\nPlease wait $1 before trying again.", + "login-abort-generic": "Your login failed - Aborted", + "login-migrated-generic": "Your account has been migrated, and your username no longer exist on this wiki.", + "loginlanguagelabel": "Language: $1", + "suspicious-userlogout": "Your request to log out was denied because it looks like it was sent by a broken browser or caching proxy.", + "createacct-another-realname-tip": "Real name is optional.\nIf you choose to provide it, this will be used for giving the user attribution for their work.", "pt-login": "Log in", + "pt-login-button": "Log in", + "pt-login-continue-button": "Continue login", "pt-createaccount": "Create account", + "pt-userlogout": "Log out", + "php-mail-error-unknown": "Unknown error in PHP's mail() function.", + "user-mail-no-addy": "Tried to send email without an email address.", + "user-mail-no-body": "Tried to send email with an empty or unreasonably short body.", + "changepassword": "Change password", + "resetpass_announce": "To finish logging in, you must set a new password.", + "resetpass_header": "Change account password", + "oldpassword": "Old password:", + "newpassword": "New password:", + "retypenew": "Retype new password:", + "resetpass_submit": "Set password and log in", + "changepassword-success": "Your password has been changed!", + "changepassword-throttled": "You have made too many recent login attempts.\nPlease wait $1 before trying again.", + "botpasswords": "Bot passwords", + "botpasswords-summary": "Bot passwords allow access to a user account via the API without using the account's main login credentials. The user rights available when logged in with a bot password may be restricted.\n\nIf you don't know why you might want to do this, you should probably not do it. No one should ever ask you to generate one of these and give it to them.", + "botpasswords-disabled": "Bot passwords are disabled.", "botpasswords-no-central-id": "To use bot passwords, you must be logged in to a centralised account.", + "botpasswords-existing": "Existing bot passwords", + "botpasswords-createnew": "Create a new bot password", + "botpasswords-editexisting": "Edit an existing bot password", + "botpasswords-label-appid": "Bot name:", + "botpasswords-label-create": "Create", + "botpasswords-label-update": "Update", + "botpasswords-label-delete": "Delete", + "botpasswords-label-grants": "Applicable grants:", + "botpasswords-help-grants": "Grants allow access to rights already held by your user account. Enabling a grant here does not provide access to any rights that your user account would not otherwise have. See the [[Special:ListGrants|table of grants]] for more information.", + "botpasswords-label-grants-column": "Granted", + "botpasswords-bad-appid": "The bot name \"$1\" is not valid.", + "botpasswords-insert-failed": "Failed to add bot name \"$1\". Was it already added?", + "botpasswords-update-failed": "Failed to update bot name \"$1\". Was it deleted?", + "botpasswords-created-title": "Bot password created", + "botpasswords-created-body": "The bot password for bot name \"$1\" of user \"$2\" was created.", + "botpasswords-updated-title": "Bot password updated", + "botpasswords-updated-body": "The bot password for bot name \"$1\" of user \"$2\" was updated.", + "botpasswords-deleted-title": "Bot password deleted", + "botpasswords-deleted-body": "The bot password for bot name \"$1\" of user \"$2\" was deleted.", + "botpasswords-newpassword": "The new password to log in with $1 is $2. Please record this for future reference.
(For old bots which require the login name to be the same as the eventual username, you can also use $3 as username and $4 as password.)", + "botpasswords-no-provider": "BotPasswordsSessionProvider is not available.", + "botpasswords-restriction-failed": "Bot password restrictions prevent this login.", + "botpasswords-invalid-name": "The username specified does not contain the bot password separator (\"$1\").", + "botpasswords-not-exist": "User \"$1\" does not have a bot password named \"$2\".", "savearticle": "Save page", "blockedtext": "Your username or IP address has been blocked.\n\nThe block was made by $1.\nThe reason given is $2.\n\n* Start of block: $8\n* Expiry of block: $6\n* Intended blockee: $7\n\nYou can contact $1 or another [[{{MediaWiki:Grouppage-sysop}}|administrator]] to discuss the block.\nYou cannot use the \"email this user\" feature unless a valid email address is specified in your [[Special:Preferences|account preferences]] and you have not been blocked from using it.\nYour current IP address is $3, and the block ID is #$5.\nPlease include all above details in any queries you make.", "autoblockedtext": "Your IP address has been automatically blocked because it was used by another user, who was blocked by $1.\nThe reason given is:\n\n:$2\n\n* Start of block: $8\n* Expiry of block: $6\n* Intended blockee: $7\n\nYou may contact $1 or one of the other [[{{MediaWiki:Grouppage-sysop}}|administrators]] to discuss the block.\n\nNote that you may not use the \"email this user\" feature unless you have a valid email address registered in your [[Special:Preferences|user preferences]] and you have not been blocked from using it.\n\nYour current IP address is $3, and the block ID is #$5.\nPlease include all above details in any queries you make.", diff --git a/languages/i18n/en.json b/languages/i18n/en.json index e29b6b528e..b2804882ca 100644 --- a/languages/i18n/en.json +++ b/languages/i18n/en.json @@ -37,6 +37,7 @@ "tog-watchlisthideminor": "Hide minor edits from the watchlist", "tog-watchlisthideliu": "Hide edits by logged in users from the watchlist", "tog-watchlistreloadautomatically": "Reload the watchlist automatically whenever a filter is changed (JavaScript required)", + "tog-watchlistunwatchlinks": "Add direct unwatch/watch links to watchlist entries (JavaScript required for toggle functionality)", "tog-watchlisthideanons": "Hide edits by anonymous users from the watchlist", "tog-watchlisthidepatrolled": "Hide patrolled edits from the watchlist", "tog-watchlisthidecategorization": "Hide categorization of pages", @@ -735,8 +736,8 @@ "permissionserrorstext-withaction": "You do not have permission to $2, for the following {{PLURAL:$1|reason|reasons}}:", "contentmodelediterror": "You cannot edit this revision because its content model is $1, which differs from the current content model of the page $2.", "recreate-moveddeleted-warn": "Warning: You are recreating a page that was previously deleted.\n\nYou should consider whether it is appropriate to continue editing this page.\nThe deletion and move log for this page are provided here for convenience:", - "moveddeleted-notice": "This page has been deleted.\nThe deletion and move log for the page are provided below for reference.", - "moveddeleted-notice-recent": "Sorry, this page was recently deleted (within the last 24 hours).\nThe deletion and move log for the page are provided below for reference.", + "moveddeleted-notice": "This page has been deleted.\nThe deletion, protection, and move log for the page are provided below for reference.", + "moveddeleted-notice-recent": "Sorry, this page was recently deleted (within the last 24 hours).\nThe deletion, protection, and move log for the page are provided below for reference.", "log-fulllog": "View full log", "edit-hook-aborted": "Edit aborted by hook.\nIt gave no explanation.", "edit-gone-missing": "Could not update the page.\nIt appears to have been deleted.", @@ -1021,7 +1022,7 @@ "prefs-editwatchlist-clear": "Clear your watchlist", "prefs-watchlist-days": "Days to show in watchlist:", "prefs-watchlist-days-max": "Maximum $1 {{PLURAL:$1|day|days}}", - "prefs-watchlist-edits": "Maximum number of changes to show in expanded watchlist:", + "prefs-watchlist-edits": "Maximum number of changes to show in watchlist:", "prefs-watchlist-edits-max": "Maximum number: 1000", "prefs-watchlist-token": "Watchlist token:", "prefs-misc": "Misc", @@ -1349,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", @@ -1361,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.", @@ -1378,20 +1381,19 @@ "rcfilters-restore-default-filters": "Restore default filters", "rcfilters-clear-all-filters": "Clear all filters", "rcfilters-show-new-changes": "View newest changes", - "rcfilters-previous-changes-label": "Previously viewed changes", "rcfilters-search-placeholder": "Filter recent changes (browse or start typing)", "rcfilters-invalid-filter": "Invalid filter", "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", "rcfilters-filterlist-noresults": "No filters found", "rcfilters-noresults-conflict": "No results found because the search criteria are in conflict", "rcfilters-state-message-subset": "This filter has no effect because its results are included with those of the following, broader {{PLURAL:$2|filter|filters}} (try highlighting to distinguish it): $1", - "rcfilters-state-message-fullcoverage": "Selecting all filters in a group is the same as selecting none, so this filter has no effect. Group includes: $1", + "rcfilters-state-message-fullcoverage": "Selecting all filters in this group is the same as selecting none, so this filter has no effect. Group includes: $1", "rcfilters-filtergroup-authorship": "Contribution authorship", "rcfilters-filter-editsbyself-label": "Changes by you", "rcfilters-filter-editsbyself-description": "Your own contributions.", @@ -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-editWatchlist-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", @@ -2229,6 +2239,8 @@ "watching": "Watching...", "unwatching": "Unwatching...", "watcherrortext": "An error occurred while changing your watchlist settings for \"$1\".", + "watchlist-unwatch": "×", + "watchlist-unwatch-undo": "+", "enotif_reset": "Mark all pages visited", "enotif_impersonal_salutation": "{{SITENAME}} user", "enotif_subject_deleted": "{{SITENAME}} page $1 has been {{GENDER:$2|deleted}} by $2", @@ -2746,7 +2758,7 @@ "import-nonewrevisions": "No revisions imported (all were either already present, or skipped due to errors).", "xml-error-string": "$1 at line $2, col $3 (byte $4): $5", "import-upload": "Upload XML data", - "import-token-mismatch": "Loss of session data.\n\nYou might have been logged out. Please verify that you're still logged in and try again.\nIf it still does not work, try [[Special:UserLogout|logging out]] and logging back in, and check that your browser allows cookies from this site.", + "import-token-mismatch": "Loss of session data.\n\nYou might have been logged out. '''Please verify that you're still logged in and try again'''.\nIf it still does not work, try [[Special:UserLogout|logging out]] and logging back in, and check that your browser allows cookies from this site.", "import-invalid-interwiki": "Cannot import from the specified wiki.", "import-error-edit": "Page \"$1\" was not imported because you are not allowed to edit it.", "import-error-create": "Page \"$1\" was not imported because you are not allowed to create it.", @@ -3917,6 +3929,15 @@ "compare-invalid-title": "The title you specified is invalid.", "compare-title-not-exists": "The title you specified does not exist.", "compare-revision-not-exists": "The revision you specified does not exist.", + "diff-form": "Differences", + "diff-form-oldid": "Old revision ID (optional)", + "diff-form-revid": "Revision ID of difference", + "diff-form-submit": "Show differences", + "diff-form-summary": "", + "permanentlink": "Permanent link", + "permanentlink-revid": "Revision ID", + "permanentlink-submit": "Go to revision", + "permanentlink-summary": "", "dberr-problems": "Sorry! This site is experiencing technical difficulties.", "dberr-again": "Try waiting a few minutes and reloading.", "dberr-info": "(Cannot access the database: $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 b93f4c5fb1..3c0bab0fa3 100644 --- a/languages/i18n/es.json +++ b/languages/i18n/es.json @@ -161,7 +161,8 @@ "Javiersanp", "Josecurioso", "Jnistal12", - "Javier" + "Javier", + "Luisangelrg" ] }, "tog-underline": "Subrayar los enlaces:", @@ -191,13 +192,14 @@ "tog-shownumberswatching": "Mostrar el número de usuarios que la vigilan", "tog-oldsig": "Tu firma actual:", "tog-fancysig": "Tratar la firma como wikitexto (sin un enlace automático)", - "tog-uselivepreview": "Usar previsualización dinámica", + "tog-uselivepreview": "Muestra una previsualización sin tener que recargar la página", "tog-forceeditsummary": "Avisarme cuando deje en blanco el resumen de la edición", "tog-watchlisthideown": "Ocultar mis ediciones de la lista de seguimiento", "tog-watchlisthidebots": "Ocultar las ediciones de bots de la lista de seguimiento", "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", @@ -762,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.", @@ -848,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.", @@ -1117,7 +1119,7 @@ "prefs-editwatchlist-clear": "Limpiar tu lista de seguimiento", "prefs-watchlist-days": "Número de días que mostrar en la lista de seguimiento:", "prefs-watchlist-days-max": "Máximo $1 {{PLURAL:$1|día|días}}", - "prefs-watchlist-edits": "Número máximo de ediciones que mostrar en la lista expandida:", + "prefs-watchlist-edits": "Número máximo de ediciones a mostrar en la lista de seguimiento:", "prefs-watchlist-edits-max": "Cantidad máxima: 1000", "prefs-watchlist-token": "Clave de lista de seguimiento:", "prefs-misc": "Varias", @@ -1432,16 +1434,20 @@ "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-other-review-tools": "Otras herramientas de revisión", + "rcfilters-group-results-by-page": "Agrupar resultados por página", + "rcfilters-grouping-title": "Agrupación", "rcfilters-activefilters": "Filtros activos", "rcfilters-advancedfilters": "Filtros avanzados", "rcfilters-limit-title": "Cambios para mostrar", - "rcfilters-limit-shownum": "Mostrar los últimos $1 cambios", + "rcfilters-limit-shownum": "Mostrar {{PLURAL:$1|el último cambio|los últimos $1 cambios}}", "rcfilters-days-title": "Días recientes", "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.", @@ -1458,6 +1464,7 @@ "rcfilters-savedqueries-add-new-title": "Guardar ajustes de filtro actuales", "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-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.", @@ -1470,23 +1477,23 @@ "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", "rcfilters-filter-editsbyother-label": "Cambios de otros", "rcfilters-filter-editsbyother-description": "Todos los cambios, excepto los tuyos.", - "rcfilters-filtergroup-userExpLevel": "Nivel de experiencia (solo para usuarios registrados)", + "rcfilters-filtergroup-userExpLevel": "Registro de usuario y experiencia", "rcfilters-filter-user-experience-level-registered-label": "Registrados", - "rcfilters-filter-user-experience-level-registered-description": "Editores conectados.", + "rcfilters-filter-user-experience-level-registered-description": "Usuarios registrados.", "rcfilters-filter-user-experience-level-unregistered-label": "No registrados", "rcfilters-filter-user-experience-level-unregistered-description": "Editores no conectados.", "rcfilters-filter-user-experience-level-newcomer-label": "Recién llegados", - "rcfilters-filter-user-experience-level-newcomer-description": "Menos de 10 ediciones y 4 días de actividad.", + "rcfilters-filter-user-experience-level-newcomer-description": "Usuarios registrados con menos de 10 ediciones y 4 días de actividad.", "rcfilters-filter-user-experience-level-learner-label": "Aprendices", - "rcfilters-filter-user-experience-level-learner-description": "Más experiencia que los «recién llegados», pero menos que los «usuarios experimentados».", + "rcfilters-filter-user-experience-level-learner-description": "Editores registrados cuya experiencia se ubica entre \"Recién Llegados\" y \"Usuarios experimentados\".", "rcfilters-filter-user-experience-level-experienced-label": "Usuarios experimentados", - "rcfilters-filter-user-experience-level-experienced-description": "Más de 30 días de actividad y 500 ediciones.", + "rcfilters-filter-user-experience-level-experienced-description": "Editores registrados con más de 500 ediciones y 30 días de actividad.", "rcfilters-filtergroup-automated": "Contribuciones automatizadas", "rcfilters-filter-bots-label": "Bot", "rcfilters-filter-bots-description": "Ediciones realizadas por herramientas automatizadas.", @@ -1509,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...", @@ -1530,10 +1540,15 @@ "rcfilters-tag-prefix-namespace-inverted": "Estado: $1", "rcfilters-exclude-button-off": "Excluir los seleccionados", "rcfilters-exclude-button-on": "Excluyendo los seleccionados", + "rcfilters-view-advanced-filters-label": "Filtros avanzados", "rcfilters-view-tags": "Ediciones etiquetadas", "rcfilters-view-namespaces-tooltip": "Filtrar resultados por espacio de nombres", "rcfilters-view-tags-tooltip": "filtrado de resultados usando etiquetas de edición", "rcfilters-view-return-to-default-tooltip": "Volver al menú de filtro principal", + "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", "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", @@ -1914,6 +1929,8 @@ "pageswithprop-legend": "Páginas con una propiedad de página", "pageswithprop-text": "Esta página muestra las páginas que usan una determinada propiedad de página.", "pageswithprop-prop": "Nombre de la propiedad:", + "pageswithprop-reverse": "Ordenar en inversa", + "pageswithprop-sortbyvalue": "Ordenar por valor de propiedad", "pageswithprop-submit": "Ir", "pageswithprop-prophidden-long": "hay un largo valor en la propiedad texto oculta ($1)", "pageswithprop-prophidden-binary": "valor de la propiedad binaria oculta ($1)", @@ -1976,9 +1993,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", @@ -2278,7 +2295,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-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}}", @@ -2528,7 +2546,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", @@ -2732,7 +2750,7 @@ "import-nonewrevisions": "Ninguna revisión fue importada (todas ya estaban presentes o fueron omitido debido a errores).", "xml-error-string": "$1 en la línea $2, col $3 (byte $4): $5", "import-upload": "Subir datos XML", - "import-token-mismatch": "Pérdida de datos de sesión.\n\nEs posible que haya finalizado tu sesión. Por favor, verifica que tu sesión continúa iniciada e inténtalo de nuevo.\nSi aun así no funciona, intenta [[Special:UserLogout|cerrar sesión]] e iniciarla de nuevo, y comprueba que tu navegador acepta cookies de este sitio.", + "import-token-mismatch": "Pérdida de datos de sesión.\n\nEs posible que haya finalizado tu sesión. '''Por favor, verifica que tu sesión continúa iniciada e inténtalo de nuevo'''.\nSi aun así no funciona, intenta [[Special:UserLogout|cerrar sesión]] e iniciarla de nuevo, y comprueba que tu navegador acepta cookies de este sitio.", "import-invalid-interwiki": "No se puede importar de la wiki especificada.", "import-error-edit": "No se importó la página «$1» porque no tienes permisos para editarla.", "import-error-create": "No se importó la página «$1» porque no tienes permisos para crearla.", @@ -3177,7 +3195,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", @@ -3487,7 +3505,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", @@ -3515,6 +3533,7 @@ "fileduplicatesearch-noresults": "Ningún archivo con el nombre «$1» encontrado.", "specialpages": "Páginas especiales", "specialpages-note-top": "Leyenda", + "specialpages-note-restricted": "* Páginas especiales ordinarias.\n* Páginas especiales restringidas.", "specialpages-group-maintenance": "Informes de mantenimiento", "specialpages-group-other": "Otras páginas especiales", "specialpages-group-login": "Acceder/crear cuenta", @@ -3633,6 +3652,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": "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)", @@ -3898,7 +3919,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 acc6512bfe..9fab7c2568 100644 --- a/languages/i18n/et.json +++ b/languages/i18n/et.json @@ -59,13 +59,14 @@ "tog-shownumberswatching": "Näita jälgivate kasutajate hulka", "tog-oldsig": "Praegune allkiri:", "tog-fancysig": "Kasuta vikiteksti vormingus allkirja (ilma automaatse lingita kasutajalehele)", - "tog-uselivepreview": "Kasuta elavat eelvaadet", + "tog-uselivepreview": "Näita eelvaadet ilma lehekülge uuesti laadimata", "tog-forceeditsummary": "Nõua redigeerimisel resümee välja täitmist", "tog-watchlisthideown": "Peida minu redaktsioonid jälgimisloendist", "tog-watchlisthidebots": "Peida robotid jälgimisloendist", "tog-watchlisthideminor": "Peida pisiparandused jälgimisloendist", "tog-watchlisthideliu": "Peida sisselogitud kasutajate muudatused jälgimisloendist", "tog-watchlistreloadautomatically": "Laadi jälgimisloend mõne filtri muutmise järel koheselt uuesti (nõutav JavaScript)", + "tog-watchlistunwatchlinks": "Lisa jälgimisloendi sissekannete juurde jälgimisest loobumise või jälgimise otselingid (tumblerfunktsiooni jaoks nõutav JavaScript)", "tog-watchlisthideanons": "Peida anonüümsete kasutajate muudatused jälgimisloendist", "tog-watchlisthidepatrolled": "Peida kontrollitud muudatused jälgimisloendist", "tog-watchlisthidecategorization": "Peida lehekülgede kategoriseerimine", @@ -689,8 +690,8 @@ "permissionserrorstext-withaction": "Sul pole lubatud {{lcfirst:$2}} {{PLURAL:$1|järgmisel põhjusel|järgmistel põhjustel}}:", "contentmodelediterror": "Sa ei saa seda redaktsiooni redigeerida, sest selle sisumudel $1 erineb lehekülje praegusest sisumudelist $2.", "recreate-moveddeleted-warn": "'''Hoiatus: Lood uuesti lehekülge, mis on varem kustutatud.'''\n\nKaalu, kas lehekülje uuesti loomine on kohane.\nLehekülje eelnevad kustutamised ja teisaldamised:", - "moveddeleted-notice": "See lehekülg on kustutatud.\nAllpool on esitatud lehekülje kustutamis- ja teisaldamislogi.", - "moveddeleted-notice-recent": "Kahjuks on see lehekülg hiljuti kustutatud (viimase 24 tunni jooksul).\nAllpool on ära toodud selle lehekülje sissekanded teisaldamis- ja kustutamislogis.", + "moveddeleted-notice": "See lehekülg on kustutatud.\nAllpool on esitatud lehekülje kustutamis-, kaitsmis- ja teisaldamislogi.", + "moveddeleted-notice-recent": "Kahjuks on see lehekülg hiljuti kustutatud (viimase 24 tunni jooksul).\nAllpool on ära toodud selle lehekülje sissekanded teisaldamis-, kaitsmis- ja kustutamislogis.", "log-fulllog": "Vaata kogu logi", "edit-hook-aborted": "Laiendusliides katkestas muutmise täpsemat selgitust andmata.", "edit-gone-missing": "Polnud võimalik lehekülge uuendada.\nTundub, et see on kustutatud.", @@ -958,7 +959,7 @@ "prefs-editwatchlist-clear": "Tühjenda jälgimisloend", "prefs-watchlist-days": "Mitme päeva muudatusi näidata loendis:", "prefs-watchlist-days-max": "Ülemmäär $1 {{PLURAL:$1|päev|päeva}}", - "prefs-watchlist-edits": "Mitu muudatust näidatakse laiendatud jälgimisloendis:", + "prefs-watchlist-edits": "Mitut muudatust jälgimisloendis enim näidata:", "prefs-watchlist-edits-max": "Ülemmäär: 1000", "prefs-watchlist-token": "Jälgimisloendi luba:", "prefs-misc": "Muu", @@ -1273,11 +1274,13 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (vaata ka [[Special:NewPages|uute lehekülgede loendit]])", "recentchanges-submit": "Näita", "rcfilters-legend-heading": "Lühendite loetelu:", - "rcfilters-other-review-tools": "Muud ülevaatusriistad:", + "rcfilters-other-review-tools": "Muud ülevaatusriistad", + "rcfilters-group-results-by-page": "Rühmita tulemused lehekülje kaupa", + "rcfilters-grouping-title": "Rühmitamine", "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}}", @@ -1298,6 +1301,7 @@ "rcfilters-savedqueries-add-new-title": "Salvesta filtri praegused sätted", "rcfilters-restore-default-filters": "Taasta vaikefiltrid", "rcfilters-clear-all-filters": "Eemalda kõik filtrid", + "rcfilters-show-new-changes": "Vaata uusimaid muudatusi", "rcfilters-search-placeholder": "Filtri viimaseid muudatusi (sirvi või alusta tippimist)", "rcfilters-invalid-filter": "Vigane filter", "rcfilters-empty-filter": "Aktiivsed filtrid puuduvad. Näidatakse kogu kaastööd.", @@ -1310,7 +1314,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.", @@ -1370,11 +1374,14 @@ "rcfilters-tag-prefix-namespace-inverted": ":mitte $1", "rcfilters-exclude-button-off": "Jäta valitud välja", "rcfilters-exclude-button-on": "Valitud välja jäetud", + "rcfilters-view-advanced-filters-label": "Täpsemad filtrid", "rcfilters-view-tags": "Märgistatud muudatused", "rcfilters-view-namespaces-tooltip": "Filtri tulemusi nimeruumide lõikes", "rcfilters-view-tags-tooltip": "Filtri tulemusi muudatusmärgiste lõikes", "rcfilters-view-return-to-default-tooltip": "Naase filtri peamenüüsse", "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", "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", @@ -2058,6 +2065,7 @@ "enotif_lastdiff": "Et seda muudatust näha, vaata: $1.", "enotif_anon_editor": "anonüümne kasutaja $1", "enotif_body": "Lugupeetud $WATCHINGUSERNAME\n\n$PAGEINTRO $NEWPAGE\n\nRedigeerija resümee: $PAGESUMMARY $PAGEMINOREDIT\n\nRedigeerijaga ühenduse võtmine:\ne-post: $PAGEEDITOR_EMAIL\nviki: $PAGEEDITOR_WIKI\n\nSeni kuni sa sisselogituna seda lehekülge ei külasta, selle leheküljega seotud toimingute kohta sulle uusi teavituse e-kirju ei saadeta. Jälgimisloendis saaksid kõigi jälgitavate lehekülgedega seotud teavitussätted ka lähtestada.\n\nAbivalmilt\n{{GRAMMAR:genitive|{{SITENAME}}}} teavitussüsteem\n\n--\nE-kirjatsi saabuvate teavituste sätteid saad muuta leheküljel\n{{canonicalurl:{{#special:Preferences}}}}.\n\nOma jälgimisloendi sätete muutmiseks mine leheküljele\n{{canonicalurl:Special:Watchlist/edit}}.\n\nLehekülje kustutamiseks jälgimisloendist mine leheküljele $UNWATCHURL.\n\nTagasiside ja abi:\n$HELPPAGE", + "enotif_minoredit": "See on pisimuudatus", "created": "loonud lehekülje", "changed": "muutnud lehekülge", "deletepage": "Kustuta lehekülg", @@ -2568,6 +2576,7 @@ "tooltip-pt-mycontris": "Sinu kaastööde loend", "tooltip-pt-anoncontribs": "Sellelt IP-aadressilt tehtud muudatuste loend", "tooltip-pt-login": "See pole küll kohustuslik, aga sul tasub sisse logida.", + "tooltip-pt-login-private": "Pead sisse logima, et seda vikit kasutada.", "tooltip-pt-logout": "Logi välja", "tooltip-pt-createaccount": "See pole küll kohustuslik, aga sul tasub konto luua ja sisse logida.", "tooltip-ca-talk": "Arutelu selle lehekülje sisu kohta", @@ -3446,6 +3455,13 @@ "compare-invalid-title": "Valitud pealkiri on vigane.", "compare-title-not-exists": "Valitud pealkirja ei ole.", "compare-revision-not-exists": "Valitud redaktsiooni ei ole.", + "diff-form": "Erinevused", + "diff-form-oldid": "Vana redaktsiooni identifikaator (valikuline)", + "diff-form-revid": "Erineva redaktsiooni identifikaator", + "diff-form-submit": "Näita erinevusi", + "permanentlink": "Püsilink", + "permanentlink-revid": "Redaktsiooni identifikaator", + "permanentlink-submit": "Mine redaktsiooni juurde", "dberr-problems": "Kahjuks on sellel saidil tehnilisi probleeme", "dberr-again": "Oota mõni hetk ja laadi lehekülg uuesti.", "dberr-info": "(Juurdepääs andmebaasile puudub: $1)", @@ -3820,14 +3836,25 @@ "authpage-cannot-create-continue": "Konto loomisega ei õnnestu jätkata. Suure tõenäosusega on sinu seansi ajalõpp möödunud.", "authpage-cannot-link": "Konto linkimisega ei õnnestu alustada.", "authpage-cannot-link-continue": "Konto linkimisega ei õnnestu jätkata. Suure tõenäosusega on sinu seansi ajalõpp möödunud.", + "cannotauth-not-allowed-title": "Juurdepääs puudub", + "cannotauth-not-allowed": "Sul pole lubatud seda lehekülge kasutada.", "changecredentials": "Autentimisandmete muutmine", "changecredentials-submit": "Muuda autentimisandmed", + "changecredentials-invalidsubpage": "$1 pole sobiv autentimisandmete tüüp.", "changecredentials-success": "Sinu autentimisandmed on muudetud.", "removecredentials": "Autentimisandmete eemaldamine", "removecredentials-submit": "Eemalda autentimisandmed", + "removecredentials-invalidsubpage": "$1 pole sobiv autentimisandmete tüüp.", "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.", @@ -3836,9 +3863,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..667470d52c 100644 --- a/languages/i18n/eu.json +++ b/languages/i18n/eu.json @@ -659,6 +659,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 +681,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 +727,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 +855,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": "(Erabiltzaile berdinaren {{PLURAL:$1|erdiko ekarpen bat ez da|$1 erdiko ekarpen ez dira}} erakusten)", "searchresults": "Bilaketaren emaitzak", "searchresults-title": "«$1» bilaketaren emaitzak", "titlematches": "Emaitzak artikuluen izenburuetan", @@ -1085,6 +1088,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 +1218,24 @@ "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-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", @@ -1282,6 +1290,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 +1307,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 +1954,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 +2128,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 +2215,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 +2503,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 +3220,11 @@ "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-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 +3262,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 +3283,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", @@ -3455,6 +3476,11 @@ "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" + "gotointerwiki": "{{SITENAME}}(e)tik irteten", + "pagedata-title": "Orri data" } diff --git a/languages/i18n/fa.json b/languages/i18n/fa.json index 99046c3cb6..d43ab0e085 100644 --- a/languages/i18n/fa.json +++ b/languages/i18n/fa.json @@ -90,13 +90,14 @@ "tog-shownumberswatching": "شمار کاربران پی‌گیری‌کننده نمایش داده شود", "tog-oldsig": "امضای کنونی شما:", "tog-fancysig": "امضا به صورت ویکی‌متن در نظر گرفته شود (بدون درج خودکار پیوند)", - "tog-uselivepreview": "از پیش‌نمایش زنده استفاده شود", + "tog-uselivepreview": "پیش‌نمایش بدون نیاز به بروزرسانی صفحه", "tog-forceeditsummary": "هنگامی که خلاصهٔ ویرایش ننوشته‌ام به من اطلاع داده شود", "tog-watchlisthideown": "ویرایش‌های خودم در فهرست پی‌گیری‌ها پنهان شود", "tog-watchlisthidebots": "ویرایش‌های ربات‌ها در فهرست پی‌گیری‌ها پنهان شود", "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", @@ -749,8 +750,8 @@ "permissionserrorstext-withaction": "شما اجازهٔ $2 را به این {{PLURAL:$1|دلیل|دلایل}} ندارید:", "contentmodelediterror": "امکان ویرایش این نسخه برای شما نیست چون نوع محتوای آن $1 است که متفاوت است با نوع محتوای کنونی صفحه $2 است.", "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به نظرمی‌رسد که صفحه حذف شده باشد.", @@ -1018,7 +1019,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": "متفرقه", @@ -1222,7 +1223,7 @@ "right-mergehistory": "ادغام تاریخچهٔ صفحات", "right-userrights": "ویرایش تمام اختیارات کاربرها", "right-userrights-interwiki": "ویرایش اختیارات کاربرهای ویکی‌های دیگر", - "right-siteadmin": "قفل‌کردن و بازکردن پایگاه داده‌ها", + "right-siteadmin": "قفل‌کردن و بازکردن پایگاه‌های داده", "right-override-export-depth": "برون‌بری صفحه‌ها شامل صفحه‌های پیوند شده تا عمق ۵", "right-sendemail": "ارسال ایمیل به دیگر کاربران", "right-managechangetags": "ایجاد و غیرفعال کردن [[Special:Tags|برچسب‌ها]]", @@ -1304,7 +1305,7 @@ "action-mergehistory": "ادغام تاریخچهٔ این صفحه", "action-userrights": "ویرایش همهٔ اختیارات کاربری", "action-userrights-interwiki": "ویرایش اختیارات کاربری کاربران یک ویکی دیگر", - "action-siteadmin": "قفل‌کردن و بازکردن پایگاه داده‌ها", + "action-siteadmin": "قفل‌کردن و بازکردن پایگاه‌های داده", "action-sendemail": "ارسال ایمیل", "action-editmyoptions": "ویرایش ترجیحاتتان", "action-editmywatchlist": "فهرست پیگیری‌های خود را ویرایش کنید", @@ -1334,9 +1335,20 @@ "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": "گروه‌بندی نتایج بر اساس صفحه", + "rcfilters-grouping-title": "گروه‌بندی", "rcfilters-activefilters": "پالایه‌های فعال", "rcfilters-advancedfilters": "پالایه‌‌های پیشرفته", + "rcfilters-limit-title": "تغییرات برای نمایش دادن", + "rcfilters-limit-shownum": "نمایش آخرین {{PLURAL:$1|تغییر|$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-quickfilters-placeholder-description": "برای ذخیره پالایه‌هایتان و استفاده مجدد آنها، در محیط فعال پالایه در پایین بر روی دکمهٔ بوک‌مارک کلیک کنید.", @@ -1348,15 +1360,17 @@ "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-whatsthis": "این چطور کار می‌کند؟", "rcfilters-filterlist-feedbacklink": "ارسال بازخورد برای پالایه‌های جدید (آزمایشی)", "rcfilters-highlightbutton-title": "پررنگ کردن نتایج", "rcfilters-highlightmenu-title": "انتخاب رنگ", @@ -1364,23 +1378,23 @@ "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": "ویرایش‌های شما.", "rcfilters-filter-editsbyother-label": "تغییریافته توسط دیگران", "rcfilters-filter-editsbyother-description": "همهٔ تغییرات به جز تغییرات شما.", - "rcfilters-filtergroup-userExpLevel": "درجهٔ تجربه (فقط برای کاربران ثبت‌نام کرده)", + "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": "کمتر از ۱۰ ویرایش یا ۴ روز فعالیت.", + "rcfilters-filter-user-experience-level-newcomer-description": "کاربران ثبت‌شده با کمتر از ۱۰ ویرایش یا ۴ روز فعالیت.", "rcfilters-filter-user-experience-level-learner-label": "آموزندگان", - "rcfilters-filter-user-experience-level-learner-description": "تجربهٔ بیشتر از تازه‌واردان ولی کمتر از کاربران باتجریه.", + "rcfilters-filter-user-experience-level-learner-description": "ویرایشگران ثبت‌نام کرده با تجربهٔ بیشتر از تازه‌واردان ولی کمتر از کاربران باتجریه.", "rcfilters-filter-user-experience-level-experienced-label": "کاربران باتجربه", - "rcfilters-filter-user-experience-level-experienced-description": "بیشتر از ۳۰ روز فعالیت و ۵۰۰ ویرایش.", + "rcfilters-filter-user-experience-level-experienced-description": "ویرایشگران ثبت‌نام کرده با بیشتر از ۳۰ روز فعالیت و ۵۰۰ ویرایش.", "rcfilters-filtergroup-automated": "ویرایش‌های خودکار", "rcfilters-filter-bots-label": "ربات", "rcfilters-filter-bots-description": "ویرایش توسط ابزارهای خودکار.", @@ -1403,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": "ویرایش‌های محتوای ویکی، بحث‌ها، توضیحات رده...", @@ -1415,18 +1433,24 @@ "rcfilters-hideminor-conflicts-typeofchange-global": "پالایهٔ «ویرایش جزئی» با یک یا چند تا از پالایه‌های «نوع تغییرات» تعارض دارد چرا که برخی از انواع تغییرات را نمی‌توان به عنوان «جزئی» علامت زد. پالایه‌های دیگر در قسمت «پالایه‌های فعال» در بالا نشان داده شده‌اند.", "rcfilters-hideminor-conflicts-typeofchange": "برخی از انواع تغییرات را نمی‌توان به عنوان «جزئی» علامت زد، به همین خاطر این پالایه با پالایه‌های «نوع تغییرات» که در ادامه آمده در تعارض است: $1", "rcfilters-typeofchange-conflicts-hideminor": "این پالایهٔ «نوع تغییرات» با پالایهٔ «تغییرات جزئی» در تعارض است. برخی از انواع تغییرات را نمی‌توان به عنوان «جزئی» علامت زد.", - "rcfilters-filtergroup-lastRevision": "آخرین نسخه", + "rcfilters-filtergroup-lastRevision": "آخرین نسخه‌ها", "rcfilters-filter-lastrevision-label": "آخرین نسخه", - "rcfilters-filter-lastrevision-description": "جدیدترین تغییر در یک صفحه.", - "rcfilters-filter-previousrevision-label": "نسخه‌های قبلی", - "rcfilters-filter-previousrevision-description": "تمام تغییراتی که تازه‌ترین تغییر در یک صفحه نیستند.", + "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-exclude-button-on": "مستثنی کردن انتخاب‌ها", + "rcfilters-view-advanced-filters-label": "پالایه‌های پیشرفته", "rcfilters-view-tags": "ویرایش‌های برچسب‌شده", "rcfilters-view-namespaces-tooltip": "نتیجهٔ پالایه بر پایهٔ فضای نام", "rcfilters-view-tags-tooltip": "نتایج پالایه با کمک برچسب‌های ویرایش", "rcfilters-view-return-to-default-tooltip": "بازگشت به منوی پالایهٔ اصلی", "rcfilters-liveupdates-button": "به‌روزرسانی‌های زنده", + "rcfilters-liveupdates-button-title-on": "خاموش کردن به‌روزرسانی خودکار", + "rcfilters-liveupdates-button-title-off": "نمایش تغییرات جدید همچنان که رخ می‌دهند", + "rcfilters-watchlist-markSeen-button": "نشانه‌گذاری تمام تغییرات به‌عنوان خوانده‌شده", "rcnotefrom": "در زیر تغییرات از $3, $4 (تا $1 {{PLURAL:$5|نشان داده شده‌است|نشان داده شده‌اند}}).", "rclistfromreset": "از نو کردن انتخاب تاریخ", "rclistfrom": "نمایش تغییرات تازه با شروع از $3 $2", @@ -1806,6 +1830,8 @@ "pageswithprop-legend": "صفحه‌های دارای خاصیت صفحه", "pageswithprop-text": "این صفحه فهرستی است از صفحه‌هایی که از یک خاصیت صفحهٔ خاص استفاده می‌کنند.", "pageswithprop-prop": "نام خاصیت:", + "pageswithprop-reverse": "ترتیب برعکس", + "pageswithprop-sortbyvalue": "ترتیب بر اساس مقدار ویژگی", "pageswithprop-submit": "برو", "pageswithprop-prophidden-long": "جزییات مخفی متن طولانی ($1)", "pageswithprop-prophidden-binary": "جزییات مقدار مخفی باینری ($1)", @@ -1938,6 +1964,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": "درخواست آدرس:", @@ -2142,6 +2169,7 @@ "enotif_lastdiff": "برای نمایش این تغییر $1 را ببینید.", "enotif_anon_editor": "کاربر ناشناس $1", "enotif_body": "$WATCHINGUSERNAME گرامی،\n\n$PAGEINTRO $NEWPAGE\n\n\nتوضیح ویراستار: $PAGESUMMARY $PAGEMINOREDIT\n\nتماس با ویراستار:\nنامه: $PAGEEDITOR_EMAIL\nویکی: $PAGEEDITOR_WIKI\n\nتا هنگامی که به صفحه سر نزده‌اید، در صورت رخ‌دادنِ احتمالیِ فعالیت بیشتر، تا زمانی که در با کاربریتان در سامانه هستید، اعلانیه‌ای برای شما فرستاده نخواهد شد.\nشما همچنین می‌توانید در صفحهٔ پی‌گیری‌های خود پرچم‌های مربوط به آگاهی‌رسانی را صفر کنید همچنین می‌توانید پرچم‌های آگاهی‌سازی را بازنشانی کنید.\n\nدوستدار شما، سامانهٔ آگاهی‌رسانی {{SITENAME}}\n\n--\nبرای تغییر تنظیمات فهرست ایمیل‌های اعلان به {{canonicalurl:{{#special:EditWatchlist}}}} بروید.\n\nبرای تغییر تنظیمات فهرست پی‌گیری‌هایتان به {{canonicalurl:{{#special:EditWatchlist}}}} بروید.\n\nبرای حذف صفحه از فهرست پی‌گیری‌هایتان به $UNWATCHURL بروید.\n\nبازخورد و کمک بیشتر:\n$HELPPAGE", + "enotif_minoredit": "این یک ویرایش جزئی است", "created": "ایجاد شده", "changed": "تغییر یافته", "deletepage": "حذف صفحه", @@ -2153,7 +2181,7 @@ "delete-legend": "حذف", "historywarning": "هشدار: صفحه‌ای که در حال پاک کردن آن هستید دارای یک تاریخچه همراه با $1 {{PLURAL:$1|بازبینی|بازبینی}} است:", "historyaction-submit": "نمایش", - "confirmdeletetext": "شما در حال حذف کردن یک صفحه یا تصویر از پایگاه داده‌ها همراه با تمام تاریخچهٔ آن هستید.\nلطفاً این عمل را تأیید کنید و اطمینان حاصل کنید که عواقب این کار را می‌دانید و این عمل را مطابق با [[{{MediaWiki:Policy-url}}|سیاست‌ها]] انجام می‌دهید.", + "confirmdeletetext": "شما در حال حذف کردن یک صفحه یا تصویر از پایگاه‌های داده همراه با تمام تاریخچهٔ آن هستید.\nلطفاً این عمل را تأیید کنید و اطمینان حاصل کنید که عواقب این کار را می‌دانید و این عمل را مطابق با [[{{MediaWiki:Policy-url}}|سیاست‌ها]] انجام می‌دهید.", "actioncomplete": "عمل انجام شد", "actionfailed": "عمل ناموفق بود", "deletedtext": "«$1» حذف شد.\nبرای سابقهٔ حذف‌های اخیر به $2 مراجعه کنید.", @@ -2170,6 +2198,7 @@ "delete-warning-toobig": "این صفحه تاریخچهٔ ویرایشی بزرگی دارد، که شامل بیش از $1 {{PLURAL:$1|نسخه|نسخه}} است.\nحذف آن ممکن است که عملکرد پایگاه دادهٔ {{SITENAME}} را مختل کند;\nبا احتیاط ادامه دهید.", "deleteprotected": "شما نمی‌توانید این صفحه را پاک کنید چون که از آن محافظت شده‌است.", "deleting-backlinks-warning": "هشدار: [[Special:WhatLinksHere/{{FULLPAGENAME}}|صفحه‌های دیگری]] هستند که به صفحه‌ای که شما در حال حذف آن هستید پیوند دارند یا آن را تراگنجانیده‌اند.", + "deleting-subpages-warning": "هشدار: صفحه‌ای که شما می‌خواهید حذف کنید [[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|یک زیرصفحه|$1 زیرصفحه|51=بیش از پنجاه زیرصفحه}}]] دارد.", "rollback": "واگردانی ویرایش‌ها", "rollbacklink": "واگردانی", "rollbacklinkcount": "واگردانی $1 ویرایش", @@ -2211,7 +2240,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»", @@ -2288,6 +2317,7 @@ "undelete-search-title": "جستجوی صفحه‌های حذف‌شده", "undelete-search-box": "جستجوی صفحه‌های حذف‌شده.", "undelete-search-prefix": "نمایش صفحات با شروع از:", + "undelete-search-full": "نمایش صفحه‌هایی که عنوانشان شامل این عبارات است:", "undelete-search-submit": "برو", "undelete-no-results": "هیچ صفحهٔ منطبقی در بایگانی حذف‌شده‌ها یافت نشد.", "undelete-filename-mismatch": "امکان احیای نسخهٔ $1 وجود ندارد: نام پرونده مطابقت نمی‌کند.", @@ -2622,7 +2652,7 @@ "import-nonewrevisions": "نسخه‌ای درون‌ریزی نشد (همه یا در حال حاضر وجود دارند، یا به دلیل خطا‌ها نادیده گرفته شده‌اند).", "xml-error-string": "$1 در سطر $2، ستون $3 (بایت $4): $5", "import-upload": "بارگذاری داده اکس‌ام‌ال", - "import-token-mismatch": "از دست رفتن اطلاعات نشست کاربری.\n\nاحتمالا شما از سامانه خارج شده‌اید.'''لطفا از اینکه وارد سامانه شده‌اید اطمینان حاصل کرده و دوباره امتحان کنید'''.\nاگر دوباره به همین پیام برخوردید از سامانه [[Special:UserLogout|خارج شوید]]، دوباره وارد شوید، و از این‌ که مرورگر شما اجازه دریافت کوکی از این وب‌گاه را می‌دهد اطمینان حاصل کنید.", + "import-token-mismatch": "از دست رفتن اطلاعات نشست کاربری.\n\nاحتمالاً شما از سامانه خارج شده‌اید.'''لطفا از اینکه وارد سامانه شده‌اید اطمینان حاصل کرده و دوباره امتحان کنید'''.\nاگر دوباره به همین پیام برخوردید از سامانه [[Special:UserLogout|خارج شوید]]، دوباره وارد شوید، و از این‌ که مرورگر شما اجازه دریافت کوکی از این وب‌گاه را می‌دهد اطمینان حاصل کنید.", "import-invalid-interwiki": "از ویکی مشخص شده نمی‌توان درون‌ریزی انجام داد.", "import-error-edit": "صفحهٔ «$1» وارد نشد، چون شما مجاز به ویرایش آن نیستید.", "import-error-create": "صفحهٔ «$1» وارد نشد، چون شما مجاز به ایجاد آن نیستید.", @@ -3446,7 +3476,7 @@ "fileduplicatesearch-noresults": "پرونده‌ای با نام «$1» یافت نشد.", "specialpages": "صفحه‌های ویژه", "specialpages-note-top": "شرح علائم", - "specialpages-note": "* صفحه‌های ویژهٔ عادی.\n* صفحه‌های ویژهٔ محدودشده.", + "specialpages-note-restricted": "* صفحه‌های ویژهٔ معمولی.\n* صفحه‌های ویژهٔ محدودشده.", "specialpages-group-maintenance": "گزارش‌های نگهداری", "specialpages-group-other": "سایر صفحه‌های ویژه", "specialpages-group-login": "ورود / ثبت نام", @@ -3565,6 +3595,13 @@ "compare-invalid-title": "عنوان تعیین‌شده نامعتبر است.", "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)", @@ -3971,6 +4008,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 48095afc07..3dcb491d7b 100644 --- a/languages/i18n/fi.json +++ b/languages/i18n/fi.json @@ -54,7 +54,8 @@ "BiscuitMan", "Alluk.", "Tumm1", - "4shadoww" + "4shadoww", + "Pahkiqaz" ] }, "tog-underline": "Linkkien alleviivaus:", @@ -84,7 +85,7 @@ "tog-shownumberswatching": "Näytä sivua tarkkailevien käyttäjien määrä", "tog-oldsig": "Nykyinen allekirjoituksesi:", "tog-fancysig": "Muotoilematon allekirjoitus ilman automaattista linkkiä", - "tog-uselivepreview": "Käytä välitöntä esikatselua", + "tog-uselivepreview": "Näytä esikatselu lataamatta sivua uudelleen", "tog-forceeditsummary": "Huomauta minua, jos en ole kirjoittanut yhteenvetoa", "tog-watchlisthideown": "Piilota omat muokkaukset tarkkailulistalta", "tog-watchlisthidebots": "Piilota bottien muokkaukset tarkkailulistalta", @@ -369,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", @@ -706,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.'''", @@ -737,8 +738,8 @@ "permissionserrorstext-withaction": "Sinulla ei ole oikeutta {{lcfirst:$2}} {{PLURAL:$1|seuraavasta syystä|seuraavista syistä}}:", "contentmodelediterror": "Et voi muokata tätä versiota, koska sen sisältömalli on $1 ja tämä poikkeaa sivun nykyisestä sisältömallista, joka on $2.", "recreate-moveddeleted-warn": "'''Varoitus: Olet luomassa sellaista sivua, joka on aikaisemmin poistettu.'''\n\nHarkitse, kannattaako tätä sivua luoda uudelleen. \nAlla on tämän sivun poisto- ja siirtohistoria:", - "moveddeleted-notice": "Tämä sivu on poistettu. Alla on tämän sivun poisto- ja siirtohistoria.", - "moveddeleted-notice-recent": "Valitettavasti tämä sivu on poistettu aivan äskettäin (viimeisen 24 tunnin aikana).\nAlla näkyy sivun poisto- ja siirtolokin tietoja.", + "moveddeleted-notice": "Tämä sivu on poistettu. \nAlla on sivun poisto-, suojaus- ja siirtohistoria.", + "moveddeleted-notice-recent": "Valitettavasti tämä sivu on poistettu äskettäin (viimeisen 24 tunnin aikana).\nAlla on sivun poisto-, suojaus- ja siirtohistoria.", "log-fulllog": "Näytä loki kokonaan", "edit-hook-aborted": "Laajennuskoodi esti muokkauksen antamatta syytä.", "edit-gone-missing": "Sivun päivitys ei onnistunut.\nSe on ilmeisesti poistettu.", @@ -1004,7 +1005,7 @@ "prefs-editwatchlist-clear": "Tyhjennä tarkkailulistasi", "prefs-watchlist-days": "Näytettävien päivien määrä tarkkailulistalla", "prefs-watchlist-days-max": "Enintään $1 {{PLURAL:$1|päivä|päivää}}", - "prefs-watchlist-edits": "Tarkkailulistalla näytettävien muokkausten määrä", + "prefs-watchlist-edits": "Tarkkailulistalla näytettävien muokkausten enimmäismäärä:", "prefs-watchlist-edits-max": "Enintään 1000", "prefs-watchlist-token": "Tarkkailulistan avain:", "prefs-misc": "Muut", @@ -1317,26 +1318,36 @@ "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-limit-shownum": "Näytä viimeisimmät $1 muutosta", + "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", "rcfilters-savedqueries-rename": "Nimeä uudelleen", "rcfilters-savedqueries-setdefault": "Aseta oletukseksi", + "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", "rcfilters-savedqueries-add-new-title": "Tallenna nykyiset suodatinasetukset", "rcfilters-restore-default-filters": "Palauta oletussuodattimet", "rcfilters-clear-all-filters": "Tyhjennä kaikki suodattimet", + "rcfilters-show-new-changes": "Näytä uusimmat muutokset", "rcfilters-search-placeholder": "Suodata tuoreita muutoksia (selaa tai ala kirjoittaa)", "rcfilters-invalid-filter": "Virheellinen suodatin", "rcfilters-empty-filter": "Ei aktiivisia suodattimia. Kaikki muutokset näytetään.", @@ -1349,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.", @@ -1385,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", @@ -1393,16 +1405,19 @@ "rcfilters-filter-newpages-description": "Muokkaukset, joilla on luotu uusia sivuja.", "rcfilters-filter-categorization-label": "Luokkamuutokset", "rcfilters-filter-categorization-description": "Tulokset sivuista, joita on lisätty tai poistettu luokista.", - "rcfilters-filter-logactions-label": "Kirjatut toimet", - "rcfilters-filter-logactions-description": "Hallinnolliset toimet, tunnusten luonnit, sivujen poistot, tiedostojen lähetykset…", + "rcfilters-filter-logactions-label": "Lokitoiminnot", + "rcfilters-filter-logactions-description": "Ylläpidolliset toimet, tunnusten luonnit, sivujen poistot, tiedostolataukset…", "rcfilters-hideminor-conflicts-typeofchange-global": "\"Pienet muutokset\" -suodatin on ristiriidassa yhden tai useamman Muutoksen tyyppi suodattimen kanssa, koska joitain muutostyyppejä ei voida pitää \"pieninä\". Ristiriidassa oleva suodatin on merkittynä Aktiivisissa suodattimissa, yläpuolella.", "rcfilters-hideminor-conflicts-typeofchange": "Joitain muutostyyppejä ei voida määrittää \"pieneksi\", joten tämä suodatin on ristiriidassa seuraavien Muutoksen tyyppi suodattimien kanssa: $1", "rcfilters-typeofchange-conflicts-hideminor": "\"Muutoksen tyyppi\" on ristiriidassa \"Pienet muutokset\" -suodattimen kanssa. Joitain muutostyyppejä ei voida merkitä \"pieniksi\".", - "rcfilters-filtergroup-lastRevision": "Viimeisin versio", + "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ä", @@ -2102,6 +2117,7 @@ "enotif_lastdiff": "Nähdäksesi tämän muutoksen, katso $1", "enotif_anon_editor": "kirjautumaton käyttäjä $1", "enotif_body": "$WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nMuokkaajan yhteenveto: $PAGESUMMARY $PAGEMINOREDIT\n\nOta yhteyttä muokkaajaan:\nsähköposti: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nUusia ilmoituksia tästä sivusta ei tule kunnes vierailet sivulla sisään kirjautuneena. Voit myös nollata ilmoitukset kaikille tarkkailemillesi sivuille tarkkailulistallasi.\n\n {{GRAMMAR:genitive|{{SITENAME}}}} ilmoitusjärjestelmä\n\n--\nVoit muuttaa sähköpostimuistutusten asetuksia osoitteessa:\n{{canonicalurl:{{#special:Preferences}}}}\n\nVoit muuttaa tarkkailulistasi asetuksia osoitteessa:\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nVoit poistaa sivun tarkkailulistalta osoitteessa:\n$UNWATCHURL\n\nPalaute ja lisäapu osoitteessa:\n$HELPPAGE", + "enotif_minoredit": "Tämä on pieni muutos", "created": "luonut", "changed": "muuttanut", "deletepage": "Poista sivu", @@ -2579,7 +2595,7 @@ "import-nonewrevisions": "Ei tuotu yhtään versiota, koska kaikki versiot ovat jo täällä tai ne on ohitettu virheiden vuoksi.", "xml-error-string": "$1 rivillä $2, sarakkeessa $3 (tavu $4): $5", "import-upload": "Tallenna XML-tiedosto", - "import-token-mismatch": "Istuntotietojen katoaminen.\n\nSaatat olla kirjautunut ulos. Ole hyvä ja varmista, että olet edelleen kirjautunut sisään, ja yritä sitten uudestaan.\nJos ei vieläkään onnistu, yritä [[Special:UserLogout|kirjautua ulos]] ja sitten takaisin sisään, ja tarkista, että selaimesi sallii evästeet tältä sivustolta.", + "import-token-mismatch": "Istuntotietoja ei löydy.\n\nSaatat olla kirjautunut ulos. Varmista, että olet edelleen kirjautunut sisään, ja yritä sitten uudestaan.\nJos ongelma jatkuu, yritä [[Special:UserLogout|kirjautua ulos]] ja sitten takaisin sisään, ja tarkista selaimesi asetuksista, että evästeet ovat käytössä tällä sivustolla.", "import-invalid-interwiki": "Määritellystä wikistä ei voi tuoda.", "import-error-edit": "Sivua $1 ei tuotu, koska sinulla ei ole oikeutta muokata sitä.", "import-error-create": "Sivua $1 ei tuotu, koska sinulla ei ole oikeutta luoda sitä.", @@ -2607,6 +2623,7 @@ "tooltip-pt-mycontris": "Luettelo {{GENDER:|omista muokkauksistasi}}", "tooltip-pt-anoncontribs": "Luettelo tästä IP-osoitteesta tehdyistä muokkauksista", "tooltip-pt-login": "Kirjaudu sisään tai luo tunnus", + "tooltip-pt-login-private": "Tämän wikin käyttö edellyttää kirjautumista", "tooltip-pt-logout": "Kirjaudu ulos", "tooltip-pt-createaccount": "On suositeltavaa luoda käyttäjätunnus ja kirjautua sisään. Se ei kuitenkaan ole pakollista.", "tooltip-ca-talk": "Keskustele sisällöstä", @@ -2810,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", @@ -3489,6 +3507,7 @@ "compare-invalid-title": "Antamasi sivun nimi on virheellinen.", "compare-title-not-exists": "Määrittämääsi sivua ei ole.", "compare-revision-not-exists": "Määrittämääsi versiota ei ole.", + "diff-form": "Eroavaisuudet", "dberr-problems": "Tällä sivustolla on teknisiä ongelmia.", "dberr-again": "Odota hetki ja lataa sivu uudelleen.", "dberr-info": "(Tietokantaan ei saada yhteyttä: $1)", diff --git a/languages/i18n/fr.json b/languages/i18n/fr.json index 580993f5a2..95f483693f 100644 --- a/languages/i18n/fr.json +++ b/languages/i18n/fr.json @@ -155,7 +155,8 @@ "Archaeodontosaurus", "Trizek (WMF)", "Framawiki", - "Jona" + "Jona", + "Epok" ] }, "tog-underline": "Soulignement des liens :", @@ -175,11 +176,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,6 +193,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 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", @@ -200,7 +202,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", @@ -294,7 +296,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,7 +315,7 @@ "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 #
", + "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": "Rechercher", "go": "Consulter", "searcharticle": "Lire", @@ -461,7 +463,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", @@ -487,7 +489,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.", @@ -506,7 +508,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.", @@ -521,13 +523,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", @@ -584,7 +586,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", @@ -599,7 +601,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}}.", @@ -610,9 +612,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}}.", @@ -622,7 +624,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éé", @@ -677,12 +679,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.", @@ -850,8 +852,8 @@ "permissionserrorstext-withaction": "Vous ne pouvez pas $2, pour {{PLURAL:$1|la raison suivante|les raisons suivantes}} :", "contentmodelediterror": "Vous ne pouvez pas modifier cette révision car son modèle de contenu est $1, ce qui diffère du modèle de contenu actuel de la page $2.", "recreate-moveddeleted-warn": "Attention : vous êtes en train de recréer une page qui a été précédemment supprimée.\n\nAssurez-vous qu'il est pertinent de poursuivre les modifications sur cette page. \nLe journal des suppressions et des déplacements pour cette page est affiché ci-dessous à titre d'information :", - "moveddeleted-notice": "Cette page a été supprimée. \nLe journal des suppressions et des déplacements de la page est affiché ci-dessous pour référence.", - "moveddeleted-notice-recent": "Désolé, cette page a été récemment supprimée (dans les dernières 24 heures).\nLes journaux des suppressions et des renommages pour la page sont fournis ci-dessous pour référence.", + "moveddeleted-notice": "Cette page a été supprimée. \nLe journal des suppressions, des protections et des déplacements de la page est affiché ci-dessous pour référence.", + "moveddeleted-notice-recent": "Désolé, cette page a été récemment supprimée (dans les dernières 24 heures).\nLes journaux des suppressions, des protections et des renommages pour la page sont fournis ci-dessous pour référence.", "log-fulllog": "Voir le journal complet", "edit-hook-aborted": "Échec de la modification par une extension.\nAucune explication n’a été retournée.", "edit-gone-missing": "N’a pas pu mettre à jour la page.\nIl semble qu’elle ait été supprimée.", @@ -1121,7 +1123,7 @@ "prefs-editwatchlist-clear": "Effacer la liste de suivi", "prefs-watchlist-days": "Nombre de jours à afficher dans la liste de suivi :", "prefs-watchlist-days-max": "(maximum $1 jour{{PLURAL:$1||s}})", - "prefs-watchlist-edits": "Nombre maximum de modifications à afficher dans la liste de suivi étendue :", + "prefs-watchlist-edits": "Nombre maximum de modifications à afficher dans la liste de suivi :", "prefs-watchlist-edits-max": "Nombre maximum : 1000", "prefs-watchlist-token": "Jeton pour la liste de suivi :", "prefs-misc": "Préférences diverses", @@ -1187,7 +1189,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.", @@ -1439,6 +1441,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", @@ -1451,6 +1454,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.", @@ -1467,8 +1471,7 @@ "rcfilters-savedqueries-add-new-title": "Sauvegarder la configuration du filtre courant", "rcfilters-restore-default-filters": "Rétablir les filtres par défaut", "rcfilters-clear-all-filters": "Effacer tous les filtres", - "rcfilters-show-new-changes": "Afficher les nouvelles modifications", - "rcfilters-previous-changes-label": "Modifications précédemment affichées", + "rcfilters-show-new-changes": "Afficher les modifications les plus récentes", "rcfilters-search-placeholder": "Filtrer les modifications récentes (naviguer ou commencer à saisir)", "rcfilters-invalid-filter": "Filtre non valide", "rcfilters-empty-filter": "Aucun filtre actif. Toutes les contributions sont affichées.", @@ -1481,7 +1484,7 @@ "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 +1496,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 +1523,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…", @@ -1548,7 +1556,8 @@ "rcfilters-view-return-to-default-tooltip": "Retour au menu principal du filtre", "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 quand ils se produisent", + "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", "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", @@ -2754,7 +2763,7 @@ "import-nonewrevisions": "Aucune révision importée (toutes étaient soit déjà présentes, soit ignorées du fait d’erreurs).", "xml-error-string": "$1 à la ligne $2, colonne $3 (octet $4) : $5", "import-upload": "Import de données XML", - "import-token-mismatch": "Perte des données de session.\n\nVous avez peut-être été déconnecté. Veuillez vérifier que vous êtes toujours connecté et réessayez.\nSi cela ne fonctionne toujours pas, essayez de [[Special:UserLogout|vous déconnecter]] et de vous reconnecter, et vérifiez que votre navigateur accepte les témoins (''cookies'') de ce site.", + "import-token-mismatch": "Perte des données de session.\n\nVous avez peut-être été déconnecté. '''Veuillez vérifier que vous êtes toujours connecté et réessayez'''.\nSi cela ne fonctionne toujours pas, essayez de [[Special:UserLogout|vous déconnecter]] et de vous reconnecter, et vérifiez que votre navigateur accepte les témoins (''cookies'') de ce site.", "import-invalid-interwiki": "Impossible d'importer depuis le wiki spécifié.", "import-error-edit": "La page « $1 » n’a pas été importée parce que vous n’êtes pas autorisé à la modifier.", "import-error-create": "La page « $1 » n’a pas été importée parce que vous n’êtes pas autorisé à la créer.", @@ -2945,7 +2954,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", @@ -3738,6 +3747,13 @@ "compare-invalid-title": "Le titre que vous avez spécifié n’est pas valide.", "compare-title-not-exists": "Le titre que vous avez spécifié n’existe pas.", "compare-revision-not-exists": "La révision que vous avez spécifiée n’existe pas.", + "diff-form": "Différences", + "diff-form-oldid": "ID de l’ancienne révision (facultatif)", + "diff-form-revid": "ID de la révision à comparer", + "diff-form-submit": "Afficher les différences", + "permanentlink": "Lien permanent", + "permanentlink-revid": "ID de la révision", + "permanentlink-submit": "Aller à la révision", "dberr-problems": "Désolé ! Ce site rencontre des difficultés techniques.", "dberr-again": "Essayez d'attendre quelques minutes et rechargez.", "dberr-info": "(Accès à la base de données impossible : $1)", diff --git a/languages/i18n/frr.json b/languages/i18n/frr.json index f2fe8568ce..8802a8efdc 100644 --- a/languages/i18n/frr.json +++ b/languages/i18n/frr.json @@ -1814,7 +1814,7 @@ "excontentauthor": "Diar sted: „$1“, an di iansagst bewerker wiar: [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskuschuun]])", "exbeforeblank": "diar sted föör't leesag maagin: „$1“", "delete-confirm": "Strik \"$1\"", - "delete-legend": "Strike", + "delete-legend": "Strik", "historywarning": "Paase üüb: Det sidj, wat dü strik wel, hää $1 {{PLURAL:$1|werjuun|werjuunen}}:", "confirmdeletetext": "Dü wel en sidj mä aal sin werjuunen strik. Dü skel gudkään, dat dü witjst, wat dü dääst an dat din dun mä a [[{{MediaWiki:Policy-url}}|brükerreegeln]] auerian stemet.", "actioncomplete": "Klaar", diff --git a/languages/i18n/gd.json b/languages/i18n/gd.json index b4cf71f26a..6b59319c14 100644 --- a/languages/i18n/gd.json +++ b/languages/i18n/gd.json @@ -40,13 +40,14 @@ "tog-shownumberswatching": "Nochd àireamh nan cleachdaichean a tha a' cumail sùil air", "tog-oldsig": "An t-earr-sgrìobhadh làithreach agad:", "tog-fancysig": "Làimhsich an t-earr-sgrìobhadh mar wikitext (gun cheangal leis fhèin)", - "tog-uselivepreview": "Cleachd an ro-shealladh beò", + "tog-uselivepreview": "Seall ro-sheallaidhean gun a bhith ag ath-luchdadh na duilleige", "tog-forceeditsummary": "Cuir ceist nuair a dh'fhàgas mi gearr-chunntas an deasachaidh bàn", "tog-watchlisthideown": "Falaich mo mhùthaidhean fhèin air mo chlàr-faire", "tog-watchlisthidebots": "Falaich mùthaidhean nam bot air mo chlàr-faire", "tog-watchlisthideminor": "Falaich mùthaidhean beaga air mo chlàr-faire", "tog-watchlisthideliu": "Falaich mùthaidhean le cleachdaichean a tha air logadh a-steach air mo chlàr-faire", "tog-watchlistreloadautomatically": "Ath-luchdaich an liosta-fhaire gu fèin-obrachail uair sam bith a thèid criathrag atharrachadh (feum air JavaScript)", + "tog-watchlistunwatchlinks": "Cuir ceanglaichean neo-fhaire/faire ri innteartan na liosta-faire (feum airson JavaScript airson a thoglachadh)", "tog-watchlisthideanons": "Falaich mùthaidhean le cleachdaichean gun ainm air mo chlàr-faire", "tog-watchlisthidepatrolled": "Falaich mùthaidhean air duilleagan fo fhreiceadan air a' chlàr-fhaire agam", "tog-watchlisthidecategorization": "Falaich roinnean nan duilleagan", @@ -157,13 +158,7 @@ "anontalk": "Deasbaireachd", "navigation": "Seòladh", "and": " agus", - "qbfind": "Lorg", - "qbbrowse": "Brabhsaich", - "qbedit": "Deasaich", - "qbpageoptions": "An duilleag seo", - "qbmyoptions": "Na duilleagan agam", "faq": "CÀBHA", - "faqpage": "Project:CÀBHA", "actions": "Gnìomhan", "namespaces": "Ainm-spàsan", "variants": "Tionndaidhean", @@ -190,32 +185,22 @@ "edit-local": "Deasaich an tuairisgeul ionadail", "create": "Cruthaich", "create-local": "Cuir tuairisgeul ionadail ris", - "editthispage": "Deasaich an duilleag seo", - "create-this-page": "Cruthaich an duilleag seo", "delete": "Sguab às", - "deletethispage": "Sguab às an duilleag seo", - "undeletethispage": "Neo-dhèan sguabadh às na duilleige seo", "undelete_short": "Neo-dhèan an sguabadh às air $1 {{PLURAL:$1|deasachadh|dheasachadh|deasachaidhean|deasachadh}}", "viewdeleted_short": "Seall $1 {{PLURAL:$1|deasachadh|dheasachadh|deasachaidhean|deasachadh}} a chaidh a sguabadh às", "protect": "Dìon", "protect_change": "mùth", - "protectthispage": "Dìon an duilleag seo", "unprotect": "Atharraich an dìon", - "unprotectthispage": "Atharraich dìon na duilleige seo", "newpage": "Duilleag ùr", - "talkpage": "Dèan deasbad mun duilleag seo", "talkpagelinktext": "Deasbaireachd", "specialpage": "Duilleag shònraichte", "personaltools": "Innealan pearsanta", - "articlepage": "Seall duilleag na susbainte", "talk": "Deasbaireachd", "views": "Tadhalan", "toolbox": "Innealan", "tool-link-userrights": "Atharraich buidhnean nan {{GENDER:$1|cleachdaichean}}", "tool-link-userrights-readonly": "Seall buidhnean nan {{GENDER:$1|cleachdaichean}}", "tool-link-emailuser": "Cuir post gun {{GENDER:$1|chleachdaiche}} seo", - "userpage": "Seall duilleag a' chleachdaiche", - "projectpage": "Seall duilleag a' phròiseict", "imagepage": "Seall duilleag an fhaidhle", "mediawikipage": "Seall duilleag na teachdaireachd", "templatepage": "Seall duilleag na teamplaide", @@ -226,7 +211,7 @@ "redirectedfrom": "(Air ath-sheòladh o $1)", "redirectpagesub": "Ath-sheòl an duilleag", "redirectto": "Dèan ath-stiùireadh gu:", - "lastmodifiedat": "Chaidh an duilleag seo a mhùthadh $1 aig $2 turas mu dheireadh.", + "lastmodifiedat": "Chaidh an duilleag seo a dheasachadh $1 aig $2 turas mu dheireadh.", "viewcount": "Chaidh inntrigeadh a dhèanamh dhan duilleag seo $1 {{PLURAL:$1|turas|thuras|tursan|turas}}.", "protectedpage": "Duilleag fo dhìon", "jumpto": "Gearr leum gu:", @@ -323,6 +308,7 @@ "databaseerror-query": "Ceist: $1", "databaseerror-function": "Foincsean: $1", "databaseerror-error": "Mearachd: $1", + "transaction-duration-limit-exceeded": "Airson replication lag àrd a sheachnadh, sguireadh dhen tar-chur seo nuair a chaidh faid an sgrìobhaidh ($1) seachad air a’ chrìoch dhe $2.", "laggedslavemode": "Rabhadh: Faodaidh nach eil ùrachaidhean a rinneadh o chionn ghoirid a' nochdadh san duilleag.", "readonly": "Stòr-dàta glaiste", "enterlockreason": "Cuir a-steach adhbhar a' ghlais, a' gabhail a-steach tuairmeas air fuasgladh a' ghlais.", @@ -331,6 +317,7 @@ "missingarticle-rev": "(mùthadh#: $1)", "missingarticle-diff": "(Diofar: $1, $2)", "readonly_lag": "Chaidh an stòr-dàta a ghlasadh leis fhèin fhad 's a tha frithealaichean nan stòr-dàta tràilleach air dheireadh a' mhaighstir", + "nonwrite-api-promise-error": "Chaidh am bann-cinn HTTP Promise-Non-Write-API-Action a chur ach is ann do mhòideal sgrìobhadh API a bha an t-iarrtas.", "internalerror": "Ion-mhearachd", "internalerror_info": "Ion-mhearachd: $1", "internalerror-fatal-exception": "Eisgeachd mharbhtach dhen t-seòrsa \"$1\"", @@ -350,6 +337,15 @@ "no-null-revision": "Cha b' urrainn dhuinn mùthadh neoinitheach ùr a chruthachadh dhan duilleag \"$1\"", "badtitle": "Droch thiotal", "badtitletext": "Bha an duilleag a dh'iarr thu mì-dhligheach, falamh no le tiotal eadar-chànanach no eadar-uicidh air a dhroch cheangal.\nFaodaidh gu bheil aon no barrachd charactairean ann nach urrainn dhut a chleachdadh ann an tiotalan.", + "title-invalid-empty": "Tha an duilleag a chaidh iarraidh falamh no chan eil ann ach ainm namespace.", + "title-invalid-utf8": "Tha sreath UTF-8 mì-dhligheach ann an tiotal na duilleige a dh’iarr thu.", + "title-invalid-interwiki": "Tha ceangal interwiki ann an tiotal na duilleige a dh’iarr thu nach gabh a chleachdadh ann an tiotalan.", + "title-invalid-talk-namespace": "Tha reifreans air duilleag deasbaireachd nach eil ann an an tiotal na duilleige a dh’iarr thu.", + "title-invalid-characters": "Tha caractaran mì-dhligheach ann an tiotal na duilleige a dh’iarr thu: “$1”.", + "title-invalid-relative": "Tha slighe dhàimheach aig an tiotal. Tha tiotalan dhuilleagan dàimheach (./, ../) mì-dhligheach a chionn ’s nach ruigear iad gu tric nuair a bhios brabhsair a’ chleachdaiche ’gan làimhseachadh.", + "title-invalid-magic-tilde": "Tha ceithir tuinn ann an tiotal na duilleige a dh’iarr thu agus chan eil sin dligheachd (~~~).", + "title-invalid-too-long": "Tha tiotal na duilleige a dh’iarr thu ro fhada. Chan fhaod e a bhith nas fhaide na $1 {{PLURAL:$1|byte}} ann an còdachadh UTF-8.", + "title-invalid-leading-colon": "Tha còilean nach eil ceadaichte aig toiseach na duilleige a dh’iarr thu.", "perfcached": "Chaidh an dàta a leanas a thasgadh 's faodaidh gu bheil e air dheireadh. Tha {{PLURAL:$1|$1 toradh|$1 thoradh|$1 toraidhean|$1 toradh}} ri fhaighinn san tasgadan air a' char as motha.", "perfcachedts": "Chaidh an dàta a leanas a thasgadh agus chaidh ùrachadh $1 turas mu dheireadh. Tha {{PLURAL:$4|$4 toradh|$4 thoradh|$4 toraidhean|$4 toradh}} ri fhaighinn san tasgadan air a' char as motha.", "querypage-no-updates": "Tha ùrachadh air a chur à comas air an duilleag seo an-dràsta.\nCha dèid an dàta an-seo ùrachadh aig an àm seo.", @@ -383,6 +379,8 @@ "virus-scanfailed": "dh'fhàillig an sganadh (còd $1)", "virus-unknownscanner": "sganair bhìorasan neo-aithnichte:", "logouttext": "Chaidh do logadh a-mach.\n\nThoir an aire gum bi coltas air cuid dhe na duilleagan mar gum biodh tu air logadh a-steach gus am falamhaich thu tasgadan a' bhrabhsair agad.", + "cannotlogoutnow-title": "Cha ghabh clàradh a-mach an-dràsta fhèin", + "cannotlogoutnow-text": "Chan ghabh clàradh a-mach nuair a chleachdar $1.", "welcomeuser": "Fàilte ort, $1", "welcomecreation-msg": "Chaidh an cunntas agad a chruthachadh.\nNa dìochuimhnich na [[Special:Preferences|roghainnean agad air {{SITENAME}}]] a ghleusadh dhut fhèin.", "yourname": "Ainm-cleachdaiche:", @@ -398,10 +396,17 @@ "createacct-yourpasswordagain-ph": "Cuir a-steach am facal-faire a-rithist", "userlogin-remembermypassword": "Cum air logadh a-steach mi", "userlogin-signwithsecure": "Cleachd ceangal tèarainte", + "cannotlogin-title": "Cha ghabh clàradh a-steach", + "cannotlogin-text": "Cha ghabh clàradh a-steach.", + "cannotloginnow-title": "Cha ghabh clàradh a-steach an-dràsta fhèin", + "cannotloginnow-text": "Chan ghabh clàradh a-steachnuair a chleachdar $1.", + "cannotcreateaccount-title": "Cha ghabh na cunntasan a chruthachadh", + "cannotcreateaccount-text": "Chan eil cruthachadh dìreach de chunntasan an comas air an uici seo.", "yourdomainname": "An àrainn-lìn agad:", "password-change-forbidden": "Chan urrainn dhut faclan-faire atharrachadh air an uicipeid seo.", "externaldberror": "Thachair mearachd le dearbhadh an stòir-dhàta air neo chan eil cead agad an cunntas agad air an taobh a-muigh ùrachadh.", "login": "Log a-steach", + "login-security": "Dearbh cò thusa", "nav-login-createaccount": "Log a-steach / cruthaich cunntas", "logout": "Log a-mach", "userlogout": "Log a-mach", @@ -412,22 +417,28 @@ "userlogin-resetpassword-link": "Na dhìochuimhnich thu am facal-faire agad?", "userlogin-helplink2": "Taic le logadh a-steach", "userlogin-loggedin": "Chaidh do logadh a-steach mar $1 mu thràth.\nCleachd am foirm gu h-ìosal airson logadh a-steach mar chleachdaiche eile.", + "userlogin-reauth": "Feumaidh tu clàradh a-steach às ùr a dhearbhadh gur tusa $1.", "userlogin-createanother": "Cruthaich cunntas eile", "createacct-emailrequired": "Seòladh puist-d", "createacct-emailoptional": "Seòladh puist-d (roghainneil)", "createacct-email-ph": "Cuir a-steach an seòladh puist-d agad", "createacct-another-email-ph": "Cuir a-steach seòladh puist-d", "createaccountmail": "Cleachd facal-faire sealach air thuaiream agus cuir e dhan phost-d a tha 'ga shònrachadh gu h-ìosal", + "createaccountmail-help": "Gabhaidh seo a chleachdadh airson cunntas a chruthachadh do neach eile gun fhiosta dè am facal-faire.", "createacct-realname": "Fìor-ainm (roghainneil)", "createacct-reason": "Adhbhar", "createacct-reason-ph": "Carson a tha thu a' cruthachadh cunntas eile?", + "createacct-reason-help": "An teachdaireachd a thèid a shealltainn ann an loga cruthachadh a’ chunntais", "createacct-submit": "Cruthaich an cunntas agad", "createacct-another-submit": "Cruthaich cunntas", + "createacct-continue-submit": "Lean air cruthachadh a’ chunntais", + "createacct-another-continue-submit": "Lean air cruthachadh a’ chunntais", "createacct-benefit-heading": "Tha {{SITENAME}} 'ga chruthachadh le daoine mar thu fhèin.", "createacct-benefit-body1": "{{PLURAL:$1|deasachadh|deasachaidhean}}", "createacct-benefit-body2": "{{PLURAL:$1|duilleag|duilleagan}}", "createacct-benefit-body3": "{{PLURAL:$1|deasaiche|deasaichean}} o chionn goirid", "badretype": "Chan eil an dà fhacal-faire a chuir thu a-steach a' freagairt ri chèile.", + "usernameinprogress": "Tha cunntas eile ’ga chruthachadh dhan ainm-chleachdaiche seo mu thràth. Fuirich ort.", "userexists": "Tha an t-ainm-cleachdaiche a chuir thu a-steach 'ga chleachdadh mu thràth.\nNach tagh thu ainm eile?", "loginerror": "Mearachd log a-steach", "createacct-error": "Mearachd le cruthachadh a' chunntais", @@ -436,6 +447,7 @@ "nocookieslogin": "Tha {{SITENAME}} a' cleachdadh briosgaidean gus daoine a logadh a-steach.\nChuir thu briosgaidean à comas.\nCuir an comas iad is feuch ris a-rithist.", "nocookiesfornew": "Cha deach an cunntas a chruthachadh oir cha b' urrainn dhuinn a thùs a dhearbhadh.\nDèan cinnteach gu bheil briosgaidean an comas, ath-luchdaich an duilleag seo 's feuch ris a-rithist.", "nocookiesforlogin": "{{int:nocookieslogin}}", + "createacct-loginerror": "Chaidh an cunntas a chruthachadh ach cha b’ urrainn dhuinn do chlàradh a-steach gu fèin-obrachail. Dèan [[Special:UserLogin|clàradh a-steach de làimh]].", "noname": "Cha do thagh thu ainm-cleachdaiche dligheach.", "loginsuccesstitle": "Rinn thu logadh a-steach", "loginsuccess": "Rinn thu logadh a-steach air {{SITENAME}} mar \"$1\".", @@ -446,6 +458,8 @@ "wrongpassword": "Chuir thu a-steach facal-faire cearr.\nAm feuch thu ris a-rithist?", "wrongpasswordempty": "Cha do chuir thu a-steach facal-faire.\nFeuch ris a-rithist.", "passwordtooshort": "Feumaidh faclan-faire a bhith {{PLURAL:$1|$1 charactar|$1 charactar|$1 caractaran|$1 caractar}} a dh'fhaid air a' char as lugha.", + "passwordtoolong": "Chan fhaod faclan-faire a bhith nas fhaide na {{PLURAL:$1|1 charactar|$1 charactar|$1 caractaran|$1 caractar}}.", + "passwordtoopopular": "Chan fhaodar faclan-faire cumanta a chleachdadh. Tagh rudeigin nach eil cho cumanta.", "password-name-match": "Chan fhaod am facal-faire 's an t-ainm-cleachdaiche agad a bhith co-ionnann.", "password-login-forbidden": "Tha an t-ainm-cleachdaiche 's am facal-faire seo toirmisgte.", "mailmypassword": "Ath-shuidhich am facal-faire", @@ -478,6 +492,7 @@ "createacct-another-realname-tip": "Cha leig thu leas innse dè am fìor-ainm a tha ort.\nMa bheir thu seachad e, thèid seo a chleachdadh gus urram a thoirt dha na h-ùghdaran airson an cuid obrach.", "pt-login": "Log a-steach", "pt-login-button": "Log a-steach", + "pt-login-continue-button": "Lean air a’ chlàradh a-steach", "pt-createaccount": "Cruthaich cunntas", "pt-userlogout": "Log a-mach", "php-mail-error-unknown": "Mearachd neo-aithichte san fheart mail() aig PHP.", @@ -493,6 +508,28 @@ "resetpass_submit": "Suidhich am facal-faire 's dèan logadh a-steach", "changepassword-success": "Chaidh am facal-faire agad atharrachadh!", "changepassword-throttled": "Dh'fheuch thu ri logadh a-steach ro thric o chionn ghoirid.\nFuirich ort $1 mus feuch thu ris a-rithist.", + "botpasswords": "Faclan-faire bots", + "botpasswords-summary": "Bheir faclan-faire bots cothrom air cunntas cleachdaiche slighe an API gun a bhith a’ cleachdadh prìomh theisteas a’ chunntais. Dh’fhaoidte gum bi na còraichean cleachdaiche cuingichte nuair a thathar clàraichte a-staigh air facal-faire bot.\n\nMur eil fhios agad carson a dhèanadh tu seo, ’s mathaid nach bu chòir dhut sin a dhèanamh. Cha bu chòir do dhuine sam bith iarraidh ort fear dhiubh seo a chruthachadh is a thoirt dhaibh uair sam bith.", + "botpasswords-disabled": "Tha faclan-faire bots à comas.", + "botpasswords-no-central-id": "Feumaidh tu a bhith clàraichte a-staigh air cunntas meadhanaichte mus urrainn dhut faclan-faire bots a chleachdadh.", + "botpasswords-existing": "Faclan-faire bots làithreach", + "botpasswords-createnew": "Cruthaich facal-faire bot ùr", + "botpasswords-editexisting": "Deasaich facal-faire bot làithreach", + "botpasswords-label-appid": "Ainm a’ bhot:", + "botpasswords-label-create": "Cruthaich", + "botpasswords-label-update": "Ùraich", + "botpasswords-label-cancel": "Sguir dheth", + "botpasswords-label-delete": "Sguab às", + "botpasswords-label-resetpassword": "Ath-shuidhich am facal-faire", + "botpasswords-label-grants": "Buileachaidhean iomchaidh:", + "botpasswords-help-grants": "Ma nì thu buileachadh, is urrainn dhut còraichean a tha aig a’ chunntas agad a thoirt seachad. Ma nì thu buileachadh an-seo, cha doir seo cothrom air còraichean sam bith nach biodh aig a’ chunntas agad co-dhiù. Seall [[Special:ListGrants|clàr a’ bhuileachaidh]] airson barrachd fiosrachaidh.", + "botpasswords-label-grants-column": "Air a bhuileachadh", + "botpasswords-bad-appid": "Chan e ainm bot dligheach a tha ann an “$1”.", + "botpasswords-insert-failed": "Cha b’ urrainn dhuinn an t-ainm bot “$1” a chur ris. An deach a chur ris mu thràth?", + "botpasswords-update-failed": "Dh’fhàillig ùrachadh an ainm bot “$1”. An deach a sguabadh às?", + "botpasswords-created-title": "Chaidh am facal-faire bot a chruthachadh", + "botpasswords-created-body": "Chaidh am facal-faire bot airson a’ bhot air a bheil “$1” aig a’ chleachdaiche “$2” a chruthachadh.", + "botpasswords-updated-title": "Chaidh am facal-faire bot ùrachadh", "resetpass_forbidden": "Cha ghabh na faclan-faire atharrachadh", "resetpass-no-info": "Feumaidh tu logadh a-steach mus dèan thu inntrigeadh dìreach dhan duilleag seo.", "resetpass-submit-loggedin": "Atharraich am facal-faire", @@ -647,7 +684,7 @@ "permissionserrorstext": "Chan eil cead agad sin a dhèanamh air sgàth {{PLURAL:$1|an adhbhair|nan adhbharan}} a leanas:", "permissionserrorstext-withaction": "Chan eil cead agad airson \"$2\" air sgàth {{PLURAL:$1|an adhbhair|nan adhbharan}} a leanas:", "recreate-moveddeleted-warn": "Rabhadh: Tha thu gu bhith ath-chruthachadh duilleag a chaidh a sguabadh às roimhe.\n\nSaoil am bu chòir dhut leantainn air adhart le deasachadh na duilleige?.\nSeo dhut loga an sguabaidh às agus a' ghluasaid mar fhiosrachadh dhut:", - "moveddeleted-notice": "Chaidh an duilleag seo a sguabadh às.\nChì thu loga an sguabaidh às agus a' ghluasaid gu h-ìosal mar fhiosrachadh dhut.", + "moveddeleted-notice": "Chaidh an duilleag seo a sguabadh às.\nChì thu loga an sguabaidh às, an dìon agus a’ ghluasaid gu h-ìosal mar fhiosrachadh dhut.", "log-fulllog": "Seall an loga slàn", "edit-hook-aborted": "Sguireadh dhen deasachadh ri linn dubhan.\nCha deach adhbhar a thoirt seachad.", "edit-gone-missing": "Cha b' urrainn dhuinn an duilleag ath-nuadhachadh.\nTha coltas gun deach a sguabadh às.", @@ -714,7 +751,7 @@ "page_first": "Toiseach", "page_last": "Deireadh", "histlegend": "Taghadh nan diofar: comharraich bogsaichean rèidio nam mùthaidhean gus coimeas a dhèanamh agus put Enter no am putan gu h-ìosal.
\nTreòir: ({{int:cur}}) = an diofar eadar e 's am mùthadh as ùire, ({{int:last}}) = an diofar eadar e 's am mùthadh roimhe, {{int:minoreditletter}} = deasachadh beag.", - "history-fieldset-title": "An eachdraidh brabhsaidh", + "history-fieldset-title": "Lorg lèirmheasan", "history-show-deleted": "Na chaidh sguabadh às a-mhàin", "histfirst": "as sine", "histlast": "as ùire", @@ -2963,7 +3000,6 @@ "fileduplicatesearch-noresults": "Cha deach faidhle air a bheil \"$1\" a lorg.", "specialpages": "Duilleagan sònraichte", "specialpages-note-top": "Treòir", - "specialpages-note": "* Duilleagan sònraichte coitcheann.\n* Duilleagan sònraichte cuingichte.", "specialpages-group-maintenance": "Aithrisean na h-obrach-glèidhidh", "specialpages-group-other": "Duilleagan sònraichte eile", "specialpages-group-login": "Log a-steach / cruthaich cunntas", @@ -3027,7 +3063,7 @@ "htmlform-cloner-delete": "Thoir air falbh", "htmlform-cloner-required": "Tha luach a dhìth.", "logentry-delete-delete": "Sguab $1 às duilleag $3", - "logentry-delete-restore": "Dh'aisig $1 duilleag $3", + "logentry-delete-restore": "Dh’aisig $1 duilleag $3 ($4)", "logentry-delete-event": "Dh'atharraich $1 an fhaicsinneachd aig $5 {{PLURAL:$5|tachartas|thachartas|tachartasan|tachartas}} an loga air $3: $4", "logentry-delete-revision": "Dh'atharraich $1 an fhaicsinneachd aig $5 {{PLURAL:$5|mhùthadh|mhùthadh|mùthaidhean|mùthadh}} air $3: $4", "logentry-delete-event-legacy": "Dh'atharraich $1 an fhaicsinneachd aig tachartasan an loga air $3", @@ -3167,5 +3203,6 @@ "special-characters-group-bangla": "Bangla", "special-characters-group-telugu": "Telugu", "special-characters-group-sinhala": "Sinhala", - "special-characters-group-gujarati": "Gujarati" + "special-characters-group-gujarati": "Gujarati", + "randomrootpage": "Duilleag root air thuaiream" } diff --git a/languages/i18n/gl.json b/languages/i18n/gl.json index 8e1d012147..16e369ec4f 100644 --- a/languages/i18n/gl.json +++ b/languages/i18n/gl.json @@ -61,6 +61,7 @@ "tog-watchlisthideminor": "Agochar as edicións pequenas na lista de vixilancia", "tog-watchlisthideliu": "Agochar as edicións dos usuarios rexistrados na lista de vixilancia", "tog-watchlistreloadautomatically": "Recargar a lista de vixilancia automaticamente cando se produza un cambio nun filtro (necesítase JavaScript)", + "tog-watchlistunwatchlinks": "Engadir ligazóns directos para vixiar ou deixar de vixiar as entradas da lista de páxinas vixiadas (é necesario JavaScript para activar a funcionalidade)", "tog-watchlisthideanons": "Agochar as edicións dos usuarios anónimos na lista de vixilancia", "tog-watchlisthidepatrolled": "Agochar as edicións patrulladas na lista de vixilancia", "tog-watchlisthidecategorization": "Agochar a categorización das páxinas", @@ -719,8 +720,8 @@ "permissionserrorstext-withaction": "Non ten os permisos necesarios para $2, {{PLURAL:$1|pola seguinte razón|polas seguintes razóns}}:", "contentmodelediterror": "Non pode editar esta revisión porque o seu modelo de contido é \"$1\", o cal difire do modelo de contido \"$2\", que é o actual da páxina.", "recreate-moveddeleted-warn": "'''Atención: Vai volver crear unha páxina que xa foi eliminada anteriormente.'''\n\nDebería considerar se é apropiado continuar a editar esta páxina.\nVelaquí están o rexistro de borrados e mais o de traslados desta páxina, por se quere consultalos:", - "moveddeleted-notice": "Esta páxina foi borrada.\nA continuación pódese ver o rexistro de borrados e traslados desta páxina, por se quere consultalos.", - "moveddeleted-notice-recent": "Sentímolo, borrouse esta páxina recentemente (nas últimas 24 horas).\nVelaquí están o rexistro de borrados e traslados da páxina, por se os quere consultar.", + "moveddeleted-notice": "Esta páxina foi borrada.\nO rexistro de borrados, protección e traslados desta páxina amósase abaixo, por se quere consultalos.", + "moveddeleted-notice-recent": "Sentímolo, borrouse esta páxina recentemente (nas últimas 24 horas).\nVelaquí están o rexistro de borrados, proteccións e traslados da páxina, por se os quere consultar.", "log-fulllog": "Ver o rexistro completo", "edit-hook-aborted": "A edición foi abortada polo asociador.\nEste non deu ningunha explicación.", "edit-gone-missing": "Non se pode actualizar a páxina.\nSemella que foi borrada.", @@ -990,7 +991,7 @@ "prefs-editwatchlist-clear": "Limpar a súa lista de vixilancia", "prefs-watchlist-days": "Número de días que mostrar na lista de vixilancia:", "prefs-watchlist-days-max": "Máximo: $1 {{PLURAL:$1|día|días}}", - "prefs-watchlist-edits": "Número máximo de edicións que mostrar na lista de vixilancia completa:", + "prefs-watchlist-edits": "Número máximo de edicións que mostrar na lista de vixilancia:", "prefs-watchlist-edits-max": "Número máximo: 1000", "prefs-watchlist-token": "Pase para a lista de vixilancia:", "prefs-misc": "Preferencias varias", @@ -1311,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", @@ -1323,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.", @@ -1339,8 +1342,7 @@ "rcfilters-savedqueries-add-new-title": "Gardar a configuración do filtro actual", "rcfilters-restore-default-filters": "Restaurar os filtros por defecto", "rcfilters-clear-all-filters": "Borrar todos os filtros", - "rcfilters-show-new-changes": "Mostrar os novos cambios", - "rcfilters-previous-changes-label": "Modificacións vistas anteriormente", + "rcfilters-show-new-changes": "Mostrar os cambios máis recentes", "rcfilters-search-placeholder": "Filtrar os cambios recentes (ollar ou comezar a escribir)", "rcfilters-invalid-filter": "Filtro no válido", "rcfilters-empty-filter": "Non hai filtros activos. Móstranse tódalas contribucións.", @@ -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", @@ -2632,7 +2640,7 @@ "import-nonewrevisions": "Non se importou ningunha revisión (xa estaban todas presentes ou saltáronse por erros).", "xml-error-string": "$1 na liña $2, columna $3 (byte $4): $5", "import-upload": "Cargar datos XML", - "import-token-mismatch": "Perda dos datos da sesión.\n\nPoida que se pechase a súa sesión. Por favor, comprobe que ten a sesión aberta e probe de novo.\nEn caso de que siga sen funcionar, intente [[Special:UserLogout|saír]] e volver entrar na súa conta e verifique que o seu navegador permite o uso de cookies neste sitio.", + "import-token-mismatch": "Perda dos datos da sesión.\n\nPoida que se pechase a súa sesión. '''Por favor, comprobe que ten a sesión aberta e probe de novo'''.\nEn caso de que siga sen funcionar, intente [[Special:UserLogout|saír]] e volver entrar na súa conta e verifique que o seu navegador permite o uso de cookies neste sitio.", "import-invalid-interwiki": "Non se pode importar desde o wiki escificado.", "import-error-edit": "Non foi posible importar a páxina \"$1\" porque non ten os permisos necesarios para editala.", "import-error-create": "Non foi posible importar a páxina \"$1\" porque non ten os permisos necesarios para creala.", @@ -3575,6 +3583,13 @@ "compare-invalid-title": "O título que especificou non é válido.", "compare-title-not-exists": "O título que especificou non existe.", "compare-revision-not-exists": "A revisión que especificou non existe.", + "diff-form": "Diferenzas", + "diff-form-oldid": "Identificador de revisión antigo (opcional)", + "diff-form-revid": "Identificador de revisión da diferenza", + "diff-form-submit": "Mostrar as diferenzas", + "permanentlink": "Ligazón permanente", + "permanentlink-revid": "ID da revisión", + "permanentlink-submit": "Ir á revisión", "dberr-problems": "Sentímolo! Este sitio está experimentando dificultades técnicas.", "dberr-again": "Por favor, agarde uns minutos e logo probe a cargar de novo a páxina.", "dberr-info": "(Non se pode acceder ao servidor da base de datos: $1)", diff --git a/languages/i18n/got.json b/languages/i18n/got.json index fd90bda66e..c317226d97 100644 --- a/languages/i18n/got.json +++ b/languages/i18n/got.json @@ -92,10 +92,6 @@ "mytalk": "𐌲𐌰𐍅𐌰𐌿𐍂𐌳𐌾𐌰", "navigation": "𐌻𐌰𐌿𐌱𐌰𐌲𐌰𐍅𐌹𐍃𐍃𐌴𐌹𐍃", "and": "𐌾𐌰𐌷", - "qbfind": "𐌱𐌹𐌲𐌹𐍄", - "qbedit": "𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹", - "qbpageoptions": "𐍃𐌰 𐌻𐌰𐌿𐍆𐍃", - "qbmyoptions": "𐌼𐌴𐌹𐌽𐌰𐌹 𐌻𐌰𐌿𐌱𐍉𐍃", "actions": "𐍄𐍉𐌾𐌰", "namespaces": "𐌽𐌰𐌼𐌰𐍂𐌿𐌼𐌰", "variants": "𐌼𐌹𐍃𐍃𐌰𐌻𐌴𐌹𐌺", @@ -116,25 +112,17 @@ "view-foreign": "𐍃𐌰𐌹𐍈 𐌰𐌽𐌰 $1", "edit": "𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹", "create": "𐍃𐌺𐌰𐍀𐌴𐌹", - "editthispage": "𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹 𐌸𐌰𐌽𐌰 𐌻𐌰𐌿𐍆", - "create-this-page": "𐍃𐌺𐌰𐍀𐌴𐌹 𐌸𐌰𐌽𐌰 𐌻𐌰𐌿𐍆", "delete": "𐍆𐍂𐌰𐌵𐌹𐍃𐍄𐌴𐌹", - "deletethispage": "𐍆𐍂𐌰𐌵𐌹𐍃𐍄𐌴𐌹 𐌸𐌰𐌼𐌼𐌰 𐌻𐌰𐌿𐌱𐌰", - "undeletethispage": "𐌽𐌰𐍃𐌴𐌹 𐌸𐌰𐌽𐌰 𐌻𐌰𐌿𐍆", "protect": "𐍆𐍂𐌹𐌸", "protect_change": "𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹", - "protectthispage": "𐍆𐍂𐌹𐌸 𐌸𐌰𐌽𐌰 𐌻𐌰𐌿𐍆", "unprotect": "𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹 𐌼𐌿𐌽𐌳", - "unprotectthispage": "𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹 𐌼𐌿𐌽𐌳 𐌸𐌹𐍃 𐌻𐌰𐌿𐌱𐌹𐍃", "newpage": "𐌽𐌹𐌿𐌾𐌹𐍃 𐌻𐌰𐌿𐍆𐍃", - "talkpage": "𐍂𐍉𐌳𐌴𐌹 𐌱𐌹 𐌸𐌰𐌽𐌰 𐌻𐌰𐌿𐍆", "talkpagelinktext": "𐌲𐌰𐍅𐌰𐌿𐍂𐌳𐌾𐌰", "specialpage": "𐌿𐍃𐍃𐌹𐌽𐌳𐍃 𐌻𐌰𐌿𐍆𐍃", "personaltools": "𐍃𐍅𐌴𐍃𐌰𐌹 𐍃𐌰𐍂𐍅𐌰𐌽𐍃", "talk": "𐌲𐌰𐍅𐌰𐌿𐍂𐌳𐌾𐌰", "views": "𐍃𐌹𐌿𐌽𐌴𐌹𐍃", "toolbox": "𐍃𐌰𐍂𐍅𐌰𐌽𐍃", - "projectpage": "𐌰𐌽𐌳𐌷𐌿𐌻𐌴𐌹 𐍆𐌰𐌿𐍂𐌰𐍅𐌰𐌿𐍂𐍀𐌰𐌻𐌰𐌿𐍆", "mediawikipage": "𐌰𐌽𐌳𐌷𐌿𐌻𐌴𐌹 𐍅𐌰𐌿𐍂𐌳𐌰𐌻𐌰𐌿𐍆", "viewhelppage": "𐌰𐌽𐌳𐌷𐌿𐌻𐌴𐌹 𐌷𐌹𐌻𐍀𐌰𐌻𐌰𐌿𐍆", "otherlanguages": "𐌰𐌽𐌸𐌰𐍂𐌰𐌹𐌼 𐍂𐌰𐌶𐌳𐍉𐌼", diff --git a/languages/i18n/gu.json b/languages/i18n/gu.json index e5f3045abc..add4680193 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": "કડીઓની નીચે લીટી (અંડરલાઇન):", @@ -536,9 +537,9 @@ "showdiff": "ફેરફારો દર્શાવો", "anoneditwarning": "ચેતવણી: તમે તમારા સભ્ય નામથી પ્રવેશ કર્યો નથી.\nઆ પાનાનાં ઇતિહાસમાં તમારૂં આઇ.પી. (IP) એડ્રેસ નોંધવામાં આવશે અને તમારૂં આઈ.પી. લોકો જાહેર રીતે જોઈ શકશે. માટે [$1 પ્રવેશ કરો] અથવા તમે [$2 ખાતું બનાવો] તો ફેરફારો તમારા સભ્યનામ હેઠળ થશે અને અન્ય ફાયદાઓ પણ મળશે.", "anonpreviewwarning": "તમે સભ્યનામથી પ્રવેશ કર્યો નથી,આ પાનું ઈતિહાસમાંતમારા IP સરનામાના નામે સાચવવામાં આવશે", - "missingsummary": "ચેતવણી: તમે ફેરફારોનો સારાંશ આપ્યો\nજો તમે \"$1\" પર ફરી ક્લિક કરશો તો તમારા ફેરફારો સાચવવામાં આવશે.", + "missingsummary": "ચેતવણી: તમે ફેરફારોનો સારાંશ આપ્યો નથી.\nજો તમે \"$1\" પર ફરી ક્લિક કરશો તો, તમારા ફેરફારો સારાંશ વગર સાચવવામાં આવશે.", "missingcommenttext": "કૃપા કરી નીચે ટીપ્પણી લખો.", - "missingcommentheader": "'''યાદ દેવડાવું:'''તમે તમારી ટિપ્પણી ને શીર્ષક/મથાળુ આપ્યું નથી. \nજો તમે \"$1\" પર ફરીથી ક્લિક કરશો, તો તમારા ફેરરારો મથાળા વગર સચવાશે.", + "missingcommentheader": "ચેતવણી: તમે તમારી ટિપ્પણી ને શીર્ષક/મથાળુ આપ્યું નથી.\nજો તમે \"$1\" પર ફરીથી ક્લિક કરશો, તો તમારા ફેરફારો મથાળા વગર સચવાશે.", "summary-preview": "સંપાદન સારાંશ પૂર્વાવલોકન:", "subject-preview": "વિષયનું પૂર્વાવલોકન:", "blockedtitle": "સભ્ય પ્રતિબંધિત છે", @@ -574,7 +575,7 @@ "note": "'''નોંધ:'''", "previewnote": "ધ્યાનમાં રાખો કે આ ફક્ત પૂર્વાવલોકન છે.\nતમારા ફેરફારો હજુ સાચવવામાં આવ્યા નથી!", "continue-editing": "ફેરફાર કરવાનું ચાલુ રાખો", - "previewconflict": "જો તમે આ પાનું સાચવશો તો આ પ્રિવ્યુમાં દેખાય છે તેવું સચવાશે.", + "previewconflict": "આ પૂર્વદર્શન તમને પાનું સચવાયા પછી કેવું દેખાશે તે બતાવે છે.", "session_fail_preview": "'''અફસોસ છે! સત્ર માહિતી ખોઇ દેવાને કારણે અમે તમારું કાર્ય સાચવી ન શક્યાં.'''\nકૃપયા ફરી પ્રયત્ન કરો.\nતેમ છતાં પણ સાચવી ન શકો તો [[Special:UserLogout|logging out]] કરી ફરી પ્રવેશ કરો.", "session_fail_preview_html": "'''અફસોસ છે! સત્ર માહિતીનો નાશ થવાથી તમે કરેલ ફેરફાર અમે સાચવી ન શક્યાં .'''\n\n''કેમકે {{SITENAME}} માં કાચી HTML સક્રીય છે, JavaScript ના હુમલા સામેના રક્ષણ માટે ઝલક પર રોક લગાવી છે .''\n\n'''જો આ ગંભીર પ્રયત્ન હતો તો ફરી પ્રયત્ન કરો .'''\nઅનેતમા છતાં કમા ના કરેતો [[Special:UserLogout|logging out]] કરી ફરી લોગ ઇન કરો.", "token_suffix_mismatch": "'''તમારા ફેરફારો કેમકે તમારા ગ્રાહકએ ફેરફાર નાકામાં વિરામચિન્હો અસ્ત વ્યસ્ત કરી દેતા.'''\nઆ પાનાને ખરાબ થતો અટકાવવા આ ફેરફાર રદ્દ કરાયો છે. \nજ્યારે તમે વેબ આધારિત અજ્ઞાત પ્રોક્સી વાપરતા હોવ ત્યારે આવું બની શકે છે.", @@ -612,7 +613,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લાગે છે કોઇએ આ પાનું હટાવી દીધું છે", @@ -1077,6 +1078,15 @@ "recentchanges-legend-heading": "કળ:", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|નવા પાનાઓની યાદી]] પણ જુઓ)", "recentchanges-submit": "બતાવો", + "rcfilters-legend-heading": "સંક્ષેપોની યાદી:", + "rcfilters-other-review-tools": "અન્ય ચકાસણી સાધનો", + "rcfilters-activefilters": "સક્રિય ગાળકો", + "rcfilters-limit-title": "દર્શાવવાના ફેરફારો", + "rcfilters-limit-shownum": "છેલ્લા {{PLURAL:$1|ફેરફાર|$1 ફેરફારો}} દર્શાવો", + "rcfilters-days-title": "તાજેતરના દિવસો", + "rcfilters-hours-title": "તાજેતરના કલાકો", + "rcfilters-savedqueries-cancel-label": "રદ કરો", + "rcfilters-show-new-changes": "તાજેતરના ફેરફારો દર્શાવો", "rcnotefrom": "નીચે $3, $4 થી {{PLURAL:$5|ફેરફાર|ફેરફારો}} દર્શાવેલ છે ($1 સુધી દર્શાવેલ છે).", "rclistfrom": "$3 $2 બાદ થયેલા નવા ફેરફારો બતાવો", "rcshowhideminor": "નાના ફેરફારો $1", @@ -1120,7 +1130,7 @@ "recentchangeslinked-feed": "આની સાથે જોડાયેલા ફેરફાર", "recentchangeslinked-toolbox": "આની સાથે જોડાયેલા ફેરફાર", "recentchangeslinked-title": "\"$1\" ને લગતા ફેરફારો", - "recentchangeslinked-summary": "આ એવા ફેરફારોની યાદી છે જે આ ચોક્કસ પાના (કે શ્રેણીનાં સભ્ય પાનાઓ) સાથે જોડાયેલા પાનાઓમાં તાજેતરમાં કરવામાં આવ્યા હોય.\n
[[Special:Watchlist|તમારી ધ્યાનસૂચિમાં]] હોય તેવા પાનાં '''ઘાટા અક્ષર'''માં વર્ણવ્યાં છે", + "recentchangeslinked-summary": "આ એવા ફેરફારોની યાદી છે જે આ ચોક્કસ પાના (કે શ્રેણીનાં સભ્ય પાનાઓ) સાથે જોડાયેલા પાનાઓમાં તાજેતરમાં કરવામાં આવ્યા હોય.\n[[Special:Watchlist|તમારી ધ્યાનસૂચિમાં]] હોય તેવા પાનાં ઘાટા અક્ષરમાં વર્ણવ્યાં છે.", "recentchangeslinked-page": "પાનાનું નામ:", "recentchangeslinked-to": "આને બદલે આપેલા પાનાં સાથે જોડાયેલા લેખોમાં થયેલા ફેરફારો શોધો", "upload": "ફાઇલ ચડાવો", @@ -1696,7 +1706,7 @@ "protect-locked-dblock": "માહિતી સંચ બંધ હોવાથી સંરક્ષણ સ્તર બદલી નહીં શકાય્\nઆ પાનાના હાલના સુરક્ષા સ્તર : $1", "protect-locked-access": "તમને પાનાની સુરક્ષાનાં સ્તરમાં ફેરફાર કરવાની પરવાનગી નથી.\nપાનાં '''$1'''નું હાલનું સેટીંગ અહિં જોઈ શકો છો:", "protect-cascadeon": "આ પાનું હાલમાં સંરક્ષિત છે કારણકે તે {{PLURAL:$1|પાનું,|પાનાઓ,}} જેમાં ધોધાકાર સંરક્ષણ ચાલુ છે, તેમાં છે.\n\nતમે આ પાનાઓનું સંરક્ષણ સ્તર બદલી શકો છો, પરંતુ તેની અસર ધોધાકાર સંરક્ષણ પર પડવી જોઇએ નહીં.", - "protect-default": "બધા સભ્યોને પરવાનગી", + "protect-default": "બધા સભ્યોને પરવાનગી આપો", "protect-fallback": "માત્ર \"$1\" પરવાનગી સાથેના સભ્યોને માન્ય રાખો", "protect-level-autoconfirmed": "માત્ર આપમેળે ખાતરી થયેલા સભ્યોને માન્ય રાખો", "protect-level-sysop": "માત્ર પ્રબંધકોને માન્ય રાખો", @@ -2730,6 +2740,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]], or [[{{#Special:Redirect}}/logid/186]].", "redirect-submit": "જાઓ", "redirect-lookup": "જુઓ:", "redirect-value": "કિંમત:", diff --git a/languages/i18n/ha.json b/languages/i18n/ha.json index 5c131002fb..779acf15aa 100644 --- a/languages/i18n/ha.json +++ b/languages/i18n/ha.json @@ -4,7 +4,8 @@ "Mladanali", "아라", "DonCamillo", - "Koavf" + "Koavf", + "Ammarpad" ] }, "tog-underline": "A shaya zaruruwa", @@ -100,7 +101,7 @@ "sep": "Sat", "oct": "Okt", "nov": "Nuw", - "dec": "Dic", + "dec": "Dis", "january-date": "Janairu $1", "february-date": "Fabrairu $1", "march-date": "Maris $1", @@ -174,11 +175,11 @@ "disclaimerpage": "Project:Babban gargaɗi", "edithelp": "Taimako kan gyara", "helppage-top-gethelp": "Taimako", - "mainpage": "Marhabin", + "mainpage": "Babban shafi", "mainpage-description": "Babban shafi", "policy-url": "Shiri:Siyasa", "portal": "Kofan al'umma", - "portal-url": "Shiri:Kofan al'umma", + "portal-url": "Wikipedia:Kofan al'umma", "privacy": "Manufar kare sirri", "privacypage": "Project:Manufar kare sirri", "badaccess": "Tangarɗar lamuncewa", @@ -365,7 +366,7 @@ "rcshowhideliu-show": "Nuna", "rcshowhideliu-hide": "Ɓoye", "rcshowhideanons": "$1 ma'aikata masu ɓoyayye suna", - "rcshowhideanons-hide": "Ɓooye", + "rcshowhideanons-hide": "Ɓoye", "rcshowhidemine": "$1 sauye-sauyena", "rcshowhidemine-hide": "Ɓoye", "rclinks": "Nuna sauye-sauye $1 na ƙarshe a cikin kwanaki $2 na baya", 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 c8cb0f97e8..86e2005b69 100644 --- a/languages/i18n/he.json +++ b/languages/i18n/he.json @@ -75,6 +75,7 @@ "tog-watchlisthideminor": "הסתרת עריכות משניות ברשימת המעקב", "tog-watchlisthideliu": "הסתרת עריכות של משתמשים רשומים ברשימת המעקב", "tog-watchlistreloadautomatically": "רענון אוטומטי של רשימת המעקב בכל פעם שמסנן משתנה (דרוש JavaScript)", + "tog-watchlistunwatchlinks": "הוספת קישורי הפסקת/הפעלת מעקב לערכים ברשימת המעקב (דרוש JavaScript כדי שהקישור יתעדכן בעת לחיצה עליו)", "tog-watchlisthideanons": "הסתרת עריכות של משתמשים אנונימיים ברשימת המעקב", "tog-watchlisthidepatrolled": "הסתרת עריכות בדוקות ברשימת המעקב", "tog-watchlisthidecategorization": "הסתרת שינויים בקטגוריות", @@ -604,7 +605,7 @@ "changeemail-throttled": "ביצעתם ניסיונות רבים מדי להיכנס לחשבון זה.\nאנא המתינו $1 לפני שתנסו שוב.", "changeemail-nochange": "יש להקליד כתובת דוא\"ל חדשה שונה.", "resettokens": "איפוס אסימונים", - "resettokens-text": "בעמוד זה ניתן לאפס אסימונים שמאפשרים גישה לנתונים פרטיים של החשבון שלך.\n\nרצוי לעשות זאת אם שיתפת אותם בטעות עם אחרים או אם חשבונך נפרץ.", + "resettokens-text": "בדף הזה ניתן לאפס אסימונים שמאפשרים גישה לנתונים פרטיים של החשבון שלך.\n\nרצוי לעשות זאת אם שיתפת אותם בטעות עם אחרים או אם חשבונך נפרץ.", "resettokens-no-tokens": "אין אסימונים לאיפוס.", "resettokens-tokens": "אסימונים:", "resettokens-token-label": "$1 (ערך נוכחי: $2)", @@ -724,8 +725,8 @@ "permissionserrorstext-withaction": "אין ב{{GENDER:|אפשרותך|אפשרותך|אפשרותכם}} $2, מה{{PLURAL:$1|סיבה הבאה|סיבות הבאות}}:", "contentmodelediterror": "לא ניתן לערוך את הגרסה הזאת כי מודל התוכן שלה הוא $1, השונה ממודל התוכן הנוכחי של הדף, $2.", "recreate-moveddeleted-warn": "'''אזהרה: הנכם יוצרים דף חדש שנמחק בעבר.'''\n\nכדאי לשקול אם יהיה זה נכון להמשיך לערוך את הדף.\nיומני המחיקות וההעברות של הדף מוצגים להלן:", - "moveddeleted-notice": "דף זה נמחק.\nיומני המחיקות וההעברות של הדף מוצגים להלן.", - "moveddeleted-notice-recent": "מצטערים, הדף הזה נמחק לאחרונה (ב־24 השעות האחרונות).\nיומני המחיקות וההעברות של הדף מוצגים להלן לעיון.", + "moveddeleted-notice": "דף זה נמחק.\nיומני המחיקות, ההגנות וההעברות של הדף מוצגים להלן לעיון.", + "moveddeleted-notice-recent": "מצטערים, הדף הזה נמחק לאחרונה (ב־24 השעות האחרונות).\nיומני המחיקות, ההגנות וההעברות של הדף מוצגים להלן לעיון.", "log-fulllog": "הצגת היומן המלא", "edit-hook-aborted": "העריכה בוטלה על־ידי Hook.\nלא ניתן הסבר לביטול.", "edit-gone-missing": "לא ניתן לעדכן את הדף.\nנראה שהוא נמחק.", @@ -993,7 +994,7 @@ "prefs-editwatchlist-clear": "ניקוי רשימת המעקב", "prefs-watchlist-days": "מספר הימים שמוצגים ברשימת המעקב:", "prefs-watchlist-days-max": "לכל היותר {{PLURAL:$1|יום אחד|יומיים|$1 ימים}}", - "prefs-watchlist-edits": "המספר המרבי של העריכות שמוצגות ברשימת המעקב המורחבת:", + "prefs-watchlist-edits": "המספר המרבי של העריכות שמוצגות ברשימת המעקב:", "prefs-watchlist-edits-max": "לכל היותר: 1,000", "prefs-watchlist-token": "אסימון לרשימת המעקב:", "prefs-misc": "שונות", @@ -1309,10 +1310,11 @@ "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": "חלוקה תוצאות לקבוצות לפי דף", - "rcfilters-grouping-title": "חלוקה לקבוצה", + "rcfilters-group-results-by-page": "חלוקה התוצאות לקבוצות לפי דף", + "rcfilters-grouping-title": "חלוקה לקבוצות", "rcfilters-activefilters": "מסננים פעילים", "rcfilters-advancedfilters": "מסננים מתקדמים", "rcfilters-limit-title": "אילו שינויים להראות", @@ -1321,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": "כדי לשמור את הגדרות המסננים שלך ולהשתמש בהן מאוחר יותר, יש ללחוץ על סמל הסימנייה באזור המסנן הפעיל להלן.", @@ -1337,8 +1340,7 @@ "rcfilters-savedqueries-add-new-title": "שמירת הגדרות המסננים הנוכחיות", "rcfilters-restore-default-filters": "שחזור למסנני ברירת המחדל", "rcfilters-clear-all-filters": "מחיקת כל המסננים", - "rcfilters-show-new-changes": "הצגת שינויים חדשים", - "rcfilters-previous-changes-label": "שינויים שהוצגו בעבר", + "rcfilters-show-new-changes": "הצגת השינויים החדשים ביותר", "rcfilters-search-placeholder": "סינון שינויים אחרונים (עיינו או התחילו להקליד)", "rcfilters-invalid-filter": "מסנן בלתי־תקין", "rcfilters-empty-filter": "אין מסננים פעילים. כל התרומות מוצגות.", @@ -1351,7 +1353,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": "תרומות שביצעת בעצמך.", @@ -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": "עריכות של תוכן ויקי, של דיונים, של תיאורי קטגוריות…", @@ -1418,7 +1425,8 @@ "rcfilters-view-return-to-default-tooltip": "חזרה לתפריט המסננים הראשי", "rcfilters-liveupdates-button": "עדכונים חיים", "rcfilters-liveupdates-button-title-on": "כיבוי העדכונים החיים", - "rcfilters-liveupdates-button-title-off": "להראות שינויים חדשים כשהם מתרחשים", + "rcfilters-liveupdates-button-title-off": "הצגת שינויים חדשים כשהם מתרחשים", + "rcfilters-watchlist-markSeen-button": "סימון כל השינויים כאילו נצפו", "rcnotefrom": "להלן {{PLURAL:$5|השינוי שבוצע|השינויים שבוצעו}} מאז $3, $4 (מוצגים עד $1).", "rclistfromreset": "איפוס בחירת התאריך", "rclistfrom": "הצגת שינויים חדשים החל מ־$2, $3", @@ -2623,7 +2631,7 @@ "import-nonewrevisions": "כל הגרסאות יובאו בעבר.", "xml-error-string": "$1 בשורה $2, עמודה $3 (בית מספר $4): $5", "import-upload": "העלאת קובץ XML", - "import-token-mismatch": "מידע הכניסה אבד.\n\nייתכן שנותקתם מהחשבון. אנא ודאו שאתם עדיין מחוברים לחשבון ונסו שוב.\nאם זה עדיין לא עובד, נסו [[Special:UserLogout|לצאת מהחשבון]] ולהיכנס אליו שנית, וודאו שהדפדפן שלכם מאפשר קבלת עוגיות מאתר זה.", + "import-token-mismatch": "נתוני ההתחברות אבדו.\n\nייתכן שנותקתם מהחשבון. '''אנא ודאו שאתם עדיין מחוברים לחשבון ונסו שוב.'''\nאם זה עדיין לא עובד, נסו [[Special:UserLogout|לצאת מהחשבון]] ולהיכנס אליו שנית, וודאו שהדפדפן שלכם מאפשר קבלת עוגיות מאתר זה.", "import-invalid-interwiki": "לא ניתן לייבא מאתר הוויקי שצוין.", "import-error-edit": "לא ניתן לייבא את הדף \"$1\" כיוון שאין לך הרשאה לערוך אותו.", "import-error-create": "לא ניתן לייבא את הדף \"$1\" כיוון שאין לך הרשאה ליצור אותו.", @@ -3597,6 +3605,13 @@ "compare-invalid-title": "שם הדף שציינת אינו תקין.", "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)", diff --git a/languages/i18n/hi.json b/languages/i18n/hi.json index 88c71505ec..075c3f324f 100644 --- a/languages/i18n/hi.json +++ b/languages/i18n/hi.json @@ -81,7 +81,9 @@ "Dr. Shikha Jaggi", "Shyamal", "SatyamMishra", - "चक्रपाणी" + "चक्रपाणी", + "Anamdas", + "Sachinkatiyar" ] }, "tog-underline": "कड़ियाँ अधोरेखन:", @@ -118,6 +120,7 @@ "tog-watchlisthideminor": "मेरी ध्यानसूची से छोटे परिवर्तन छिपाएँ", "tog-watchlisthideliu": "मेरी ध्यानसूची में सत्रारम्भित सदस्यों के सम्पादन न दिखाएँ", "tog-watchlistreloadautomatically": "जब भी छननी बदलने पर ध्यानसूची को अपने आप ही लोड करें (जावास्क्रिप्ट अनिवार्य)", + "tog-watchlistunwatchlinks": "देखनेवाली सूची प्रविष्टियों के लिए सीधा अनदेखा/देखा कड़ी जोड़ें (टॉगल कार्यक्षमता के लिए जावास्क्रिप्ट आवश्यक)", "tog-watchlisthideanons": "आई॰पी॰ सदस्यों द्वारा किए सम्पादनों को मेरी ध्यानसूची में न दिखायें", "tog-watchlisthidepatrolled": "परीक्षित सम्पादन मेरी ध्यानसूची में छुपाएँ", "tog-watchlisthidecategorization": "पृष्ठों का श्रेणीकरण छुपाएँ", @@ -772,8 +775,8 @@ "permissionserrorstext-withaction": "आपको $2 की अनुमति नहीं हैं, निम्नलिखित {{PLURAL:$1|कारण|कारणों}} की वजह से:", "contentmodelediterror": "आप इस पृष्ठ का इतिहास में सम्पादन नहीं कर सकते हैं क्योंकि इसका सामग्री $1, जो की वर्तमान सामग्री से $2 अलग है।", "recreate-moveddeleted-warn": "'''चेतावनी: आप एक पहले हटाए गए पृष्ठ को पुनर्निर्मित कर रहे हैं।'''\n\nआप को विचार करना चाहिये कि क्या इस पृष्ठ का संपादन जारी रखना उचित होगा।\nइस पृष्ट के हटाने व स्थानांतरण का लॉग सुविधा के लिये उपलब्ध है:", - "moveddeleted-notice": "यह पृष्ठ हटाया जा चुका है।\nपृष्ठ के हटाने और स्थानांतरण का लॉग संदर्भ के लिए नीचे दिया गया है।", - "moveddeleted-notice-recent": "क्षमा करें, यह पृष्ठ कुछ ही समय पहले हटाया गया है। (24 घण्टों के भीतर)\nइसके हटाये और स्थानांतरित करने का लोग नीचे दिया हुआ है।", + "moveddeleted-notice": "इस पेज को हटाया जा चुका है। पृष्ठ के लिए हटाने, सुरक्षा, और कदम लॉग संदर्भ के लिए नीचे दिए गए हैं।", + "moveddeleted-notice-recent": "क्षमा करें, यह पृष्ठ हाल ही में हटा दिया गया था (पिछले 24 घंटों के भीतर)। पृष्ठ के लिए हटाने, सुरक्षा, और कदम लॉग संदर्भ के लिए नीचे दिए गए हैं।", "log-fulllog": "पूरा लॉग देखें", "edit-hook-aborted": "फंदे द्वारा संपादन बीच में ही छोड़ा गया।\nउसने कोई कारण नहीं बताया।", "edit-gone-missing": "पृष्ठ अद्यतित न किया जा सका।\nलगता है यह हटा दिया गया है।", @@ -1042,7 +1045,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": "अन्य", @@ -1357,8 +1360,14 @@ "recentchanges-legend-heading": "कुंजी:", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|नए पन्नों की सूची]] को भी देखें)", "recentchanges-submit": "दिखाएँ", + "rcfilters-legend-heading": "संकेतों की सूची:", + "rcfilters-other-review-tools": "दूसरे समीक्षा उपकरण", + "rcfilters-group-results-by-page": "पेज द्वारा समूह परिणाम", + "rcfilters-grouping-title": "समूहीकरण", "rcfilters-activefilters": "सक्रिय फिल्टर", - "rcfilters-limit-shownum": "पिछले $1 बदलाव दिखायें", + "rcfilters-advancedfilters": "उन्नत फ़िल्टर", + "rcfilters-limit-title": "दिखाने के लिए बदलाव", + "rcfilters-limit-shownum": "पिछला दिखाएं {{PLURAL:$1|change|$1 changes}}", "rcfilters-days-title": "कुछ दिनों के", "rcfilters-hours-title": "कुछ घंटों के", "rcfilters-days-show-days": "$1 {{PLURAL:$1|दिन}}", @@ -1374,12 +1383,12 @@ "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-previous-changes-label": "पिछले देखे बदलाव", + "rcfilters-show-new-changes": "नवीनतम बदलाव दिखाएँ", "rcfilters-search-placeholder": "हाल में हुए बदलाव फ़िल्टर (ब्राउज़ या टाइप करना आरंभ करें)", "rcfilters-invalid-filter": "अमान्य फ़िल्टर", "rcfilters-empty-filter": "कोई सक्रिय फिल्टर नहीं। सभी योगदान दिखाए गए है।", @@ -1392,23 +1401,23 @@ "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": "आपके अपने योगदान।", "rcfilters-filter-editsbyother-label": "दूसरों के द्वारा बदलाव", "rcfilters-filter-editsbyother-description": "आपके बदलावों को छोड़ कर सभी के बदलाव।", - "rcfilters-filtergroup-userExpLevel": "अनुभव स्तर (केवल पंजीकृत सदस्यों के लिए)", + "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-unregistered-description": "संपादक जो लॉग-इन नहीं हैं।", "rcfilters-filter-user-experience-level-newcomer-label": "अपरिचित", - "rcfilters-filter-user-experience-level-newcomer-description": "4 दिनों की गतिविधि और 10 सम्पादन से कम।", + "rcfilters-filter-user-experience-level-newcomer-description": "4 दिनों की गतिविधि और 10 सम्पादन से कम वाले पंजीकृत संपादक।", "rcfilters-filter-user-experience-level-learner-label": "शिक्षार्थियों", - "rcfilters-filter-user-experience-level-learner-description": "\"नए सदस्यों\" की तुलना में अधिक लेकिन \"अनुभवी सदस्यों\" से कम अनुभवी", + "rcfilters-filter-user-experience-level-learner-description": "पंजीकृत संपादक जिनका अनुभव \"नये संपादक\" और \"अनुभवी संपादक\" के बीच का है।", "rcfilters-filter-user-experience-level-experienced-label": "अनुभवी सदस्य", - "rcfilters-filter-user-experience-level-experienced-description": "30 दिन से अधिक गतिविधि और 500 सम्पादन।", + "rcfilters-filter-user-experience-level-experienced-description": "500 संपादन और 30 दिन की गतिविधि से अधिक वाले पंजीकृत संपादक।", "rcfilters-filtergroup-automated": "स्वचालित योगदान", "rcfilters-filter-bots-label": "बॉट", "rcfilters-filter-bots-description": "स्वचालित औजारों से किए सम्पादन।", @@ -1431,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": "विकि सामग्री, चर्चा, श्रेणी विवरणों के संपादन ....", @@ -1447,10 +1461,20 @@ "rcfilters-filter-lastrevision-label": "नया अवतरण", "rcfilters-filter-lastrevision-description": "पृष्ठ का सबसे हाल में हुआ बदलाव", "rcfilters-filter-previousrevision-label": "पहले के अवतरण", - "rcfilters-filter-previousrevision-description": "सभी परिवर्तन जो एक पृष्ठ में सबसे हाल के परिवर्तन नहीं हैं।", + "rcfilters-filter-previousrevision-description": "सभी परिवर्तन जो \"नवीनतम संशोधन\" नहीं हैं", "rcfilters-filter-excluded": "अपवर्जित", "rcfilters-tag-prefix-namespace-inverted": " $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": "संपादन टैग का उपयोग करके फ़िल्टर परिणाम", + "rcfilters-view-return-to-default-tooltip": "मुख्य फ़िल्टर मेनू पर लौटें", + "rcfilters-liveupdates-button": "जीवंत अद्यतन", + "rcfilters-liveupdates-button-title-on": "जीवंत अद्यतन बंद करें", + "rcfilters-liveupdates-button-title-off": "नये परिवर्तन प्रदर्शित करें जैसे ही वे घटित होते हैं", + "rcfilters-watchlist-markSeen-button": "देखे गए के रूप में सभी परिवर्तनों को चिह्नित करें", "rcnotefrom": "नीचे $2 के बाद से ($1 तक) {{PLURAL:$5|हुआ बदलाव दर्शाया गया है|हुए बदलाव दर्शाए गये हैं}}।", "rclistfromreset": "चुने दिनांक पहले जैसा करें", "rclistfrom": "$3 $2 से नये बदलाव दिखाएँ", @@ -1805,11 +1829,11 @@ "unusedtemplateswlh": "अन्य कड़ियाँ", "randompage": "कोई भी पृष्ठ", "randompage-nopages": "कोई भी पृष्ठ {{PLURAL:$2|इस नामस्थान|इन नामस्थानों}} में नहीं हैं: $1।", - "randomincategory": "श्रेणी में रैंडम पृष्ठ", + "randomincategory": "श्रेणी में कोई भी पृष्ठ", "randomincategory-invalidcategory": "\"$1\" एक मान्य श्रेणी नाम नहीं है।", "randomincategory-nopages": "[[:Category:$1|$1]] श्रेणी में कोई पृष्ठ नहीं हैं।", "randomincategory-category": "श्रेणी:", - "randomincategory-legend": "श्रेणी में रैंडम पृष्ठ", + "randomincategory-legend": "श्रेणी में कोई भी पृष्ठ", "randomincategory-submit": "जायें", "randomredirect": "किसी एक पुनर्निर्देशन पर जाएँ", "randomredirect-nopages": "नामस्थान \"$1\" में कोई पुनर्निर्देशन नहीं हैं।", @@ -1831,6 +1855,8 @@ "pageswithprop-legend": "पृष्ठ जिनमें पृष्ठ गुण हैं", "pageswithprop-text": "यह पृष्ठ पृष्ठ गुण का उपयोग कर रहे पन्नों को सूचीबद्ध करता है।", "pageswithprop-prop": "गुण का नाम:", + "pageswithprop-reverse": "उल्टे क्रम में क्रमबद्ध करें", + "pageswithprop-sortbyvalue": "संपत्ति मूल्य के आधार पर क्रमबद्ध करें", "pageswithprop-submit": "खोजें", "pageswithprop-prophidden-long": "लम्बे पाठ का मूल्य छुपा ($1) है", "pageswithprop-prophidden-binary": "बाइनरी मूल्य ($1) छुपा है।", @@ -1935,7 +1961,7 @@ "querypage-disabled": "प्रदर्शन कारणों से यह विशेष पृष्ठ अक्षम किया गया है।", "apihelp": "एपीआई सहायता", "apihelp-no-such-module": "मॉड्यूल \"$1\" नहीं मिला", - "apisandbox": "ए॰पी॰आइ प्रयोगस्थल", + "apisandbox": "एपीआई प्रयोगस्थल", "apisandbox-jsonly": "एपीआई प्रयोगपृष्ठ का उपयोग करने हेतु जावास्क्रिप्ट अनिवार्य है।", "apisandbox-api-disabled": "इस स्थल पर ए०पी०आई० सक्षम नहीं हैं।", "apisandbox-intro": "इस पृष्ठ का उपयोग मीडियाविकि वेब एपीआई के लिए करें। इसके उपयप्ग हेतु देखें: [[mw:API:Main page|एपीआई प्रलेखन]] उदाहरण: [https://www.mediawiki.org/wiki/API#A_simple_example मुख्यपृष्ठ के सामग्री हेतु]", @@ -1963,6 +1989,7 @@ "apisandbox-sending-request": "एपीआई अनुरोध भेज रहा...", "apisandbox-loading-results": "एपीआई परिणाम ले रहा...", "apisandbox-results-error": "एपीआई के समय कोई त्रुटि हुई: $1", + "apisandbox-results-login-suppressed": "यह अनुरोध लॉग-आउट उपयोगकर्ता के रूप में संसाधित किया गया है क्योंकि यह ब्राउज़र समान-मूल सुरक्षा बायपास करने के लिए इस्तेमाल किया जा सकता है। ध्यान दें कि एपीआई सैंडबॉक्स का स्वचालित टोकन हैंडलिंग ऐसे अनुरोधों के साथ ठीक से काम नहीं करता है, कृपया उन्हें मैन्युअल रूप से भरें।", "apisandbox-request-selectformat-label": "अनुरोध डेटा को इस रूप में दिखाएं:", "apisandbox-request-format-url-label": "यूआरएल क्वेरी स्ट्रिंग", "apisandbox-request-url-label": "अनुरोध URL:", @@ -2196,6 +2223,7 @@ "delete-warning-toobig": "इस पृष्ठ का संपादन इतिहास $1 से अधिक {{PLURAL:$1|अवतरण}} होने की वजह से बहुत बड़ा है।\nइसे हटाने से {{SITENAME}} के डाटाबेस की गतिविधियों में व्यवधान आ सकता है;\nकृपया सोच समझ कर आगे बढ़ें।", "deleteprotected": "आप इस पृष्ठ को हटा नहीं सकते क्योंकि इसे सुरक्षित किया गया है।", "deleting-backlinks-warning": "चेतावनी: जो पृष्ठ आप हटाने जा रहे हैं उससे [[Special:WhatLinksHere/{{FULLPAGENAME}}|अन्य पृष्ठ]] जुड़ते हैं अथवा उसे ट्रांसक्लूड करते हैं।", + "deleting-subpages-warning": "चेतावनी:आप जिस प्रष्ठ को हटाना चाहते हैं,\nरखता है [[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|a subpage|$1 subpages|51=over 50 subpages}}]].", "rollback": "संपादन वापिस लें", "rollbacklink": "वापिस लें", "rollbacklinkcount": "$1 {{PLURAL:$1|सम्पादन}} वापिस लें", @@ -2212,7 +2240,7 @@ "rollback-success-notify": "$1 द्वारा वापिस लौटे संपादन; $2 द्वारा पिछली संशोधन में वापस बदल दिया। [$3 बदलाव दिखाएं]", "sessionfailure-title": "सत्र विफलता", "sessionfailure": "ऐसा प्रतीत होता है कि आपके लॉगिन सत्र के साथ कोई समस्या है।\nसत्र अपहरण से बचाने के लिए सावधानी के तौर पर आपका यह क्रियाकलाप रद्द कर दिया गया है।\nकृपया पीछे जाएँ और पृष्ठ को पुनः लोड करें, तब दुबारा कोशिश करें।", - "changecontentmodel": "पेज कि सामगरिि मोदल को बदलिये", + "changecontentmodel": "पन्ने का सामग्री प्रारूप बदलें", "changecontentmodel-legend": "पृष्ठ सामग्री का नमूना", "changecontentmodel-title-label": "पृष्ठ शीर्षक", "changecontentmodel-model-label": "नयि सामग्री का नमूना", @@ -2314,6 +2342,7 @@ "undelete-search-title": "हटाये गये पृष्ठ खोजें", "undelete-search-box": "हटाये गये पृष्ठ खोजें", "undelete-search-prefix": "शुरूआती शब्द अनुसार पृष्ठ खोजें:", + "undelete-search-full": "शीर्षक युक्त प्रष्ठ दिखाएं", "undelete-search-submit": "खोजें", "undelete-no-results": "हटाए गए पृष्ठों के लेखागार में मेल खाते कोई पृष्ठ नहीं मिले।", "undelete-filename-mismatch": "$1 के फ़ाइल के हटाये गये अवतरण को पुनर्स्थापित नहीं किया जा सकता: फ़ाइल का नाम मेल नहीं खाता", @@ -2360,7 +2389,7 @@ "sp-contributions-newonly": "केवल वे सम्पादन दिखाएँ जिनसे पृष्ठ निर्मित हुए हों", "sp-contributions-hideminor": "छोटे सम्पादन छुपाएँ", "sp-contributions-submit": "खोजें", - "whatlinkshere": "यहाँ के हवाले कहाँ कहाँ हैं", + "whatlinkshere": "यहाँ क्या जुड़ता है", "whatlinkshere-title": "$1 से जुड़े हुए पृष्ठ", "whatlinkshere-page": "पृष्ठ:", "linkshere": "नीचे दिये हुए पृष्ठ '''[[:$1]]''' से जुडते हैं:", @@ -2648,7 +2677,7 @@ "import-nonewrevisions": "कोई अवतरण आयात नहीं किये गये (या तो सभी अवतरण पहले से मौजूद हैं, या त्रुटियों के कारण छोड़े गये)।", "xml-error-string": "$1 पंक्ति $2 में, कॉलम $3 (बाईट $4): $5", "import-upload": "XML डाटा अपलोड करें", - "import-token-mismatch": "सत्र सामग्री खो गई है।\n\nशायद आपने सत्रान्त कर दिया। कृपया इसकी पुष्टि करें कि आप अब तक लॉग-इन हैं और पुनः प्रयास करें।\nयदि यह अब भी कार्य नहीं करता है, [[Special:UserLogout|सत्रान्त]] करें और पुनः लॉग-इन करें एवं यह जाँचें की आपका ब्राउज़र इस साइट के लिए कुकीज़ को अनुमत करता है।", + "import-token-mismatch": "सत्र सामग्री खो गई है।\n\nशायद आपने सत्रान्त कर दिया। कृपया इसकी पुष्टि करें कि आप अभी तक प्रविष्ट हैं और पुनः प्रयास करें।\nयदि अब भी समस्या हल नहीं हुई, तो [[Special:UserLogout|सत्रान्त]] करें और पुनः प्रवेश करें एवं यह जाँचें की आपका ब्राउज़र इस साइट के लिए कुकीज़ को अनुमत करता है।", "import-invalid-interwiki": "इस विकि से आयात नहीं हो सकता है।", "import-error-edit": "पृष्ठ \"$1\" आयात नहीं किया गया है क्योंकि आपको उसे संपादित करने की अनुमति नहीं हैं।", "import-error-create": "पृष्ठ \"$1\" आयात नहीं किया गया है क्योंकि आपको उसे बनाने की अनुमति नहीं हैं।", @@ -3398,7 +3427,7 @@ "duplicate-displaytitle": "चेतावनी: शीर्षक दिखाएँ \"$2\" पूर्व दिखाए गए शीर्षक \"$1\" पर छा रहा है।", "restricted-displaytitle": "चेतावनी : प्रदर्शित शीर्षक \"$1\" को नजरअंदाज किया गया है, क्योंकि यह वास्तविक शीर्षक से मिलता नहीं है।", "invalid-indicator-name": "त्रुटि: पृष्ठ स्थिति सांकेतक नाम गुण खाली नहीं रहना चाहिए।", - "version": "रूपान्तर", + "version": "संस्करण", "version-extensions": "इन्स्टॉल की हुई एक्स्टेंशन", "version-skins": "इन्स्टॉल की गयी त्वचाएँ", "version-specialpages": "विशेष पृष्ठ", @@ -3464,6 +3493,7 @@ "fileduplicatesearch-noresults": "कोई फ़ाइल नाम \"$1\" मिला नहीं ।", "specialpages": "विशेष पृष्ठ", "specialpages-note-top": "कुंजी", + "specialpages-note-restricted": "* सामान्य विशेष पृष्ठ।\n* प्रतिबंधित विशेष पृष्ठ।", "specialpages-group-maintenance": "अनुरक्षण रिपोर्ट", "specialpages-group-other": "अन्य विशेष पृष्ठ", "specialpages-group-login": "सत्र आरम्भ / खाता खोलें", @@ -3582,6 +3612,13 @@ "compare-invalid-title": "आपके द्वारा निर्दिष्ट शीर्षक अमान्य है।", "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)", @@ -3784,7 +3821,7 @@ "default-skin-not-found-row-enabled": "* $1 / $2 (सक्षम)", "default-skin-not-found-row-disabled": "* $1 / $2 (असक्षम)", "mediastatistics": "मीडिया के आंकड़े", - "mediastatistics-summary": "अपलोड किए गए फ़ाइल प्रकारों के आंकड़े। इसमें केवल नवीनतम फ़ाइल के अवतरण शामिल हैं। पुराने या हटाए गए फ़ाइलों के अवतरणों को अलग रखा गया है। \n\nThis only includes the most recent version of a file. Old or deleted versions of files are excluded.", + "mediastatistics-summary": "अपलोड किए गए फ़ाइल प्रकारों के आंकड़े। इसमें केवल नवीनतम फ़ाइल के अवतरण शामिल हैं। पुराने या हटाए गए फ़ाइलों के अवतरणों को अलग रखा गया है।", "mediastatistics-nbytes": "{{PLURAL:$1|$1 बाइट|$1 बाइट्स}} ($2; $3%)", "mediastatistics-bytespertype": "इस अनुभाग का कुल फ़ाइल आकार : {{PLURAL:$1|$1 बाइट|$1 बाइट्स}} ($2; $3%)", "mediastatistics-allbytes": "सभी फ़ाइल का कुल फ़ाइल आकार : {{PLURAL:$1|$1 बाइट|$1 बाइट्स}} ($2)", @@ -3989,6 +4026,7 @@ "undelete-cantedit": "आप इस पन्ने को वापस नहीं ला सकते, क्योंकि आपको इस पन्ने पर सम्पादन की अनुमति नहीं है।", "undelete-cantcreate": "आप इस पन्ने को वापस नहीं ला सकते, क्योंकि यह पन्ना इस नाम से है ही नहीं और आपको इस पन्ने के निर्माण की अनुमति भी नहीं है।", "pagedata-title": "पृष्ठ आँकड़े", + "pagedata-text": "यह पृष्ठ पृष्ठों के लिए एक डेटा इंटरफ़ेस प्रदान करता है। कृपया उपपृष्ठ सिंटैक्स का उपयोग करके यूआरएल में पेज शीर्षक प्रदान करें।\n* कन्टैंट वार्ता आपके क्लाइंट के एसेडर हेडर के आधार पर लागू होती है। इसका मतलब यह है कि पेज डेटा को आपके क्लाइंट द्वारा पसंदीदा प्रारूप में प्रदान किया जाएगा।", "pagedata-not-acceptable": "कोई अनुकूल प्रारूप नहीं मिला। सुमेलित ऍमआइऍमई प्रकार: $1", "pagedata-bad-title": "अमान्य शीर्षक: $1" } diff --git a/languages/i18n/hr.json b/languages/i18n/hr.json index 0cbd0f9cb1..eba25227a0 100644 --- a/languages/i18n/hr.json +++ b/languages/i18n/hr.json @@ -66,7 +66,7 @@ "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", @@ -357,7 +357,7 @@ "title-invalid-utf8": "Traženi naziv stranice koristi nevažeću UTF-8 sekvencu.", "title-invalid-interwiki": "Traženi naziv stranice sadrži interwiki poveznicu koja se ne može koristiti u nazivima.", "title-invalid-talk-namespace": "Traženi naziv stranice odnosi se na stranicu rasprave koja ne može postojati.", - "title-invalid-characters": "Traženi naziv stranice sadrži nevažeće znakove: \"$1\"", + "title-invalid-characters": "Traženi naslov stranice sadrži znakove koji nisu valjani: »$1«.", "title-invalid-relative": "Naslov ima relativan put. Relativni putovi u naslovu su nevažeći, jer ih web pretraživač često ne može doseći.", "title-invalid-too-long": "Naslov stranice je predugačak. Naslov ne smije biti duži od $1 {{PLURAL:$1|bajt|bajtova}} u UTF-8 kodiranju.", "perfcached": "Sljedeći podaci su iz međuspremnika i možda nisu najsvježiji. Međuspremnik sadrži $1 {{PLURAL:$1|rezultat|rezultata}} pretraživanja.", @@ -576,9 +576,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 +863,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", @@ -955,6 +957,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}})", @@ -1054,6 +1057,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 +1086,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 +1150,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 +1239,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 +1262,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 +1273,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 +1308,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", @@ -1340,7 +1350,7 @@ "recentchangeslinked": "Povezane stranice", "recentchangeslinked-feed": "Povezane stranice", "recentchangeslinked-toolbox": "Povezane promjene", - "recentchangeslinked-title": "Povezane promjene sa stranicom \"$1\"", + "recentchangeslinked-title": "Povezane promjene sa stranicom »$1«", "recentchangeslinked-summary": "Ova posebna stranica pokazuje nedavne promjene na povezanim stranicama (ili stranicama određene kategorije). Stranice koje su na [[Special:Watchlist|Vašem popisu praćenja]] su '''podebljane'''.", "recentchangeslinked-page": "Naslov stranice:", "recentchangeslinked-to": "Pokaži promjene na stranicama s poveznicom na ovu stranicu", @@ -1497,6 +1507,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 +1598,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 +1620,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 +1628,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 +1673,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 +1698,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 +1757,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", @@ -1850,7 +1875,7 @@ "usermaildisabled": "Suradnička e-pošta je onemogućena", "usermaildisabledtext": "Ne možete slati e-poštu drugim suradnicima na ovom wikiju", "noemailtitle": "Nema adrese primaoca", - "noemailtext": "Ovaj suradnik nije odredio valjanu e-mail adresu.", + "noemailtext": "Ovaj suradnik nije odredio valjanu adresu e-pošte.", "nowikiemailtext": "Ovaj suradnik je odlučio ne primati e-mail od drugih suradnika.", "emailnotarget": "Nepostojeće ili nevažeće suradničko ime za primatelja.", "emailtarget": "Unesite suradničko ime primatelja", @@ -1924,6 +1949,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 +1984,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 +2158,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 +2544,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 +2598,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", @@ -3004,7 +3032,7 @@ "autosumm-replace": "Zamijenjen sadržaj stranice s »$1«", "autoredircomment": "Preusmjeravanje stranice na [[$1]]", "autosumm-new": "Stvorena nova stranica sa sadržajem: »$1«.", - "autosumm-newblank": "stvorena prazna stranica", + "autosumm-newblank": "Stvorena prazna stranica.", "size-bytes": "$1 {{PLURAL:$1|bajt|bajta|bajtova}}", "lag-warn-normal": "Moguće je da izmjene nastale posljednjih $1 {{PLURAL:$1|sekundu|sekundi}} neće biti vidljive na ovom popisu.", "lag-warn-high": "Zbog kašnjenja baze podataka, moguće je da promjene napravljene u posljednjih $1 {{PLURAL:$1|sekundu|sekunde|sekundi}} nisu prikazane u popisu.", @@ -3233,6 +3261,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": "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)", @@ -3241,7 +3276,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", @@ -3382,13 +3417,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": "Nepoznato", + "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": "Video datoteke", + "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", 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 5265274fbc..6a925ac44d 100644 --- a/languages/i18n/hu.json +++ b/languages/i18n/hu.json @@ -78,7 +78,7 @@ "tog-shownumberswatching": "A lapot figyelő szerkesztők számának megjelenítése", "tog-oldsig": "A jelenlegi aláírásod:", "tog-fancysig": "Az aláírás wikiszöveg (nem lesz automatikusan hivatkozásba rakva)", - "tog-uselivepreview": "Élő előnézet használata", + "tog-uselivepreview": "Előnézetek megjelenítése az oldal újratöltése nélkül", "tog-forceeditsummary": "Figyelmeztessen, ha nem adok meg szerkesztési összefoglalót", "tog-watchlisthideown": "Saját szerkesztések elrejtése", "tog-watchlisthidebots": "Robotok szerkesztéseinek elrejtése", @@ -735,7 +735,7 @@ "contentmodelediterror": "Nem szerkesztheted ezt a változatot, mert a tartalommodellje $1, ami eltér a jelenlegitől ($2).", "recreate-moveddeleted-warn": "'''Figyelem! Olyan lapot készülsz létrehozni, amit már legalább egyszer töröltek.'''\n\nMielőtt létrehoznád, nézd meg, miért törölték a lap korábbi tartalmát, és győződj meg róla, hogy a törlés indoka érvényes-e még. A törlési és átnevezési naplókban az érintett lapról az alábbi bejegyzések szerepelnek:", "moveddeleted-notice": "Az oldal korábban törölve lett.\nA lap törlési és átnevezési naplója alább olvasható.", - "moveddeleted-notice-recent": "Sajnáljuk, az oldalt nemrég törölték (az elmúlt 24 órában).\nA részletekért lásd lentebb a törlési és átnevezési naplót.", + "moveddeleted-notice-recent": "Sajnáljuk, az oldalt nemrég törölték (az elmúlt 24 órában).\nA részletekért lásd lentebb a törlési, védelmi és átnevezési naplót.", "log-fulllog": "Teljes napló megtekintése", "edit-hook-aborted": "A szerkesztés meg lett szakítva egy hook által.\nNem lett magyarázat csatolva.", "edit-gone-missing": "Nem lehet frissíteni a lapot.\nÚgy tűnik, hogy törölve lett.", @@ -1318,13 +1318,18 @@ "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", "rcfilters-limit-shownum": "Utolsó $1 változtatás megjelenítése", + "rcfilters-days-title": "Legutóbbi napok", + "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", @@ -1340,6 +1345,7 @@ "rcfilters-savedqueries-add-new-title": "Szűrők mentése gyors hivatkozásként", "rcfilters-restore-default-filters": "Alapértelmezett szűrők visszaállítása", "rcfilters-clear-all-filters": "Összes szűrő kikapcsolása", + "rcfilters-show-new-changes": "Legfrissebb változtatások megtekintése", "rcfilters-search-placeholder": "Friss változtatások szűrése (böngészd vagy kezdj el gépelni)", "rcfilters-invalid-filter": "Érvénytelen szűrő", "rcfilters-empty-filter": "Nincs aktív szűrő. Minden közreműködés látható.", @@ -1364,11 +1370,11 @@ "rcfilters-filter-user-experience-level-unregistered-label": "Nem regisztrált", "rcfilters-filter-user-experience-level-unregistered-description": "Nem bejelentkezett szerkesztők.", "rcfilters-filter-user-experience-level-newcomer-label": "Újoncok", - "rcfilters-filter-user-experience-level-newcomer-description": "Regisztrált szerkesztők kevesebb, mint 10 szerkesztéssel és 4 nap aktivitással.", + "rcfilters-filter-user-experience-level-newcomer-description": "Regisztrált szerkesztők kevesebb mint 10 szerkesztéssel és 4 nap aktivitással.", "rcfilters-filter-user-experience-level-learner-label": "Tanulók", "rcfilters-filter-user-experience-level-learner-description": "Regisztrált szerkesztők „újonc” és „tapasztalt szerkesztő” közé eső tapasztalattal.", "rcfilters-filter-user-experience-level-experienced-label": "Tapasztalt szerkesztők", - "rcfilters-filter-user-experience-level-experienced-description": "Regisztrált szerkesztők több, mint 30 nap aktivitással és 500 szerkesztéssel.", + "rcfilters-filter-user-experience-level-experienced-description": "Regisztrált szerkesztők több mint 30 nap aktivitással és 500 szerkesztéssel.", "rcfilters-filtergroup-automated": "Automatikus szerkesztések", "rcfilters-filter-bots-label": "Bot", "rcfilters-filter-bots-description": "Automatizált eszközök szerkesztései.", @@ -1410,10 +1416,14 @@ "rcfilters-filter-previousrevision-description": "Minden változtatás a legutóbbiak kivételével", "rcfilters-filter-excluded": "Kizárva", "rcfilters-tag-prefix-namespace-inverted": ":nem $1", + "rcfilters-view-advanced-filters-label": "Haladó szűrők", "rcfilters-view-tags": "Megjelölt szerkesztések", "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", @@ -2128,6 +2138,7 @@ "enotif_lastdiff": "Ezen változtatás megtekintéséhez lásd: $1", "enotif_anon_editor": "$1 névtelen felhasználó", "enotif_body": "Kedves $WATCHINGUSERNAME!\n\n$PAGEINTRO $NEWPAGE\n\nA szerkesztési összefoglaló a következő volt: $PAGESUMMARY $PAGEMINOREDIT\n\nA szerkesztő elérhetősége:\ne-mail küldése: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nAmíg nem keresed fel az oldalt bejelentkezve, addig nem érkeznek újabb értesítések az oldal változásaival kapcsolatban. A figyelőlistádon is beállíthatod, hogy újból kapj értesítéseket, az összes lap után.\n\nBaráti üdvözlettel: a(z) {{SITENAME}} értesítő rendszere\n\n--\nAz e-mail értesítéseid módosításához keresd fel a \n{{canonicalurl:{{#special:Preferences}}}} címet\n\nA figyelőlistád módosításához keresd fel a\n{{canonicalurl:{{#special:EditWatchlist}}}} címet\n\nA lap figyelőlistádról való törléséhez keresd fel a\n$UNWATCHURL címet\n\nVisszajelzés és további segítség:\n$HELPPAGE", + "enotif_minoredit": "Ez egy apró szerkesztés", "created": "létrehozta", "changed": "megváltoztatta", "deletepage": "Lap törlése", @@ -3493,6 +3504,8 @@ "compare-invalid-title": "A megadott cím érvénytelen.", "compare-title-not-exists": "A megadott cím nem létezik.", "compare-revision-not-exists": "A megadott lapváltozat nem létezik.", + "diff-form": "Eltérések", + "diff-form-submit": "Változtatások megjelenítése", "dberr-problems": "Sajnáljuk, de az oldallal technikai problémák vannak.", "dberr-again": "Várj néhány percet, majd frissítsd az oldalt.", "dberr-info": "(Nem sikerült kapcsolódni az adatbázishoz: $1)", @@ -3565,7 +3578,7 @@ "logentry-import-upload-details": "$1 {{GENDER:$2|importálta}} a(z) $3 lapot fájlfeltöltéssel ($4 lapváltozat).", "logentry-import-interwiki": "$1 {{GENDER:$2|importálta}} $3 lapot egy másik wikiből", "logentry-import-interwiki-details": "$1 {{GENDER:$2|importálta}} a(z) $3 lapot a(z) $5 wikiről ($4 lapváltozat).", - "logentry-merge-merge": "$1 {{GENDER:$2|összevonta}} $3 lapot $4 lappal ($5 változtig)", + "logentry-merge-merge": "$1 {{GENDER:$2|összevonta}} $3 lapot $4 lappal ($5 változatig)", "logentry-move-move": "$1 átnevezte a(z) $3 lapot a következő névre: $4", "logentry-move-move-noredirect": "$1 átnevezte a(z) $3 lapot $4 lapra átirányítás nélkül", "logentry-move-move_redir": "$1 átnevezte a(z) $3 lapot $4 lapra az átirányítást felülírva", 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 f7c0690107..5480a2eb57 100644 --- a/languages/i18n/ia.json +++ b/languages/i18n/ia.json @@ -46,13 +46,14 @@ "tog-shownumberswatching": "Monstrar le numero de usatores que observa le pagina", "tog-oldsig": "Tu signatura existente:", "tog-fancysig": "Tractar signatura como wikitexto (sin ligamine automatic)", - "tog-uselivepreview": "Usar previsualisation dynamic", + "tog-uselivepreview": "Previsualisar sin recargar le pagina", "tog-forceeditsummary": "Avisar me si io non entra un summario de modification", "tog-watchlisthideown": "Celar mi proprie modificationes in le observatorio", "tog-watchlisthidebots": "Celar le modificationes de robots in le observatorio", "tog-watchlisthideminor": "Celar modificationes minor in le observatorio", "tog-watchlisthideliu": "Celar modificationes de usatores registrate in le observatorio", "tog-watchlistreloadautomatically": "Recargar automaticamente le observatorio quando un filtro es cambiate (JavaScript requirite)", + "tog-watchlistunwatchlinks": "Adjunger ligamines directe pro disobservar/observar al entratas del observatorio (JavaScript es necessari pro le functionalitate de alternar)", "tog-watchlisthideanons": "Celar modificationes de usatores anonyme in le observatorio", "tog-watchlisthidepatrolled": "Celar le modificationes patruliate in le observatorio", "tog-watchlisthidecategorization": "Celar le categorisation de paginas", @@ -702,8 +703,8 @@ "permissionserrorstext-withaction": "Tu non ha le permission de $2, pro le sequente {{PLURAL:$1|motivo|motivos}}:", "contentmodelediterror": "Non es possibile modificar iste version perque su modello de contento es $1, un altere que le modello de contento actual del pagina, $2.", "recreate-moveddeleted-warn": "'''Attention: Tu es sur le puncto de recrear un pagina que ha essite delite anteriormente.'''\n\nTu deberea considerar si il es appropriate continuar a modificar iste pagina.\nEcce le registro de deletiones e de renominationes pro iste pagina:", - "moveddeleted-notice": "Iste pagina ha essite delite.\nIn basso se revela le registro de deletiones e de modificationes del pagina pro ulterior informationes.", - "moveddeleted-notice-recent": "Regrettabilemente iste pagina ha essite delite (in le ultime 24 horas).\nLe registro de deletion e renomination pro le pagina es fornite hic infra pro vostre information.", + "moveddeleted-notice": "Iste pagina ha essite delite.\nLe registro de deletion, protection e renomination del pagina es monstrate in basso pro referentia.", + "moveddeleted-notice-recent": "Regrettabilemente iste pagina ha essite delite (in le ultime 24 horas).\nLe registro de deletion, protection e renomination del pagina es monstrate in basso pro referentia.", "log-fulllog": "Vider le registro complete", "edit-hook-aborted": "Modification abortate per un extension.\nNulle explication disponibile.", "edit-gone-missing": "Impossibile actualisar le pagina.\nPare que illo ha essite delite.", @@ -971,7 +972,7 @@ "prefs-editwatchlist-clear": "Rader tu observatorio", "prefs-watchlist-days": "Numero de dies a monstrar in le observatorio:", "prefs-watchlist-days-max": "Maximo $1 {{PLURAL:$1|die|dies}}", - "prefs-watchlist-edits": "Numero maxime de modificationes a monstrar in le observatorio expandite:", + "prefs-watchlist-edits": "Numero maxime de modificationes a monstrar in le observatorio:", "prefs-watchlist-edits-max": "Numero maxime: 1000", "prefs-watchlist-token": "Indicio pro le observatorio:", "prefs-misc": "Misc", @@ -1288,10 +1289,13 @@ "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Monstrar", "rcfilters-legend-heading": "Lista de abbreviationes:", + "rcfilters-other-review-tools": "Altere instrumentos de revision", + "rcfilters-group-results-by-page": "Gruppar resultatos per pagina", + "rcfilters-grouping-title": "Gruppamento", "rcfilters-activefilters": "Filtros active", "rcfilters-advancedfilters": "Filtros avantiate", "rcfilters-limit-title": "Cambiamentos a monstrar", - "rcfilters-limit-shownum": "Monstrar le ultime $1 cambiamentos", + "rcfilters-limit-shownum": "Monstrar le ultime {{PLURAL:$1|modification|$1 modificationes}}", "rcfilters-days-title": "Dies recente", "rcfilters-hours-title": "Horas recente", "rcfilters-days-show-days": "$1 {{PLURAL:$1|die|dies}}", @@ -1307,10 +1311,12 @@ "rcfilters-savedqueries-new-name-label": "Nomine", "rcfilters-savedqueries-new-name-placeholder": "Describe le proposito del filtro", "rcfilters-savedqueries-apply-label": "Crear filtro", + "rcfilters-savedqueries-apply-and-setdefault-label": "Crear filtro predefinite", "rcfilters-savedqueries-cancel-label": "Cancellar", "rcfilters-savedqueries-add-new-title": "Salveguardar le configuration actual del filtro", "rcfilters-restore-default-filters": "Restaurar filtros predefinite", "rcfilters-clear-all-filters": "Rader tote le filtros", + "rcfilters-show-new-changes": "Vider le modificationes le plus recente", "rcfilters-search-placeholder": "Filtrar le modificationes recente (naviga o comencia a scriber)", "rcfilters-invalid-filter": "Filtro non valide", "rcfilters-empty-filter": "Nulle filtro active. Tote le contributiones es monstrate.", @@ -1381,11 +1387,16 @@ "rcfilters-filter-previousrevision-description": "Tote le cambiamentos que non es le \"ultime version\".", "rcfilters-filter-excluded": "Excludite", "rcfilters-tag-prefix-namespace-inverted": ":non $1", + "rcfilters-exclude-button-off": "Excluder le selection", + "rcfilters-exclude-button-on": "Selection excludite", + "rcfilters-view-advanced-filters-label": "Filtros avantiate", "rcfilters-view-tags": "Modificationes con etiquettas", "rcfilters-view-namespaces-tooltip": "Filtrar le resultatos per spatio de nomines", "rcfilters-view-tags-tooltip": "Filtrar le resultatos usante etiquettas de version", "rcfilters-view-return-to-default-tooltip": "Retornar al menu principal de filtros", "rcfilters-liveupdates-button": "Fluxo continue", + "rcfilters-liveupdates-button-title-on": "Disactivar actualisation in directo", + "rcfilters-liveupdates-button-title-off": "Monstrar cambiamentos in tempore real", "rcnotefrom": "Ecce le {{PLURAL:$5|modification|modificationes}} a partir del $3 a $4 (usque a $1 entratas monstrate).", "rclistfromreset": "Reinitialisar selection de data", "rclistfrom": "Monstrar nove modificationes a partir del $3 a $2", @@ -1765,6 +1776,8 @@ "pageswithprop-legend": "Paginas con un proprietate de pagina", "pageswithprop-text": "Iste pagina lista le paginas que usa un certe proprietate de pagina.", "pageswithprop-prop": "Nomine del proprietate:", + "pageswithprop-reverse": "Ordinar inversemente", + "pageswithprop-sortbyvalue": "Ordinar per valor de proprietate", "pageswithprop-submit": "Va", "pageswithprop-prophidden-long": "valor de proprietate de texto longe celate ($1)", "pageswithprop-prophidden-binary": "valor de proprietate binari celate ($1)", @@ -2101,6 +2114,7 @@ "enotif_lastdiff": "Pro revider iste modification, vide $1", "enotif_anon_editor": "usator anonyme $1", "enotif_body": "Car $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nSummario del redactor: $PAGESUMMARY $PAGEMINOREDIT\n\nPro contactar le redactor:\nmail: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nTu non recipera altere notificationes de activitate si tu non visita iste pagina con session aperte. Tu pote anque reinitialisar le optiones de notification pro tote le paginas in tu observatorio.\n\nLe systema de notification de {{SITENAME}}, a tu servicio\n\n-- \nPro configurar le notification per e-mail, visita\n{{canonicalurl:{{#special:Preferences}}}}\n\nPro configurar le observatorio, visita\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nPro retirar le pagina de tu observatorio, visita\n$UNWATCHURL\n\nFeedback e ulterior assistentia:\n$HELPPAGE", + "enotif_minoredit": "Isto es un modification minor", "created": "create", "changed": "modificate", "deletepage": "Deler pagina", @@ -2129,6 +2143,7 @@ "delete-warning-toobig": "Iste pagina ha un grande historia de modificationes con plus de $1 {{PLURAL:$1|version|versiones}}.\nLe deletion de illo pote disrumper le operationes del base de datos de {{SITENAME}};\nprocede con caution.", "deleteprotected": "Tu non pote deler iste pagina perque illo ha essite protegite.", "deleting-backlinks-warning": "Attention: Il ha [[Special:WhatLinksHere/{{FULLPAGENAME}}|altere paginas]] que liga a o transclude le pagina que tu es sur le puncto de deler.", + "deleting-subpages-warning": "Attention: Le pagina que tu es sur le puncto de deler ha [[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|un subpagina|$1 subpaginas|51=plus de 50 subpaginas}}]].", "rollback": "Revocar modificationes", "rollbacklink": "revocar", "rollbacklinkcount": "revocar $1 {{PLURAL:$1|modification|modificationes}}", @@ -2582,7 +2597,7 @@ "import-nonewrevisions": "Nulle version ha essite importate (totes esseva jam presente o ha essite saltate a causa de errores).", "xml-error-string": "$1 al linea $2, col $3 (byte $4): $5", "import-upload": "Incargar datos XML", - "import-token-mismatch": "Perdita del datos del session.\n\nEs possibile que tu session ha essite claudite. Per favor, verifica que tu session es ancora aperte e tenta lo de novo.\nSi le problema persiste, proba a [[Special:UserLogout|clauder session]] e aperir un nove session, verificante que tu navigator accepta le cookies ab iste sito.", + "import-token-mismatch": "Perdita del datos del session.\n\nEs possibile que tu session ha essite claudite. '''Per favor, verifica que tu session es ancora aperte e tenta lo de novo.'''\nSi le problema persiste, proba a [[Special:UserLogout|clauder session]] e aperir un nove session, verificante que tu navigator accepta le cookies ab iste sito.", "import-invalid-interwiki": "Non pote importar ab le wiki specificate.", "import-error-edit": "Le pagina \"$1\" non ha essite importate perque tu non ha le permission de modificar lo.", "import-error-create": "Le pagina \"$1\" non ha essite importate perque tu non ha le permission de crear lo.", @@ -3340,6 +3355,7 @@ "fileduplicatesearch-noresults": "Nulle file con nomine \"$1\" trovate.", "specialpages": "Paginas special", "specialpages-note-top": "Legenda", + "specialpages-note-restricted": "* Paginas special normal.\n* Paginas special restringite.", "specialpages-group-maintenance": "Reportos de mantenentia", "specialpages-group-other": "Altere paginas special", "specialpages-group-login": "Aperir session / crear conto", @@ -3458,6 +3474,13 @@ "compare-invalid-title": "Le titulo que tu specificava es invalide.", "compare-title-not-exists": "Le titulo que tu specificava non existe.", "compare-revision-not-exists": "Le version que tu specificava non existe.", + "diff-form": "Differentias", + "diff-form-oldid": "ID del ancian version (optional)", + "diff-form-revid": "ID del version a comparar", + "diff-form-submit": "Monstrar differentias", + "permanentlink": "Ligamine permanente", + "permanentlink-revid": "ID del version", + "permanentlink-submit": "Vader al version", "dberr-problems": "Pardono! Iste sito ha incontrate difficultates technic.", "dberr-again": "Proba attender alcun minutas e recargar.", "dberr-info": "(Non pote acceder al base de datos: $1)", diff --git a/languages/i18n/id.json b/languages/i18n/id.json index cc4ca7e821..6d209f3e27 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/it.json b/languages/i18n/it.json index 721368bd85..e7a8c1eafe 100644 --- a/languages/i18n/it.json +++ b/languages/i18n/it.json @@ -109,7 +109,8 @@ "Luigi.delia", "Samuele2002", "Kaspo", - "Pequod76" + "Pequod76", + "Greis" ] }, "tog-underline": "Sottolinea i collegamenti:", @@ -146,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", @@ -161,8 +163,8 @@ "editfont-style": "Stile del carattere nella casella di modifica:", "editfont-default": "Predefinito del browser", "editfont-monospace": "Carattere a larghezza fissa", - "editfont-sansserif": "Carattere sans-serif", - "editfont-serif": "Carattere serif", + "editfont-sansserif": "Carattere Sans-serif", + "editfont-serif": "Carattere Serif", "sunday": "domenica", "monday": "lunedì", "tuesday": "martedì", @@ -213,18 +215,18 @@ "oct": "ott", "nov": "nov", "dec": "dic", - "january-date": "{{PLURAL:$1|1°|$1}} gennaio", - "february-date": "{{PLURAL:$1|1°|$1}} febbraio", - "march-date": "{{PLURAL:$1|1°|$1}} marzo", - "april-date": "{{PLURAL:$1|1°|$1}} aprile", - "may-date": "{{PLURAL:$1|1°|$1}} maggio", - "june-date": "{{PLURAL:$1|1°|$1}} giugno", - "july-date": "{{PLURAL:$1|1°|$1}} luglio", - "august-date": "{{PLURAL:$1|1°|$1}} agosto", - "september-date": "{{PLURAL:$1|1°|$1}} settembre", - "october-date": "{{PLURAL:$1|1°|$1}} ottobre", - "november-date": "{{PLURAL:$1|1°|$1}} novembre", - "december-date": "{{PLURAL:$1|1°|$1}} dicembre", + "january-date": "$1 gennaio", + "february-date": "$1 febbraio", + "march-date": "$1 marzo", + "april-date": "$1 aprile", + "may-date": "$1 maggio", + "june-date": "$1 giugno", + "july-date": "$1 luglio", + "august-date": "$1 agosto", + "september-date": "$1 settembre", + "october-date": "$1 ottobre", + "november-date": "$1 novembre", + "december-date": "$1 dicembre", "period-am": "AM", "period-pm": "PM", "pagecategories": "{{PLURAL:$1|Categoria|Categorie}}", @@ -269,7 +271,7 @@ "searchbutton": "Ricerca", "go": "Vai", "searcharticle": "Vai", - "history": "Versioni precedenti", + "history": "Cronologia della pagina", "history_short": "Cronologia", "history_small": "cronologia", "updatedmarker": "modificata dalla mia ultima visita", @@ -483,7 +485,7 @@ "userlogin-yourpassword": "Password", "userlogin-yourpassword-ph": "Inserisci la tua password", "createacct-yourpassword-ph": "Inserisci una password", - "yourpasswordagain": "Ripeti la password:", + "yourpasswordagain": "Riscrivi la password:", "createacct-yourpasswordagain": "Conferma password", "createacct-yourpasswordagain-ph": "Inserisci nuovamente la password", "userlogin-remembermypassword": "Mantienimi collegato", @@ -585,7 +587,7 @@ "pt-login-button": "Entra", "pt-login-continue-button": "Continua l'accesso", "pt-createaccount": "Registrati", - "pt-userlogout": "esci", + "pt-userlogout": "Esci", "php-mail-error-unknown": "Errore sconosciuto nella funzione PHP mail()", "user-mail-no-addy": "Hai cercato di inviare una e-mail senza un indirizzo.", "user-mail-no-body": "Tentato di inviare una e-mail con un testo vuoto o estremamente breve.", @@ -704,8 +706,8 @@ "watchthis": "Aggiungi agli osservati speciali", "savearticle": "Salva la pagina", "savechanges": "Salva le modifiche", - "publishpage": "Pubblica pagina", - "publishchanges": "Pubblica modifiche", + "publishpage": "Pubblica la pagina", + "publishchanges": "Pubblica le modifiche", "preview": "Anteprima", "showpreview": "Visualizza anteprima", "showdiff": "Mostra modifiche", @@ -731,7 +733,7 @@ "loginreqtitle": "Accesso richiesto", "loginreqlink": "effettuare l'accesso", "loginreqpagetext": "Per vedere altre pagine è necessario $1.", - "accmailtitle": "Password inviata.", + "accmailtitle": "Password inviata", "accmailtext": "Una password generata casualmente per [[User talk:$1|$1]] è stata inviata a $2. Questa password può essere modificata nella pagina per ''[[Special:ChangePassword|cambiare la password]]'' subito dopo l'accesso.", "newarticle": "(Nuovo)", "newarticletext": "Il collegamento appena seguito corrisponde ad una pagina non ancora esistente.\nSe vuoi creare la pagina ora, basta cominciare a scrivere il testo nella casella qui sotto (vedi la [$1 pagina di aiuto] per maggiori informazioni).\nSe il collegamento è stato aperto per errore, è sufficiente fare clic sul pulsante Indietro del proprio browser.", @@ -795,8 +797,8 @@ "permissionserrorstext-withaction": "Non si dispone dei permessi necessari per $2, per {{PLURAL:$1|il seguente motivo|i seguenti motivi}}:", "contentmodelediterror": "Non puoi modificare questa versione poiché il suo modello di contenuto è $1, che differisce dall'attuale modello di contenuto della pagina $2.", "recreate-moveddeleted-warn": "Attenzione: si sta per ricreare una pagina già cancellata in passato.\n\nAccertarsi che sia davvero opportuno continuare a modificare questa pagina.\nL'elenco delle relative cancellazioni e degli spostamenti viene riportato di seguito per comodità:", - "moveddeleted-notice": "Questa pagina è stata cancellata. L'elenco delle relative cancellazioni e degli spostamenti viene riportato di seguito per informazione.", - "moveddeleted-notice-recent": "Spiacenti, questa pagina è stata cancellata recentemente (nelle ultime 24 ore).\n\nLe azioni di cancellazione e spostamento per questa pagina sono disponibili di seguito per completezza.", + "moveddeleted-notice": "Questa pagina è stata cancellata.\nLe azioni di cancellazione, protezione e spostamento per questa pagina sono disponibili di seguito per informazione.", + "moveddeleted-notice-recent": "Spiacenti, questa pagina è stata cancellata recentemente (nelle ultime 24 ore).\n\nLe azioni di cancellazione, protezione e spostamento per questa pagina sono disponibili di seguito per informazione.", "log-fulllog": "Visualizza log completo", "edit-hook-aborted": "La modifica è stata annullata dall'hook.\nNon è stata restituita alcuna spiegazione.", "edit-gone-missing": "Impossibile aggiornare la pagina.\nSembra che sia stata cancellata.", @@ -1064,7 +1066,7 @@ "prefs-editwatchlist-clear": "Svuota i tuoi osservati speciali", "prefs-watchlist-days": "Numero di giorni da mostrare negli osservati speciali:", "prefs-watchlist-days-max": "Massimo $1 {{PLURAL:$1|giorno|giorni}}", - "prefs-watchlist-edits": "Numero di modifiche da mostrare con le funzioni avanzate:", + "prefs-watchlist-edits": "Numero massimo di modifiche da mostrare negli osservati speciali:", "prefs-watchlist-edits-max": "Numero massimo: 1000", "prefs-watchlist-token": "Token osservati speciali:", "prefs-misc": "Varie", @@ -1380,7 +1382,9 @@ "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-grouping-title": "Raggruppamento", "rcfilters-activefilters": "Filtri attivi", "rcfilters-advancedfilters": "Filtri avanzati", @@ -1405,6 +1409,7 @@ "rcfilters-savedqueries-add-new-title": "Salva le impostazioni attuali del filtro", "rcfilters-restore-default-filters": "Ripristina i filtri predefiniti", "rcfilters-clear-all-filters": "Pulisci tutti i filtri", + "rcfilters-show-new-changes": "Visualizza le modifiche più recenti", "rcfilters-search-placeholder": "Filtra le ultime modifiche (naviga o inizia a digitare)", "rcfilters-invalid-filter": "Filtro non valido", "rcfilters-empty-filter": "Nessun filtro attivo. Sono mostrati tutti i contributi.", @@ -1417,7 +1422,7 @@ "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.", @@ -2192,6 +2197,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", @@ -2673,7 +2679,7 @@ "import-nonewrevisions": "Nessuna versione importata (erano già tutte presenti, o saltate a causa di errori)", "xml-error-string": "$1 a riga $2, colonna $3 (byte $4): $5", "import-upload": "Carica dati XML", - "import-token-mismatch": "I dati relativi alla sessione sono andati persi. Riprovare.\n\nPotresti essere stato disconnesso. Verifica di essere ancora collegato e riprova.\nSe il problema persiste, puoi provare a [[Special:UserLogout|scollegarti]] ed effettuare un nuovo l'accesso, controllando che il tuo browser accetti i cookie da questo sito.", + "import-token-mismatch": "I dati relativi alla sessione sono andati persi.\n\nPotresti essere stato disconnesso. '''Verifica di essere ancora collegato e riprova'''.\nSe il problema persiste, puoi provare a [[Special:UserLogout|scollegarti]] ed effettuare di nuovo l'accesso, controllando che il tuo browser accetti i cookie da questo sito.", "import-invalid-interwiki": "Impossibile importare dal progetto wiki indicato.", "import-error-edit": "La pagina \"$1\" non è stata importata poiché non sei autorizzato a modificarla.", "import-error-create": "La pagina \"$1\" non è stata importata poiché non sei autorizzato a crearla.", @@ -3574,6 +3580,9 @@ "compare-invalid-title": "Il titolo che hai specificato non è valido.", "compare-title-not-exists": "Il titolo che hai specificato non esiste.", "compare-revision-not-exists": "La versione che hai specificato non esiste.", + "diff-form": "Differenze", + "diff-form-submit": "Mostra le differenze", + "permanentlink": "Link permanente", "dberr-problems": "Questo sito sta avendo dei problemi tecnici.", "dberr-again": "Prova ad attendere qualche minuto e ricaricare.", "dberr-info": "(Impossibile accedere al server del database: $1)", diff --git a/languages/i18n/ja.json b/languages/i18n/ja.json index 88f9e8572f..5c9498af84 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": "ボットによる編集をウォッチリストに表示しない", @@ -223,7 +224,7 @@ "newwindow": "(新しいウィンドウで開きます)", "cancel": "取り消し", "moredotdotdot": "続き...", - "morenotlisted": "この一覧はおそらく完全ではありません。", + "morenotlisted": "この一覧は不完全かもしれません。", "mypage": "ページ", "mytalk": "トーク", "anontalk": "トーク", @@ -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": "フィルターの設定を保存し、後で再び使用するためには、下のアクティブフィルター内のブックマークアイコンをクリックしてください。", @@ -2649,7 +2656,7 @@ "import-nonewrevisions": "版のインポートはされませんでした(すべての版が以前に取り込み済みだったか、エラーにより飛ばされたため)。", "xml-error-string": "$1、$2 行の $3 文字目 ($4バイト目): $5", "import-upload": "XMLデータをアップロード", - "import-token-mismatch": "セッションデータを損失しました。\n\nアカウントがログアウトされている可能性があります。アカウントにログインしていることを確認して、もう一度やり直してください。\nそれでも失敗する場合、[[Special:UserLogout|ログアウト]]してからログインし直し、現在使用しているブラウザでこのサイトからのクッキーが許可されていることを確認してください。", + "import-token-mismatch": "セッションデータを損失しました。\n\nアカウントがログアウトされている可能性があります。'''アカウントにログインしていることを確認して、もう一度やり直してください'''。\nそれでも失敗する場合、[[Special:UserLogout|ログアウト]]してからログインし直し、現在使用しているブラウザでこのサイトからのクッキーが許可されていることを確認してください。", "import-invalid-interwiki": "指定されたウィキから取り込めませんでした。", "import-error-edit": "あなたにそのページを編集する許可がないため、ページ「$1」は取り込まれませんでした。", "import-error-create": "あなたにそのページを作成する許可がないため、ページ「$1」は取り込まれませんでした。", @@ -2870,7 +2877,7 @@ "file-info-gif-looped": "ループします", "file-info-gif-frames": "$1 {{PLURAL:$1|フレーム}}", "file-info-png-looped": "繰り返し", - "file-info-png-repeat": "$1 {{PLURAL:$1|回再生しました}}", + "file-info-png-repeat": "$1 {{PLURAL:$1|回}}再生しました", "file-info-png-frames": "$1 {{PLURAL:$1|フレーム}}", "file-no-thumb-animation": "注意: 技術的な制限により、このファイルのサムネイルはアニメーションされません。", "file-no-thumb-animation-gif": "注意: 技術的な制限により、この画像のような高解像度の GIF 画像の、サムネイルはアニメーションされません。", @@ -3420,7 +3427,7 @@ "watchlistedit-clear-titles": "ページ名:", "watchlistedit-clear-submit": "ウォッチリストの全消去 (この操作は取り消せません!)", "watchlistedit-clear-done": "ウォッチリストを全消去しました。", - "watchlistedit-clear-removed": "{{PLURAL:$1|$1 件のページ}}を除去しました:", + "watchlistedit-clear-removed": "{{PLURAL:$1|$1 件のタイトル}}を除去しました:", "watchlistedit-too-many": "ページ数が多すぎるため表示できません。", "watchlisttools-clear": "ウォッチリストの全消去", "watchlisttools-view": "関連する変更を表示", @@ -3552,7 +3559,7 @@ "fileduplicatesearch-noresults": "「$1」という名前のファイルはありません。", "specialpages": "特別ページ", "specialpages-note-top": "凡例", - "specialpages-note": "* 通常の特別ページ\n* 制限されている特別ページ", + "specialpages-note-restricted": "* 標準の特別ページ\n* 制限された特別ページ", "specialpages-group-maintenance": "メンテナンス報告", "specialpages-group-other": "その他の特別ページ", "specialpages-group-login": "ログインまたはアカウント作成", @@ -3671,6 +3678,8 @@ "compare-invalid-title": "指定したページ名は無効です。", "compare-title-not-exists": "指定したページは存在しません。", "compare-revision-not-exists": "指定した版は存在しません。", + "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/jam.json b/languages/i18n/jam.json index 61ca0b2f3e..2511e419d4 100644 --- a/languages/i18n/jam.json +++ b/languages/i18n/jam.json @@ -9,7 +9,8 @@ "Chabi1", "Katxis", "Macofe", - "Dcljr" + "Dcljr", + "MarcoAurelio" ] }, "tog-underline": "Lingk andalainin", @@ -131,13 +132,7 @@ "anontalk": "Taak fi dis IP ajres", "navigation": "Navigieshan", "and": " ahn", - "qbfind": "Fain", - "qbbrowse": "Brouz", - "qbedit": "Edit", - "qbpageoptions": "Dis piej", - "qbmyoptions": "Mi piejdem", "faq": "FAK", - "faqpage": "Project:FAK", "actions": "Akshan", "namespaces": "Niemspies", "variants": "Vieriant", @@ -161,28 +156,19 @@ "edit": "Edit", "create": "Kriet", "create-local": "Ad luokal diskripshan‎", - "editthispage": "Edit dis piej", - "create-this-page": "Kriet dis piej", "delete": "Diliit", - "deletethispage": "Diliit dis piej", "undelete_short": "Andiliit {{PLURAL:$1|wan edit|$1 edit}}", "viewdeleted_short": "Riid {{PLURAL:$1|wan diliitid hedit|$1 diliitid hedit dem}}", "protect": "Protek", "protect_change": "chienj", - "protectthispage": "Protek dis piej", "unprotect": "Neu protektian", - "unprotectthispage": "Neu protektian fi dis piej", "newpage": "Nyuu piej", - "talkpage": "Diskos dis piej", "talkpagelinktext": "Chat", "specialpage": "Peshal piej", "personaltools": "Persnal tuuldem", - "articlepage": "Vyuu kantent piej", "talk": "Diskoshan", "views": "Vyuu", "toolbox": "Tuulbax", - "userpage": "Vyuu yuuza piej", - "projectpage": "Vyuu prajek piej", "imagepage": "Vyuu fail piej", "mediawikipage": "Vyuu mechiz piej", "templatepage": "Vyuu templit piej", @@ -631,7 +617,7 @@ "linksearch": "Extoernal lingk", "listgrouprights-members": "(lis a memba)", "emailuser": "E-miel dis yuuza", - "watchlist": "Mi wachlis", + "watchlist": "Wachlis", "mywatchlist": "Mi wachlis", "addedwatchtext": "Di piej \"[[:$1]]\" don ad tu yu [[Special:Watchlist|wachlis]].\nFyuucha chienj tu dis piej ahn iasuosietid taak piej wi lis de, ahn di piej wi apier '''buoldid''' ina di [[Special:RecentChanges|lis a riisent chienjdem]] fi meki iizia fi pik out.", "removedwatchtext": "Di piej \"[[:$1]]\" rimuuv gaan frahn [[Special:Watchlist|yu wachlis]].", @@ -832,5 +818,5 @@ "logentry-move-move": "$1 {{GENDER:$2|muuv}} piej $3 tu $4‎", "logentry-newusers-create": "Yuuza akount $1 eh {{GENDER:$2|krietid}}‎", "logentry-upload-upload": "$1 {{GENDER:$2|uploaded}} $3", - "searchsuggest-search": "Saach‎" + "searchsuggest-search": "Saach {{SITENAME}}" } diff --git a/languages/i18n/jv.json b/languages/i18n/jv.json index 88a78b8eef..17b108355b 100644 --- a/languages/i18n/jv.json +++ b/languages/i18n/jv.json @@ -180,7 +180,7 @@ "history_short": "Sajarah", "history_small": "sajarah", "updatedmarker": "wis dianyari kawit tekaku mréné pungkasan", - "printableversion": "Vèrsi cap-capan", + "printableversion": "Vèrsi céthak", "permalink": "Pranala permanèn", "print": "Cithak", "view": "Deleng", @@ -602,7 +602,7 @@ "accmailtext": "Tembung sandi sembarang kanggo [[User talk:$1|$1]] wis dikirim menyang $2.\n\nTembung sandi iki bisa diganti ing kaca [[Special:ChangePassword|salin tembung sandi]] sawisé mlebu log.", "newarticle": "(Anyar)", "newarticletext": "Panjenengan ngetuti pranala sing durung ana.\nKanggo nggawé kaca, gagéa ngetik ing kothak ngisor iki (deleng [$1 kaca pitulung] ngenani katerangané).\nManawa panjenengan tekan kéné awit ora sengaja, kliken tumbul balik ana ing pangluruné panjenengan.", - "anontalkpagetext": "----\nIki kaca parembugané panganggo anonim sing durung gawé akun, utawa sing ora nganggo akuné.\nMula, awak dhéwé kudu nganggo alamat IP awujud angka kanggo nglacak dhèwèké.\nAlamat IP mangkono bisa dianggo déning sawenèh panganggo.\nManawa panjenengan panganggo anonim lan rumasa yèn ana tanggepan sing ora ilok dieneraké marang panjenengan, mangga [[Special:CreateAccount|gawéa akun]] utawa [[Special:UserLogin|mlebua log]] kanggo ngéndhani salah pangira karo panganggo anonim liyané ing tembé buri.", + "anontalkpagetext": "----\nIki kaca parembugané panganggo anonim sing durung gawé akun, utawa sing ora nganggo akuné.\nMula, awak dhéwé kudu nganggo alamat IP-né awujud angka kanggo nglacak dhèwèké.\nAlamat IP mangkono bisa dianggo déning sawenèh panganggo.\nManawa panjenengan panganggo anonim lan rumasa yèn ana tanggepan sing ora ilok dieneraké marang panjenengan, mangga [[Special:CreateAccount|gawéa akun]] utawa [[Special:UserLogin|mlebua log]] kanggo ngéndhani salah pangira karo panganggo anonim liyané ing tembé buri.", "noarticletext": "Kala saiki kaca iki durung ana tulisané.\nSampéyan bisa [[Special:Search/{{PAGENAME}}|nggolèki sesirahing kaca iki]] sajeroning kaca liya,\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} nggolèki log sing magepokan],\nutawa [{{fullurl:{{FULLPAGENAME}}|action=edit}} nggawé kaca iki].", "noarticletext-nopermission": "Saiki lagi ora ana tèks ing kaca iki. \nPanjenengan bisa [[Special:Search/{{PAGENAME}}|nggolèk sesirah kaca iki]] ing kaca liyané, \nutawa [{{fullurl:{{#Special:Log}}|page={{urlencode:{{FULLPAGENAME}}}}}} nggolèk ing log sing gegayutan], nanging panjenengan ora kawogan nggawé kaca iki.", "missing-revision": "Révisi #$1 saka kaca ajeneng \"{{FULLPAGENAME}}\" ora ana.\n\nIki biyasané kasababaké awit nututi pranala sajarah sing wis lawas saka sawijiné kaca sing wis dibusak.\nRerincèné bisa digolèki ing [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log busak].", @@ -710,12 +710,12 @@ "previousrevision": "← Owahan sadurungé", "nextrevision": "Owahan sabanjuré →", "currentrevisionlink": "Owahan wekasan", - "cur": "sai", + "cur": "saiki", "next": "sabanjuré", - "last": "sadurung", + "last": "sadurungé", "page_first": "kapisan", "page_last": "pungkasan", - "histlegend": "Kanggo nandhingaké: tandhani kothak radhio révisi-révisi sing arep dibandhingaké lan pencèt ''Enter'' utawa tombol sing ana ing ngisor.
\nLegéndha: ({{int:cur}}) = béda karo révisi pungkasan, ({{int:last}}) = béda karo révisi sadurungé, {{int:minoreditletter}} = besutan cilik.", + "histlegend": "Kanggo mbandhingaké: Tandhani kothak radhioning révisi-révisi sing arep dibandhingaké lan pencèt ''Enter'' utawa tombol ing ngisor.
\nLegéndhah: ({{int:cur}}) = bédané karo révisi pungkasan, ({{int:last}}) = bédané karo révisi sadurungé, {{int:minoreditletter}} = besutan cilik.", "history-fieldset-title": "Golèk owahan", "history-show-deleted": "Mligi owahan sing dibusak", "histfirst": "lawas dhéwé", @@ -729,7 +729,7 @@ "rev-deleted-comment": "(tingkesaning besutan dibusak)", "rev-deleted-user": "(jeneng panganggo dibusak)", "rev-deleted-event": "(rerincèn log dibusak)", - "rev-deleted-user-contribs": "(jeneng panganggo utawa alamat IP dibusak - suntingan didhelikaké saka kontribusi)", + "rev-deleted-user-contribs": "[jeneng panganggo utawa alama IP dibusak - besutan didhelikaké saka pratélaning pisumbang]", "rev-deleted-text-permission": "Révisi kaca iki wis '''dibusak'''.\nPrincèné mbokmanawa kasedyakaké ing [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log pambusakan].", "rev-deleted-text-unhide": "Révisi kaca iki wis dibusak.\nRerincèné bisa digolèki ing [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log busak].\nPanjenengan isih bisa [$1 ndeleng révisi iki] yèn panjenengan arep.", "rev-suppressed-text-unhide": "Révisi kaca iki wis dibrèdhèl.\nRerincèné bisa digolèki ing [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} log brèdhèl].\nPanjenengan isih bisa [$1 ndeleng révisi iki] yèn panjenengan arep.", @@ -822,7 +822,7 @@ "difference-title-multipage": "Béda antarané kaca \"$1\" lan \"$2\"", "difference-multipage": "(Prabédhan antar kaca)", "lineno": "Larik $1:", - "compareselectedversions": "Bandhingna vèrsi kapilih", + "compareselectedversions": "Bandhingaké rèvisi sing kapilih", "showhideselectedversions": "Tampilaké/dhelikaké révisi kapilih", "editundo": "wurung", "diff-empty": "(Ora ana bedane)", @@ -851,7 +851,7 @@ "searchprofile-advanced": "Lungidan", "searchprofile-articles-tooltip": "Golèkan ing $1", "searchprofile-images-tooltip": "Golèk barkas", - "searchprofile-everything-tooltip": "Golèk kabèh isi (kalebu kaca guneman)", + "searchprofile-everything-tooltip": "Golèk kabèh kontèn (kalebu ing kaca parembugan)", "searchprofile-advanced-tooltip": "Golèk ing mandala aran tinamtu", "search-result-size": "$1 ({{PLURAL:$2|1 tembung|$2 tembung}})", "search-result-category-size": "{{PLURAL:$1|1 anggota|$1 anggota}} ({{PLURAL:$2|1 subkatégori|$2 subkatégori}}, {{PLURAL:$3|1 berkas|$3 berkas}})", @@ -1240,7 +1240,7 @@ "rcfilters-noresults-conflict": "Ora ana kasil amarga wewatoné kanggo nggolèk ana masalah", "rcfilters-filtergroup-authorship": "Pangripta besutan", "rcfilters-filter-editsbyself-label": "Owah-owahané panjenengan", - "rcfilters-filter-editsbyself-description": "Sumbangané panjenengan dhéwé.", + "rcfilters-filter-editsbyself-description": "Pisumbangé panjenengan dhéwé.", "rcfilters-filter-editsbyother-label": "Owah-owahané liyan", "rcfilters-filter-editsbyother-description": "Kabèh owahan kajaba duwèké panjenengan.", "rcfilters-filtergroup-userExpLevel": "Tataran pangalaman (mung kanggo panganggo kadhaftar)", @@ -1254,7 +1254,7 @@ "rcfilters-filter-user-experience-level-learner-description": "Luwih akèh pangalamané tinimbang \"Wong neneka anyar\" nanging durung ngèmperi \"Panganggo kawakan\".", "rcfilters-filter-user-experience-level-experienced-label": "Panganggo kawakan", "rcfilters-filter-user-experience-level-experienced-description": "Punjul saka 30 dina kagiyatan lan 500 besutan.", - "rcfilters-filtergroup-automated": "Sumbangan otomatisasi", + "rcfilters-filtergroup-automated": "Pisumbang otomatis", "rcfilters-filter-bots-label": "Bot", "rcfilters-filter-bots-description": "Besutan déning piranti otomatisasi.", "rcfilters-filter-humans-label": "Manungsa (dudu bot)", @@ -1705,7 +1705,7 @@ "protectedtitlesempty": "Ora ana sesirah sing saiki kareksa mawa paramèter iki.", "protectedtitles-submit": "Tuduhaké sesirah", "listusers": "Daftar panganggo", - "listusers-editsonly": "Tampilaké mung panganggo sing nduwèni kontribusi", + "listusers-editsonly": "Mligi tuduhaké panganggo sing duwé pisumbang", "listusers-creationsort": "Urut miturut tanggal digawé", "listusers-desc": "Urutna mudhun", "usereditcount": "$1 {{PLURAL:$1|besutan|besutan}}", @@ -1812,9 +1812,9 @@ "categories-submit": "Tuduhaké", "categoriespagetext": "{{PLURAL:$1|kategori ing ngisor iki ngandhut|kategori ing ngisor iki ngandhut}} kaca utawa media.\n[[Special:UnusedCategories|Kategori sing ora dianggo]] ora ditampilaké ing kéné.\nDeleng uga [[Special:WantedCategories|kategori sing diperlokaké]].", "categoriesfrom": "Tuduhaké kategori-kategori sing diwiwiti:", - "deletedcontributions": "Sumbangané panganggo sing dibusak", - "deletedcontributions-title": "Sumbangané panganggo sing dibusak", - "sp-deletedcontributions-contribs": "sumbangan", + "deletedcontributions": "Pisumbanging panganggo sing dibusak", + "deletedcontributions-title": "Pisumbanging panganggo sing dibusak", + "sp-deletedcontributions-contribs": "pisumbang", "linksearch": "Golèkan pranala njaba", "linksearch-pat": "Polah ing gegolèkan:", "linksearch-ns": "Bilik nama:", @@ -1860,12 +1860,12 @@ "trackingcategories-name": "Jeneng layang", "mailnologin": "Ora ana alamat kirim", "mailnologintext": "Panjenengan kudu [[Special:UserLogin|mlebu log]] lan duwé alamat layang-èl sing trep ing [[Special:Preferences|pilalané]] panjenengan kanggo nglayangi panganggo liyané.", - "emailuser": "Kirim e-mail panganggo iki", + "emailuser": "Kirimi panganggo iki layang-èl", "emailuser-title-target": "Kirim surel ke {{GENDER:$1|pengguna}} ini", "emailuser-title-notarget": "Kirimi panganggo layang-èl", "emailpagetext": "Panjenengan bisa migunakaké formulir ing ngisor kanggo ngirim layang-e marang {{GENDER:$1|panganggo}} iki.\nAlamat layang-e sing panjenengan lebokaké ing [[Special:Preferences|préferèsi panjenengan]] bakal dadi alamat \"Saka\" jroning layang-e kasebut, mula panampa layang-e bakal bisa mbalesi langsung menyang panjenengan.", "defemailsubject": "{{SITENAME}} layang èlèktronik saka panganggo \"$1\"", - "usermaildisabled": "E-mail panganggo dinonaktifaké", + "usermaildisabled": "Layang-èlé panganggo dipatèni", "usermaildisabledtext": "Sampéyan ora bisa ngirim layang èlèktronik nèng panganggo liya nèng wiki iki", "noemailtitle": "Ora ana alamat layang-èl", "noemailtext": "Panganggo iki ora mènèhi alamat layang-e sing absah.", @@ -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]]\"", @@ -2085,27 +2085,27 @@ "namespace_association": "Mandala aran magepokan", "tooltip-namespace_association": "Centhang kothak iki kanggo nglebokaké uga bilik jeneng gumenan utawa subyèk sing kakait karo bilik jeneng kapilih", "blanknamespace": "(Pokok)", - "contributions": "Sumbangané {{GENDER:$1|panganggo}}", - "contributions-title": "Sumbangané panganggo $1", - "mycontris": "Sumbangan", - "anoncontribs": "Sumbangan", + "contributions": "Pisumbanging {{GENDER:$1|panganggo}}", + "contributions-title": "Pisumbanging panganggo $1", + "mycontris": "Pisumbang", + "anoncontribs": "Pisumbang", "contribsub2": "Kanggo {{GENDER:$3|$1}} ($2)", "nocontribs": "Ora ditemokaké owah-owahan sing cocog karo kritéria kasebut iku.", "uctop": "(saiki)", "month": "Saka wulan (lan sadurungé):", "year": "Wiwit taun (lan sadurungé):", - "sp-contributions-newbies": "Tuduhaké mung sumbangané akun-akun anyar waé", + "sp-contributions-newbies": "Tuduhaké mung pisumbangé akun-akun anyar waé", "sp-contributions-newbies-sub": "Kanggo panganggo anyar", - "sp-contributions-newbies-title": "Sumbangané panganggo anyar", + "sp-contributions-newbies-title": "Pisumbanging panganggo anyar", "sp-contributions-blocklog": "log blokir", - "sp-contributions-deleted": "sumbangané {{GENDER:$1|panganggo}} sing dibusak", + "sp-contributions-deleted": "pisumbangé {{GENDER:$1|panganggo}} sing dibusak", "sp-contributions-uploads": "unggahan", "sp-contributions-logs": "log", "sp-contributions-talk": "rembug", - "sp-contributions-userrights": "pengaturan hak panganggo", + "sp-contributions-userrights": "panataning hak {{GENDER:$1|panganggo}}", "sp-contributions-blocked-notice": "Panganggo iki lagi diblokir.\nÈntri log blokiran pungkasan sumadhiya nèng ngisor kanggo rujukan:", "sp-contributions-blocked-notice-anon": "Alamat IP iki lagi diblokir.\nÈntri log blokiran pungkasan sumadhiya nèng ngisor kanggo rujukan:", - "sp-contributions-search": "Golèk sumbangan", + "sp-contributions-search": "Golèk pisumbang", "sp-contributions-username": "Alamat IP utawa jeneng panganggo:", "sp-contributions-toponly": "Tuduhaké besutan mligi rèvisi anyar", "sp-contributions-newonly": "Tuduhaké besutan mligi kaca gawéan", @@ -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", @@ -2196,13 +2196,13 @@ "noautoblockblock": "blokir otomatis dipatèni", "createaccountblock": "ndamelipun akun dipunblokir", "emailblock": "layang-èl dipatèni", - "blocklist-nousertalk": "ora kena mbesut kaca guneman dhéwé", + "blocklist-nousertalk": "ora kena mbesut kaca parembugané dhéwé", "ipblocklist-empty": "Pratélan blokir kosong.", "ipblocklist-no-results": "alamat IP utawa panganggo sing disuwun ora diblokir.", "blocklink": "palang", "unblocklink": "copot blokiran", "change-blocklink": "owahi blokiran", - "contribslink": "sumbangan", + "contribslink": "pisumbang", "emaillink": "kirim layang-èl", "autoblocker": "Panjenengan otomatis dipun-blok amargi nganggé alamat protokol internet (IP) ingkang sami kaliyan \"[[User:$1|$1]]\". Alesanipun $1 dipun blok inggih punika \"'''$2'''\"", "blocklogpage": "Log blokir", @@ -2215,8 +2215,8 @@ "block-log-flags-anononly": "namung panganggo anonim", "block-log-flags-nocreate": "panggawéné akun dipatèni", "block-log-flags-noautoblock": "blokir otomatis dipatèni", - "block-log-flags-noemail": "e-mail diblokir", - "block-log-flags-nousertalk": "ora kena mbesut kaca guneman dhéwé", + "block-log-flags-noemail": "layang-èl dipatèni", + "block-log-flags-nousertalk": "ora kena mbesut kaca parembugané dhéwé", "block-log-flags-angry-autoblock": "paningkatan sistem pamblokiran otomatis wis diaktifaké", "block-log-flags-hiddenname": "jeneng panganggo didhelikaké", "range_block_disabled": "Fungsi pamblokir blok IP kanggo para opsis dipatèni.", @@ -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:", @@ -2412,7 +2412,7 @@ "tooltip-pt-anontalk": "Parembug ing besutan-besutan saka alamat IP iki", "tooltip-pt-preferences": "Pilih-pilihaning {{GENDER:|sampéyan}}", "tooltip-pt-watchlist": "Pratélaning kaca sing sampéyan awasi owah-owahané", - "tooltip-pt-mycontris": "Pratélané sumbangané {{GENDER:|panjenengan}}", + "tooltip-pt-mycontris": "Pratélaning pisumbangé {{GENDER:|panjenengan}}", "tooltip-pt-anoncontribs": "Pratélan besutané alamat IP iki", "tooltip-pt-login": "Panjenengan prayogané mlebu log, sanadyan ora kudu", "tooltip-pt-login-private": "Panjenengan kudu mlebu log supaya bisa nganggo wiki iki", @@ -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", @@ -2445,7 +2445,7 @@ "tooltip-t-recentchangeslinked": "Owah-owahan anyar saka kaca-kaca sing nggayut kaca iki", "tooltip-feed-rss": "''RSS feed'' kanggo kaca iki", "tooltip-feed-atom": "''Atom feed'' kanggo kaca iki", - "tooltip-t-contributions": "Pratélané sumbangané {{GENDER:$1|panganggo iki}}", + "tooltip-t-contributions": "Pratélaning pisumbanging {{GENDER:$1|panganggo iki}}", "tooltip-t-emailuser": "Kirimi layang-èl nyang {{GENDER:$1|panganggo iki}}", "tooltip-t-info": "Katerangan liyané ngenani kaca iki", "tooltip-t-upload": "Unggah barkas", @@ -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", @@ -2630,7 +2630,7 @@ "exif-photometricinterpretation": "Komposisi piksel", "exif-orientation": "Kéblat", "exif-samplesperpixel": "Cacah komponèn", - "exif-planarconfiguration": "Pangaturan data", + "exif-planarconfiguration": "Tata rakiting data", "exif-ycbcrsubsampling": "Rasio subsampling Y ke C", "exif-ycbcrpositioning": "Pandokokan Y lan C", "exif-xresolution": "Résolusi horisontal", @@ -2701,7 +2701,7 @@ "exif-contrast": "Kontras", "exif-saturation": "Saturasi", "exif-sharpness": "Kalandhepan", - "exif-devicesettingdescription": "Dhèskripsi pangaturan piranti", + "exif-devicesettingdescription": "Wedharaning setèlaning piranti", "exif-subjectdistancerange": "Jarak subjèk", "exif-imageuniqueid": "ID unik gambar", "exif-gpsversionid": "Vèrsi tag GPS", @@ -2963,7 +2963,7 @@ "exif-urgency-other": "Prioritas sing ditetepaké panganggo ($1)", "namespacesall": "kabèh", "monthsall": "kabèh", - "confirmemail": "Konfirmasi alamat e-mail", + "confirmemail": "Konfirmasi alamat layang-èl", "confirmemail_noemail": "Panjenengan ora maringi alamat é-mail sing absah ing [[Special:Preferences|prèferènsi]] panjenengan.", "confirmemail_text": "{{SITENAME}} ngwajibaké panjenengan ndhedhes utawa konfirmasi alamat e-mail panjenengan sadurungé bisa nganggo fitur-fitur e-mail.\nPencèten tombol ing ngisor iki kanggo ngirim sawijining kode konfirmasi arupa sawijining pranala;\nTuladen pranala iki ing panjlajah wèb panjenengan kanggo ndhedhes yèn alamat e-mail panjenengan pancèn bener.", "confirmemail_pending": "Sawijining kode konfirmasi wis dikirim menyang alamat e-mail panjenengan;\nyèn panjenengan lagi waé nggawé akun utawa rékening panjenengan, mangga nunggu sawetara menit nganti layang iku tekan sadurungé nyuwun kode anyar manèh.", @@ -2975,7 +2975,7 @@ "confirmemail_needlogin": "Panjenengan kudu ndhedhes (konfirmasi) $1 alamat layang e-mail panjenengan.", "confirmemail_success": "Alamat e-mail panjenengan wis dikonfirmasi.\nSaiki panjenengan bisa log mlebu lan wiwit nganggo wiki.", "confirmemail_loggedin": "Alamat e-mail panjenengan wis dikonfirmasi.", - "confirmemail_subject": "Konfirmasi alamat e-mail {{SITENAME}}", + "confirmemail_subject": "Konfirmasi alamat layang-èl ing {{SITENAME}}", "confirmemail_body": "Ana wong, bokmanawa panjenengan, saka alamat IP $1, wis ndhaftar kanthi akun \"$2\" mawa alamat layang-èl iki ing {{SITENAME}}.\n\nSaperlu ngonfirmasi yèn akun iki temenan duwèké panjenengan lan ngaktivasi fitur layang-èl ing {{SITENAME}}, bukaken pranala iki ing pangluruné panjenengan:\n\n$3\n\nYèn panjenengan *ora tau* ndhaftar mawa akun iki, turuten pranala ngisor iki saperlu murungaké konfirmasi lumantar alamat layang-èl iki:\n\n$5\n\nKodhe konfirmasi iki bakal kadaluwarsa nalika $4.", "confirmemail_body_changed": "Ana wong, bokmanawa panjenengan, saka alamat IP $1, wis ngganti alamat layang-èl ing akun \"$2\" dadi nganggo alamat iki ing {{SITENAME}}. \n\nSaperlu ngonfirmasi yèn akun iki temenan duwèké panjenengan, bukaken pranala iki ing pangluruné panjenengan:\n\n$3\n\nYèn akun iku *dudu* duwèké panjenengan, turuten pranala iki saperlu murungaké konfirmasi lumantar alamat layang-èl iki:\n\n$5\n\nKodhe konfirmasi iki bakal kadaluwarsa nalika $4.", "confirmemail_body_set": "Sawijining wong, mbokmenawa panjenengan dhéwé, saka alamat IP $1, wis ndaftaraké akun \"$2\" mawa alamat e-mail iki ing {{SITENAME}}. Bukaka pranala iki ing panjlajah wèb panjenengan.\n\n$3\n\nYèn panjenengan *ora tau* ndaftar akun iki, tutna pranala ing ngisor iki kanggo mbatalaké konfirmasi alamat e-mail:\n\n$5\n\nKonfirmasi iki bakal kadaluwarsa ing $4.", @@ -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é →", @@ -3216,6 +3216,7 @@ "compare-invalid-title": "Sesirah sing kokawèhaké ora sah.", "compare-title-not-exists": "Sesirah sing kokawèhaké ora ana.", "compare-revision-not-exists": "Benahan sing Sampéyan jaluk ora ana.", + "diff-form": "sawijining '''formulir'''", "dberr-problems": "Nyuwun ngapura! Situs iki ngalami masalah tèknis.", "dberr-again": "Coba nunggu sawetara menit lan unggahna manèh.", "dberr-info": "(Ora bisa nggayut basis dhata: $1)", @@ -3279,10 +3280,10 @@ "logentry-import-interwiki": "$1 {{GENDER:$2|ngimpor}} $3 saka wiki liyané", "logentry-import-interwiki-details": "$1 {{GENDER:$2|ngimpor}} $3 saka $5 ($4 {{PLURAL:$4|révisi}})", "logentry-merge-merge": "$1 {{GENDER:$2|nggabung}} $3 karo $4 (révisi nyandhak $5)", - "logentry-move-move": "$1 {{GENDER:$2|ngalih}} kaca $3 nyang $4", - "logentry-move-move-noredirect": "$1 {{GENDER:$2|mindhahaké}} kaca $3 nèng $4 tanpa ninggalaké pangalihan", - "logentry-move-move_redir": "$1 {{GENDER:$2|mindhahaké}} kaca $3 nèng $4 nindesi pangalihan liyane", - "logentry-move-move_redir-noredirect": "$1 {{GENDER:$2|mindhahaké}} kaca $3 nèng $4 nindesi pangalihan liyane tanpa nginggalaké pangalihan", + "logentry-move-move": "$1 {{GENDER:$2|ngalih}} kaca $3 menyang $4", + "logentry-move-move-noredirect": "$1 {{GENDER:$2|ngalih}} kaca $3 menyang $4 tanpa ninggal alihan", + "logentry-move-move_redir": "$1 {{GENDER:$2|ngalih}} kaca $3 menyang $4 kanthi nindhihi alihan", + "logentry-move-move_redir-noredirect": "$1 {{GENDER:$2|ngalih}} kaca $3 menyang $4 kanthi nindhihi alihan tanpa nginggal alihan", "logentry-patrol-patrol": "$1 {{GENDER:$2|nengeri}} rèvisi $4 saka kaca $3 sing diawasi", "logentry-patrol-patrol-auto": "$1 otomatis {{GENDER:$2|nandhani}} benahan $4 saka kaca $3 kaawasake", "logentry-newusers-newusers": "Akun panganggo $1 {{GENDER:$2|digawé}}", @@ -3376,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 cdb5a30c42..e17a7ea72b 100644 --- a/languages/i18n/kab.json +++ b/languages/i18n/kab.json @@ -15,7 +15,8 @@ "Mezgoug", "Macofe", "Matma Rex", - "Belkacem77" + "Belkacem77", + "Mhenni" ] }, "tog-underline": "Aderrer n iseɣwan:", @@ -45,21 +46,23 @@ "tog-shownumberswatching": "Ssken geddac yellan n yimseqdacen iɛessasen", "tog-oldsig": "Azmul-ik yellan :", "tog-fancysig": "Eǧǧ azmul am yettili (war azday awurman)", - "tog-uselivepreview": "Sseqdec askan arurad (Experimental)", + "tog-uselivepreview": "Sken tiskanin s war asmiren n usebter", "tog-forceeditsummary": "Ini-iyi-d mi sskecmeɣ agzul amecluc", "tog-watchlisthideown": "Ffer ibeddlen inu seg wumuɣ n uɛessi inu", "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", "tog-ccmeonemails": "Azen-iyi-d email n wayen uzneɣ i imseqdacen wiyaḍ", "tog-diffonly": "Ur temliḍ-iyi-d ara ayen yellan seddaw imgerraden", "tog-showhiddencats": "Beqqeḍ taggayin yeffren", - "tog-norollbackdiff": "Ur beqqeḍ ara \"diff\" ma yella usemmet", + "tog-norollbackdiff": "Ur skan ara amgired seld aḥway", "tog-useeditwarning": "Σeggen iyid mi ara fγaγ seg usebter mebla ma skeslaγ ibeddilen.", - "tog-prefershttps": "Sseqdec yalass tuqqna yettwaḥerzen mi teqqneḍ", + "tog-prefershttps": "Seqdac yal tikelt tuqqna taɣelsant akken ad teqqneḍ", "underline-always": "Daymen", "underline-never": "Abaden", "underline-default": "Azal s lexṣas n iminig neɣ n usentel", @@ -68,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", @@ -84,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", @@ -106,7 +109,7 @@ "october-gen": "Tuber", "november-gen": "wamber", "december-gen": "dujamber", - "jan": "yen", + "jan": "Yen", "feb": "Fuṛ", "mar": "meɣ", "apr": "yeb", @@ -116,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", @@ -130,6 +133,8 @@ "october-date": "$1 tuber", "november-date": "$1 wamber", "december-date": "$1 dujamber", + "period-am": "FT", + "period-pm": "MD", "pagecategories": "{{PLURAL:$1|Taggayt|Taggayin}}", "category_header": "Isebtar deg taggayt \"$1\"", "subcategories": "Adutaggayin", @@ -145,20 +150,20 @@ "category-file-count-limited": "{{PLURAL:$1|Afaylu agi yella|$1 ifuyla agi llan}} deg taggayt agi.", "listingcontinuesabbrev": "asartu", "index-category": "Isebtar s umatar", - "noindex-category": "Asebter agi ur d-yerna ara deg umatar", + "noindex-category": "Asebter-agi ur ɣur-s ara amatar", "broken-file-category": "Isebtar s iseɣwan n ifuyla iṛzan", "about": "Awal ɣef...", "article": "Ayen yella deg usebter", "newwindow": "(ad d-yeldi deg usfaylu amaynut)", "cancel": "Eǧǧ-it am yella", "moredotdotdot": "Ugar...", - "morenotlisted": "Umuɣ agi ur yella ara d ummid.", - "mypage": "Asebtar", + "morenotlisted": "Tabdart-agi ur temmid ara", + "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", @@ -168,11 +173,13 @@ "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", "history": "Amezruy n usebter", "history_short": "Amazray", + "history_small": "amazray", "updatedmarker": "yettubeddel segmi tarzeft taneggarut inu", "printableversion": "Lqem n usiggez", "permalink": "Azday ur yettbeddil ara", @@ -180,7 +187,9 @@ "view": "Ɣeṛ", "view-foreign": "Sken di $1", "edit": "Beddel", + "edit-local": "Rnu aglam adigan", "create": "Snulfu", + "create-local": "Rnu aglam n adigan", "delete": "Mḥu", "undelete_short": "Fakk amḥay n {{PLURAL:$1|yiwen ubeddel|$1 yibeddlen}}", "viewdeleted_short": "Ẓeṛ {{PLURAL:$1|yiwen abeddel yettumḥan|$1 Ibeddlen yettumḥan}}", @@ -194,6 +203,9 @@ "talk": "Asqerdec", "views": "Tuẓrin", "toolbox": "Ifecka", + "tool-link-userrights": "Snifel igrawen n {{GENDER:$1|useqdac}}", + "tool-link-userrights-readonly": "Sken igrawen n {{GENDER:$1|useqdac}}", + "tool-link-emailuser": "Azen imayl i {{GENDER:$1|useqdac}}", "imagepage": "Ẓer asebter n tugna", "mediawikipage": "Ẓer asebter n izen", "templatepage": "Ẓer asebter n talɣa", @@ -203,6 +215,7 @@ "otherlanguages": "S tutlayin tiyaḍ", "redirectedfrom": "(Yettusmimeḍ seg $1)", "redirectpagesub": "Asebter usemmimeḍ", + "redirectto": "Welleh ar:", "lastmodifiedat": "Asebter-agi ibeddel i tikelt taneggarut di $2, $1.", "viewcount": "Asebter-agi yettwakcem {{PLURAL:$1|yiwet tikelt|$1 tikwal}}.", "protectedpage": "Asebter yettwaḥerzen", @@ -210,9 +223,12 @@ "jumptonavigation": "ẓer isebtar", "jumptosearch": "anadi", "view-pool-error": "Suref-aɣ, iqeddacen iwziren tura.\nAṭas iseqdacen tnadin ad ẓṛen asebter agi.\nIlaq ad arǧuḍ imir uqbel ad εreḍeḍ tikkelt nniḍen .\n\n$1", + "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}}", "aboutpage": "Project:Ɣef", "copyright": "Agbur yella ddaw $1 ḥaca ma abdar anemgal.", @@ -221,9 +237,10 @@ "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 amenzawi", + "mainpage-description": "Asebter agejdan", "policy-url": "Project:Ilugan", "portal": "Awwur n timetti", "portal-url": "Project:Awwur n timetti", @@ -253,6 +270,7 @@ "hidetoc": "Ffer", "collapsible-collapse": "Seggelmes", "collapsible-expand": "Beqqeḍ", + "confirmable-confirm": "D tidett d {{GENDER:$1|kečč|kem}}?", "confirmable-yes": "Ih", "confirmable-no": "Uhu", "thisisdeleted": "Ẓer neɣ err $1 am yella?", @@ -293,7 +311,7 @@ "laggedslavemode": "Aɣtal: Ahat asebter ur yesɛi ara akk ibeddlen imaynuten.", "readonly": "Database d tamsekkert", "enterlockreason": "Ini ayɣer tsekkreḍ database, ini daɣen melmi ara ad ifukk asekker", - "readonlytext": "Database d tamsekkert, ahat tettuseggem, qrib ad tuɣal-d.\n\nWin (anedbal) isekker-itt yenna-d: $1", + "readonlytext": "Taffa n isefka teskweṛ akka tura ɣef sebba n kra n inekcam d usnifel-nniḍen, ahat ɣef kra n uxeddim n uṣeggem, ticki ifuk ad tuɣal.\n\nAndbal n unagraw iṣekṛen taffa yenna-d acimi: $1", "missing-article": "Taffa n isefka ur t-ufa ara aḍris n yiwen usebter ilaq at af, s-isem « $1 » $2.\n\nUmata, wagi yeḍra mi neḍfeṛ azday ɣer yiwen diff aqbur naɣ ɣer amazray n usebter yemḥan.\n\nMa mačči d-tajṛut agi, ihi d-taniwit deg uhil.\nIlaq ad εeggenem yiwen [[Special:ListUsers/sysop|anedbal]] war ad ttum asefkem URL n uzday.", "missingarticle-rev": "(uṭṭun n lqem : $1)", "missingarticle-diff": "(Diff: $1, $2)", @@ -304,6 +322,8 @@ "filerenameerror": "Ur yezmir ara ad ibeddel isem ufaylu \"$1\" ar \"$2\".", "filedeleteerror": "Ulamek an mḥu afaylu \"$1\".", "directorycreateerror": "Ulamek an snulfu akaram « $1 ».", + "directoryreadonlyerror": "Akaram \"$1\" i tɣuri kan.", + "directorynotreadableerror": "Akaram \"$1\" ur yettwaɣray ara.", "filenotfound": "Ur yezmir ara ad yaf afaylu \"$1\".", "unexpected": "Agul: \"$1\"=\"$2\".", "formerror": "Agul: ur yezmir ara ad yazen talɣa", @@ -320,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.", @@ -358,14 +378,20 @@ "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", + "cannotlogin-title": "Ur izmir ara ad yeqqen", + "cannotlogin-text": "Tuqqna d tawezɣit.", + "cannotloginnow-title": "Ur izmir ara ad yeqqen tura", + "cannotloginnow-text": "Tuqqna d tawezɣit ticki tseqdaceḍ $1.", + "cannotcreateaccount-title": "Ur izmir ara ad yernu imiḍanen", "yourdomainname": "Taɣult inek", "password-change-forbidden": "Ur zemreḍ ara ad beddeleḍ awalen n uɛaddi ɣef uwiki agi.", "externaldberror": "Yella ugul aberrani n database neɣ ur tettalaseḍ ara ad tbeddleḍ isem an wemseqdac aberrani inek.", "login": "Kcem", + "login-security": "Senqed timagit-ik", "nav-login-createaccount": "Kcem / Xleq isem n wemseqdac", "logout": "Ffeɣ", "userlogout": "Ffeɣ", @@ -374,6 +400,7 @@ "userlogin-joinproject": "Ddukkel ar {{SITENAME}}", "createaccount": "Xleq isem n wemseqdac", "userlogin-resetpassword-link": "Ettuḍ awal n uɛaddi ?", + "userlogin-helplink2": "Tallelt i tuqqna", "userlogin-loggedin": "Teqqneḍ yakan am {{GENDER:$1|$1}}. Seqdec tiferkit ddaw-agi iwakken ad teqqneḍ s umiḍan nniḍen.", "userlogin-createanother": "Snulfud amiḍan nniḍen", "createacct-emailrequired": "Tansa email", @@ -384,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}}", @@ -399,9 +429,9 @@ "nocookieslogin": "{{SITENAME}} yesseqdac ikukiyen (cookies) iwakken ad tkecmeḍ. Tekseḍ ikukiyen-nni. Eǧǧ-aten iwakken ad tkecmeḍ.", "nocookiesfornew": "Amiḍan n useqdac ur d-isnulfu ara, acku ur nezmer ara an sulu azar-is.\nSelken ma sermedeḍ \"cookies\", sismeḍ asebter dɣa εreḍ tikkelt nniḍen.", "noname": "Ur tefkiḍ ara isem n wemseqdac ṣaḥiḥ.", - "loginsuccesstitle": "Tkecmeḍ !", + "loginsuccesstitle": "Taqqneḍ", "loginsuccess": "'''Tkecmeḍ ar {{SITENAME}} s yisem n wemseqdac \"$1\".'''", - "nosuchuser": "Aseqdac « $1 » ulac-it d-agi.\nSsenqed tira n yisem-nni, naɣ [[Special:CreateAccount|snulfu-d amiḍan amaynut]].", + "nosuchuser": "Aseqdac $1 ulac-it d-agi.\nIsmawen n iseqdacen ṭṭafaṛen taruẓi n usekkil.\nSenqed tira, neɣ [[Special:CreateAccount|rnu amiḍan amaynut]].", "nosuchusershort": "Ulac isem n wemseqdac s yisem \"$1\". Ssenqed tira n yisem-nni.", "nouserspecified": "Yessefk ad tefkeḍ isem n wemseqdac.", "login-userblocked": "Aseqdac agi i sewḥel. Tuqqna t-ugwi.", @@ -416,11 +446,11 @@ "noemail": "\"$1\" ur yesɛi ara email.", "noemailcreate": "Ilaq ad efkeḍ tansa e-mail i sɛan aseɣbel.", "passwordsent": "Awal n tbaḍnit amaynut yettwazen i emal inek, aylaw n \"$1\".\nG leɛnaya-k, kcem tikelt nniḍen yis-s.", - "blocked-mailpassword": "Tansa n IP inek tɛekkel, ur tezmireḍ ara ad txedmeḍ abeddel,\nur tezmireḍ ara ad tesɛuḍ awal n tbaḍnit i tettuḍ.", + "blocked-mailpassword": "Tansa-ik IP tewḥel i unifel. Akken ad nsewḥel yir aseqdec, ur tezmireḍ ara ad tesqedceḍ tiririt n wawal uffir si tansa-agi IP.", "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.", @@ -433,11 +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", @@ -453,6 +485,25 @@ "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", + "botpasswords-label-cancel": "Sefsex", + "botpasswords-label-delete": "Kkes", + "botpasswords-label-resetpassword": "Wennez awal uffir", + "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", @@ -509,10 +560,13 @@ "sig_tip": "Azmul inek s uzemz", "hr_tip": "Ajerriḍ aglawan (ur teččerɛiḍ ara)", "summary": "Agzul:", - "subject": "Asentel/Azwel azellum:", + "subject": "Asentel:", "minoredit": "Wagi d abeddel afessas", "watchthis": "Ɛass asebter-agi", "savearticle": "Beddel asebter", + "savechanges": "Sekles asnifel", + "publishpage": "Suffeɣ-d asebter", + "publishchanges": "Suffeɣ-d asnifel", "preview": "Pre-Ẓer", "showpreview": "Ssken pre-timeẓriwt", "showdiff": "Ssken ibeddlen", @@ -520,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ḍ.", @@ -538,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!'''", @@ -596,7 +650,8 @@ "permissionserrorstext": "Ur tesɛiḍ ara turagt iwakken ad xedmeḍ wayagi i {{PLURAL:$1|taɣẓint|tiɣẓinin}} agi :", "permissionserrorstext-withaction": "Ur sɛiḍ ara ttesriḥ af $2, i {{PLURAL:$1|taɣẓint|tiɣẓinin}} agi :", "recreate-moveddeleted-warn": "'''Ɣur-wet : asebter agi i tebɣam ad snulfum, yetwekkes uqbel.'''\n\nIlaq ad snulfum asebter agi haca ma i xater. Aɣmis n isebtaren i twekkesen yella ddaw-agi :", - "moveddeleted-notice": "Asebter agi yetwekkes. Aɣmis n isebtaren i twekkesen yella ddaw agi.", + "moveddeleted-notice": "Asebter-a yettwakkes. \nAɣmis n tukksa, ammesten neɣ asenkez n usebter yettwammel-d ddaw-a i uwelleh.", + "moveddeleted-notice-recent": "Nesḥissef, imi melmi kan i yettwakkes usebter-a (deg 24 n yisragen ineggura). Iɣmisen n tukksa, n ummesten, akked usnifel n yisem i usebter ttunefken-d ddaw-a i uwelleh.", "log-fulllog": "Ẓeṛ aɣmis ummid", "edit-hook-aborted": "Abrir n ubeddel s usiɣzef.\nTamentilt warisem", "edit-gone-missing": "Ur yezmer ara ad yemucceḍ asebter agi.\nAhat yetwemḥa.", @@ -608,13 +663,18 @@ "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", "content-model-text": "aḍris afraray", "content-model-javascript": "JavaScript", "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.", @@ -643,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", @@ -653,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", @@ -756,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", @@ -770,7 +832,7 @@ "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", @@ -792,6 +854,7 @@ "searchrelated": "ineqqes", "searchall": "akk", "showingresults": "Tamuli n {{PLURAL:$1|'''Yiwen''' wegmud|'''$1''' n yigmad}} seg #'''$2'''.", + "search-showingresults": "{{PLURAL:$4|Agmuḍ $1 si $3|Igmaḍ $1 - $2 si $3}}", "search-nonefound": "Ulac igmad i usuter agi.", "powersearch-legend": "Anadi amahlan", "powersearch-ns": "Nadi deg tallunin n isemawen", @@ -815,7 +878,7 @@ "prefs-watchlist": "Tabdart 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": "Geddac n yibeddlen yessefk ad banen deg wumuɣ n uɛessi ameqqran:", + "prefs-watchlist-edits": "Amḍan afellay n ubeddel ara d-ibabnen deg tebdart n uḍfaṛ:", "prefs-watchlist-edits-max": "Amḍan afellay : 1000", "prefs-watchlist-token": "Tiddest umuɣ n uɛassi :", "prefs-misc": "Ismenyifien-nniḍen", @@ -1003,19 +1066,44 @@ "right-siteadmin": "Sekkweṛ naɣ kkes aseḍru i taffa n isefka", "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", @@ -1023,11 +1111,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", @@ -1042,10 +1132,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", @@ -1062,20 +1159,78 @@ "recentchanges-legend-heading": "Aglam :", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (zeṛ daɣen [[Special:NewPages|umuɣ n isebtar imaynuten]]).", "recentchanges-legend-plusminus": "(''± 123'')", - "rcfilters-other-review-tools": "Ifecka-nniḍen n ucegger:", - "rcnotefrom": "Deg ukessar llan ibeddlen seg wasmi '''$2''' (ar '''$1''').", + "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", + "rcfilters-savedqueries-add-new-title": "Sekles iɣewwaṛen n imzizdig amezwer", + "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-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ḍ", + "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", "rcshowhideminor-hide": "Ffer", "rcshowhidebots": "$1 irubuten", "rcshowhidebots-show": "Sken", + "rcshowhidebots-hide": "Ffer", "rcshowhideliu": "$1 imseqdacen imseklesen", + "rcshowhideliu-show": "Sken", "rcshowhideliu-hide": "Ffer", "rcshowhideanons": "$1 n yimseqdacen udrigen", + "rcshowhideanons-show": "Sken", "rcshowhideanons-hide": "Ffer", "rcshowhidepatr": "$1 n yibeddlen yettwassenqden", + "rcshowhidepatr-show": "Sken", + "rcshowhidepatr-hide": "Ffer", "rcshowhidemine": "$1 ibeddlen inu", + "rcshowhidemine-show": "Sken", "rcshowhidemine-hide": "Ffer", + "rcshowhidecategorization-show": "Sken", "rclinks": "Ssken $1 n yibeddlen ineggura di $2 n wussan ineggura", "diff": "Amgired", "hist": "Amezruy", @@ -1188,6 +1343,21 @@ "upload-too-many-redirects": "URL agi yesɛa aṭas illusen n wesnili.", "upload-http-error": "Anezri HTTP : $1", "upload-copy-upload-invalid-domain": "Anɣel n izdamen ur yezmer ara seg taɣult agi.", + "upload-dialog-title": "Azen afaylu", + "upload-dialog-button-cancel": "Sefsex", + "upload-dialog-button-back": "Uɣal", + "upload-dialog-button-done": "Immed", + "upload-dialog-button-save": "Sekles", + "upload-dialog-button-upload": "Sali", + "upload-form-label-infoform-title": "Talqayt", + "upload-form-label-infoform-name": "Isem", + "upload-form-label-infoform-name-tooltip": "Azwel n useglem asuf i ufaylu, win ara ttwasqedcen d isem n ufaylu. Tzemreḍ ad tesqedceḍ tutlayt tamirant s isekkilen ilmawen. Ur sedday ara asiɣzef n ufaylu.", + "upload-form-label-infoform-description": "Aglam", + "upload-form-label-usage-title": "Aseqdec", + "upload-form-label-usage-filename": "Isem n ufaylu", + "upload-form-label-own-work": "D nek i d ameskar n umahil-a", + "upload-form-label-infoform-categories": "Taggayin", + "upload-form-label-infoform-date": "Azemz", "backend-fail-stream": "Ulamek an ɣeṛ afaylu $1.", "backend-fail-backup": "Ulamek an ḥrez afaylu $1.", "backend-fail-notexists": "Afaylu $1 ulac it.", @@ -1248,7 +1418,7 @@ "img-auth-public": "Tasɣent n img_auth.php tella i ubeqqeḍ n ifuyla n yiwen wiki uslig.\nWiki agi yesɣwer am wiki azayez.\nI taɣellist tameqqṛant, img_auth.php yensa.", "img-auth-noread": "Aseqdac ur yesɛa ara azref deg taɣuri ɣef « $1 ».", "http-invalid-url": "URL ur teɣbel ara : $1", - "http-invalid-scheme": "URL s uzenziɣ « $1 » ur ɣbelen ara d-agi.", + "http-invalid-scheme": "Tansiwin URL s uzenziɣ \"$1\" ur ttusefraken ara d-agi.", "http-request-error": "Anezri warisem deg uceggaɛ n tuttra.", "http-read-error": "Anezri n taɣuri HTTP.", "http-timed-out": "Tuttra HTTP teneffeṛ.", @@ -1352,11 +1522,11 @@ "randomincategory-nopages": "Ulac asebtar deg [[:Category:$1]].", "randomredirect": "Asemmimeḍ menwala", "randomredirect-nopages": "Ulac asebter n alsanamad deg tallunt n isemawen « $1 ».", - "statistics": "Tisnaddanin", + "statistics": "Tidaddanin", "statistics-header-pages": "Tisnaddanin n isebtar", - "statistics-header-edits": "Tisnaddanin n ibeddilen", + "statistics-header-edits": "Tidaddanin n teẓrigt", "statistics-header-users": "Tisnaddanin n wemseqdac", - "statistics-header-hooks": "Tisnaddanin nniḍen", + "statistics-header-hooks": "Tidaddanin-nniḍen", "statistics-articles": "Isebtar n ugbur", "statistics-pages": "Isebtar", "statistics-pages-desc": "Akkw isebtar n wiki agi, ula d isebtar n umeslay, etc...", @@ -1421,6 +1591,7 @@ "mostrevisions": "Isebtar i yettubedlen aṭas", "prefixindex": "Akk isebtaren s yisekkilen imezwura", "prefixindex-namespace": "Akkw isebtar s adat (tallunt n isemawe $1)", + "prefixindex-submit": "Sken", "prefixindex-strip": "Ekkes azwir deg umuɣ", "shortpages": "isebtar imecṭuḥen", "longpages": "Isebtar imeqqranen", @@ -1431,8 +1602,16 @@ "protectedpages-cascade": "Imestenen s uceṛcuṛ kan", "protectedpages-noredirect": "Ffer isemmimḍen", "protectedpagesempty": "isebtar-agi ttwaḥerzen s imsektayen -agi.", + "protectedpages-timestamp": "Asragemz", + "protectedpages-page": "Asebter", + "protectedpages-performer": "Ammesten n useqdac", + "protectedpages-reason": "Taɣẓint", + "protectedpages-submit": "Sken isebtar", + "protectedpages-unknown-timestamp": "Arussin", + "protectedpages-unknown-performer": "Aseqdac arussin", "protectedtitles": "Izwal ugdilen", "protectedtitlesempty": "Ulac azwel yesɛan asegdel s iɣewwaren agi.", + "protectedtitles-submit": "Sken izwal", "listusers": "Umuɣ n yimseqdacen", "listusers-editsonly": "Sekned kan iseqdacen yesɛan asekcem naɣ ugar", "listusers-creationsort": "Fren s azmez n usnulfu", @@ -1440,6 +1619,7 @@ "usereditcount": "$1 {{PLURAL:$1|abeddel|ibeddilen}}", "usercreated": "{{GENDER:$3|Yesnulfu-d}} ass n $1 ar $2", "newpages": "isebtar imaynuten", + "newpages-submit": "Sken", "newpages-username": "Isem n wemseqdac:", "ancientpages": "isebtar iqdimen", "move": "Smimeḍ", @@ -1452,20 +1632,36 @@ "nopagetext": "Asebter asaḍas agi ulac-it.", "pager-newer-n": "{{PLURAL:$1|amaynut|$1 imaynuten}}", "pager-older-n": "{{PLURAL:$1|aqbur|$1 iqburen}}", - "suppress": "Mdi", + "suppress": "Kkes", "querypage-disabled": "Asebter uslig agi yensa , taɣzint : timellal is.", + "apihelp": "Tallelt n API", + "apihelp-no-such-module": "Azegrir\"$1\" ulac-it.", + "apisandbox-api-disabled": "Asnas API ur yermid ara ɣef usmel-agi.", + "apisandbox-unfullscreen": "Sken sebter", + "apisandbox-reset": "Sfeḍ", + "apisandbox-retry": "Ɛref̣ tikelt-nniḍen", + "apisandbox-helpurls": "Iseɣwan n tallelt", + "apisandbox-examples": "Imedyaten", + "apisandbox-dynamic-parameters": "Iɣewwaṛen-nniḍen", + "apisandbox-dynamic-parameters-add-label": "Rnu aɣewwaṛ", + "apisandbox-dynamic-parameters-add-placeholder": "Isem n uɣewwaṛ", + "apisandbox-dynamic-error-exists": "Aɣewwaṛ s yisem \"$1\" yella yakan.", + "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", "alllogstext": "Abeqqeḍ n akkw iɣmisen yestufan ɣef {{SITENAME}}.
\nTzemreḍ ad sageneḍ abeqqeḍ s tixtiṛit n tawsit n uɣmis, isem n useqdac naɣ asebter nni.", "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)", @@ -1518,6 +1714,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", @@ -1544,30 +1741,34 @@ "emailccsubject": "Alsaru n izen inek i $1: $2", "emailsent": "E-mail yettwazen", "emailsenttext": "Izen n e-mail inek yettwazen.", - "emailuserfooter": "Tirawt agi tetweceggaɛ sɣur « $1 » i « $2 » s tasɣent \"Ceggaɛ tirawt i useqdac\" n {{SITENAME}}.", + "emailuserfooter": "Imayl-agi {{GENDER:$1|yettwazen}} sɣur $1 ar {{GENDER:$2|$2}} s twuri \"{{int:emailuser}}\" di {{SITENAME}}. Ma yella {{GENDER:$2|kečč|kemm}} terriḍ i yimayl-agi, Imayl-{{GENDER:$2|ik|im}} ad yettwazen srid i {{GENDER:$1|umazan aneṣli}}, ayen ara yemmlen tansa-{{GENDER:$2|ik|im}} i {{GENDER:$1|nitni|nitenti}}.", "usermessage-summary": "Yeǧǧa-d izen anagraw", "usermessage-editor": "Ameskar n unagraw", "watchlist": "Tabdart n uḍfaṛ", "mywatchlist": "Tabdart n uḍfaṛ", "watchlistfor2": "I $1 $2", "nowatchlist": "Ulac iferdisen di tebdart-ik n uḍfaṛ.", - "watchlistanontext": "G leɛnaya-k $1 iwakken ad twalaḍ neɣ tbeddleḍ iferdas deg wumuɣ n uɛessi inek.", + "watchlistanontext": "Qqen ma ulac aɣilif akken ad twaliḍ neɣ ad tbeddleḍ tabdart-ik n uḍfaṛ.", "watchnologin": "Ur tekcimeḍ ara", "addwatch": "Rnu i umuɣ n uɛassi", "addedwatchtext": "Asebter \"[[:$1]]\" yettwarnu deg [[Special:Watchlist|wumuɣ n uḍfar]] inek/inem.\nIbeddlen id-yetteddun deg usebter-agi neɣ deg usbtar umyennan ines, ad banen dagi.", + "addedwatchtext-short": "Asebter \"$1\" yettwarna ar tebdart-ik n uḍfaṛ.", "removewatch": "Ekkes seg umuɣ n uɛassi", - "removedwatchtext": "!!Asebter \"[[:$1]]\" yettwakkes seg [[Special:Watchlist|umuɣ n uɛessi]] inek.", + "removedwatchtext": "Asebter \"[[:$1]]\" akked usqerdec-is ttwakksen si [[Special:Watchlist|tebdart-ik n uḍfaṛ]].", + "removedwatchtext-short": "Asebter \"$1\" yettwakkes seg tebdart-ik n uḍfaṛ.", "watch": "Ɛass", "watchthispage": "Ɛass asebter-agi", "unwatch": "Fakk aɛassi", "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ṛ", "watching": "Ad iɛass...", "unwatching": "Ad ifukk aɛessi...", @@ -1598,6 +1799,7 @@ "delete-confirm": "Kkes \"$1\"", "delete-legend": "Ekkes", "historywarning": "Ɣur-wet : Asebter i ara temḥuḍ yesɛa amezruy s azal alemmas n $1 {{PLURAL:$1|lqem|ileqman}} :", + "historyaction-submit": "Sken", "confirmdeletetext": "Aqlak ad mḥuḍ asebter naɣ afaylu, dɣa akkw ileqman-is iqdimen. Ilaq ad segegeḍ tigawt agi dɣa tfehemeḍ [[{{MediaWiki:Policy-url}}|ilugan n wiki]].", "actioncomplete": "Axdam yekfa", "actionfailed": "Tigawt agi texser", @@ -1627,6 +1829,8 @@ "rollback-success": "Asemmet n ibeddilen yetwaxeddemen sɣur $1 ;\ntuqqla ar lqem aneggaru sɣur $2.", "sessionfailure-title": "Anezri n tɣimit", "sessionfailure": "Yella ugul akk d takmect inek;\nAxdam-agi yebṭel axaṭer waqila yella wemdan nniḍen i yeddem isem n wemseqdac inek.\nG leɛnayek wekki ɣef taqeffalt \"Back/Précédent\" n browser/explorateur inek, umbeɛd wekki ɣef \"Actualiser/reload\" akk ad tɛerḍeḍ tikelt nniḍen.", + "changecontentmodel-title-label": "Azwel n usebter", + "changecontentmodel-reason-label": "Taɣẓint :", "protectlogpage": "Aɣmis n wemḥay", "protectlogtext": "Atan umuɣ n ibeddilen n immestan n isebtar.\nZeṛ [[Special:ProtectedPages|umuɣ n isebtar yettwaḥerzen]] i umuɣ n immestan timiranin.", "protectedarticle": "\"[[$1]]\" yettwaḥrez", @@ -1722,10 +1926,11 @@ "tooltip-invert": "Sekcem amidag deg tankult agi iwakken ad ffereḍ ibeddilen n isebtar deg tallunt n isemawen yettwafren (dɣa tallunt n isemawen yeqqnen ma yella amidag deg tankult)", "namespace_association": "Tallunt n isemawen yeqqenen", "tooltip-namespace_association": "Sekcem amidag deg tankult agi iwakken ad rnuḍ daɣen tallunt n isemawen n umyannan yeqqnen ar tallunt n isemawen yettwafren", - "blanknamespace": "(Amenzawi)", + "blanknamespace": "(Agejdan)", "contributions": "Ittekkiyen n {{GENDER:$1|umseqdac|tamseqdact}}", "contributions-title": "Umuɣ n tikkin n umseqdac $1", "mycontris": "Ittekkiyen", + "anoncontribs": "Ittekkiyen", "contribsub2": "I {{GENDER:$3|$1}} ($2)", "nocontribs": "Ur yufi ara abddel i tebɣiḍ.", "uctop": "(amiran)", @@ -1745,6 +1950,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 »", @@ -1761,7 +1967,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", @@ -1894,7 +2100,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", @@ -2021,8 +2227,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}}", @@ -2031,7 +2237,7 @@ "tooltip-pt-anontalk": "Asqerdec ɣef uttekki seg tansa-agi IP", "tooltip-pt-preferences": "Ismenyifen {{GENDER:|ik|im}}", "tooltip-pt-watchlist": "Umuɣ n uɛessi n isebtar i ttɛessaɣ", - "tooltip-pt-mycontris": "Umuɣ n tikkin inu", + "tooltip-pt-mycontris": "Tabdart n ittekkiyen-{{GENDER:|ik|im}}", "tooltip-pt-login": "Lukan tkecmeḍ xir, meɛna am tebɣiḍ.", "tooltip-pt-logout": "Ffeɣ", "tooltip-pt-createaccount": "Yelha limer ad ternuḍ amiḍan sakin ad teqqneḍ; maca, ur issefk ara", @@ -2050,9 +2256,9 @@ "tooltip-search": "Nadi {{SITENAME}}", "tooltip-search-go": "Ṛuḥ ɣer usebter i sɛan isem agi ma yella.", "tooltip-search-fulltext": "Nadi isebtar i sɛan aḍris agi", - "tooltip-p-logo": "Asebter amenzawi", + "tooltip-p-logo": "Rzu ar usebter agejdan", "tooltip-n-mainpage": "Rzu ar usebter agejdan", - "tooltip-n-mainpage-description": "Rzu asebter amenzawi", + "tooltip-n-mainpage-description": "Rzu asebter agejdan", "tooltip-n-portal": "Ɣef usenfar, ayen tzemrḍ ad txedmeḍ, anda tafeḍ tiɣawsiwin", "tooltip-n-currentevents": "Af ayen yeḍran tura", "tooltip-n-recentchanges": "Umuɣ n yibeddlen imaynuten deg wiki.", @@ -2063,7 +2269,7 @@ "tooltip-feed-rss": "RSS feed n usebter-agi", "tooltip-feed-atom": "Atom feed n usebter-agi", "tooltip-t-contributions": "Ẓer tabdart n ittekkiyen n tikkin n {{GENDER:$1|useqdac-agi|taseqdact-agi}}", - "tooltip-t-emailuser": "Azen e-mail i wemseqdac-agi", + "tooltip-t-emailuser": "Azen imayl i {{GENDER:$1|useqdac-agi|useqdac-agi}}", "tooltip-t-upload": "Azen ifuyla", "tooltip-t-specialpages": "Umuɣ n akk isebtar usligen", "tooltip-t-print": "Lqem tasiggezt n usebter agi", @@ -2096,10 +2302,10 @@ "anonymous": "{{PLURAL:$1|Aseqdac udrig|Iseqdacen udrigen}} ɣef {{SITENAME}}", "siteuser": "{{SITENAME}} amseqdac $1", "anonuser": "amseqdac abnabak $1 n {{SITENAME}}", - "lastmodifiedatby": "Tikkelt taneggarut asmi yettubeddel asebter-agi $2, $1 sɣur $3.", + "lastmodifiedatby": "Asebter-agi ibeddel i tikelt taneggarut di $2, $1 sɣur $3.", "othercontribs": "Tikkin ɣef umahil n $1.", "others": "wiyaḍ", - "siteusers": "{{PLURAL:$2|aseqdac|iseqdacen}} $1 n {{SITENAME}}", + "siteusers": "{{PLURAL:$2|{{GENDER:$1|aseqdac|taseqdact}}|{{Gender:$1|iseqdacen|tiseqdacin}}}} $1 n {{SITENAME}}", "anonusers": "{{PLURAL:$2|amseqdac abnabak|imseqdacen amseqdac abnabak}} $1 n {{SITENAME}}", "creditspage": "Win ixedmen asebter", "nocredits": "Ulac talɣut ɣef wayen ixedmen asebter-agi.", @@ -2205,6 +2411,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", @@ -2598,7 +2805,7 @@ "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": "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": "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.", "recreate": "Ɛiwed xleq", "confirm_purge_button": "Seɣbel", @@ -2648,6 +2855,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)", @@ -2655,7 +2863,7 @@ "duplicate-defaultsort": "Ɣur-wet : tasarut n ufran m-ulac « $2 » atsefεej tasarut n uqbel « $1 ».", "version": "Lqem", "version-extensions": "Isiɣzaf i serkeben", - "version-skins": "Igelman", + "version-skins": "Acebbeḥ ibedden.", "version-specialpages": "isebtar usligen", "version-parserhooks": "Imguden n umsisleḍ n taseddast", "version-variables": "Imuttiyen", @@ -2690,8 +2898,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 :", @@ -2740,6 +2948,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", @@ -2752,7 +2963,7 @@ "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-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.", @@ -2770,7 +2981,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", @@ -2799,9 +3010,10 @@ "logentry-newusers-create2": "Amiḍan n umseqdac $3 {{GENDER:$2|yetwaxleq}} sɣur $1", "logentry-newusers-byemail": "Amiḍan n umseqdac $3 {{GENDER:$2|yetwaxleq}} sɣur $1 dɣa awal n uɛaddi yetwaceggaɛ deg email", "logentry-newusers-autocreate": "Amiḍan n umseqdac $1 {{GENDER:$2|yetwaxleq}} s uwurman", - "logentry-rights-rights": "$1 {{GENDER:$2|yebeddel|tebeddel}} amyili ar ugraw i $3 n $4 ar $5", + "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...", @@ -2815,7 +3027,7 @@ "feedback-error3": "Tuccḍa : Ulac tamrarut n API", "feedback-message": "Izen :", "feedback-subject": "Asentel :", - "feedback-submit": "Ceggaɛ iwenniten", + "feedback-submit": "Azen", "feedback-thanks": "Tanemmirt ! Awennit inek/inem yeffeɣ-d ɣef usebtar \"[$2 $1]\".", "searchsuggest-search": "Nadi {{SITENAME}}", "searchsuggest-containing": "yesɛan...", @@ -2860,5 +3072,25 @@ "expand_templates_remove_nowiki": "Yetkkes ticraḍ deg ugemmuḍ", "expand_templates_generate_xml": "Zeṛ talɣa n useklu n tasleṭ XML", "expand_templates_generate_rawhtml": "Beqqeḍ HTML aneṣli", - "expand_templates_preview": "Azaraskan" + "expand_templates_preview": "Azaraskan", + "pagelang-language": "Tutlayt", + "pagelang-use-default": "Seqdec tutlayt tamezwert", + "pagelang-select-lang": "Fren tutlayt", + "pagelang-reason": "Taɣẓint", + "pagelang-submit": "Azen", + "pagelang-unchanged-language": "Asebter $1 yettusers yakan ɣef tutlayt $2.", + "log-name-pagelang": "Amis n usnifel n tutlayt", + "logentry-pagelang-pagelang": "$1 {{GENDER:$2|ibedde|tbeddel}} tutlayt n usebter $3 si $4 ar $5.", + "mediastatistics": "Tidaddanin ɣef imidyaten", + "special-characters-group-latin": "talaṭinit", + "special-characters-group-latinextended": "talaṭinit taɣezfant", + "special-characters-group-ipa": "Gmm.Grɣ", + "special-characters-group-symbols": "Izamulen", + "special-characters-group-greek": "Tagrigit", + "special-characters-group-greekextended": "Tagrigit taɣezfant", + "special-characters-group-cyrillic": "Tasirilikt", + "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 3461342740..6eecad9b0d 100644 --- a/languages/i18n/ko.json +++ b/languages/i18n/ko.json @@ -67,7 +67,8 @@ "Jerrykim306", "Sukjong0406", "Garam", - "렌즈" + "렌즈", + "CYAN" ] }, "tog-underline": "링크에 밑줄:", @@ -104,6 +105,7 @@ "tog-watchlisthideminor": "주시문서 목록에서 사소한 편집을 숨기기", "tog-watchlisthideliu": "주시문서 목록에서 로그인한 사용자의 편집을 숨기기", "tog-watchlistreloadautomatically": "필터가 수정될 때마다 주시문서 목록 자동으로 새로 고치기 (자바스크립트 필요)", + "tog-watchlistunwatchlinks": "주시문서 목록 항목에 대한 직접적인 주시/주시해제 링크를 추가합니다 (토글 기능을 위해 자바스크립트가 필요합니다)", "tog-watchlisthideanons": "주시문서 목록에서 익명 사용자의 편집을 숨기기", "tog-watchlisthidepatrolled": "주시문서 목록에서 점검한 편집을 숨기기", "tog-watchlisthidecategorization": "페이지 분류 숨기기", @@ -223,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": "보기", @@ -645,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": "여기에 위키 문법을 사용하지 않을 글을 적어 주세요", @@ -751,8 +753,8 @@ "permissionserrorstext-withaction": "$2 권한이 없습니다. 다음 {{PLURAL:$1|이유}}를 확인해주세요:", "contentmodelediterror": "이 판을 편집할 수 없습니다. 콘텐츠 모델은 $1이며, 이 문서의 현재 콘텐츠 모델은 $2이므로 차이가 있습니다.", "recreate-moveddeleted-warn": "경고: 삭제된 문서를 다시 만들고 있습니다.\n\n이 문서를 계속 편집하는 것이 적합한 것인지 확인해주세요.\n편의를 위해 삭제와 이동 기록을 다음과 같이 제공합니다:", - "moveddeleted-notice": "이 문서는 삭제되었습니다.\n이 문서의 삭제 및 이동 기록은 다음과 같습니다.", - "moveddeleted-notice-recent": "죄송합니다, 이 문서는 최근 (24시간 내)에 삭제된 적이 있습니다.\n삭제와 이동 기록이 참고를 위해 남겨져 있습니다.", + "moveddeleted-notice": "이 문서는 삭제되었습니다.\n이 문서의 삭제 및 이동, 보호 기록은 다음과 같습니다.", + "moveddeleted-notice-recent": "죄송합니다, 이 문서는 최근 (24시간 내)에 삭제된 적이 있습니다.\n삭제와 보호, 이동 기록이 참고를 위해 남겨져 있습니다.", "log-fulllog": "전체 기록 보기", "edit-hook-aborted": "훅에 의해 편집이 중단되었습니다.\n아무런 설명도 주어지지 않았습니다.", "edit-gone-missing": "문서를 저장하지 못했습니다.\n문서가 삭제된 것 같습니다.", @@ -1020,7 +1022,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": "기타", @@ -1336,16 +1338,20 @@ "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": "문서별로 묶음", + "rcfilters-grouping-title": "묶기", "rcfilters-activefilters": "사용 중인 필터", "rcfilters-advancedfilters": "고급 필터", - "rcfilters-limit-title": "표시할 변경사항", - "rcfilters-limit-shownum": "최근 {{PLURAL:$1개의 변경사항}} 표시", + "rcfilters-limit-title": "표시할 변경사항 수", + "rcfilters-limit-shownum": "최근 {{PLURAL:$1|$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-quickfilters-placeholder-description": "필터 설정을 저장하고 나중에 다시 사용하려면 아래의 사용 중인 필터 영역의 북마크 아이콘을 클릭하십시오.", @@ -1362,8 +1368,7 @@ "rcfilters-savedqueries-add-new-title": "현재의 필터 설정 저장", "rcfilters-restore-default-filters": "기본 필터 복구", "rcfilters-clear-all-filters": "필터 모두 지우기", - "rcfilters-show-new-changes": "새로운 변경사항 표시", - "rcfilters-previous-changes-label": "이전에 표시된 변경사항", + "rcfilters-show-new-changes": "최신 변경사항 보기", "rcfilters-search-placeholder": "필터 최근 바뀜 (찾아보거나 입력을 시작하십시오)", "rcfilters-invalid-filter": "유효하지 않은 필터", "rcfilters-empty-filter": "활성화된 필터가 없습니다. 모든 기여가 표시됩니다.", @@ -1376,8 +1381,8 @@ "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": "다른 사용자의 변경사항", @@ -1415,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": "위키 내용, 토론, 분류 설명에 대한 편집....", @@ -1435,6 +1445,7 @@ "rcfilters-filter-excluded": "제외됨", "rcfilters-tag-prefix-namespace-inverted": ":아님 $1", "rcfilters-exclude-button-off": "선택 제외", + "rcfilters-exclude-button-on": "선택 제외", "rcfilters-view-advanced-filters-label": "고급 필터", "rcfilters-view-tags": "태그된 편집", "rcfilters-view-namespaces-tooltip": "이름공간으로 결과 필터", @@ -1443,6 +1454,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부터 시작하는 새로 바뀐 문서 보기", @@ -1958,6 +1970,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": "URL 쿼리 문자열", "apisandbox-request-url-label": "요청 URL:", @@ -2021,7 +2034,7 @@ "deletedcontributions": "삭제된 사용자 기여", "deletedcontributions-title": "삭제된 사용자 기여", "sp-deletedcontributions-contribs": "기여", - "linksearch": "바깥 링크 검색", + "linksearch": "외부 링크 검색", "linksearch-pat": "검색 패턴:", "linksearch-ns": "이름공간:", "linksearch-ok": "검색", @@ -2647,11 +2660,11 @@ "import-nonewrevisions": "가져온 판 없음(모든 판이 이미 존재하거나 오류로 인해 건너뛰었을 수도 있습니다.)", "xml-error-string": "$3단 $2줄 (바이트 $4)에서 $1: $5", "import-upload": "XML 데이터 올리기", - "import-token-mismatch": "세션 데이터가 손실되었습니다.\n\n로그아웃되었는지도 모릅니다. 아직 로그인 상태인지 확인하고 다시 시도해주세요.\n다시 시도해도 되지 않으면 [[Special:UserLogout|로그아웃]]한 다음 다시 로그인하세요. 그리고 브라우저 설정에서 쿠키 사용을 허용하는지 확인하세요.", + "import-token-mismatch": "세션 데이터가 손실되었습니다.\n\n로그아웃되었을 수 있습니다. '''여전히 로그인 상태인지 확인하고 다시 시도해주세요'''.\n다시 시도해도 되지 않으면 [[Special:UserLogout|로그아웃]]한 다음 다시 로그인하세요. 그리고 브라우저가 이 사이트의 쿠키를 허용하는지 확인하세요.", "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 형식으로 일렬화되도록 판을 보고했습니다.", @@ -3551,6 +3564,13 @@ "compare-invalid-title": "입력한 제목이 잘못되었습니다.", "compare-title-not-exists": "입력한 문서가 존재하지 않습니다.", "compare-revision-not-exists": "지정한 판이 없습니다.", + "diff-form": "차이", + "diff-form-oldid": "오래된 판 ID (선택사항)", + "diff-form-revid": "차이에 대한 판 ID", + "diff-form-submit": "차이 보기", + "permanentlink": "고유 링크", + "permanentlink-revid": "판 ID", + "permanentlink-submit": "판으로 이동", "dberr-problems": "죄송합니다! 이 사이트에 기술적인 문제가 발생하고 있습니다.", "dberr-again": "잠시 기다리고 나서 다시 불러오세요.", "dberr-info": "(데이터베이스 서버에 연결할 수 없습니다: $1)", diff --git a/languages/i18n/lb.json b/languages/i18n/lb.json index bfc7674a13..ddf279df54 100644 --- a/languages/i18n/lb.json +++ b/languages/i18n/lb.json @@ -47,7 +47,7 @@ "tog-shownumberswatching": "D'Zuel vun de Benotzer déi dës Säit iwwerwaache weisen", "tog-oldsig": "Är Aktuell Ënnerschrëft:", "tog-fancysig": "Ënnerschrëft als Wiki-Text behandelen (Ouni automatesche Link)", - "tog-uselivepreview": "Live-Preview benotzen", + "tog-uselivepreview": "Live-Preview benotzen ouni d'Säit ze lueden", "tog-forceeditsummary": "Warnen, wa beim Späicheren de Resumé feelt", "tog-watchlisthideown": "Meng Ännerungen op menger Iwwerwaachungslëscht verstoppen", "tog-watchlisthidebots": "Ännerunge vu Botten op menger Iwwerwaachungslëscht verstoppen", @@ -694,8 +694,8 @@ "permissionserrorstext-withaction": "Dir sidd, aus {{PLURAL:$1|dësem Grond|dëse Grënn}}, net berechtegt $2 :", "contentmodelediterror": "Dir kënnt dës Versioun net ännere well hiren Inhaltsmodell $1 ass dee verschidde vum aktuellen Inhaltsmodell vun der Säit $2 ass.", "recreate-moveddeleted-warn": "'''Opgepasst: Dir sidd am Gaang eng Säit unzeleeën déi schonn eng Kéier geläscht gouf.'''\n\nFrot Iech ob et wierklech sënnvoll ass dës Säit nees nei ze schafen.\nFir Iech z'informéieren fannt Dir hei d'Logbuch vum Läsche mam Grond:", - "moveddeleted-notice": "Dës Säit gouf geläscht.\nHei ass den Extrait aus dem Logbuch vum Réckelen a Läsche fir déi Säit.", - "moveddeleted-notice-recent": "Leider gouf dëse Säit rezent (bannent de leschte 24 Stonnen) geläscht. D'Logbuch vum Läschen a Réckele vun dëser Säit fannt Dir fir Ar Informatioun hei drënner.", + "moveddeleted-notice": "Dës Säit gouf geläscht.\nDen Extrait aus dem Logbuch vum Réckelen a Läsche fir déi Säit fannt Dir hei drënner als Referenz.", + "moveddeleted-notice-recent": "Leider gouf dëse Säit rezent (bannent de leschte 24 Stonnen) geläscht. De Logg vum Läschen, Spären a Réckele vun dëser Säit fannt Dir fir Är Informatioun hei drënner.", "log-fulllog": "Dat ganzt Logbuch weisen", "edit-hook-aborted": "D'Ännerung gouf ouni Erklärung vun enger Schnëttstell (hook) ofgebrach.", "edit-gone-missing": "D'Säit konnt net aktualiséiert ginn.\nSi gouf anscheinend geläscht.", @@ -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:", @@ -950,7 +952,7 @@ "prefs-editwatchlist-clear": "Är Iwwerwaachungslëscht eidelmaachen", "prefs-watchlist-days": "Zuel vun den Deeg, déi an der Iwwerwaachungslëscht ugewise solle ginn:", "prefs-watchlist-days-max": "Maximal $1 {{PLURAL:$1|Dag|Deeg}}", - "prefs-watchlist-edits": "Maximal Zuel vun den Ännerungen déi an der erweiderter Iwwerwaachungslëscht ugewise solle ginn:", + "prefs-watchlist-edits": "Maximal Zuel vun den Ännerungen déi an der Iwwerwaachungslëscht ugewise ginn:", "prefs-watchlist-edits-max": "Maximal Zuel: 1000", "prefs-watchlist-token": "Iwwerwaachungslëscht-Token:", "prefs-misc": "Verschiddenes", @@ -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,15 +1253,18 @@ "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", - "rcfilters-limit-shownum": "Lescht $1 Ännerunge weisen", + "rcfilters-limit-shownum": "Lescht {{PLURAL:$1|Ännerung|$1 Ännerunge}} weisen", "rcfilters-days-title": "Rezent Deeg", "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,11 +1274,13 @@ "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", "rcfilters-restore-default-filters": "Standardfiltere restauréieren", "rcfilters-clear-all-filters": "All Filteren eidelmaachen", + "rcfilters-show-new-changes": "Rezentst Ännerunge weisen", "rcfilters-search-placeholder": "Rezent Ännerunge filteren (duerchsichen oder ufänke mat tippen)", "rcfilters-invalid-filter": "Net valabele Filter", "rcfilters-empty-filter": "Keen aktive Filter. All Kontributioune gi gewisen.", @@ -1299,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", @@ -1325,12 +1343,17 @@ "rcfilters-filter-lastrevision-label": "Lescht Versioun", "rcfilters-filter-lastrevision-description": "Nëmmen déi lescht Ännerung op enger Säit.", "rcfilters-filter-previousrevision-label": "Net déi lescht Versioun", - "rcfilters-filter-previousrevision-description": "All Ännerungen, déi net déi rezenst Ännerung vun enger Säit sinn.", + "rcfilters-filter-previousrevision-description": "All Ännerungen, déi net déi 'rezentst Versioun' vun enger Säit sinn.", "rcfilters-filter-excluded": "Ausgeschloss", "rcfilters-tag-prefix-namespace-inverted": ":net $1", + "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", "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", @@ -2477,7 +2500,7 @@ "import-nonewrevisions": "Et goufe keng Versiounen importéiert (se waren al entweder scho virdrun importéiert ginn oder se goufen iwwersprong well Feeler dra waren).", "xml-error-string": "$1 an der Zeil $2, Spalt $3, (Byte $4): $5", "import-upload": "XML-Daten importéieren", - "import-token-mismatch": "D'Date vun ärer Sessioun si verluer gaang.\n\nDir sidd eventuell ausgeloggt ginn. Kuckt w.e.g. no ob Dir nach ageloggt sidd a probéiert nach eng Kéier.\nWann et dann nach net geet, probéiert [[Special:UserLogout|Iech auszeloggen]] an duerno nees anzeloggen a kuckt no ob Äre Browser Cookië vun dësem Site akzeptéiert.", + "import-token-mismatch": "D'Date vun ärer Sessioun si verluer gaangen.\n\nDir sidd eventuell ausgeloggt ginn. '''Kuckt w.e.g. no ob Dir nach ageloggt sidd a probéiert nach eng Kéier'''.\nWann et dann nach net geet, probéiert [[Special:UserLogout|Iech auszeloggen]] an duerno nees anzeloggen a kuckt no ob Äre Browser Cookië vun dësem Site akzeptéiert.", "import-invalid-interwiki": "Aus der Wiki déi Dir uginn hutt kann näischt importéiert ginn.", "import-error-edit": "D'Säit \"$1\" gouf net importéiert well Dir se net änneren däerft.", "import-error-create": "D'Säit \"$1\" gouf net importéiert well Dir se net uleeën däerft.", @@ -3309,6 +3332,10 @@ "compare-invalid-title": "Den Titel deen Dir uginn hutt ass net valabel.", "compare-title-not-exists": "Den Titel deen Dir uginn hutt gëtt et net.", "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/li.json b/languages/i18n/li.json index 1d16e47e84..356154dc91 100644 --- a/languages/i18n/li.json +++ b/languages/i18n/li.json @@ -55,6 +55,7 @@ "tog-watchlisthideminor": "Klein bewirkinge op mien volglies verberge", "tog-watchlisthideliu": "Bewirkinge van aangemelde gebroekers op mien volglies versjtaeke", "tog-watchlistreloadautomatically": "Herlaaj de volglies autematis es 'n filter is verangerd (JavaScript vereis)", + "tog-watchlistunwatchlinks": "Veug direkte (neet) betrachte-links tou aan pagina's die op de wachlies staon (JavaScript vereis)", "tog-watchlisthideanons": "Bewirkinge van anonieme gebroekers op mien volglies versjtaeke", "tog-watchlisthidepatrolled": "Gemarkeerde wieziginge op mien volglies verberge", "tog-watchlisthidecategorization": "Verberg categorisatie van pagina's", @@ -700,8 +701,8 @@ "permissionserrorstext-withaction": "Geer höb gein rech óm $2 óm de volgende {{PLURAL:$1|raej|raej}}:", "contentmodelediterror": "Doe kans dees versie neet bewirke, went 't inhawdsmodel daovan is $1 en 't hujig inhawdsmodel van de pagina is $2.", "recreate-moveddeleted-warn": "'''Waarsjoewing: de bis bezig mit 't aanmake van 'n pagina die in 't verleje eweggesjaf is.'''\n\nBedink of 't terech is dets te wiejer wirks aan dees pagina. Veur dien gemaak sjteit hiejónger 't wislogbook en 't logbook verplaatste pagina's veur dees pagina:", - "moveddeleted-notice": "Dees pagina is eweggesjaf.\nTer infermasie weurt 't wislogbook en 't logbook verplaatsjde pagina's van dees pagina hiejónger weergegaeve.", - "moveddeleted-notice-recent": "Dees pagina is recèntelik eweggesjaf gewaore (in de aafgeloupe 24 oer).\n't Ewegsjaffings- en verplaatsinglogbook weurt te rifferensie hie-ónger getoeandj.", + "moveddeleted-notice": "Dees pagina is eweggesjaf.\nTer infermasie weurt 't wislogbook, 't beveiligingslogbook en 't logbook verplaatsjde pagina's van dees pagina hiejónger weergegaeve.", + "moveddeleted-notice-recent": "Dees pagina is recèntelik eweggesjaf gewaore (in de aafgeloupe 24 oer).\n't Ewegsjaffings-, beveiligings- en verplaatsinglogbook weurt te rifferensie hie-ónger getoeandj.", "log-fulllog": "Bekiek 't gans logbook", "edit-hook-aborted": "De bewèrking is aafgebroke door 'ne 'hook'.\nD'r is gein toelichting besjikbaar.", "edit-gone-missing": "De pagina is neet biegewirk.\nZe lik eweggesjaf te zien.", @@ -757,6 +758,7 @@ "undo-summary": "Versie $1 van [[Special:Contributions/$2|$2]] ([[User talk:$2|euverlèk]]) óngedaon gemaak.", "undo-summary-username-hidden": "Drej versie $1 door 'ne verborge gebroeker trögk", "cantcreateaccount-text": "'t Aanmake van gebroekers van dit IP-adres ('''$1''') is geblokkeerd door [[User:$3|$3]].\n\nDe door $3 opgegaeve reje is ''$2''", + "cantcreateaccount-range-text": "'t Aanmake van gebroekers vanaaf IP-adresse in de rits $1 is ónmeugelik doordet dit is ingestèld door [[User:$3|$3]]. Dien IP-adres $4 bevindj zich in deze rits.\n\nDe raeje veur de blokkaasj is $2", "viewpagelogs": "Logbeuk veur dees pagina tuine", "nohistory": "Dees pagina is nog neet bewirk.", "currentrev": "Hujige versie", @@ -803,19 +805,25 @@ "rev-showdeleted": "toean", "revisiondelete": "Verwijder/herstel bewerkinge", "revdelete-nooldid-title": "Geine doelverzie", - "revdelete-nooldid-text": "Doe höbs gein(e) doelverzie(s) veur deze hanjeling opgegaeve, d'n aangaeving besteit neet, of doe perbeers de letste versie te verberge.", + "revdelete-nooldid-text": "Doe höbs gein doelversie veur dees hanjeling opgegaeve, d'n aangaeving besteit neet, of doe perbeers de litste versie te verstaeke.", "revdelete-no-file": "'d Aangegaeve bestandj besteit neet.", "revdelete-show-file-confirm": "Wèt se zeker det se de gewösjdje versie ven 't bestandj \"$1\" ven $2 óm $3 wils bekieke?", "revdelete-show-file-submit": "Jao", + "revdelete-selected-text": "{{PLURAL:$1|Geselecteerde versie|Geselecteerde versies}} van [[:$2]]:", + "revdelete-selected-file": "{{PLURAL:$1|Geselecteerde bestandjsversie|Geselecteerde bestandjsversies}} van [[:$2]]:", "logdelete-selected": "{{PLURAL:$1|Geselecteerde log gebeurtenis|Geselecteerde log gebeurtenisse}}:", + "revdelete-text-text": "Eweggesjafde versies zeen nag zichbaar in de gesjiedenis, meh deile van d'n inhawd zeen neet aopenbaar.", + "revdelete-text-file": "Eweggesjafde versies zeen nag zichbaar in de bestandjsgesjiedenis, meh deile van d'n inhawd zeen neet aopenbaar.", + "logdelete-text": "Eweggesjafde logbookregele zeen nag zichbaar in de logbeuk, meh deile van d'n inhawd zeen neet aopenbaar.", + "revdelete-text-others": "Anger behieërders kónne de verstaoken inhawd nag ummer inzeen en weer zichbaar make, behauve es aanvöllende bepirkinge zeen ingestèld.", "revdelete-confirm": "Bevestig des se dit wils doon, des se de consequenties begrieps en des se dit deis in euvereinstömming mit 't geljendj [[{{MediaWiki:Policy-url}}|beleid]].", - "revdelete-suppress-text": "Versies verbèrge deentj '''allein''' gebroek te waere in de volgende gevalle:\n* Ongepaste perseunlike informatie\n*: ''woonadres, telefoonnummers, Burger Service Nummers, enzovoors.''", + "revdelete-suppress-text": "Versies verbèrge deentj '''allein''' gebroek te waere in de volgende gevalle:\n* Meugelik smadelike infermasie\n* Ongepaste perseunlike informatie\n*: woonadres, telefoonnummers, Burger Service Nummers, en zo wiejer.", "revdelete-legend": "Stel zichbaarheidsbeperkinge in", "revdelete-hide-text": "Versieteks", "revdelete-hide-image": "Verberg bestandjsinhoud", "revdelete-hide-name": "Verstaek hanjeling en doel", "revdelete-hide-comment": "Bewirkingssamevatting", - "revdelete-hide-user": "Verberg gebroekersnaam/IP van de gebroeker", + "revdelete-hide-user": "Gebroekersnaam/IP van de gebroeker", "revdelete-hide-restricted": "Pas deze beperkinge toe op zowaal beheerders es angere", "revdelete-radio-same": "(anger neet)", "revdelete-radio-set": "Verstaoke", @@ -838,7 +846,7 @@ "revdelete-no-change": "'''Waarsjoewing:''' t objek van $1 om $2 oer had al de aangegaeve zichbaarheidsinstellinge.", "revdelete-concurrent-change": "dr Is 'n fout opgetraoje bie 't wiezige van t objek van $1 om $2 oer: de status is inmiddels gewiezig door emes anges.\nControleer de logbeuk.", "revdelete-only-restricted": "dr Is n fout opgetraoje bie 't verberge van t item van $1, $2: de kins gein items ongerdrukken oet t zich van beheerders zonger ouch ein van de anger zichbaarheidsopties te selectere.", - "revdelete-reason-dropdown": "* Väöl veurkómmendje redes veyr verwiedere\n** Auteursrechtesjending\n** Onbetamelike perseunlike informatie\n** Potentieel lesterlike informatie", + "revdelete-reason-dropdown": "* Väöl veurkómmendje redes veur ewegsjaffe\n** Auteursrechtesjending\n** Ónbetamelike reactie of perseunlike informatie\n** Ónbetamelike gebroekersnaam\n** Potentieel lesterlike infermasie", "revdelete-otherreason": "Anger/biekómstig reeje:", "revdelete-reasonotherlist": "Anger reeje", "revdelete-edit-reasonlist": "Reeje veur verwiedering bewèrke", @@ -855,11 +863,16 @@ "mergehistory-go": "Samevoegbare bewerkinge toeane", "mergehistory-submit": "Versies samevoege", "mergehistory-empty": "Gein inkele versies kinne samegevoeg waere.", - "mergehistory-done": "$3 {{PLURAL:$3|versie|versies}} van $1 zeen succesvol samegevoeg nao [[:$2]].", + "mergehistory-done": "$3 {{PLURAL:$3|versie|versies}} van $1 {{PLURAL:$3|is|zeen}} succesvol samegevoeg nao [[:$2]].", "mergehistory-fail": "Kan gein gesjiedenis samevoege, lèvver opnuuj de pagina- en tiedparamaeters te controlere.", "mergehistory-fail-bad-timestamp": "Tiedstempel is óngeljig.", "mergehistory-fail-invalid-source": "Brónpagina is óngeljig.", "mergehistory-fail-invalid-dest": "Doelpagina is óngeljig.", + "mergehistory-fail-no-change": "'t Sameveuge van de gesjiedenis is mislök. Controleer de pagina- en tiedinstèllinge.", + "mergehistory-fail-permission": "Neet zat rechte veur de gesjiedenis same te veuge.", + "mergehistory-fail-self-merge": "De brón- en bestummingspagina zeen dezelfde.", + "mergehistory-fail-timestamps-overlap": "De brónversies euverlappe of kómme nao de versies van de bestummingspagina.", + "mergehistory-fail-toobig": "Neet in staot gesjiedenis same te veuge ómdet mieër es de limiet van $1 {{PLURAL:$1|versie weurt|versies weurt}} versjaove.", "mergehistory-no-source": "Bronpagina $1 besteit neet.", "mergehistory-no-destination": "Bestömmingspagina $1 besteit neet.", "mergehistory-invalid-source": "De bronpagina mot 'ne geldige titel zeen.", @@ -1164,6 +1177,11 @@ "grant-createaccount": "Maak gebroekers aan", "grant-createeditmovepage": "Maak, bewirk en verplaats pagina's", "grant-delete": "Wösj pagina's, bewirkinge en logbookregele", + "grant-editmycssjs": "Bewirk diene CSS/JavaScript", + "grant-editmyoptions": "Bewirk dien veurkäöre", + "grant-editmywatchlist": "Bewirk dien volglies", + "grant-editpage": "Bewirk bestäöndje pagina's", + "grant-editprotected": "Bewirk besjurmde pagina's", "grant-basic": "Basisrechte", "newuserlogpage": "Logbook nuuj gebroekers", "newuserlogpagetext": "Hiej ónger saton de nuuj ingesjreve gebroekers.", @@ -1222,6 +1240,7 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (zuuch ouch [[Special:NewPages|de nuuj pagina's]])", "recentchanges-submit": "Toean", "rcfilters-legend-heading": "Lies mit aafkórtinge:", + "rcfilters-grouping-title": "Groepeer", "rcfilters-activefilters": "Aktief filtjers", "rcfilters-advancedfilters": "Geavenceerdje filtjers", "rcfilters-limit-title": "Te toeane verangeringe", @@ -2862,6 +2881,7 @@ "compare-invalid-title": "De opgegaeve pazjenanaam is óngeljig.", "compare-title-not-exists": "Aangegaeve titel besteit neet.", "compare-revision-not-exists": "Aangegaeve versie besteit neet.", + "diff-form": "'n '''formulier'''", "dberr-problems": "Os excuses. Deze site ongervindj op t moment technische probleme.", "dberr-again": "Wach n aantal minute en probeer t daonao opnuuj.", "dberr-info": "(Kan gein verbinjing make mit de databaseserver: $1)", diff --git a/languages/i18n/lki.json b/languages/i18n/lki.json index 82e71fde18..581e409aee 100644 --- a/languages/i18n/lki.json +++ b/languages/i18n/lki.json @@ -9,7 +9,8 @@ "Huji", "Miladrahimi", "Ebraminio", - "Process cq" + "Process cq", + "Alirezaaa" ] }, "tog-underline": "خط کیشائن ژێر پیوندەل:", @@ -155,13 +156,7 @@ "anontalk": "گەپ(قسە)", "navigation": "ناوبری", "and": " و", - "qbfind": "آدئین(پێاکرن)", - "qbbrowse": "مِنِی -گۀشتن", - "qbedit": "دسکاری", - "qbpageoptions": "ئێ وەڵگە", - "qbmyoptions": "وەڵگەل ووِژم", "faq": "پرسش‌های متداول", - "faqpage": "Project:پرسش‌های متداول", "actions": "کارۀل", "namespaces": "فضای نامۀل", "variants": "قصۀ کِرۀل", @@ -188,32 +183,22 @@ "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-userrights": "گروهه‌ل {{GENDER:$1|کاربر}} تغییر بکه", "tool-link-userrights-readonly": "گروه {{GENDER:$1|کاربر}} نشون بده", "tool-link-emailuser": "ای-میل {{GENDER:$1|کاربر}}ئه", - "userpage": "وةڵگة کاربۀر بؤین", - "projectpage": "وةڵگة پروژۀ بوین", "imagepage": "وةڵگة پرونده بؤین", "mediawikipage": "نمایش وةڵگة پیغام", "templatepage": "نمایش وةڵگة الگو", @@ -311,7 +296,7 @@ "nospecialpagetext": "شما یک صفحهٔ ویژهٔ نامجاز را درخواست کرده‌اید.\n\nفهرستی از صفحه‌های ویژهٔ مجاز در [[Special:SpecialPages|{{int:specialpages}}]] وجود دارد.", "error": "خطا", "databaseerror": "خطای پایگاه داده", - "databaseerror-text": "مشکلی در پایگاه‌داده‌ها رخ داده است. \nاین ممکن است نشان‌دهندهٔ ایرادی در نرم‌افزار باشد.", + "databaseerror-text": "مشکلی در پایگاه‌های داده رخ داده است. \nاین ممکن است نشان‌دهندهٔ ایرادی در نرم‌افزار باشد.", "databaseerror-textcl": "یک خطای پرس‌وجوی پایگاه داده‌های رخ داده است.", "databaseerror-query": "پرس‌ و جو: $1", "databaseerror-function": "تابع: $1", @@ -1151,7 +1136,7 @@ "right-mergehistory": "ادغام تاریخچهٔ صفحات", "right-userrights": "ویرایش تمام اختیارات کاربرها", "right-userrights-interwiki": "ویرایش اختیارات کاربرهای ویکی‌های دیگر", - "right-siteadmin": "قفل‌کردن و بازکردن پایگاه داده‌ها", + "right-siteadmin": "قفل‌کردن و بازکردن پایگاه‌های داده", "right-override-export-depth": "برون‌بری صفحه‌ها شامل صفحه‌های پیوند شده تا عمق ۵", "right-sendemail": "ارسال ایمیل به دیگر کاربران", "right-managechangetags": "ایجاد و حذف [[Special:Tags|برچسب‌ها]] از پایگاه داده", @@ -1217,7 +1202,7 @@ "action-mergehistory": "ادغام تاریخچهٔ این صفحه", "action-userrights": "ادغام تاریخچهٔ این صفحه", "action-userrights-interwiki": "ویرایش اختیارات کاربری کاربران یک ویکی دیگر", - "action-siteadmin": "قفل‌کردن و بازکردن پایگاه داده‌ها", + "action-siteadmin": "قفل‌کردن و بازکردن پایگاه‌های داده", "action-sendemail": "ایمیل کِل کۀ", "action-editmywatchlist": "فهرست پیگیری‌های خود را ویرایش کنید", "action-viewmywatchlist": "فهرست پیگیری‌های خود را ببینید", @@ -1888,7 +1873,7 @@ "delete-legend": "حۀذف کردن/پاک کردن", "historywarning": "هشدار: صفحه‌ای که در حال پاک‌کردن آن هستید دارای یک تاریخچه همراه $1 {{PLURAL:$1|بازبینی|بازبینی}} است:", "historyaction-submit": "نیشان دائن", - "confirmdeletetext": "شما در حال حذف کردن یک صفحه یا تصویر از پایگاه داده‌ها همراه با تمام تاریخچهٔ آن هستید.\nلطفاً این عمل را تأیید کنید و اطمینان حاصل کنید که عواقب این کار را می‌دانید و این عمل را مطابق با [[{{MediaWiki:Policy-url}}|سیاست‌ها]] انجام می‌دهید.", + "confirmdeletetext": "شما در حال حذف کردن یک صفحه یا تصویر از پایگاه‌های داده همراه با تمام تاریخچهٔ آن هستید.\nلطفاً این عمل را تأیید کنید و اطمینان حاصل کنید که عواقب این کار را می‌دانید و این عمل را مطابق با [[{{MediaWiki:Policy-url}}|سیاست‌ها]] انجام می‌دهید.", "actioncomplete": "عملكرد كامل بيه", "actionfailed": "عمل ناموفق بود", "deletedtext": "«$1» حذف شد.\nبرای سابقهٔ حذف‌های اخیر به $2 مراجعه کنید.", @@ -3059,7 +3044,6 @@ "fileduplicatesearch-noresults": "پرونده‌ای با نام «$1» أ دی نؤی /پئا نؤی.", "specialpages": "وەڵگەل(پەڕەل)ویژە", "specialpages-note-top": "شرح علائم", - "specialpages-note": "* صفحه‌های ویژهٔ عادی.\n* صفحه‌های ویژهٔ محدودشده.", "specialpages-group-maintenance": "گزارش‌های نگهداری", "specialpages-group-other": "سایر وةڵگةل ویژه", "specialpages-group-login": " إ نؤم هةتن سیستم/ حساوو کاربةری سازین", diff --git a/languages/i18n/lt.json b/languages/i18n/lt.json index 0b5e4697f1..ed814012d3 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": "\n{{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 6e04c57ec0..febdab0ac3 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:", @@ -798,6 +799,7 @@ "search-interwiki-caption": "Rezultāti no citiem projektiem", "search-interwiki-default": "Rezultāti no $1:", "search-interwiki-more": "(vairāk)", + "search-interwiki-more-results": "vairāk rezultātu", "search-relatedarticle": "Saistītais", "searchrelated": "saistītais", "searchall": "viss", @@ -840,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):", @@ -907,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", @@ -1018,6 +1020,7 @@ "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", + "grant-group-private-information": "Piekļūt privātiem datiem par tevi", "grant-blockusers": "Bloķēt un atbloķēt dalībniekus", "grant-createaccount": "Izveidot kontu", "grant-createeditmovepage": "Izveidot, labot un pārvietot lapas", @@ -1030,6 +1033,9 @@ "grant-editprotected": "Labot aizsargātās lapas", "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", @@ -1057,6 +1063,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", @@ -1089,6 +1096,9 @@ "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", "rcfilters-activefilters": "Aktīvie filtri", @@ -1099,6 +1109,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", @@ -1115,7 +1126,6 @@ "rcfilters-restore-default-filters": "Atjaunot noklusētos filtrus", "rcfilters-clear-all-filters": "Noņemt visus filtrus", "rcfilters-show-new-changes": "Rādīt jaunās izmaiņas", - "rcfilters-previous-changes-label": "Iepriekš skatītās izmaiņas", "rcfilters-search-placeholder": "Filtrēt pēdējās izmaiņas (pārlūko vai sāc rakstīt)", "rcfilters-invalid-filter": "Nederīgs filtrs", "rcfilters-empty-filter": "Nav aktīvu filtru. Tiek rādītas visas izmaiņas.", @@ -1138,7 +1148,7 @@ "rcfilters-filter-user-experience-level-unregistered-label": "Nereģistrēti", "rcfilters-filter-user-experience-level-unregistered-description": "Nepieslēgušies redaktori.", "rcfilters-filter-user-experience-level-newcomer-label": "Jaunpienācēji", - "rcfilters-filter-user-experience-level-newcomer-description": "Mazāk nekā 10 labojumi un 4 aktīvas dienas.", + "rcfilters-filter-user-experience-level-newcomer-description": "Reģistrēti lietotāji ar mazāk nekā 10 labojumiem un 4 dienu aktivitāti.", "rcfilters-filter-user-experience-level-learner-label": "Mācekļi", "rcfilters-filter-user-experience-level-learner-description": "Vairāk pieredzes nekā \"Jaunpienācējiem\", bet mazāk nekā \"Pieredzējušiem dalībniekiem\".", "rcfilters-filter-user-experience-level-experienced-label": "Pieredzējuši dalībnieki", @@ -1158,6 +1168,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...", @@ -1174,6 +1186,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", @@ -1513,9 +1526,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", @@ -1559,7 +1573,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", @@ -1845,6 +1859,7 @@ "sp-contributions-search": "Meklēt lietotāju veiktās izmaiņas", "sp-contributions-username": "IP adrese vai dalībnieka vārds:", "sp-contributions-toponly": "Rādīt tikai labojumus, kas ir jaunākās versijas", + "sp-contributions-newonly": "Rādīt tikai labojumus, kas ir lapu veidošana", "sp-contributions-hideminor": "Paslēpt maznozīmīgos labojumus", "sp-contributions-submit": "Meklēt", "whatlinkshere": "Norādes uz šo rakstu", @@ -2597,6 +2612,7 @@ "watchlistedit-raw-added": "{{PLURAL:$1|$1 lapas tika pievienotas|$1 lapa tika pievienota|$1 lapas tika pievienotas}}:", "watchlistedit-raw-removed": "{{PLURAL:$1|$1 lapas tika noņemtas|1 lapa tika noņemta|$1 lapas tika noņemtas}}:", "watchlistedit-clear-titles": "Nosaukumi:", + "watchlisttools-clear": "Notīrīt uzraugāmo rakstu sarakstu", "watchlisttools-view": "Skatīt atbilstošās izmaiņas", "watchlisttools-edit": "Apskatīt un izmainīt uzraugāmo rakstu sarakstu", "watchlisttools-raw": "Izmainīt uzraugāmo rakstu saraksta kodu", @@ -2805,6 +2821,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 a0f331d422..c95f930e98 100644 --- a/languages/i18n/lzh.json +++ b/languages/i18n/lzh.json @@ -41,7 +41,7 @@ "tog-watchdefault": "哨己纂", "tog-watchmoves": "派哨於頁吾遷者", "tog-watchdeletion": "派哨於頁吾除者", - "tog-watchuploads": "增載文至監", + "tog-watchuploads": "所傳圖案,付之監視", "tog-watchrollback": "回過之頁,增至監", "tog-minordefault": "慣為校", "tog-previewontop": "頂草覽", @@ -126,7 +126,7 @@ "oct": "十月", "nov": "十一月", "dec": "十二月", - "january-date": "正月 $1", + "january-date": "一月$1日", "february-date": "二月$1日", "march-date": "三月$1日", "april-date": "四月$1日", @@ -138,7 +138,7 @@ "october-date": "十月$1日", "november-date": "十一月$1日", "december-date": "十二月$1日", - "period-am": "晨", + "period-am": "午前", "period-pm": "午後", "pagecategories": "$1類", "category_header": "「$1」中之頁", @@ -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": "卷首", @@ -271,7 +271,7 @@ "collapsible-collapse": "摺", "collapsible-expand": "展", "confirmable-confirm": "{{GENDER:$1|汝}}無悔?", - "confirmable-yes": "是", + "confirmable-yes": "然", "confirmable-no": "否", "thisisdeleted": "還$1或閱之?", "viewdeleted": "閱$1之?", @@ -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": "升排", @@ -374,9 +375,9 @@ "userlogin-noaccount": "尚無簿乎?", "userlogin-joinproject": "入{{SITENAME}}", "createaccount": "增簿", - "userlogin-resetpassword-link": "亡子符節?", + "userlogin-resetpassword-link": "忽忘符節?", "userlogin-helplink2": "協助", - "userlogin-createanother": "增另一簿", + "userlogin-createanother": "別加一簿", "createacct-emailrequired": "電郵", "createacct-emailoptional": "電郵(可選)", "createacct-email-ph": "書君郵址", @@ -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": "貢彩件、獻樂謠", @@ -2104,7 +2106,6 @@ "fileduplicatesearch-result-1": "案 \"$1\" 無重也。", "fileduplicatesearch-result-n": "案 \"$1\" 重有$2。", "specialpages": "特查", - "specialpages-note": "* 準特查。\n* 限特查。", "specialpages-group-maintenance": "護報", "specialpages-group-other": "他奇頁", "specialpages-group-login": "登/增", @@ -2117,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#入正表式。同留
", @@ -2152,6 +2153,7 @@ "compare-rev1": "審一", "compare-rev2": "審二", "compare-submit": "較", + "diff-form": "表", "htmlform-invalid-input": "爾之輸問也", "htmlform-select-badoption": "爾之值為非效之。", "htmlform-int-invalid": "爾之值為非整數也。", diff --git a/languages/i18n/mk.json b/languages/i18n/mk.json index ddb9443960..d49b715b66 100644 --- a/languages/i18n/mk.json +++ b/languages/i18n/mk.json @@ -58,6 +58,7 @@ "tog-watchlisthideminor": "Скриј ги ситните уредувања во набљудуваните", "tog-watchlisthideliu": "Скриј ги уредувањата на најавените корисници во набљудуваните", "tog-watchlistreloadautomatically": "Превчитувај ги набљудувањата автоматски кога ќе се смени филтерот (бара JavaScript)", + "tog-watchlistunwatchlinks": "Додај непосредни врски до набљудуваните (бара JavaScript)", "tog-watchlisthideanons": "Скриј ги уредувањата од анонимни корисници во набљудуваните", "tog-watchlisthidepatrolled": "Скриј испатролирани уредувања од мојот список на набљудувања", "tog-watchlisthidecategorization": "Сокриј ја категоризацијата на страниците", @@ -713,8 +714,8 @@ "permissionserrorstext-withaction": "Немате дозвола за $2, од {{PLURAL:$1|следнава причина|следниве причини}}:", "contentmodelediterror": "Не можете да ја измените оваа преработка бидејќи нејзиниот содржински модел е $1, што се разликува од тековниот содржински модел на страницата $2.", "recreate-moveddeleted-warn": "Внимание: Повторно создавате страница што претходно била бришена.'''\n\nРазмислете дали е правилно да продолжите со уредување на оваа страница.\nПодолу е прикажан дневникот на бришења и преместувања на оваа страница:", - "moveddeleted-notice": "Оваа страница била претходно бришена.\nДневникот на бришења и преместувања за оваа страница е прикажан подолу за ваше дополнително информирање.", - "moveddeleted-notice-recent": "За жал, страницава беше неодамна избришана (во последниве 24 часа).\nПодолу можете да го погледате дневникот на бришење и преместување.", + "moveddeleted-notice": "Оваа страница е избришана.\nДневникот на бришења и преместувања за оваа страница е прикажан подолу.", + "moveddeleted-notice-recent": "За жал, страницава беше неодамна избришана (во последниве 24 часа).\nПодолу можете да го погледате дневникот на бришења, заштити и преместувања.", "log-fulllog": "Преглед на целиот дневник", "edit-hook-aborted": "Уредувањето е прекинато со пресретник.\nНе е дадено никакво образложение.", "edit-gone-missing": "Не можев да ја подновам страницата.\nВеројатно е избришана.", @@ -982,7 +983,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": "Други нагодувања", @@ -1299,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": "Групен исход по страница", @@ -1311,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": "За да ги зачувате вашите филтерски псотавки за да ги употребите другпат, стиснете на иконката за бележник во подрачјето „Активен филтер“ подолу.", @@ -1327,8 +1330,7 @@ "rcfilters-savedqueries-add-new-title": "Зачувај тековни филтерски поставки", "rcfilters-restore-default-filters": "Поврати основни филтри", "rcfilters-clear-all-filters": "Тргни ги сите филтри", - "rcfilters-show-new-changes": "Прикажи нови промени", - "rcfilters-previous-changes-label": "Претходно прегледани промени", + "rcfilters-show-new-changes": "Погл. најнови промени", "rcfilters-search-placeholder": "Филтрирај скорешни промени (прелстајте или почнете да пишувате)", "rcfilters-invalid-filter": "Неважечки филтер", "rcfilters-empty-filter": "Нема активни филтри. Прикажани се сите придонеси.", @@ -1341,7 +1343,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": "Ваши сопствени придонеси.", @@ -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,7 @@ "rcfilters-liveupdates-button": "Поднови во живо", "rcfilters-liveupdates-button-title-on": "Исклучи поднови во живо", "rcfilters-liveupdates-button-title-off": "Прикажува нови промени во живо", + "rcfilters-watchlist-markSeen-button": "Означи ги сите промени како видени", "rcnotefrom": "Подолу {{PLURAL:$5|е прикажана промената|се прикажани промените}} почнувајќи од $3, $4 (се прикажуваат до $1).", "rclistfromreset": "Нов избор на датуми", "rclistfrom": "Прикажи нови промени почнувајќи од $3 $2", @@ -2615,7 +2623,7 @@ "import-nonewrevisions": "Не увезов ниедна преработка (сите се веќе присутни или изоставени поради грешки)", "xml-error-string": "$1 во ред $2, колона $3 (бајт $4): $5", "import-upload": "Подигни XML податоци", - "import-token-mismatch": "Загубени седничките податоци.\n\nМоже да сте биле одјавени. Проверете дали сè уште сте најавени и обидете се повторно.\nАко проблемот продолжи да се јавува, [[Special:UserLogout|одјавете се]] и повторно најавете се, и проверете дали прелистувачот дозволува колачиња од ова мрежно место.", + "import-token-mismatch": "Загубени седничките податоци.\n\nМоже да сте биле одјавени. '''Проверете дали сè уште сте најавени и обидете се повторно'''.\nАко проблемот продолжи да се јавува, [[Special:UserLogout|одјавете се]] и повторно најавете се, и проверете дали прелистувачот дозволува колачиња од ова мрежно место.", "import-invalid-interwiki": "Не можам да увезам од наведеното вики.", "import-error-edit": "Страницата „$1“ не е увезена бидејќи не ви е дозволено да ја уредувате.", "import-error-create": "Страницата „$1“ не е увезена бидејќи не ви е дозволено да ја создадете.", @@ -3645,6 +3653,13 @@ "compare-invalid-title": "Наведениот наслов е неважечки.", "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)", @@ -3865,6 +3880,7 @@ "mediastatistics-header-text": "Текстуални", "mediastatistics-header-executable": "Извршни", "mediastatistics-header-archive": "Збиени формати", + "mediastatistics-header-3d": "3Д", "mediastatistics-header-total": "Сите податотеки", "json-warn-trailing-comma": "{{PLURAL:$1|Отстранета е една завршна запирка|Отстранети се $1 завршни запирки}} од JSON", "json-error-unknown": "Се јави проблем со JSON. Грешка: $1.", diff --git a/languages/i18n/ml.json b/languages/i18n/ml.json index fd48e9aa80..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": "താളുകളുടെ വർഗ്ഗീകരണം മറയ്ക്കുക", @@ -192,6 +194,7 @@ "searcharticle": "പോകൂ", "history": "നാൾവഴി", "history_short": "നാൾവഴി", + "history_small": "നാൾവഴി", "updatedmarker": "കഴിഞ്ഞ സന്ദർശനത്തിനു ശേഷം മാറ്റം വന്നത്", "printableversion": "അച്ചടിരൂപം", "permalink": "സ്ഥിരംകണ്ണി", @@ -540,6 +543,7 @@ "passwordreset-emailelement": "ഉപയോക്തൃനാമം: \n$1\n\nതാത്കാലിക രഹസ്യവാക്ക്: \n$2", "passwordreset-emailsentemail": "താങ്കളുടെ അംഗത്വത്തിന് നൽകിയിട്ടുള്ള ഇമെയിൽ വിലാസം ഇതാണെങ്കിൽ, രഹസ്യവാക്ക് പുനർസജ്ജീകരണ ഇമെയിൽ അയക്കുന്നതാണ്.", "passwordreset-emailsentusername": "ഈ ഉപയോക്തൃനാമത്തിന് ഒരു ഇമെയിൽ വിലാസം ചേർത്തിട്ടുണ്ടെങ്കിൽ, രഹസ്യവാക്ക് പുനർസജ്ജീകരണ ഇമെയിൽ അയക്കുന്നതാണ്.", + "passwordreset-invalidemail": "അസാധുവായ ഇമെയിൽ വിലാസം", "changeemail": "ഇമെയിൽ വിലാസം മാറ്റുക അല്ലെങ്കിൽ നീക്കംചെയ്യുക", "changeemail-header": "താങ്കളുടെ ഇമെയിൽ വിലാസത്തിൽ മാറ്റംവരുത്താൻ ഈ ഫോം പൂരിപ്പിച്ചു നൽകുക.താങ്കളുടെ അംഗത്വവുമായി ഏതെങ്കിലുമൊരു ഇമെയിൽ വിലാസത്തിനുള്ള ബന്ധം ഒഴിവാക്കാൻ ഫോം പൂരിപ്പിക്കുമ്പോൾ പുതിയ ഇമെയിൽ വിലാസത്തിനുള്ള ഭാഗം ഒഴിച്ചിടുക.", "changeemail-no-info": "ഈ താൾ നേരിട്ടു കാണുന്നതിന് താങ്കൾ ലോഗിൻ ചെയ്തിരിക്കണം.", @@ -581,6 +585,8 @@ "watchthis": "ഈ താളിലെ മാറ്റങ്ങൾ ശ്രദ്ധിക്കുക", "savearticle": "താൾ സേവ് ചെയ്യുക", "savechanges": "മാറ്റങ്ങൾ സേവ് ചെയ്യുക", + "publishpage": "താൾ പ്രസിദ്ധീകരിക്കുക", + "publishchanges": "മാറ്റങ്ങൾ പ്രസിദ്ധീകരിക്കുക", "preview": "എങ്ങനെയുണ്ടെന്നു കാണുക", "showpreview": "എങ്ങനെയുണ്ടെന്നു കാണുക", "showdiff": "മാറ്റങ്ങൾ കാണിക്കുക", @@ -668,7 +674,7 @@ "permissionserrorstext": "താഴെ കൊടുത്തിരിക്കുന്ന {{PLURAL:$1|കാരണം|കാരണങ്ങൾ}} കൊണ്ട് താങ്കൾക്ക് ഈ പ്രവൃത്തി ചെയ്യാനുള്ള അനുമതിയില്ല:", "permissionserrorstext-withaction": "താങ്കൾക്ക് $2 എന്ന പ്രവൃത്തി ചെയ്യാൻ അനുമതി ഇല്ല, {{PLURAL:$1|കാരണം|കാരണങ്ങൾ}} താഴെ കൊടുത്തിരിക്കുന്നു:", "recreate-moveddeleted-warn": "'''മുന്നറിയിപ്പ്: മുമ്പ് മായ്ച്ചുകളഞ്ഞ താളാണ്‌ താങ്കൾ വീണ്ടും ചേർക്കാൻ ശ്രമിക്കുന്നത്'''\n\nതാങ്കൾ ചെയ്യുന്നത് ശരിയായ നടപടിയാണോ എന്നു പരിശോധിക്കുക. ഉറപ്പിനായി ഈ താളിന്റെ മായ്ക്കൽ രേഖയും മാറ്റൽ രേഖയും കൂടെ ചേർത്തിരിക്കുന്നു.", - "moveddeleted-notice": "ഈ താൾ മായ്ക്കപ്പെട്ടിരിക്കുന്നു.\nഈ താളിന്റെ മായ്ക്കൽ രേഖ പരിശോധനയ്ക്കായി താഴെ കൊടുത്തിരിക്കുന്നു", + "moveddeleted-notice": "ഈ താൾ മായ്ക്കപ്പെട്ടിരിക്കുന്നു.\nഈ താളിന്റെ മായ്ക്കൽ, സംരക്ഷണ, മാറ്റ രേഖ പരിശോധനയ്ക്കായി താഴെ കൊടുത്തിരിക്കുന്നു", "moveddeleted-notice-recent": "ക്ഷമിക്കുക, ഈ താൾ ഈയടുത്ത് (കഴിഞ്ഞ 24 മണിക്കൂറിനുള്ളിൽ) മായ്ക്കപ്പെട്ടു.\nഅവലംബമായി മായ്ക്കലിന്റെയും താൾ നീക്കിയതിന്റെയും രേഖ താഴെ കൊടുത്തിരിക്കുന്നു.", "log-fulllog": "എല്ലാ രേഖകളും കാണുക", "edit-hook-aborted": "തിരുത്തൽ കൊളുത്തിനാൽ റദ്ദാക്കിയിരിക്കുന്നു.\nവിശദീകരണമൊന്നും നൽകിയിട്ടില്ല.", @@ -1214,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": "യന്ത്രം", @@ -3072,7 +3079,6 @@ "fileduplicatesearch-noresults": "\"$1\" എന്ന പേരിൽ ഒരു പ്രമാണവും കണ്ടെത്താനായില്ല.", "specialpages": "പ്രത്യേക താളുകൾ", "specialpages-note-top": "സൂചന", - "specialpages-note": "* പൊതുവേ ഉപയോഗിക്കുന്ന പ്രത്യേക താളുകൾ.\n* ഉപയോഗം പരിമിതപ്പെടുത്തിയിരിക്കുന്ന പ്രത്യേക താളുകൾ.", "specialpages-group-maintenance": "പരിചരണം ആവശ്യമായവ", "specialpages-group-other": "മറ്റു പ്രത്യേക താളുകൾ", "specialpages-group-login": "പ്രവേശിക്കുക / അംഗത്വമെടുക്കുക", diff --git a/languages/i18n/mr.json b/languages/i18n/mr.json index 68f0ce259c..2b4ff6008b 100644 --- a/languages/i18n/mr.json +++ b/languages/i18n/mr.json @@ -714,8 +714,8 @@ "permissionserrorstext-withaction": "तुम्हाला $2 क्रियेची परवानगी नाही, खालील {{PLURAL:$1|कारणासाठी|कारणांसाठी}}:", "contentmodelediterror": "ही आवृत्ती आपण संपादू शकत नाही कारण त्याचा आशय-आराखडा (कंटेन्ट मॉडेल)$1 आहे व सध्याच्या $2 पानाचा आशय आराखडा वेगळा आहे.", "recreate-moveddeleted-warn": "'''सूचना: पूर्वी वगळलेला लेख तुम्ही पुन्हा बनवित आहात.'''\n\nआपण याचा विचार करा कि या पानाचे संपादन यापुढे करणे योग्य आहे काय.या पानाच्या वगळण्याच्या व स्थानांतराच्या नोंदी आपल्या (कामाच्या) सुलभतेसाठी दिलेल्या आहेत:", - "moveddeleted-notice": "हे पान वगळण्यात आलेले आहे.\nसंदर्भासाठी, वगळण्याची व स्थानांतराची नोंद खाली दिलेली आहे.", - "moveddeleted-notice-recent": "माफ करा,हे पान अलीकडेच (मागील २४ तासात) वगळल्या गेले आहे.हा पानाच्या वगळण्याचा व हलविण्याचा लॉग संदर्भासाठी खाली दिला आहे.", + "moveddeleted-notice": "हे पान वगळण्यात आलेले आहे.\nया पानाचे वगळण्याचे,व स्थानांतरणाचे लॉग संदर्भासाठी खाली दिले आहेत.", + "moveddeleted-notice-recent": "माफ करा,हे पान अलीकडेच (मागील २४ तासात) वगळल्या गेले आहे.\nया पानाचे वगळण्याचे,व स्थानांतरणाचे लॉग संदर्भासाठी खाली दिले आहेत.", "log-fulllog": "पूर्ण नोंदी पहा", "edit-hook-aborted": "हूकद्वारे संपादन रद्द.\nकारण दिलेले नाही.", "edit-gone-missing": "नविन पृष्ठ अद्यतन करता आले नाही. ते वगळले असण्याची शक्यता आहे.", @@ -968,7 +968,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": "किरकोळ", @@ -1268,17 +1268,16 @@ "rcfilters-invalid-filter": "अवैध गाळणी", "rcfilters-filterlist-title": "गाळण्या", "rcfilters-filterlist-noresults": "कोणतीच गाळणी सापडली नाही", - "rcfilters-filtergroup-registration": "सदस्य नोंदणी", - "rcfilters-filter-registered-label": "नोंदणीकृत", - "rcfilters-filter-registered-description": "प्रवेशलेले सदस्य", - "rcfilters-filter-unregistered-label": "अ-नोंदणीकृत", - "rcfilters-filter-unregistered-description": "संपादक जे प्रवेशित नाहीत.", "rcfilters-filtergroup-authorship": "संपादनाचा लेखक", "rcfilters-filter-editsbyself-label": "आपली स्वत:ची संपादने", "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": "अ-नोंदणीकृत", + "rcfilters-filter-user-experience-level-unregistered-description": "संपादक जे प्रवेशित नाहीत.", "rcfilters-filter-user-experience-level-newcomer-label": "नवागत", "rcfilters-filter-user-experience-level-newcomer-description": "१० संपादनांपेक्षा कमी व ४ दिवसांची सक्रियता.", "rcfilters-filter-user-experience-level-learner-label": "शिकाऊ", @@ -3088,7 +3087,6 @@ "fileduplicatesearch-noresults": "\"$1\" या नावाची संचिका सापडली नाही.", "specialpages": "विशेष पृष्ठे", "specialpages-note-top": "विवरण", - "specialpages-note": "* सर्वसाधारण विशेष पृष्ठे.\n* प्रतिबंधित विशेष पृष्ठे.", "specialpages-group-maintenance": "व्यवस्थापन अहवाल", "specialpages-group-other": "इतर विशेष पृष्ठे", "specialpages-group-login": "प्रवेश / नवीन सदस्य नोंदणी", diff --git a/languages/i18n/mwl.json b/languages/i18n/mwl.json index 472130a2b4..af1d803cf4 100644 --- a/languages/i18n/mwl.json +++ b/languages/i18n/mwl.json @@ -7,54 +7,66 @@ "Malafaya", "Romaine", "Urhixidur", - "아라" + "아라", + "MokaAkashiyaPT" ] }, "tog-underline": "Sublinhar lhigaçones:", "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", @@ -62,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", @@ -117,18 +143,12 @@ "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", - "qbfind": "Percurar", - "qbbrowse": "Nabegar", - "qbedit": "Eiditar", - "qbpageoptions": "Esta páigina", - "qbmyoptions": "Mies páiginas", "faq": "FAQ", - "faqpage": "Project:FAQ", "errorpagetitle": "Erro", "returnto": "Retornar pa $1.", "tagline": "De {{SITENAME}}", @@ -137,58 +157,50 @@ "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", "create": "Criar", - "editthispage": "Eiditar esta páigina", - "create-this-page": "Criar esta páigina", "delete": "Botar fuora", - "deletethispage": "Apagar esta páigina", "protect": "Porteger", "protect_change": "demudar", - "protectthispage": "Porteger esta páigina", - "unprotect": "Çporteger", - "unprotectthispage": "Çporteger esta páigina", - "newpage": "Nuoba páigina", - "talkpage": "Çcutir esta páigina", + "unprotect": "Altarar la proteçon", + "newpage": "Páigina nuoba", "talkpagelinktext": "Cumbersar", "specialpage": "Páigina special", "personaltools": "Ferramientas pessonales", - "articlepage": "Ber páigina de cuntenido", - "talk": "Çcusson", + "talk": "Cumbersa", "views": "Besitas", "toolbox": "Ferramientas", - "userpage": "Ber páigina de outelizador", "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", @@ -196,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", @@ -211,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 de l'{{GENDER:{{BASEPAGENAME}}|outelizador|outelizadora|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", @@ -247,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", @@ -262,36 +276,42 @@ "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", + "resetpass-submit-loggedin": "Demudar palabra-chabe", + "changeemail": "Altarar ó remober l'andereço de correio eiletrónico", + "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", @@ -299,46 +319,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", @@ -346,8 +370,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", @@ -356,85 +380,153 @@ "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", + "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", @@ -442,9 +534,10 @@ "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", @@ -459,20 +552,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", @@ -480,7 +573,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", @@ -493,20 +586,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", @@ -518,6 +611,7 @@ "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", "doubleredirects": "Ancaminamientos duplos", @@ -541,7 +635,7 @@ "wantedpages": "Páiginas pedidas", "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", @@ -549,20 +643,30 @@ "shortpages": "Páiginas pequeinhas", "longpages": "Páiginas cumpridas", "deadendpages": "Páiginas sin salida", - "protectedpages": "Páginas protegidas", + "protectedpages": "Páiginas protegidas", "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", - "specialloguserlabel": "Outelizador:", - "speciallogtitlelabel": "Títalo:", + "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 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 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 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(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)", @@ -572,32 +676,36 @@ "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-rights": "Dreitos", "listgrouprights-members": "(lista de nembros)", - "emailuser": "Ambiar carta eiletrónica a este outelizador", + "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.", @@ -609,7 +717,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:", @@ -617,12 +725,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.", @@ -636,24 +744,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", @@ -665,80 +773,85 @@ "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", + "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-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", @@ -746,27 +859,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", @@ -784,7 +902,7 @@ "exif-sharpness-1": "Suabe", "exif-sharpness-2": "Duro", "exif-subjectdistancerange-0": "Çcoincido", - "namespacesall": "todas", + "namespacesall": "todos", "monthsall": "todos", "confirm_purge_button": "Stá bien", "imgmultipageprev": "← páigina atrasada", @@ -799,24 +917,52 @@ "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", + "gotointerwiki": "Salindo de {{SITENAME}}" } diff --git a/languages/i18n/my.json b/languages/i18n/my.json index b164c2e1cd..8c67a7c786 100644 --- a/languages/i18n/my.json +++ b/languages/i18n/my.json @@ -536,7 +536,7 @@ "permissionserrorstext": "အောက်ပါ {{PLURAL:$1|အကြောင်းပြချက်|အကြောင်းပြချက်များ}}ကြောင့် ထိုအရာအတွက် ခွင့်ပြုချက်မရှိပါ -", "permissionserrorstext-withaction": "အောက်ပါ အကြောင်းပြချက် {{PLURAL:$1|ခု|ခု}} ကြောင့် $2 အတွက် ခွင့်ပြုချက်မရှိပါ -", "recreate-moveddeleted-warn": "'''သတိပေးချက်။ သင်သည် ယခင်က ဖျက်ထားသော စာမျက်နှာတစ်ခုကို ပြန်လည်ဖန်တီးနေသည်။'''\n\nသင့်အနေနှင့် ဤစာမျက်နှာကို ဆက်လက်တည်းဖြတ်ရန် သင့်တော်မည် မသင့်တော်မည်ကို စဉ်းစားသင့်သည်။\nဖျက်ထားခြင်း နှင့် ရွှေ့ထားခြင်းတို့၏ မှတ်တမ်းကို သင့်အတွက် အလွယ်တကူ ကိုးကားနိုင်ရန် ဖော်ပြထားသည်။", - "moveddeleted-notice": "ဤစာမျက်နှာကို ဖျက်ထားသည်။\nဖျက်ထားခြင်း ရွှေ့ဆိုင်းထားခြင်းတို့နှင့် ပတ်သက်သော မှတ်တမ်းကို ကိုးကားနိုင်ရန် အောက်တွင် ဖော်ပြထားသည်။", + "moveddeleted-notice": "ဤစာမျက်နှာကို ဖျက်ထားသည်။\nဖျက်ထားခြင်း၊ ကာကွယ်ထားခြင်းနှင့် ရွှေ့ပြောင်းထားခြင်းတို့နှင့် ပတ်သက်သော မှတ်တမ်းကို ကိုးကားနိုင်ရန် အောက်တွင် ဖော်ပြထားသည်။", "log-fulllog": "မှတ်တမ်းအပြည့်အစုံကြည့်ရန်", "edit-gone-missing": "စာမျက်နှာကို အပ်ဒိတ်မလုပ်နိုင်ပါ။\nအဖျက်ခံလိုက်ရပုံပေါ်သည်။", "edit-conflict": "အငြင်းပွားမှုကို တည်းဖြတ်ရန်။", @@ -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": "ပိုသစ်သော တည်းဖြတ်မှု", @@ -1720,7 +1722,7 @@ "fileduplicatesearch-filename": "ဖိုင်အမည် -", "fileduplicatesearch-submit": "ရှာဖွေရန်", "specialpages": "အထူး စာမျက်နှာများ", - "specialpages-note": "* ပုံမှန် အထူးစာမျက်နှာများ။\n* ကန့်သတ်ထားသော အထူးစာမျက်နှာများ။", + "specialpages-note-restricted": "* ပုံမှန် အထူးစာမျက်နှာများ။\n* ကန့်သတ်ထားသော အထူးစာမျက်နှာများ။", "specialpages-group-maintenance": "ထိန်းသိမ်းမှု အစီရင်ခံချက်များ", "specialpages-group-other": "အခြားအထူးစာမျက်နှာများ", "specialpages-group-login": "Log in ဝင်ရန်/ အကောင့် ဖန်တီးရန်", @@ -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 fb7486d16d..309a99208d 100644 --- a/languages/i18n/nb.json +++ b/languages/i18n/nb.json @@ -80,13 +80,14 @@ "tog-shownumberswatching": "Vis antall brukere som overvåker", "tog-oldsig": "Gjeldende signatur:", "tog-fancysig": "Behandle signaturen som wikitekst (uten automatisk lenke)", - "tog-uselivepreview": "Bruk levende forhåndsvisning", + "tog-uselivepreview": "Vis forhåndsvisninger uten å laste siden på nytt", "tog-forceeditsummary": "Advar meg når jeg ikke gir noen redigeringsforklaring", "tog-watchlisthideown": "Skjul mine endringer fra overvåkningslisten", "tog-watchlisthidebots": "Skjul robotendringer fra overvåkningslisten", "tog-watchlisthideminor": "Skjul mindre endringer fra overvåkningslisten", "tog-watchlisthideliu": "Skjul endringer av innloggede brukere fra overvåkningslisten", "tog-watchlistreloadautomatically": "Oppdater oversiktslisten automatisk når et filter er endret (JavaScript kreves)", + "tog-watchlistunwatchlinks": "Legg til lenker for å overvåke/fjerne overvåking direkte i overvåkningslisten (JavaScript kreves)", "tog-watchlisthideanons": "Skjul endringer av anonyme brukere fra overvåkningslisten", "tog-watchlisthidepatrolled": "Skjul patruljerte endringer fra overvåkningslisten", "tog-watchlisthidecategorization": "Skjul kategorisering av sider", @@ -249,7 +250,7 @@ "redirectedfrom": "(Omdirigert fra $1)", "redirectpagesub": "Omdirigeringsside", "redirectto": "Omdirigering til:", - "lastmodifiedat": "Denne siden ble sist endret $1 kl. $2.", + "lastmodifiedat": "Denne siden ble sist redigert $1 kl. $2.", "viewcount": "Denne siden er vist {{PLURAL:$1|én gang|$1 ganger}}.", "protectedpage": "Låst side", "jumpto": "Hopp til:", @@ -446,7 +447,7 @@ "userlogout": "Logg ut", "notloggedin": "Ikke logget inn", "userlogin-noaccount": "Ingen konto?", - "userlogin-joinproject": "Bli med i {{SITENAME}}", + "userlogin-joinproject": "Slutt deg til {{SITENAME}}", "createaccount": "Opprett konto", "userlogin-resetpassword-link": "Glemt passordet?", "userlogin-helplink2": "Hjelp med innlogging", @@ -737,8 +738,8 @@ "permissionserrorstext-withaction": "Du har ikke tillatelse til å $2 {{PLURAL:$1|fordi|av følgende grunner}}:", "contentmodelediterror": "Du kan ikke redigere denne revisjonen fordi innholdsmodellen er $1, som avviker fra den nåværende innholdsmodellen til siden $2.", "recreate-moveddeleted-warn": "Advarsel: Du er i ferd med å opprette en side som tidligere har blitt slettet.'''\n\nDu bør vurdere om det er passende å fortsette å redigere denne siden.\nSlette- og flytteloggen for denne siden gjengis her:", - "moveddeleted-notice": "Denne siden har blitt slettet.\nSlette- og flytteloggen vises nedenfor.", - "moveddeleted-notice-recent": "Beklager, denne siden er nylig blitt slettet (i løpet av de siste 24 timer)\nSlette- og flytteloggen for siden er angitt nedenfor for referanse.", + "moveddeleted-notice": "Denne siden har blitt slettet.\nSlette-, beskyttelses- og flytteloggen vises nedenfor.", + "moveddeleted-notice-recent": "Beklager, denne siden er nylig blitt slettet (i løpet av de siste 24 timer)\nSlette-, beskyttelses- og flytteloggen for siden er angitt nedenfor for referanse.", "log-fulllog": "Vis hele loggen", "edit-hook-aborted": "Redigering avbrutt av en funksjon, uten forklaring.", "edit-gone-missing": "Kunne ikke oppdatere siden fordi den har blitt slettet.", @@ -928,7 +929,7 @@ "lineno": "Linje $1:", "compareselectedversions": "Sammenlign valgte revisjoner", "showhideselectedversions": "Vis/skjul valgte versjoner", - "editundo": "fjern", + "editundo": "omgjør", "diff-empty": "(Ingen forskjell)", "diff-multi-sameuser": "({{PLURAL:$1|Én mellomliggende revisjon|$1 mellomliggende revisjoner}} av samme bruker vises ikke)", "diff-multi-otherusers": "({{PLURAL:$1|En mellomliggende revisjon|$1 mellomliggende revisjoner}} av {{PLURAL:$2|en annen bruker|$2 brukere}} er ikke vist)", @@ -956,7 +957,7 @@ "searchprofile-articles-tooltip": "Søk i $1", "searchprofile-images-tooltip": "Søk etter filer", "searchprofile-everything-tooltip": "Søk i alt innhold (inkldert diskusjonssider)", - "searchprofile-advanced-tooltip": "Søk i visse navnerom", + "searchprofile-advanced-tooltip": "Søk i innførte navnerom", "search-result-size": "$1 ({{PLURAL:$2|ett ord|$2 ord}})", "search-result-category-size": "{{PLURAL:$1|1 medlem|$1 medlemmer}} ({{PLURAL:$2|1 underkategori|$2 underkategorier}}, {{PLURAL:$3|1 fil|$3 filer}})", "search-redirect": "(omdirigering $1)", @@ -1006,7 +1007,7 @@ "prefs-editwatchlist-clear": "Slett overvåkningslista di", "prefs-watchlist-days": "Dager som skal vises i overvåkningslisten:", "prefs-watchlist-days-max": "Maksimalt $1 {{PLURAL:$1|dag|dager}}", - "prefs-watchlist-edits": "Antall redigeringer som skal vises i utvidet overvåkningsliste:", + "prefs-watchlist-edits": "Maksimalt antall redigeringer som skal vises i overvåkningslisten:", "prefs-watchlist-edits-max": "Maksimalt antall: 1000", "prefs-watchlist-token": "Nøkkel for overvåkningsliste", "prefs-misc": "Diverse", @@ -1318,13 +1319,13 @@ "recentchanges-label-minor": "Dette er en mindre endring", "recentchanges-label-bot": "Denne redigeringen ble gjort av en bot", "recentchanges-label-unpatrolled": "Denne redigeringen har ikke blitt patruljert ennå", - "recentchanges-label-plusminus": "Sidestørrelsen ble endret med dette antallet byte", + "recentchanges-label-plusminus": "Sidestørrelsen ble endret med dette antallet bytes", "recentchanges-legend-heading": "Tegnforklaring:", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (se også [[Special:NewPages|liste over nye sider]])", "recentchanges-legend-plusminus": "«(±123)»", "recentchanges-submit": "Vis", "rcfilters-legend-heading": "Liste over forkortelser:", - "rcfilters-other-review-tools": "Andre gjennomgangsverktøy:", + "rcfilters-other-review-tools": "Andre gjennomgangsverktøy", "rcfilters-group-results-by-page": "Grupper resultater etter side", "rcfilters-grouping-title": "Gruppering", "rcfilters-activefilters": "Aktive filtre", @@ -1352,7 +1353,6 @@ "rcfilters-restore-default-filters": "Gjenopprett standardfiltre", "rcfilters-clear-all-filters": "Nullstill alle filtre", "rcfilters-show-new-changes": "Vis de nyeste endringene", - "rcfilters-previous-changes-label": "Endringer som har blitt vist tidligere", "rcfilters-search-placeholder": "Filtrer siste endringer (søk eller begyn å skrive)", "rcfilters-invalid-filter": "Ugyldig filter", "rcfilters-empty-filter": "Ingen aktive filtre. Alle bidrag vises.", @@ -1365,7 +1365,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 +1404,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 ...", @@ -1431,13 +1436,16 @@ "rcfilters-view-tags-tooltip": "Filtrer resultater med redigeringstagger", "rcfilters-view-return-to-default-tooltip": "Tilbake til hovedmenyen for filtre", "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", "rcshowhideminor": "$1 mindre endringer", "rcshowhideminor-show": "Vis", "rcshowhideminor-hide": "Skjul", - "rcshowhidebots": "$1 roboter", + "rcshowhidebots": "$1 boter", "rcshowhidebots-show": "Vis", "rcshowhidebots-hide": "Skjul", "rcshowhideliu": "$1 registrerte brukere", @@ -1449,13 +1457,13 @@ "rcshowhidepatr": "$1 patruljerte endringer", "rcshowhidepatr-show": "Vis", "rcshowhidepatr-hide": "Skjul", - "rcshowhidemine": "$1 mine endringer", + "rcshowhidemine": "$1 egne endringer", "rcshowhidemine-show": "Vis", "rcshowhidemine-hide": "Skjul", "rcshowhidecategorization": "$1 kategorisering av sider", "rcshowhidecategorization-show": "Vis", "rcshowhidecategorization-hide": "Skjul", - "rclinks": "Vis siste $1 endringer i de siste $2 dagene", + "rclinks": "Vis siste $1 endringer de siste $2 dagene", "diff": "diff", "hist": "hist", "hide": "Skjul", @@ -1475,7 +1483,7 @@ "recentchangeslinked-feed": "Relaterte endringer", "recentchangeslinked-toolbox": "Relaterte endringer", "recentchangeslinked-title": "Endringer relatert til «$1»", - "recentchangeslinked-summary": "Dette er en liste over de siste endringene på sidene lenket fra en spesifisert side (eller til meldlemmer av en spesifisert kategori).\nSider på [[Special:Watchlist|overvåkningslisten din]] er i '''fet skrift'''.", + "recentchangeslinked-summary": "Dette er en liste over de siste endringene på sidene som eer lenket fra en angitt side (eller til medlemmer av en angitt kategori).\nSider på [[Special:Watchlist|overvåkningslisten din]] er i '''fet skrift'''.", "recentchangeslinked-page": "Sidenavn:", "recentchangeslinked-to": "Vis endringer på sider som lenker til den gitte siden istedet", "recentchanges-page-added-to-category": "[[:$1]] ble lagt til i kategorien", @@ -1719,7 +1727,7 @@ "filehist-deleteone": "slett", "filehist-revert": "tilbakestill", "filehist-current": "nåværende", - "filehist-datetime": "Dato/tid", + "filehist-datetime": "Dato/klokkeslett", "filehist-thumb": "Miniatyrbilde", "filehist-thumbtext": "Miniatyrbilde av versjonen fra $1", "filehist-nothumb": "Intet miniatyrbilde", @@ -1830,7 +1838,7 @@ "withoutinterwiki-legend": "Prefiks", "withoutinterwiki-submit": "Vis", "fewestrevisions": "Artikler med færrest revisjoner", - "nbytes": "$1 {{PLURAL:$1|byte}}", + "nbytes": "$1 {{PLURAL:$1|byte|bytes}}", "ncategories": "$1 {{PLURAL:$1|kategori|kategorier}}", "ninterwikis": "$1 {{PLURAL:$1|interwiki|interwikier}}", "nlinks": "$1 {{PLURAL:$1|lenke|lenker}}", @@ -2311,10 +2319,10 @@ "undelete-show-file-submit": "Ja", "namespace": "Navnerom:", "invert": "Inverter valg", - "tooltip-invert": "Kryss av denne boksen for å skjule endringer på sider i det valgte navnerommet (og tilhørende navnerom hvis de er avkrysset også)", + "tooltip-invert": "Kryss av denne boksen for å skjule endringer på sider i det valgte navnerommet (og tilhørende navnerom hvis de også er avkrysset)", "tooltip-whatlinkshere-invert": "Merk av denne boksen for å skjule lenker fra sider i valgte navnerom.", "namespace_association": "Tilknyttet navnerom", - "tooltip-namespace_association": "Kryss av denne boksen for å også inkludere diskusjons- eller emnenavnerommet som er tilknyttet det valgte navnerommet", + "tooltip-namespace_association": "Kryss av denne boksen for å inkludere også diskusjons- eller emnenavnerommet som er tilknyttet det valgte navnerommet", "blanknamespace": "(Hoved)", "contributions": "{{GENDER:$1|Brukerbidrag}}", "contributions-title": "Brukerbidrag av $1", @@ -2344,7 +2352,7 @@ "sp-contributions-newonly": "Bare vis bidrag som er sideopprettinger", "sp-contributions-hideminor": "Skjul mindre endringer", "sp-contributions-submit": "Søk", - "whatlinkshere": "Hva lenker hit", + "whatlinkshere": "Det som lenker hit", "whatlinkshere-title": "Sider som lenker til «$1»", "whatlinkshere-page": "Side:", "linkshere": "Følgende sider lenker til '''[[:$1]]''':", @@ -2632,7 +2640,7 @@ "import-nonewrevisions": "Ingen revisjoner ble importert: De var enten allerede på plass, eller hoppet over pga. feil.", "xml-error-string": "$1 på linje $2, kolonne $3 (byte: $4): $5", "import-upload": "Last opp XML-data", - "import-token-mismatch": "Sesjonsdata mistet.\n\nDu kan ha blitt logget ut. Sjekk at du fortsatt er logget inn og prøv igjen.\nOm det fortsatt ikke fungerer, prøv å [[Special:UserLogout|logge ut]] og logge inn igjen, og sjekk om netteleseren din tillater informasjonskapsler fra denne siden.", + "import-token-mismatch": "Sesjonsdata mistet.\n\nDu kan ha blitt logget ut. '''Sjekk at du fortsatt er logget inn og prøv igjen.'''\nOm det fortsatt ikke fungerer, prøv å [[Special:UserLogout|logge ut]] og logge inn igjen, og sjekk om netteleseren din tillater informasjonskapsler fra denne siden.", "import-invalid-interwiki": "Kan ikke importere fra angitt wiki.", "import-error-edit": "Siden «$1» ble ikke importert fordi du ikke har tillatelse til å redigere den.", "import-error-create": "Siden «$1» ble ikke importert fordi du ikke har tillatelse til å opprette den.", @@ -2659,10 +2667,10 @@ "tooltip-pt-watchlist": "Liste over sider du overvåker for endringer.", "tooltip-pt-mycontris": "En liste over {{GENDER:|dine}} bidrag", "tooltip-pt-anoncontribs": "En liste over redigeringer gjort fra denne IP-adressen", - "tooltip-pt-login": "Du oppfordres til å logge inn, men det er ikke obligatorisk", + "tooltip-pt-login": "Du oppfordres til å logge inn, men det er ikke påkrevet", "tooltip-pt-login-private": "Du må logge inn for å bruke denne wikien", "tooltip-pt-logout": "Logg ut", - "tooltip-pt-createaccount": "Du oppfordres til å opprette en konto og logge inn, men det er ikke obligatorisk.", + "tooltip-pt-createaccount": "Du oppfordres til å opprette en konto og logge inn, men det er ikke påkrevet.", "tooltip-ca-talk": "Diskusjon om innholdssiden", "tooltip-ca-edit": "Rediger denne siden", "tooltip-ca-addsection": "Start et nytt avsnitt", @@ -2680,7 +2688,7 @@ "tooltip-search-fulltext": "Søk etter sider som innholder denne teksten", "tooltip-p-logo": "Gå til hovedsiden", "tooltip-n-mainpage": "Gå til hovedsiden", - "tooltip-n-mainpage-description": "Besøk hovedsiden", + "tooltip-n-mainpage-description": "Gå til hovedsiden", "tooltip-n-portal": "Om prosjektet, hva du kan gjøre, hvor du kan finne ting", "tooltip-n-currentevents": "Finn bakgrunnsinformasjon om aktuelle hendelser", "tooltip-n-recentchanges": "Liste over siste endringer på wikien.", @@ -2893,7 +2901,7 @@ "yesterday-at": "I går kl. $1", "bad_image_list": "Formatet er som følger:\n\nKun listeelementer (linjer som starter med *) tas med.\nDen første lenken på en linje må være en lenke til en dårlig fil.\nAlle andre lenker på samme linje anses for å være unntak, altså sider der filen kan opptre.", "metadata": "Metadata", - "metadata-help": "Denne filen inneholder tilleggsinformasjon, antagligvis lagt til av digitalkameraet eller skanneren brukt til å lage eller digitalisere det.\nHvis filen har blitt forandret fra utgangspunktet, kan enkelte detaljer være unøyaktige.", + "metadata-help": "Denne filen inneholder tilleggsinformasjon, sannsynligvis lagt til av digitalkameraet eller skanneren som ble brukt til å lage eller digitalisere det.\nHvis filen har blitt forandret fra utgangspunktet, kan enkelte detaljer være unøyaktige.", "metadata-expand": "Vis utvidede detaljer", "metadata-collapse": "Skjul utvidede detaljer", "metadata-fields": "Bildemetadatafelt listet i denne meldingen inkluderes på bildesiden når metadatatabellen har kollapset.\nAndre vil skjules som standard.\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", @@ -3561,6 +3569,13 @@ "compare-invalid-title": "Tittelen du oppga er ugyldig.", "compare-title-not-exists": "Tittelen du oppga eksisterer ikke.", "compare-revision-not-exists": "Versjonen du oppga eksisterer ikke.", + "diff-form": "Forskjeller", + "diff-form-oldid": "Gammel revisjons-ID (valgfritt)", + "diff-form-revid": "Revisjons-ID for diffen", + "diff-form-submit": "Vis forskjeller", + "permanentlink": "Permanent lenke", + "permanentlink-revid": "Revisjons-ID", + "permanentlink-submit": "Gå til revisjon", "dberr-problems": "Siden har tekniske problemer.", "dberr-again": "Prøv å oppdatere siden om noen minutter.", "dberr-info": "(Kan ikke kontakte databasetjeneren: $1)", diff --git a/languages/i18n/ne.json b/languages/i18n/ne.json index 691eefa140..b32396119c 100644 --- a/languages/i18n/ne.json +++ b/languages/i18n/ne.json @@ -24,7 +24,8 @@ "जनक राज भट्ट", "Suniltheblue", "Irus", - "रमेश सिंह बोहरा" + "रमेश सिंह बोहरा", + "Nirajan pant" ] }, "tog-underline": "रेखाङ्कित लिङ्क:", @@ -675,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यो मेटिएको जस्तो देखिन्छ ।", @@ -740,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": "नयाँ", @@ -927,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": "साधारण", @@ -1196,6 +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 सामान्य सम्पादन", @@ -1218,7 +1223,7 @@ "rcshowhidemine-hide": "लुकाउनुहोस्", "rcshowhidecategorization-show": "देखाउनुहोस्", "rcshowhidecategorization-hide": "लुकाउनुहोस्", - "rclinks": "पछिल्ला $1 परिवर्तनहरू पछिल्ला $2 दिनहरूमा", + "rclinks": "पछिल्ला $2 दिनहरूमा भएका पछिल्ला $1 परिवर्तनहरू देखाउनुहोस्", "diff": "भिन्न", "hist": "इतिहास", "hide": "लुकाउनुहोस्", @@ -1652,7 +1657,7 @@ "booksources-text": "तल दिइएको सूची नयाँ तथा पूराना किताब बेच्ने लगायत तपाईंले खोज्नु भएको किताबका बारेमा थप जानकारी भएका अन्य साइटका लिंकहरू हुन् ।", "booksources-invalid-isbn": "यो आइएसबीएन सहि छैन; मूल स्रोतबाट नक्कल गर्दा भएको त्रुटिको जाँच गर्नुहोस।", "specialloguserlabel": "निष्पादक:", - "speciallogtitlelabel": "लक्ष्य (शीर्षक वा प्रयोगकर्ता)", + "speciallogtitlelabel": "लक्ष्य (शीर्षक वा {{ns:user}}:प्रयोगकर्ताका लागि प्रयोगकर्ता नाम)", "log": "लगहरू", "logeventslist-submit": "देखाउनुहोस्", "all-logs-page": "सबै सार्वजनिक लगहरू", @@ -2262,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\" आयात गरिएन ।", @@ -2319,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": "सबै विशेष पृष्ठहरूको सूची", @@ -3075,7 +3080,6 @@ "fileduplicatesearch-noresults": "\"$1\" नामको फाइल पाइएन।", "specialpages": "विशेष पृष्ठ", "specialpages-note-top": "आदर्श वाक्य", - "specialpages-note": "* साधारण विशेष पृष्ठहरू।\n* निषेधित विशेष पृष्ठहरू।", "specialpages-group-maintenance": "मर्मत प्रतिवेदनहरू", "specialpages-group-other": "अरू विशेष पृष्ठहरू", "specialpages-group-login": "प्रवेश गर्ने / नयाँ खाता बनाउने", @@ -3188,6 +3192,7 @@ "compare-invalid-title": "तपाईंले खुलाउनु भएको शिर्षक अमान्य छ।", "compare-title-not-exists": "तपाईंले खुलाउनु भएको शिर्षक उपलब्ध छैन ।", "compare-revision-not-exists": "तपाईंले खुलाउनु भएको संस्करण उपलब्ध छैन ।", + "diff-form": "भिन्नताहरू", "dberr-problems": "क्षमा पाउँ! यो साइटमा तकनीकी गड़बड़ी आइपरेकोछ।", "dberr-again": "केही समय पर्खिएर पुन: लोड हुन दिनुहोस् ।", "dberr-info": "(डेटाबेस सर्भर: $1 सँग सम्पर्क स्थापित गर्न सकिएन)", @@ -3212,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|परिवर्तन गर्यो}}", @@ -3405,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 92a91f499c..fe275ccd1c 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:", @@ -772,8 +773,8 @@ "permissionserrorstext-withaction": "U hebt geen rechten om $2, {{PLURAL:$1|want}}:", "contentmodelediterror": "U kunt deze versie niet bewerken, want het contentmodel ervan is $1 en het huidige contentmodel van de pagina is $2.", "recreate-moveddeleted-warn": "'''Waarschuwing: u bent bezig met het aanmaken van een pagina die in het verleden verwijderd is.'''\n\nOverweeg of het terecht is dat u verder werkt aan deze pagina.\nVoor uw gemak staan hieronder het verwijderingslogboek en het hernoemingslogboek voor deze pagina:", - "moveddeleted-notice": "Deze pagina is verwijderd.\nTer informatie wordt het verwijderingslogboek en het hernoemingslogboek van deze pagina hieronder weergegeven.", - "moveddeleted-notice-recent": "Deze pagina is helaas recentelijk verwijderd (in de afgelopen 24 uur).\nDe verwijdering- en hernoemingslogboek worden voor uw gemak hieronder weergegeven.", + "moveddeleted-notice": "Deze pagina is verwijderd.\nTer informatie wordt het verwijderingslogboek, het beveiligingslogboek en het hernoemingslogboek van deze pagina hieronder weergegeven.", + "moveddeleted-notice-recent": "Deze pagina is recentelijk verwijderd (in de afgelopen 24 uur).\nHet verwijderingslogboek, het beveiligingslogboek en het hernoemingslogboek worden voor het gemak hieronder weergegeven.", "log-fulllog": "Het volledige logboek bekijken", "edit-hook-aborted": "De bewerking is afgebroken door een hook.\nEr is geen toelichting beschikbaar.", "edit-gone-missing": "De pagina is niet bijgewerkt.\nDeze lijkt verwijderd te zijn.", @@ -1041,7 +1042,7 @@ "prefs-editwatchlist-clear": "Volglijst wissen", "prefs-watchlist-days": "Dagen weer te geven in de volglijst:", "prefs-watchlist-days-max": "Maximaal $1 {{PLURAL:$1|dag|dagen}}", - "prefs-watchlist-edits": "Maximaal aantal bewerkingen in de uitgebreide volglijst:", + "prefs-watchlist-edits": "Maximaal aantal bewerkingen in de volglijst:", "prefs-watchlist-edits-max": "Maximale aantal: 1000", "prefs-watchlist-token": "Volglijstsleutel:", "prefs-misc": "Diversen", @@ -1357,8 +1358,9 @@ "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 controle hulmiddelen", + "rcfilters-other-review-tools": "Andere controlehulpmiddelen", "rcfilters-group-results-by-page": "Resultaten per pagina groeperen", "rcfilters-grouping-title": "Groeperen", "rcfilters-activefilters": "Actieve filters", @@ -1385,8 +1387,7 @@ "rcfilters-savedqueries-add-new-title": "Huidige filter instellingen opslaan", "rcfilters-restore-default-filters": "Standaard filters terugzetten", "rcfilters-clear-all-filters": "Alle filters verwijderen", - "rcfilters-show-new-changes": "Toon nieuwe wijzigingen", - "rcfilters-previous-changes-label": "Eerder bekeken wijzigingen", + "rcfilters-show-new-changes": "Toon nieuwste wijzigingen", "rcfilters-search-placeholder": "Filter recente wijzigingen (blader of begin met intypen)", "rcfilters-invalid-filter": "Ongeldig filter", "rcfilters-empty-filter": "Geen actieve filters. Alle bijdragen worden weergeven.", @@ -1399,7 +1400,7 @@ "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.", @@ -1438,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…", @@ -1467,6 +1473,7 @@ "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.", "rcnotefrom": "Wijzigingen sinds $3 om $4 (maximaal $1 {{PLURAL:$1|wijziging|wijzigingen}}).", "rclistfromreset": "Datum selectie opnieuw instellen", "rclistfrom": "Wijzigingen bekijken vanaf $3 $2", @@ -2669,7 +2676,7 @@ "import-nonewrevisions": "Geen versies geïmporteerd (alle waren al aanwezig, of overgeslagen vanwege fouten).", "xml-error-string": "$1 op regel $2, kolom $3 (byte $4): $5", "import-upload": "XML-gegevens uploaden", - "import-token-mismatch": "De sessiegegevens zijn verloren gegaan.\n\nMogelijk bent u afgemeld. Controleer of u nog steeds bent aangemeld en probeert het opnieuw.\nAls het dan nog steeds niet werkt, [[Special:UserLogout|meld u dan af]] en meld u daarna opnieuw aan en controleer of uw browser cookies van deze website accepteert.", + "import-token-mismatch": "De sessiegegevens zijn verloren gegaan.\n\nMogelijk bent u afgemeld. '''Controleer of u nog steeds bent aangemeld en probeert het opnieuw.'''\nAls het dan nog steeds niet werkt, [[Special:UserLogout|meld u dan af]] en meld u daarna opnieuw aan en controleer of uw browser cookies van deze website accepteert.", "import-invalid-interwiki": "Het is niet mogelijk van de opgegeven wiki te importeren.", "import-error-edit": "De pagina \"$1\" is niet geïmporteerd omdat u niet de rechten hebt om die te bewerken.", "import-error-create": "De pagina \"$1\" is niet geïmporteerd omdat u niet de rechten hebt om die aan te maken.", @@ -3574,6 +3581,13 @@ "compare-invalid-title": "De opgegeven pagina is ongeldig.", "compare-title-not-exists": "De titel die u hebt opgegeven bestaat niet.", "compare-revision-not-exists": "De versie die u hebt opgegeven bestaat niet.", + "diff-form": "Wijzigingen", + "diff-form-oldid": "Oude versienummer (optioneel)", + "diff-form-revid": "Versienummer van de wijziging", + "diff-form-submit": "Verschillen weergeven", + "permanentlink": "Permanente koppeling", + "permanentlink-revid": "Versienummer", + "permanentlink-submit": "Naar versie gaan", "dberr-problems": "Onze excuses. Deze site ondervindt op het moment technische problemen.", "dberr-again": "Wacht een aantal minuten en probeer het daarna opnieuw.", "dberr-info": "(Kan geen toegang krijgen tot de database: $1)", @@ -3982,6 +3996,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 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 767006137e..5f24aeeb36 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", @@ -1174,6 +1179,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", @@ -1195,6 +1201,7 @@ "rcfilters-filter-previousrevision-description": "Alle endringar som ikkje er den siste versjonen.", "rcfilters-filter-excluded": "Utelate", "rcfilters-exclude-button-off": "Utelat dei valde", + "rcfilters-view-advanced-filters-label": "Avanserte filter", "rcfilters-view-tags": "Endringar med merke", "rcfilters-view-namespaces-tooltip": "Filtrer resultat etter namnerom", "rcfilters-view-tags-tooltip": "Filtrer resultat etter endringsmerke", @@ -1655,6 +1662,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", @@ -2995,6 +3004,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", @@ -3006,6 +3016,7 @@ "compare-invalid-title": "Tittelen du oppgav er ugild.", "compare-title-not-exists": "Tittelen du oppgav finst ikkje.", "compare-revision-not-exists": "Versjonen du oppgav finst ikkje.", + "diff-form": "eit '''skjema'''", "dberr-problems": "Nettstaden har tekniske problem.", "dberr-again": "Venta nokre minutt og last sida inn på nytt.", "dberr-info": "(Kan ikkje kontakta databasetenaren: $1)", @@ -3048,6 +3059,7 @@ "revdelete-unrestricted": "fjerna avgrensingar for administratorar", "logentry-block-block": "$1 {{GENDER:$2|blokkerte}} {{GENDER:$4|$3}} for $5 $6", "logentry-suppress-reblock": "$1 {{GENDER:$2|endra}} blokkeringsinnstillingar for {{GENDER:$4|$3}} med opphøyrstid $5 $6", + "logentry-merge-merge": "$1 {{GENDER:$2|fletta}} $3 inn i $4 (versjonar til og med $5)", "logentry-move-move": "$1 {{GENDER:$2|flytte}} sida $3 til $4", "logentry-move-move-noredirect": "$1 {{GENDER:$2|flytte}} sida $3 til $4 utan å lata etter ei omdirigering", "logentry-move-move_redir": "$1 {{GENDER:$2|flytte}} sida $3 til $4 over ei omdirigering", @@ -3166,7 +3178,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 1ebb171ecf..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", @@ -164,13 +164,7 @@ "anontalk": "Discussion", "navigation": "Navigacion", "and": " e", - "qbfind": "Recercar", - "qbbrowse": "Far desfilar", - "qbedit": "Modificar", - "qbpageoptions": "Opcions de la pagina", - "qbmyoptions": "Mas opcions", "faq": "FAQ", - "faqpage": "Project:FAQ", "actions": "Accions", "namespaces": "Espacis de noms", "variants": "Variantas", @@ -196,32 +190,22 @@ "edit-local": "Modificar la descripcion locala", "create": "Crear", "create-local": "Apondre una descripcion locala", - "editthispage": "Modificar aquesta pagina", - "create-this-page": "Crear aquesta pagina", "delete": "Suprimir", - "deletethispage": "Suprimir aquesta pagina", - "undeletethispage": "Anullar la supression d'aquesta pagina", "undelete_short": "Restablir {{PLURAL:$1|1 modificacion| $1 modificacions}}", "viewdeleted_short": "Veire {{PLURAL:$1|una edicion escafada|$1 edicions escafadas}}", "protect": "Protegir", "protect_change": "modificar", - "protectthispage": "Protegir aquesta pagina", "unprotect": "Desprotegir", - "unprotectthispage": "Desprotegir aquesta pagina", "newpage": "Pagina novèla", - "talkpage": "Pagina de discussion", "talkpagelinktext": "Discussion", "specialpage": "Pagina especiala", "personaltools": "Aisinas personalas", - "articlepage": "Vejatz l'article", "talk": "Discussion", "views": "Afichatges", "toolbox": "Aisinas", "tool-link-userrights": "Modificar los gropes de {{GENDER:$1|l’utilizaire|l’utilizaira}}", "tool-link-userrights-readonly": "Veire los {{GENDER:$1|gropes utilizaire}}", "tool-link-emailuser": "Mandar un corrièr electronic a {{GENDER:$1|l’utilizaire|l’utilizaira}}", - "userpage": "Pagina d'utilizaire", - "projectpage": "Pagina meta", "imagepage": "Veire la pagina del fichièr", "mediawikipage": "Vejatz la pagina dels messatges", "templatepage": "Vejatz la pagina del modèl", @@ -232,7 +216,7 @@ "redirectedfrom": "(Redirigit dempuèi $1)", "redirectpagesub": "Pagina de redireccion", "redirectto": "Redirigir cap a :", - "lastmodifiedat": "Darrièr cambiament d'aquesta pagina lo $1, a $2.", + "lastmodifiedat": "Aquesta pagina es estada modificada pel darrièr còp lo $1 a $2.", "viewcount": "Aquesta pagina es estada consultada {{PLURAL:$1|un còp|$1 còps}}.", "protectedpage": "Pagina protegida", "jumpto": "Anar a :", @@ -687,7 +671,7 @@ "permissionserrorstext": "Avètz pas la permission d’efectuar l’operacion demandada per {{PLURAL:$1|la rason seguenta|las rasons seguentas}} :", "permissionserrorstext-withaction": "Sètz pas autorizat(ada) a $2, per {{PLURAL:$1|la rason seguenta|las rasons seguentas}} :", "recreate-moveddeleted-warn": "'''Atencion : sètz a tornar crear una pagina qu'es estada suprimida precedentament.'''\n\nDemandatz-vos s'es vertadièrament apropriat de contunhar de l’editar.\nL’istoric de las supressions e dels cambiaments de nom es afichat çaijós :", - "moveddeleted-notice": "Aquesta pagina es estada suprimida.\nL'istoric de las supressions e dels cambiaments de nom es afichat çaijós coma referéncia.", + "moveddeleted-notice": "Aquesta pagina es estada suprimida.\nLo jornal de las supressions, de las proteccions e dels desplaçaments de la pagina es afichat çaijós per referéncia.", "log-fulllog": "Veire lo jornal complet", "edit-hook-aborted": "Modificacion fracassada per croquet.\nCap d'explicacion pas balhada.", "edit-gone-missing": "A pas pogut metre a jorn la pagina.\nSembla que siá estada suprimida.", @@ -901,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", @@ -1231,18 +1215,32 @@ "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-registration": "Inscripcion de l'utilizaire", - "rcfilters-filter-registered-label": "Enregistrat", - "rcfilters-filter-registered-description": "Editors connectats.", - "rcfilters-filter-unregistered-label": "Desinscrit", - "rcfilters-filter-unregistered-description": "Editors que son pas connectats.", - "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-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": "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", "rcfilters-filter-user-experience-level-experienced-label": "Utilizaires experimentats", @@ -1250,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.", @@ -3082,6 +3082,7 @@ "version-libraries-description": "Descripcion", "version-libraries-authors": "Autors", "redirect": "Redirigir per ID de fichièr, utilizaire, pagina, revision o jornal.", + "redirect-summary": "Aquesta pagina especiala redirigís cap a un fichièr (nom de fichièr provesit), una pagina (ID de revision o de pagina provesit), una pagina d’utilizaire (identificant numeric de l’utilizaire provesit), o una entrada de jornal (ID del jornal provesit). Utilizacion : [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]], o [[{{#Special:Redirect}}/logid/186]].", "redirect-submit": "Validar", "redirect-lookup": "Recèrca :", "redirect-value": "Valor :", @@ -3101,7 +3102,6 @@ "fileduplicatesearch-noresults": "Cap de fichièr nomenat « $1 » es pas estat trobat.", "specialpages": "Paginas especialas", "specialpages-note-top": "Legenda", - "specialpages-note": "* Paginas especialas normalas.\n* Paginas especialas restrentas.", "specialpages-group-maintenance": "Rapòrts de mantenença", "specialpages-group-other": "Autras paginas especialas", "specialpages-group-login": "S'identificar / s'inscriure", @@ -3173,6 +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": "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)", @@ -3204,7 +3205,7 @@ "htmlform-user-not-valid": "$1 es pas un nom d'utilizaire valid.", "logentry-delete-delete": "$1 {{GENDER:$2|a suprimit}} la pagina $3", "logentry-delete-delete_redir": "$1 {{GENDER:$2|suprimit}} redirigit cap a $3 per espotiment.", - "logentry-delete-restore": "$1 {{GENDER:$2|a restablit}} la pagina $3", + "logentry-delete-restore": "$1 {{GENDER:$2|a restablit}} la pagina $3 ($4)", "logentry-delete-event": "$1 {{GENDER:$2|a modificat}} la visibilitat {{PLURAL:$5|d'un eveniment del jornal|de $5 eveniments del jornal}} sus $3 : $4", "logentry-delete-revision": "$1 {{GENDER:$2|a modificat}} la visibilitat {{PLURAL:$5|d'una revision|de $5 revisions}} sus la pagina $3 : $4", "logentry-delete-event-legacy": "$1 {{GENDER:$2|a modificat}} la visibilitat dels eveniments del jornal sus $3", 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 4c81d041ee..a97428c4e4 100644 --- a/languages/i18n/pl.json +++ b/languages/i18n/pl.json @@ -119,13 +119,14 @@ "tog-shownumberswatching": "Pokaż liczbę użytkowników obserwujących stronę", "tog-oldsig": "Twój obecny podpis:", "tog-fancysig": "Traktuj podpis jako wikikod (nie linkuj automatycznie całości)", - "tog-uselivepreview": "Używaj dynamicznego podglądu", + "tog-uselivepreview": "Pokazuj podgląd bez przeładowywania strony", "tog-forceeditsummary": "Informuj o niewypełnieniu opisu zmian", "tog-watchlisthideown": "Ukryj moje edycje na liście obserwowanych", "tog-watchlisthidebots": "Ukryj edycje botów na liście obserwowanych", "tog-watchlisthideminor": "Ukryj drobne zmiany na liście obserwowanych", "tog-watchlisthideliu": "Ukryj edycje zalogowanych użytkowników na liście obserwowanych", "tog-watchlistreloadautomatically": "Automatycznie odświeżaj listę obserwowanych po każdej zmianie filtra (wymagany JavaScript)", + "tog-watchlistunwatchlinks": "Pokazuj linki obserwuj/nie obserwuj bezpośrednio przy wpisach na liście obserwowanych (wymagany JavaScript do funkcji przełączania)", "tog-watchlisthideanons": "Ukryj edycje anonimowych użytkowników na liście obserwowanych", "tog-watchlisthidepatrolled": "Ukryj sprawdzone edycje na liście obserwowanych", "tog-watchlisthidecategorization": "Ukryj kategoryzację stron", @@ -777,8 +778,8 @@ "permissionserrorstext-withaction": "Nie masz uprawnień do $2 z {{PLURAL:$1|następującego powodu|następujących powodów}}:", "contentmodelediterror": "Nie możesz edytować tej wersji, ponieważ model jej zawartości ($1) różni się od obecnego modelu zawartości strony ($2).", "recreate-moveddeleted-warn": "'''Uwaga! Zamierzasz utworzyć stronę, która została wcześniej usunięta.'''\n\nUpewnij się, czy ponowne utworzenie tej strony jest uzasadnione.\nPoniżej znajduje się rejestr usunięć i zmian nazwy tej strony:", - "moveddeleted-notice": "Ta strona została usunięta.\nRejestr usunięć i zmian nazwy tej strony jest pokazany poniżej.", - "moveddeleted-notice-recent": "Przepraszamy, ale ta strona została niedawno (w ciągu ostatnich 24 godzin) usunięta. Poniżej znajduje się rejestr usunięć i zmian nazwy tej strony.", + "moveddeleted-notice": "Ta strona została usunięta.\nRejestr usunięć, zabezpieczeń i zmian nazwy tej strony jest pokazany poniżej.", + "moveddeleted-notice-recent": "Przepraszamy, ale ta strona została niedawno (w ciągu ostatnich 24 godzin) usunięta. Poniżej znajduje się rejestr usunięć, zabezpieczeń i zmian nazwy tej strony.", "log-fulllog": "Pokaż cały rejestr", "edit-hook-aborted": "Edycja zatrzymana z powodu haka.\nWystąpił z nieokreślonej przyczyny.", "edit-gone-missing": "Nie udało się zaktualizować strony.\nZdaje się, że została skasowana.", @@ -1046,7 +1047,7 @@ "prefs-editwatchlist-clear": "Wyczyść listę obserwowanych", "prefs-watchlist-days": "Liczba dni widocznych na liście obserwowanych:", "prefs-watchlist-days-max": "Maksymalnie $1 {{PLURAL:$1|dzień|dni}}", - "prefs-watchlist-edits": "Liczba edycji pokazywanych w rozszerzonej liście obserwowanych:", + "prefs-watchlist-edits": "Liczba edycji pokazywanych w liście obserwowanych:", "prefs-watchlist-edits-max": "Maksymalnie 1000", "prefs-watchlist-token": "Identyfikator listy obserwowanych:", "prefs-misc": "Ustawienia różne", @@ -1362,8 +1363,9 @@ "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-other-review-tools": "Inne narzędzia do sprawdzania", "rcfilters-group-results-by-page": "Grupuj wyniki według stron", "rcfilters-grouping-title": "Grupowanie", "rcfilters-activefilters": "Aktywne filtry", @@ -1374,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.", @@ -1390,8 +1393,7 @@ "rcfilters-savedqueries-add-new-title": "Zapisz bieżące ustawienia filtrów", "rcfilters-restore-default-filters": "Przywróć domyślne filtry", "rcfilters-clear-all-filters": "Wyczyść filtry", - "rcfilters-show-new-changes": "Pokaż nowsze zmiany", - "rcfilters-previous-changes-label": "Poprzednio wyświetlane zmiany", + "rcfilters-show-new-changes": "Zobacz nowsze zmiany", "rcfilters-search-placeholder": "Filtruj ostatnie zmiany (przeglądaj lub zacznij wpisywać)", "rcfilters-invalid-filter": "Nieprawidłowy filtr", "rcfilters-empty-filter": "Brak aktywnych filtrów. Wyświetlane są wszystkie zmiany.", @@ -1404,7 +1406,7 @@ "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…", @@ -1470,6 +1477,9 @@ "rcfilters-view-tags-tooltip": "Przefiltruj wyniki według znaczników zmian", "rcfilters-view-return-to-default-tooltip": "Wróć do głównego menu filtra", "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", "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", @@ -2669,7 +2679,7 @@ "import-nonewrevisions": "Nie zaimportowano żadnych wersji (wszystkie były już obecne albo pominięte z powodu błędów).", "xml-error-string": "$1 linia $2, kolumna $3 (bajt $4): $5", "import-upload": "Prześlij dane w formacie XML", - "import-token-mismatch": "Utracono dane sesji. \n\nByć może doszło do wylogowania. Proszę, upewnij się, że nadal jesteś zalogowany (zalogowana), i wtedy spróbuj ponownie.\nJeśli to nie pomoże – spróbuj [[Special:UserLogout|wylogować się]] i zalogować ponownie, a także upewnij się, że twoja przeglądarka akceptuje ciasteczka z tej witryny.", + "import-token-mismatch": "Utracono dane sesji. \n\nByć może doszło do wylogowania. '''Proszę, upewnij się, że nadal jesteś zalogowany (zalogowana), i wtedy spróbuj ponownie.'''\nJeśli to nie pomoże – spróbuj [[Special:UserLogout|wylogować się]] i zalogować ponownie, a także upewnij się, że twoja przeglądarka akceptuje ciasteczka z tej witryny.", "import-invalid-interwiki": "Nie można importować z podanej wiki.", "import-error-edit": "Strona „$1” nie została zaimportowana, ponieważ nie jesteś uprawniony do jej edytowania.", "import-error-create": "Strona „$1” nie została zaimportowana, ponieważ nie jesteś uprawniony do jej utworzenia.", @@ -3594,6 +3604,13 @@ "compare-invalid-title": "Tytuł jest nieprawidłowy.", "compare-title-not-exists": "Podany tytuł nie istnieje.", "compare-revision-not-exists": "Wybrana wersja nie istnieje.", + "diff-form": "Różnice", + "diff-form-oldid": "ID starej wersji", + "diff-form-revid": "ID wersji ze zmianą", + "diff-form-submit": "Pokaż różnice", + "permanentlink": "Link trwały do wersji", + "permanentlink-revid": "ID wersji", + "permanentlink-submit": "Przejdź do wersji", "dberr-problems": "Przepraszamy! Witryna ma problemy techniczne.", "dberr-again": "Spróbuj przeładować stronę za kilka minut.", "dberr-info": "(Błąd łączności z bazą danych: $1)", @@ -3608,7 +3625,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 13176c1d3e..844971b981 100644 --- a/languages/i18n/pt-br.json +++ b/languages/i18n/pt-br.json @@ -141,13 +141,14 @@ "tog-shownumberswatching": "Mostrar o número de usuários que estão vigiando", "tog-oldsig": "Assinatura atual:", "tog-fancysig": "Tratar assinatura como wikitexto (sem link automático)", - "tog-uselivepreview": "Utilizar pré-visualização em tempo real", + "tog-uselivepreview": "Mostrar visualizações sem recarregar a página", "tog-forceeditsummary": "Avisar-me ao introduzir um sumário de edição vazio", "tog-watchlisthideown": "Ocultar as minhas edições da lista de páginas vigiadas", "tog-watchlisthidebots": "Ocultar edições de bots da lista de páginas vigiadas", "tog-watchlisthideminor": "Ocultar edições menores da lista de páginas vigiadas", "tog-watchlisthideliu": "Ocultar edições de usuários autenticados da lista de páginas vigiadas", "tog-watchlistreloadautomatically": "Recarregar a lista de páginas vigiadas automaticamente sempre que um filtro for alterado (requer JavaScript)", + "tog-watchlistunwatchlinks": "Adicione links diretos de despertar/assistir a entradas da lista de observação (JavaScript necessário para a funcionalidade de alternância)", "tog-watchlisthideanons": "Ocultar edições de usuários anônimos da lista de páginas vigiadas", "tog-watchlisthidepatrolled": "Ocultar edições patrulhadas da lista de páginas vigiadas", "tog-watchlisthidecategorization": "Ocultar a categorização das páginas", @@ -801,8 +802,8 @@ "permissionserrorstext-withaction": "Você não possui permissão para $2, {{PLURAL:$1|pelo seguinte motivo|pelos motivos a seguir}}:", "contentmodelediterror": "Você não pode editar essa revisão pois seu modelo de conteúdo é $1, que difere do modelo de conteúdo atual da página $2.", "recreate-moveddeleted-warn": "'''Atenção: Você está recriando uma página já eliminada em outra ocasião.'''\n\nConsidere se é realmente adequado continuar editando esta página.\nOs registros de eliminação e de movimentação desta página são exibidos a seguir, para sua comodidade:", - "moveddeleted-notice": "Esta página foi eliminada.\nOs registros de eliminação e de movimentação para esta página estão disponibilizados abaixo, para referência.", - "moveddeleted-notice-recent": "Desculpe, esta página foi eliminada recentemente (nos últimos 24 horas). A eliminação e se mover para a página de log são fornecidos abaixo para referência.", + "moveddeleted-notice": "Esta página foi eliminada.\nOs registros de eliminação, proteção e de movimentação para esta página estão disponibilizados abaixo, para referência.", + "moveddeleted-notice-recent": "Desculpe, esta página foi eliminada recentemente (nas últimas 24 horas). Os registros de eliminação, proteção e de movimentação para esta página estão disponibilizados abaixo, para referência.", "log-fulllog": "Ver registro detalhado", "edit-hook-aborted": "Edição abortada por ''hook''.\nEle não deu nenhuma explicação.", "edit-gone-missing": "Não foi possível atualizar a página.\nEla parece ter sido eliminada.", @@ -1070,7 +1071,7 @@ "prefs-editwatchlist-clear": "Limpar sua lista de páginas vigiadas", "prefs-watchlist-days": "Dias a mostrar na lista de páginas vigiadas:", "prefs-watchlist-days-max": "Máximo $1 {{PLURAL:$1|dia|dias}}", - "prefs-watchlist-edits": "Número de edições mostradas na lista de páginas vigiadas expandida:", + "prefs-watchlist-edits": "Número máximo de alterações para mostrar na lista de observação:", "prefs-watchlist-edits-max": "Número máximo: 1000", "prefs-watchlist-token": "Senha para a lista de páginas vigiadas:", "prefs-misc": "Diversos", @@ -1386,16 +1387,20 @@ "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-other-review-tools": " Outras ferramentas de revisão:", + "rcfilters-group-results-by-page": "Agrupar resultado por página", + "rcfilters-grouping-title": "Agrupamento", "rcfilters-activefilters": "Filtros ativos", "rcfilters-advancedfilters": "Filtros avançados", "rcfilters-limit-title": "Mudanças para mostrar", - "rcfilters-limit-shownum": "Mostrar as últimas $1 modificações", + "rcfilters-limit-shownum": "Mostrar as últimas {{PLURAL:$1|mudança|$1 modificações}}", "rcfilters-days-title": "Dias recentes", "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.", @@ -1412,6 +1417,7 @@ "rcfilters-savedqueries-add-new-title": "Gravar configurações atuais de filtros", "rcfilters-restore-default-filters": "Restaurar filtros padrão", "rcfilters-clear-all-filters": "Limpar todos os filtros", + "rcfilters-show-new-changes": "Veja as novas mudanças", "rcfilters-search-placeholder": "Filtrar mudanças recentes (procurar ou começar a digitar)", "rcfilters-invalid-filter": "Filtro inválido", "rcfilters-empty-filter": "Nenhum filtro ativo. Todas as contribuições são mostradas.", @@ -1424,7 +1430,7 @@ "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.", @@ -1463,6 +1469,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...", @@ -1484,11 +1495,15 @@ "rcfilters-tag-prefix-namespace-inverted": ":não $1", "rcfilters-exclude-button-off": "Excluir selecionado", "rcfilters-exclude-button-on": "Excluindo selecionados", + "rcfilters-view-advanced-filters-label": "Filtros avançados", "rcfilters-view-tags": "Edições marcadas", "rcfilters-view-namespaces-tooltip": "Filtrar resultados por namespace", "rcfilters-view-tags-tooltip": "Filtre os resultados usando edit tags", "rcfilters-view-return-to-default-tooltip": "Retornar ao menu do filtro principal", "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", "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", @@ -2690,7 +2705,7 @@ "import-nonewrevisions": "Nenhuma revisão foi importada (já estavam todas presentes ou foram ignoradas devido a erros).", "xml-error-string": "$1 na linha $2, coluna $3 (byte $4): $5", "import-upload": "Enviar dados em XML", - "import-token-mismatch": "Perda de dados da sessão.\n\nVocê pode ter sido desconectado. Verifique se você ainda está conectado e tente novamente.\nSe ainda não funcionar, tente [[Special:UserLogout|sair]] e efetuando login novamente e verifique se seu navegador permite cookies neste site.", + "import-token-mismatch": "Perda de dados da sessão.\n\nVocê pode ter sido desconectado. '''Verifique se você ainda está conectado e tente novamente'''.\n\nSe ainda não funcionar, tente [[Special:UserLogout|sair]] e efetuando login novamente e verifique se seu navegador permite cookies neste site.", "import-invalid-interwiki": "Não é possível importar do wiki especificado.", "import-error-edit": "A página \"$1\" não foi importada porque você não tem permissão para editá-la.", "import-error-create": "A página \"$1\" não foi importada porque você não tem permissão para criá-la.", @@ -3569,6 +3584,13 @@ "compare-invalid-title": "O título que você especificou é inválido.", "compare-title-not-exists": "O título que você especificou não existe.", "compare-revision-not-exists": "A revisão que você especificou não existe.", + "diff-form": "Diferenças", + "diff-form-oldid": "ID de revisão antiga (opcional)", + "diff-form-revid": "ID de revisão da diferença", + "diff-form-submit": "Mostrar diferenças", + "permanentlink": "Ligação permanente", + "permanentlink-revid": "ID da revisão", + "permanentlink-submit": "Ir para revisão", "dberr-problems": "Desculpe! Este sítio está passando por dificuldades técnicas.", "dberr-again": "Experimente esperar alguns minutos e atualizar.", "dberr-info": "(Não pode acessar a base de dados: $1)", diff --git a/languages/i18n/pt.json b/languages/i18n/pt.json index adc0c477ba..7f9026d802 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:", @@ -110,6 +111,7 @@ "tog-watchlisthideminor": "Esconder edições menores ao listar mudanças às páginas vigiadas", "tog-watchlisthideliu": "Esconder edições de utilizadores autenticados ao listar mudanças às páginas vigiadas", "tog-watchlistreloadautomatically": "Recarregar a lista de páginas vigiadas automaticamente sempre que um filtro é alterado (requer JavaScript)", + "tog-watchlistunwatchlinks": "Adicionar links diretos para vigiar ou deixar de vigiar, às entradas da lista de páginas vigiadas (é necessário o JavaScript para alternar entre ambas)", "tog-watchlisthideanons": "Esconder edições de utilizadores anónimos ao listar mudanças às páginas vigiadas", "tog-watchlisthidepatrolled": "Esconder edições patrulhadas ao listar mudanças às páginas vigiadas", "tog-watchlisthidecategorization": "Ocultar categorização de páginas", @@ -365,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", @@ -416,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.", @@ -441,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", @@ -472,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", @@ -492,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", @@ -523,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.", @@ -550,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", @@ -582,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", @@ -615,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)", @@ -649,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", @@ -659,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:", @@ -689,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", @@ -759,8 +761,8 @@ "permissionserrorstext-withaction": "Não possui permissão para $2, {{PLURAL:$1|pelo seguinte motivo|pelos seguintes motivos}}:", "contentmodelediterror": "Não pode editar esta revisão porque o modelo de conteúdo é $1, que é diferente do modelo atual da página $2.", "recreate-moveddeleted-warn": "Aviso: Está a recriar uma página anteriormente eliminada.\n\nVerifique se é apropriado continuar a editar esta página.\nPara sua conveniência, é apresentado abaixo o registo de eliminação e movimentação da página:", - "moveddeleted-notice": "Esta página foi eliminada.\nPara sua referência, é apresentado abaixo o registo de eliminação e movimentação da página.", - "moveddeleted-notice-recent": "Desculpe, esta página foi eliminada recentemente (nas últimas 24 horas).\nA exclusão e registo de movimentação para a página são fornecidos abaixo para referência.", + "moveddeleted-notice": "Esta página foi eliminada.\nPara sua referência, é apresentado abaixo o registo de eliminação, proteção e movimentação da página.", + "moveddeleted-notice-recent": "Desculpe, esta página foi eliminada recentemente (nas últimas 24 horas).\nPara sua referência é apresentado abaixo o registo de eliminação, proteção e movimentação da página.", "log-fulllog": "Ver registo detalhado", "edit-hook-aborted": "A edição foi abortada por um hook.\nNão foi dada nenhuma explicação.", "edit-gone-missing": "Não foi possível atualizar a página.\nEla parece ter sido eliminada.", @@ -832,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", @@ -871,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", @@ -892,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", @@ -994,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.", @@ -1028,7 +1030,7 @@ "prefs-editwatchlist-clear": "Limpar lista de páginas vigiadas", "prefs-watchlist-days": "Dias a mostrar nas mudanças às páginas vigiadas:", "prefs-watchlist-days-max": "Máximo: $1 {{PLURAL:$1|dia|dias}}", - "prefs-watchlist-edits": "Número de edições a mostrar na listagem expandida:", + "prefs-watchlist-edits": "Número máximo de edições a mostrar na lista de vigiadas:", "prefs-watchlist-edits-max": "Máximo: 1000", "prefs-watchlist-token": "Chave secreta da lista de páginas vigiadas:", "prefs-misc": "Diversos", @@ -1121,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", @@ -1344,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", @@ -1356,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.", @@ -1372,8 +1376,7 @@ "rcfilters-savedqueries-add-new-title": "Gravar configurações atuais de filtros", "rcfilters-restore-default-filters": "Restaurar os filtros padrão", "rcfilters-clear-all-filters": "Limpar todos os filtros", - "rcfilters-show-new-changes": "Mostrar as novas mudanças", - "rcfilters-previous-changes-label": "Mudanças vistas anteriormente", + "rcfilters-show-new-changes": "Mostrar as mudanças mais recentes", "rcfilters-search-placeholder": "Filtrar mudanças recentes (navegue ou começe a escrever)", "rcfilters-invalid-filter": "Filtro inválido", "rcfilters-empty-filter": "Não há filtros ativos. São mostradas todas as contribuições.", @@ -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.", @@ -2654,7 +2663,7 @@ "import-nonewrevisions": "Não foi importada nenhuma revisão (já estavam todas presentes ou foram ignoradas devido a erros).", "xml-error-string": "$1 na linha $2, coluna $3 (byte $4): $5", "import-upload": "Enviar dados em XML", - "import-token-mismatch": "Perda de dados da sessão.\n\nA sua sessão poderá ter sido encerrada. Verifique se ainda está autenticado e tente novamente, por favor. \nCaso continue a não funcionar, tente [[Special:UserLogout|sair]] e voltar a entrar na sua conta, e verifique se o seu navegador permite cookies deste site.", + "import-token-mismatch": "Perda de dados da sessão.\n\nA sua sessão pode ter sido encerrada. '''Verifique se ainda está autenticado e tente novamente, por favor'''. \nCaso continue a não funcionar, tente [[Special:UserLogout|sair]] e voltar a entrar na sua conta, e verifique se o seu navegador permite cookies deste site.", "import-invalid-interwiki": "Não é possível importar da wiki especificada.", "import-error-edit": "A página \"$1\" não foi importada porque não tem permissão para editá-la.", "import-error-create": "A página \"$1\" não foi importada porque não tem permissão para criá-la.", @@ -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", @@ -3537,6 +3546,13 @@ "compare-invalid-title": "O título que especificou é inválido.", "compare-title-not-exists": "O título que especificou não existe.", "compare-revision-not-exists": "A revisão que especificou não existe.", + "diff-form": "Diferenças", + "diff-form-oldid": "Identificador de revisão antigo (opcional)", + "diff-form-revid": "Identificador de revisão da diferença", + "diff-form-submit": "Mostrar diferenças", + "permanentlink": "Link permanente", + "permanentlink-revid": "Identificador de revisão", + "permanentlink-submit": "Ir para a revisão", "dberr-problems": "Desculpe! Este site está com dificuldades técnicas.", "dberr-again": "Experimente esperar alguns minutos e atualizar.", "dberr-info": "(Não foi possível aceder ao servidor da base de dados: $1)", diff --git a/languages/i18n/qqq.json b/languages/i18n/qqq.json index f3e25071ed..1105d15882 100644 --- a/languages/i18n/qqq.json +++ b/languages/i18n/qqq.json @@ -226,7 +226,8 @@ "tog-watchlisthidebots": "[[Special:Preferences]], tab 'Watchlist'. Offers user to hide bot edits from watchlist. {{Gender}}\n\n{{Related|Preferences-watchlistrc-toggle}}", "tog-watchlisthideminor": "[[Special:Preferences]], tab 'Watchlist'. Offers user to hide minor edits from watchlist. {{Gender}}\n\n{{Related|Preferences-watchlistrc-toggle}}", "tog-watchlisthideliu": "Option in tab 'Watchlist' of [[Special:Preferences]]. {{Gender}}\n\n{{Related|Preferences-watchlistrc-toggle}}", - "tog-watchlistreloadautomatically": "[[Special:Preferences]], tab 'Watchlist'. Offers user to to automatically refresh the watchlist page, when a filter is changed.", + "tog-watchlistreloadautomatically": "[[Special:Preferences]], tab 'Watchlist'. Offers user to automatically refresh the watchlist page, when a filter is changed.", + "tog-watchlistunwatchlinks": "[[Special:Preferences]], tab 'Watchlist'. Offers user to add an unwatch/watch toggle link to watchlist entries.", "tog-watchlisthideanons": "Option in tab 'Watchlist' of [[Special:Preferences]]. {{Gender}}\n\n{{Related|Preferences-watchlistrc-toggle}}", "tog-watchlisthidepatrolled": "Option in Watchlist tab of [[Special:Preferences]]. {{Gender}}\n\n{{Related|Preferences-watchlistrc-toggle}}", "tog-watchlisthidecategorization": "Option in Watchlist tab of [[Special:Preferences]]. Offers user to hide/show categorization of pages. Appears next to checkboxes with labels such as {{msg-mw|tog-watchlisthideminor}}.", @@ -1539,6 +1540,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.", @@ -1549,8 +1551,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.", @@ -1568,7 +1571,6 @@ "rcfilters-restore-default-filters": "Label for the button that resets filters to defaults", "rcfilters-clear-all-filters": "Title for the button that clears all filters", "rcfilters-show-new-changes": "Label for the button to show new changes.", - "rcfilters-previous-changes-label": "Label to indicate the changes below have been previously viewed.", "rcfilters-search-placeholder": "Placeholder for the filter search input.", "rcfilters-invalid-filter": "A label for an invalid filter.", "rcfilters-empty-filter": "Placeholder for the filter list when no filters were chosen.", @@ -1613,13 +1615,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 +1658,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-editWatchlist-button": "Label for the button to edit the watched pages on [[Special:Watchlist]] when using the structured filters interface.", + "rcfilters-watchlist-showupdated": "Message at the top of [[Special:Watchlist]] when the Structured filters are enabled that describes what unseen changes look like.", "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}}.", @@ -2419,6 +2429,8 @@ "watching": "Text displayed when clicked on the watch tab: {{msg-mw|Watch}}. It means the wiki is adding that page to your watchlist.", "unwatching": "Text displayed when clicked on the unwatch tab: {{msg-mw|Unwatch}}. It means the wiki is removing that page from your watchlist.", "watcherrortext": "When a user clicked the watch/unwatch tab and the action did not succeed, this message is displayed.\n\nThis message is used raw and should not contain wikitext.\n\nParameters:\n* $1 - ...\nSee also:\n* {{msg-mw|Addedwatchtext}}", + "watchlist-unwatch": "Symbol used for the link to unwatch a page from the watchlist.", + "watchlist-unwatch-undo": "Symbol used for the link to re-watch a page that has been unwatched from the watchlist.", "enotif_reset": "Used in [[Special:Watchlist]].\n\nThis should be translated as \"Mark all pages '''as''' visited\".\n\nSee also:\n* {{msg-mw|Watchlist-options|fieldset}}\n* {{msg-mw|Watchlist-details|watchlist header}}\n* {{msg-mw|Wlheader-enotif|watchlist header}}", "enotif_impersonal_salutation": "Used for impersonal e-mail notifications, suitable for bulk mailing.\n{{Identical|User}}", "enotif_subject_deleted": "Email notification subject for deleted pages. Parameters:\n* $1 - page title\n* $2 - username who has deleted the page, can be used for GENDER", @@ -2936,7 +2948,7 @@ "import-nonewrevisions": "Used in [[Special:Import]].", "xml-error-string": "Parameters:\n* $1 - Some kind of message, perhaps name of the error?\n* $2 - line number\n* $3 - column number\n* $4 - ?? $this->mByte . $this->mContext\n* $5 - error description\nExample:\n* Import failed: XML import parse failure at line 1, col 1 (byte 3; \"- $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,6 +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": "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)", @@ -3438,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ă.", @@ -3658,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.", @@ -3675,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", @@ -3706,7 +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" + "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.", + "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 2d5d2eba0c..c752011cfd 100644 --- a/languages/i18n/roa-tara.json +++ b/languages/i18n/roa-tara.json @@ -678,7 +678,7 @@ "permissionserrorstext": "Tu non ge tine 'u permesse pe fà ste cose, pe {{PLURAL:$1|stu mutive|ste mutive}}:", "permissionserrorstext-withaction": "Tu non ge tine 'u permesse pe $2, pe {{PLURAL:$1|stu mutive|ste mutive}}:", "recreate-moveddeleted-warn": "'''Fa Attenziò: Ste ccreje 'na pàgene ca avère state scangillete apprime.'''\n\nVide bbuene ce l'ha ccrejà sta pàgene.\nSinde a me, vide l'archivie de le scangellaminde e de le spustaminde accussì sì secure de quidde cà fà:", - "moveddeleted-notice": "Sta pàgene ha state scangellate.\nL'archivije de le scangellaminde e de le spustaminde pe sta pàgene 'u puè vedè aqquà sotte pe riferimende.", + "moveddeleted-notice": "Sta pàgene ha state scangellate.\nL'archivije de le scangellaminde, de le prutezziune e de le spustaminde pe sta pàgene 'u puè 'ndrucà aqquà sotte pe riferimende.", "log-fulllog": "Vide l'arichivije comblete", "edit-hook-aborted": "Cangiamende annullete da 'nu ''hook''.\nNon g'à date nisciune mutive.", "edit-gone-missing": "Non ge puè cangià sta pàgene.\nPare proprie ca l'onne scangellete.", @@ -703,6 +703,7 @@ "content-model-css": "CSS", "content-json-empty-object": "Oggette vacande", "content-json-empty-array": "Matrice vacande", + "deprecated-self-close-category": "Lè pàggene ca ausane le tag HTML auto-achiuse invalide", "duplicate-args-warning": "Attenziò: [[:$1]] ste chiame [[:$2]] cu cchiù de 'nu valore pu parametre \"$3\". Sulamende l'urteme valore date avène ausate.", "duplicate-args-category": "Pàggene ca ausane le argumende a doppie jndr'à le chiamate d'u template", "duplicate-args-category-desc": "'A pàgene téne chiamate a template ca ausane arguminde a doppie, cumme {{foo|bar=1|bar=2}} o {{foo|bar|1=baz}}.", @@ -940,7 +941,7 @@ "prefs-editwatchlist-clear": "Sdevache l'elenghe de le pàggene condrollate tune", "prefs-watchlist-days": "Giurne da fà vedè jndr'à liste de le pàggene condrollete:", "prefs-watchlist-days-max": "Massime $1 {{PLURAL:$1|sciurne|sciurne}}", - "prefs-watchlist-edits": "Numere massime de cangiaminde ca se ponne fa vedè jndr'à liste de le pàggene condrollete spannute:", + "prefs-watchlist-edits": "Numere massime de cangiaminde ca se ponne fa 'ndrucà jndr'à l'lenghe de le pàggene condrollate:", "prefs-watchlist-edits-max": "Numere massime: 1000", "prefs-watchlist-token": "Token de le pàggene condrollate:", "prefs-misc": "Misc", @@ -1154,6 +1155,11 @@ "grant-group-file-interaction": "Inderaggisce cu le media", "grant-group-watchlist-interaction": "Inderaggisce cu le pàggene condrollate", "grant-group-email": "Manne 'n'e-mail", + "grant-group-customization": "Personalizzazzione e preferenze", + "grant-group-administration": "Face aziune amministrative", + "grant-group-private-information": "Accede a le date private sus a te", + "grant-group-other": "Attività misckate", + "grant-blockusers": "Blocche e sblocche le utinde", "grant-createaccount": "Ccreje le cunde utinde", "grant-createeditmovepage": "Ccreje, cange e spueste le pàggene", "grant-delete": "Scangille pàggene, revisiune e vôsce de l'archivije", @@ -1259,6 +1265,8 @@ "rcfilters-savedqueries-new-name-placeholder": "Dì a ce serve 'u filtre", "rcfilters-savedqueries-apply-label": "Ccrèje 'nu filtre", "rcfilters-savedqueries-cancel-label": "Annulle", + "rcfilters-invalid-filter": "Filtre invalide", + "rcfilters-empty-filter": "Nisciune filtre attive. Tutte le condrebbute avènene fatte 'ndrucà.", "rcfilters-filterlist-title": "Filtre", "rcfilters-filterlist-whatsthis": "Cumme funzionane?", "rcfilters-highlightmenu-title": "Scacchie 'nu culore", @@ -2406,7 +2414,7 @@ "import-nonewrevisions": "Tutte le revisiune avèrene già state 'mbortate.", "xml-error-string": "$1 a 'a linea $2, colonne $3 (byte $4): $5", "import-upload": "Careche le date in XML", - "import-token-mismatch": "S'à perse 'a sessione de le date.\n\nPò essere ca è state mise fore. Verifiche de sta angore jndre e pruéve arrete.\nCe tìne angore 'u probbleme, pué pruvà a [[Special:UserLogout|assè]] e trasè arrete, condrollanne ca 'u browser tune se pigghie le cookie da stu site.", + "import-token-mismatch": "S'à perse 'a sessione de le date.\n\nPò essere ca è state mise fore. '''Verifiche de sta angore jndre e pruéve arrete'''.\nCe tìne angore 'u probbleme, pué pruvà a [[Special:UserLogout|assè]] e trasè arrete, condrollanne ca 'u browser tune se pigghie le cookie da stu site.", "import-invalid-interwiki": "Non ge pozze 'mbortà da 'a Uicchi specificate.", "import-error-edit": "Pàgene \"$1\" non g'ha state 'mbortate purcé tu non ge tìne le permesse pe cangiarle.", "import-error-create": "Pàgene \"$1\" non g'ha state 'mbortate purcé tu non ge tìne le permesse pe ccrejarle.", @@ -3429,6 +3437,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": "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 6d6ecde657..3b85640648 100644 --- a/languages/i18n/ru.json +++ b/languages/i18n/ru.json @@ -121,7 +121,7 @@ "tog-hidepatrolled": "Скрывать патрулированные правки в списке свежих правок", "tog-newpageshidepatrolled": "Скрывать отпатрулированные страницы в списке новых страниц", "tog-hidecategorization": "Скрывать категоризацию страниц", - "tog-extendwatchlist": "Расширенный список наблюдения, включающий все изменения, а не только последние (они могут быть сгруппированы настройкой на вкладке «[[Служебная:Настройки#mw-prefsection-rc|Свежие правки]]»)", + "tog-extendwatchlist": "Расширить список наблюдения, включающая все изменения, а не только последние (они могут быть сгруппированы настройкой на вкладке «[[Служебная:Настройки#mw-prefsection-rc|Свежие правки]]»)", "tog-usenewrc": "Группировать изменения в свежих правках и списке наблюдения", "tog-numberheadings": "Автоматически нумеровать заголовки", "tog-showtoolbar": "Показывать панель инструментов при редактировании", @@ -143,13 +143,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": "Скрывать категоризацию страниц", @@ -327,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}}:Авторские права", @@ -410,7 +411,7 @@ "databaseerror-function": "Функция: $1", "databaseerror-error": "Ошибка: $1", "transaction-duration-limit-exceeded": "Для того, чтобы избежать большого лага при репликации, эта транзакция была прервана, поскольку продолжительность записи ($1) превысила лимит в $2 {{PLURAL:$2|секунду|секунд|секунды}}.\nЕсли вы изменяете несколько элементов за один раз, попробуйте вместо этого сделать несколько небольших операций.", - "laggedslavemode": "Внимание: страница может не содержать последних обновлений.", + "laggedslavemode": "Внимание: на странице могут отсутствовать последние обновления.", "readonly": "Запись в базу данных заблокирована", "enterlockreason": "Укажите причину и намеченный срок блокировки.", "readonlytext": "Добавление новых статей и другие изменения базы данных сейчас заблокированы: вероятно, в связи с плановым обслуживанием.\n\nСистемный администратор, заблокировавший базу, оставил следующее объяснение: $1", @@ -448,7 +449,7 @@ "title-invalid-too-long": "Запрашиваемый заголовок страницы слишком длинен. Он должен быть не более $1 {{PLURAL:$1|1=байта|байт}} в кодировке UTF-8.", "title-invalid-leading-colon": "Запрашиваемое название страницы содержит недопустимое двоеточие в начале.", "perfcached": "Данные взяты кэша; они могли устареть. В кэше хранится не более $1 {{PLURAL:$1|1=записи|записей}}.", - "perfcachedts": "Следующие данные взяты из кэша, последний раз он обновлялся в $1. В кэше хранится не более {{PLURAL:$4|1=$1 записи|$1 записей}}.", + "perfcachedts": "Данные взяты из кэша; последний раз он обновлялся в $1. В кэше хранится не более {{PLURAL:$4|1=$1 записи|$1 записей}}.", "querypage-no-updates": "Обновление этой страницы сейчас отключено.\nПредставленные здесь данные не будут обновляться.", "viewsource": "Просмотр вики-текста", "viewsource-title": "Просмотр исходного текста страницы $1", @@ -467,7 +468,7 @@ "mycustomcssprotected": "У вас нет прав для редактирования этого CSS страницы.", "mycustomjsprotected": "У вас нет прав для редактирования JavaScript на странице.", "myprivateinfoprotected": "У вас нет разрешения на изменение вашей личной информации", - "mypreferencesprotected": "У вас нет прав для редактирования ваших настроек.", + "mypreferencesprotected": "У вас нет прав для редактирования настроек.", "ns-specialprotected": "Страницы пространства имён «{{ns:special}}» не могут правиться.", "titleprotected": "Создание страницы с таким заголовком было запрещено участником [[User:$1|$1]].\nУказана следующая причина: $2.", "filereadonlyerror": "Не удаётся изменить файл «$1», так как хранилище «$2» находится в режиме «только для чтения».\n\nСистемный администратор, заблокировавший базу, оставил следующее объяснение: «$3».", @@ -479,11 +480,11 @@ "virus-badscanner": "Ошибка настройки. Неизвестный сканер вирусов: ''$1''", "virus-scanfailed": "ошибка сканирования (код $1)", "virus-unknownscanner": "неизвестный антивирус:", - "logouttext": "Вы завершили сеанс работы.\n\nНекоторые страницы могут продолжать отображаться в том виде, как будто вы всё ещё представлены системе. Для борьбы с этим явлением обновите кэш браузера.", + "logouttext": "Вы завершили сеанс работы.\n\nНекоторые страницы могут продолжить отображаться так, словно вы все еще находитесь в системе. Для борьбы с этим явлением обновите кэш браузера.", "cannotlogoutnow-title": "Невозможно выйти прямо сейчас", "cannotlogoutnow-text": "Нельзя выйти во время использования $1.", "welcomeuser": "Добро пожаловать, $1!", - "welcomecreation-msg": "Ваша учётная запись создана.\nНе забудьте провести [[Special:Preferences|персональную настройку]] сайта {{SITENAME}}.", + "welcomecreation-msg": "Ваша учётная запись успешно создана.\nТеперь вы также можете провести [[Special:Preferences|персональную настройку]] сайта {{SITENAME}}.", "yourname": "Имя учётной записи:", "userlogin-yourname": "Имя учётной записи", "userlogin-yourname-ph": "Введите имя вашей учётной записи", @@ -575,7 +576,7 @@ "acct_creation_throttle_hit": "Посетители с вашего IP-адреса {{PLURAL:$1|была создана $1 учётная запись|было создано $1 учётных записей|были созданы $1 учётных записи}} за последние $2 — это предельное количество для данного отрезка времени.\nВ результате, пользователи с этим IP-адресом в данный момент больше не могут создавать новых учётных записей.", "emailauthenticated": "Ваш адрес электронной почты подтверждён $2 в $3.", "emailnotauthenticated": "Ваш адрес электронной почты ещё не был подтверждён.\nПисьма не будут отправляться ни для одной из следующий функций.", - "noemailprefs": "Адрес электронной почты не был указан, функции вики-движка по работе с эл. почтой отключены.", + "noemailprefs": "Адрес электронной почты не указан — функции по работе с эл. почтой отключены.", "emailconfirmlink": "Подтвердить ваш адрес электронной почты", "invalidemailaddress": "Адрес электронной почты не может быть принят, так как он не соответствует формату.\nПожалуйста, введите корректный адрес или оставьте поле пустым.", "cannotchangeemail": "Адреса электронной почты этой учётной записи не могут быть изменены в этой вики.", @@ -584,7 +585,7 @@ "accountcreatedtext": "Создана учётная запись участника [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|обс.]]).", "createaccount-title": "{{SITENAME}}: создание учётной записи", "createaccount-text": "Кто-то создал учётную запись «$2» на сервере проекта {{SITENAME}} ($4), указав ваш адрес электронной почты. \n\nПароль учётной записи — «$3». Вам следует авторизоваться на сайте и изменить пароль.\n\nПроигнорируйте данное сообщение, если учётная запись была создана по ошибке.", - "login-throttled": "Вы сделали слишком много попыток представиться системе.\nПожалуйста, подождите $1 перед тем, как попробовать снова.", + "login-throttled": "Вы сделали слишком много попыток входа.\nПожалуйста, подождите $1 перед тем, как попробовать снова.", "login-abort-generic": "Не удалось представиться системе — отменено", "login-migrated-generic": "Ваша учётная запись была перенесена, и ваше имя участника больше не существует в этой вики.", "loginlanguagelabel": "Язык: $1", @@ -607,7 +608,7 @@ "retypenew": "Повторите ввод нового пароля:", "resetpass_submit": "Установить пароль и представиться", "changepassword-success": "Ваш пароль был изменён!", - "changepassword-throttled": "Вы сделали слишком много попыток представиться системе.\nПожалуйста, подождите $1 перед тем, как попробовать снова.", + "changepassword-throttled": "Вы сделали слишком много попыток входа.\nПожалуйста, подождите $1 перед тем, как попробовать снова.", "botpasswords": "Пароли ботов", "botpasswords-summary": "Пароли бота позволяют получить доступ к учётной записи пользователя через API без использования логина и пароля главной учётной записи. Права участника при входе с паролем бота могут быть ограничены.\n\nЕсли Вы не знаете, зачем это нужно, воздержитесь от использования этой страницы. Никто никогда не должен просить вас, чтобы вы создали и сообщили его.", "botpasswords-disabled": "Пароли бота отключены.", @@ -729,8 +730,8 @@ "subject-preview": "Предпросмотр темы/заголовка:", "previewerrortext": "При попытке отобразить предварительный просмотр ваших изменений произошла ошибка.", "blockedtitle": "Участник заблокирован", - "blockedtext": "Ваша учётная запись или IP-адрес заблокированы.\n\nБлокировка произведена администратором $1.\nУказана следующая причина: «$2».\n\n* Начало блокировки: $8\n* Окончание блокировки: $6\n* Цель блокировки: $7\n\nВы можете связаться с $1 или любым другим [[{{MediaWiki:Grouppage-sysop}}|администратором]], чтобы обсудить блокировку.\nОбратите внимание, что не сможете использовать функцию «письмо участнику», если в своих [[Special:Preferences|персональных настройках]] не задали или не подтвердили корректный адрес электронной почты, или если ваша блокировка включает запрет отправки писем подобным образом.\nВаш IP-адрес — $3, идентификатор блокировки — $5.\nПожалуйста, указывайте эти сведения в любых своих обращениях.", - "autoblockedtext": "Ваш IP-адрес автоматически заблокирован в связи с тем, что он ранее использовался кем-то из участников, заблокированных {{GENDER:$4|участником|участницей}} $1. \nБыла указана следующая причина блокировки:\n\n: «$2».\n\n* Начало блокировки: $8\n* Окончание блокировки: $6\n* Цель блокировки: $7\n\nВы можете связаться с $1 или любым другим [[{{MediaWiki:Grouppage-sysop}}|администратором]], чтобы обсудить блокировку.\n\nОбратите внимание, что не сможете использовать функцию «письмо участнику», если в своих [[Special:Preferences|персональных настройках]] не задали или не подтвердили корректный адрес электронной почты, или если ваша блокировка включает запрет отправки писем подобным образом.\n\nВаш IP-адрес — $3, идентификатор блокировки — #$5.\nПожалуйста, указывайте эти сведения в любых своих обращениях.", + "blockedtext": "Ваша учётная запись или IP-адрес заблокированы.\n\nБлокировка произведена администратором $1.\nУказана следующая причина: «$2».\n\n* Начало блокировки: $8\n* Окончание блокировки: $6\n* Цель блокировки: $7\n\nВы можете связаться с $1 или любым другим [[{{MediaWiki:Grouppage-sysop}}|администратором]], чтобы обсудить блокировку.\nОбратите внимание, что вы не сможете использовать функцию «письмо участнику», если в своих [[Special:Preferences|персональных настройках]] не задали или не подтвердили корректный адрес электронной почты, или если ваша блокировка включает запрет отправки писем подобным образом.\nВаш IP-адрес — $3, идентификатор блокировки — $5.\nПожалуйста, указывайте эти сведения в любых своих обращениях.", + "autoblockedtext": "Ваш IP-адрес автоматически заблокирован в связи с тем, что он ранее использовался кем-то из участников, заблокированных {{GENDER:$4|участником|участницей}} $1. \nБыла указана следующая причина блокировки:\n\n: «$2».\n\n* Начало блокировки: $8\n* Окончание блокировки: $6\n* Цель блокировки: $7\n\nВы можете связаться с $1 или любым другим [[{{MediaWiki:Grouppage-sysop}}|администратором]], чтобы обсудить блокировку.\n\nОбратите внимание, что вы не сможете использовать функцию «письмо участнику», если в своих [[Special:Preferences|персональных настройках]] не задали или не подтвердили корректный адрес электронной почты, или если ваша блокировка включает запрет отправки писем подобным образом.\n\nВаш IP-адрес — $3, идентификатор блокировки — #$5.\nПожалуйста, указывайте эти сведения в любых своих обращениях.", "systemblockedtext": "Ваше имя участника или IP-адрес были автоматически заблокированы MediaWiki.\nУказана следующая причина:\n\n:$2\n\n* Начало блокировки: $8\n* Окончание блокировки: $6\n* Цель блокировки: $7\n\nВаш текущий IP-адрес $3.\nПожалуйста, указывайте все эти сведения в любых своих обращениях.", "blockednoreason": "причина не указана", "whitelistedittext": "Вы должны $1 для изменения страниц.", @@ -747,7 +748,7 @@ "anontalkpagetext": "----\nЭта страница обсуждения анонимного участника, который ещё не создал учётной записи или не использует её.\nПоэтому мы вынуждены для его/её идентификации использовать цифровой IP-адрес.\nЭтот же адрес может использоваться нескольким другим участникам.\nЕсли вы анонимный участник и полагаете, что получили сообщения, адресованные не вам, пожалуйста, [[Special:CreateAccount|создайте учётную запись]] или [[Special:UserLogin|представьтесь системе]], чтобы впредь избежать возможной путаницы с другими анонимными участниками.", "noarticletext": "В настоящий момент текст на данной странице отсутствует.\nВы можете [[Special:Search/{{PAGENAME}}|найти упоминание данного названия]] на других страницах,\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} найти соответствующие записи журналов]\nили '''[{{fullurl:{{FULLPAGENAME}}|action=edit}} создать страницу с таким названием]'''.", "noarticletext-nopermission": "В настоящее время на этой странице нет текста.\nВы можете [[Special:Search/{{PAGENAME}}|найти упоминание данного названия]] на других страницах,\nили [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} найти соответствующие записи журналов]. У вас нет разрешения создать данную страницу.", - "missing-revision": "Версия $1 страницы «{{FULLPAGENAME}}» не существует.\n\nЭто обычно бывает, если последовать по устаревшей ссылке на страницу, которая была удалена.\nПодробности могут быть в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале удалений].", + "missing-revision": "Версия $1 страницы «{{FULLPAGENAME}}» не существует.\n\nОбычно это бывает, если проследовать по устаревшей ссылке на удалённую страницу.\nПодробности могут быть в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале удалений].", "userpage-userdoesnotexist": "Учётной записи «$1» не существует. Убедитесь, что вы действительно желаете создать или изменить эту страницу.", "userpage-userdoesnotexist-view": "Не зарегистрировано учётной записи «$1».", "blocked-notice-logextract": "{{GENDER:$1|Этот участник|Эта участница}} в данный момент {{GENDER:$1|заблокирован|заблокирована}}.\nНиже приведена последняя запись из журнала блокировок:", @@ -805,8 +806,8 @@ "permissionserrorstext-withaction": "У вас нет прав на $2 по {{PLURAL:$1|1=следующей причине|следующим причинам}}:", "contentmodelediterror": "Вы не можете редактировать эту версию, поскольку модель её содержания — $1, отличающаяся от текущей модели содержания страницы — $2.", "recreate-moveddeleted-warn": "'''Внимание. Вы пытаетесь воссоздать страницу, которая ранее удалялась.'''\n\nПроверьте, действительно ли вам нужно воссоздавать эту страницу.\nНиже приведены журналы удалений и переименований этой страницы.", - "moveddeleted-notice": "Эта страница была удалена.\nДля справки ниже показаны соответствующие записи из журналов удалений и переименований.", - "moveddeleted-notice-recent": "К сожалению, эта страница была недавно удалена (в течение последних 24 часов).\nНиже для справки приведены журналы удаления и перемещения для этой страницы.", + "moveddeleted-notice": "Эта страница была удалена.\nНиже для справки приведены журналы удаления, защиты и перемещения для этой страницы.", + "moveddeleted-notice-recent": "К сожалению, эта страница была недавно удалена (в течение последних 24 часов).\nНиже для справки приведены журналы удаления, защиты и перемещения для этой страницы.", "log-fulllog": "Просмотреть журнал целиком", "edit-hook-aborted": "Правка отменена процедурой-перехватчиком.\nДополнительных разъяснений не приведено.", "edit-gone-missing": "Невозможно обновить страницу.\nВероятно, она была удалена.", @@ -1075,7 +1076,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": "Другие настройки", @@ -1096,7 +1097,7 @@ "recentchangescount": "Количество правок, отображаемое по умолчанию:", "prefs-help-recentchangescount": "Включает свежие правки, истории страниц, журналы.", "prefs-help-watchlist-token2": "Это секретный ключ для веб-канала вашего списка наблюдений.\nЛюбой, кто знает его, сможет читать ваш список наблюдения, поэтому не сообщайте его другим. [[Special:ResetTokens|Нажмите здесь, если вам нужно сбросить его]].", - "savedprefs": "Ваши настройки сохранены.", + "savedprefs": "Настройки сохранены.", "savedrights": "Группы пользователя {{GENDER:$1|$1}} были сохранены.", "timezonelegend": "Часовой пояс:", "localtime": "Местное время:", @@ -1122,7 +1123,7 @@ "prefs-custom-css": "Собственный CSS", "prefs-custom-js": "Собственный JS", "prefs-common-css-js": "Общие CSS/JS для всех тем оформления:", - "prefs-reset-intro": "Эта страница может быть использована для сброса ваших настроек на настройки по умолчанию.\nПодтвердив данное действие, вы не сможете его отменить.", + "prefs-reset-intro": "Эта страница может быть использована для сброса ваших настроек на стандартные.\nУчтите, что это действие невозможно отменить.", "prefs-emailconfirm-label": "Подтверждение электронной почты:", "youremail": "Электронная почта:", "username": "{{GENDER:$1|Имя участника|Имя участницы}}:", @@ -1137,11 +1138,11 @@ "prefs-help-signature": "Комментарии на страницах обсуждений должны быть подписаны посредством добавления символов «~~~~», которые будут преобразованы в вашу подпись и время.", "badsig": "Неверная подпись. Проверьте корректность HTML-тегов.", "badsiglength": "Слишком длинная подпись.\nПодпись не должна превышать $1 {{PLURAL:$1|символа|символа|символов}}.", - "yourgender": "Какое описание вам более подходит?", + "yourgender": "Какое описание подходит для вас больше всего?", "gender-unknown": "При упоминании вас, программное обеспечение будет по возможности использовать гендерно-нейтральные слова", "gender-male": "Он редактирует страницы вики", "gender-female": "Онa редактирует страницы вики", - "prefs-help-gender": "Этот параметр задавать необязательно.\nДвижок использует это значение, чтобы обращаться к вам и упоминать вас в правильном грамматическом роде.\nЭта информация будет общедоступной.", + "prefs-help-gender": "Этот параметр задавать необязательно.\nЗначение будет использовано для того, чтобы обращаться к вам и упоминать вас в правильном грамматическом роде.\nЭта информация будет общедоступной.", "email": "Электронная почта", "prefs-help-realname": "Вводить настоящее имя необязательно.\nЕсли вы заполните его, оно может быть использовано для указания авторства ваших работ.", "prefs-help-email": "Адрес почты не обязателен, но это единственный способ восстановить забытый пароль.", @@ -1163,8 +1164,8 @@ "prefs-displaywatchlist": "Настройки отображения", "prefs-tokenwatchlist": "Токен", "prefs-diffs": "Разница версий", - "prefs-help-prefershttps": "Эта настройка будет применена после следующего представления системе.", - "prefswarning-warning": "Вы внесли в свои настройки изменения, которые ещё не были сохранены.\nЕсли вы покинете эту страницу, не нажав «$1», настройки не будут обновлены.", + "prefs-help-prefershttps": "Этот параметр будет применён только после перезахода на сайт.", + "prefswarning-warning": "Вы внесли в свои настройки изменения, которые ещё не были сохранены.\nЕсли вы покинете эту страницу, не нажав «$1», то настройки обновлены не будут.", "prefs-tabs-navigation-hint": "Совет: Вы можете использовать клавиши стрелок влево и вправо для перехода между вкладками в списке вкладок.", "userrights": "Права участника", "userrights-lookup-user": "Выбор участника", @@ -1266,7 +1267,7 @@ "right-editmywatchlist": "редактирование своего списка наблюдения", "right-viewmyprivateinfo": "просмотр собственных личных данных (например, адрес электронной почты, настоящее имя)", "right-editmyprivateinfo": "правка собственных личных данных (например, адрес электронной почты, настоящее имя)", - "right-editmyoptions": "редактирование собственных предпочтений", + "right-editmyoptions": "редактирование собственных настроек", "right-rollback": "быстрый откат правок последнего участника", "right-markbotedits": "отметка откатываемых правок как правок бота", "right-noratelimit": "обход ограничений скорости", @@ -1302,7 +1303,7 @@ "grant-delete": "Удаление страниц, правок и записей журнала", "grant-editinterface": "Правка пространства имён MediaWiki и пользовательских CSS/JavaScript", "grant-editmycssjs": "Редактирование ваших пользовательских CSS/JavaScript", - "grant-editmyoptions": "Редактирование ваших пользовательских настроек", + "grant-editmyoptions": "Редактирование ваших настроек", "grant-editmywatchlist": "Редактирование вашего списка наблюдения", "grant-editpage": "Редактирование существующих страниц", "grant-editprotected": "Редактирование защищённых страниц", @@ -1391,8 +1392,10 @@ "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": "Группировать результаты по странице", "rcfilters-grouping-title": "Группировка", "rcfilters-activefilters": "Активные фильтры", "rcfilters-advancedfilters": "Расширенные фильтры", @@ -1402,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": "Чтобы сохранить настройки фильтра и повторно использовать их позже, щелкните значок закладки в области «Активный фильтр» ниже.", @@ -1418,8 +1422,7 @@ "rcfilters-savedqueries-add-new-title": "Сохранить текущие настройки фильтра", "rcfilters-restore-default-filters": "Восстановить фильтры по умолчанию", "rcfilters-clear-all-filters": "Очистить все фильтры", - "rcfilters-show-new-changes": "Показать новые изменения", - "rcfilters-previous-changes-label": "Ранее просмотренные изменения", + "rcfilters-show-new-changes": "Последние изменения", "rcfilters-search-placeholder": "Последние изменения фильтров (просмотрите или начните вводить)", "rcfilters-invalid-filter": "Недопустимый фильтр", "rcfilters-empty-filter": "Нет активных фильтров. Показываются все правки.", @@ -1432,7 +1435,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": "Ваш вклад.", @@ -1464,13 +1467,18 @@ "rcfilters-filter-minor-description": "Правки, которые автор пометил как малые.", "rcfilters-filter-major-label": "Обычные правки", "rcfilters-filter-major-description": "Правки, не помеченные как малые.", - "rcfilters-filtergroup-watchlist": "Страницы в Списке наблюдения", - "rcfilters-filter-watchlist-watched-label": "В Списке наблюдения", + "rcfilters-filtergroup-watchlist": "Страницы в списке наблюдения", + "rcfilters-filter-watchlist-watched-label": "В списке наблюдения", "rcfilters-filter-watchlist-watched-description": "Изменения страниц в вашем Списке наблюдения.", - "rcfilters-filter-watchlist-watchednew-label": "Новые изменения в Списке наблюдения", + "rcfilters-filter-watchlist-watchednew-label": "Новые изменения в списке наблюдения", "rcfilters-filter-watchlist-watchednew-description": "Правки на страницах из вашего списка наблюдения, которые вы не просмотрели с их совершения.", - "rcfilters-filter-watchlist-notwatched-label": "Нет в Списке наблюдения", + "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": "Правки содержимого, обсуждений, описания категорий…", @@ -1498,6 +1506,9 @@ "rcfilters-view-tags-tooltip": "Результаты фильтра, использующего метки правок", "rcfilters-view-return-to-default-tooltip": "Вернуться в главное меню фильтров", "rcfilters-liveupdates-button": "Обновлять автоматически", + "rcfilters-liveupdates-button-title-on": "Отключить автоматические обновления", + "rcfilters-liveupdates-button-title-off": "Показывать новые изменения сразу после их появления", + "rcfilters-watchlist-markSeen-button": "Отметить все изменения как просмотренные", "rcnotefrom": "Ниже {{PLURAL:$5|указано изменение|перечислены изменения}} с $3, $4 (показано не более $1).", "rclistfromreset": "Сбросить выбор даты", "rclistfrom": "Показать изменения с $3 $2.", @@ -2246,8 +2257,8 @@ "deletereasonotherlist": "Другая причина", "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действуйте с осторожностью.", + "delete-toobig": "У этой страницы очень длинная история изменений (более $1 {{PLURAL:$1|версии|версий}}).\nУдаление таких страниц было запрещено во избежание нарушений в работе сайта «{{SITENAME}}».", + "delete-warning-toobig": "У этой страницы очень длинная история изменений (более $1 {{PLURAL:$1|версии|версий}}).\nЕё удаление может привести к нарушению нормальной работы базы данных сайта «{{SITENAME}}»;\nдействуйте с осторожностью.", "deleteprotected": "Вы не можете удалить эту страницу, поскольку она защищена.", "deleting-backlinks-warning": "Предупреждение: [[Special:WhatLinksHere/{{FULLPAGENAME}}|Другие страницы]] ссылаются на страницу, которую вы собираетесь удалить, или содержат её.", "deleting-subpages-warning": "Предупреждение: У страницы, которую вы собираетесь удалить, имеется [[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|$1 подстраница|$1 подстраницы|$1 подстраниц|51=более 50 подстраниц}}]].", @@ -2291,8 +2302,8 @@ "modifiedarticleprotection": "изменён уровень защиты страницы «[[$1]]»", "unprotectedarticle": "снята защита с «[[$1]]»", "movedarticleprotection": "перенёс настройки защиты с «[[$2]]» на «[[$1]]»", - "protectedarticle-comment": "Защитил{{GENDER:$2||а}} «[[$1]]»", - "modifiedarticleprotection-comment": "Изменил{{GENDER:$2||а}} уровень защиты «[[$1]]»", + "protectedarticle-comment": "Защитил{{GENDER:$2||а}} [[$1]]", + "modifiedarticleprotection-comment": "Изменил{{GENDER:$2||а}} уровень защиты [[$1]]", "unprotectedarticle-comment": "Cнял{{GENDER:$2||а}} защиту с «[[$1]]»", "protect-title": "Установка уровня защиты для «$1»", "protect-title-notallowed": "Просмотр уровня защиты «$1»", @@ -2551,7 +2562,7 @@ "ipbnounblockself": "Вы не можете разблокировать самого себя", "lockdb": "Сделать базу данных доступной только для чтения", "unlockdb": "Восстановить возможность записи в базу данных", - "lockdbtext": "Блокировка базы данных приостановит для всех участников возможность редактировать страницы, изменять настройки,\nизменять списки наблюдения и производить другие действия, требующие доступа к базе данных.\nПожалуйста, подтвердите, что это — именно то, что вы хотите сделать, и что вы снимете блокировку как только закончите\nпроцедуру обслуживания базы данных.", + "lockdbtext": "Блокировка базы данных приостановит возможность редактировать страницы, изменять настройки,\nсписки наблюдения и производить другие действия, требующие доступа к базе данных для всех участников.\nПожалуйста, подтвердите, что вы действительно хотите это сделать, и что вы снимете блокировку как только закончите\nпроцедуру обслуживания базы данных.", "unlockdbtext": "Разблокирование базы данных восстановит для всех участников\nвозможность редактировать страницы, изменять настройки, изменять списки наблюдения и производить\nдругие действия, требующие доступа к базе данных.\nПожалуйста, подтвердите, что вы намерены это сделать.", "lockconfirm": "Да, я действительно хочу заблокировать базу данных на запись.", "unlockconfirm": "Да, я действительно хочу снять блокировку базы данных.", @@ -2704,7 +2715,7 @@ "import-nonewrevisions": "Никакие правки не были импортированы (все уже либо были обработаны, либо пропущены из-за ошибок).", "xml-error-string": "$1 в строке $2, позиции $3 (байт $4): $5", "import-upload": "Загрузить XML-данные", - "import-token-mismatch": "Потеряны данные сеанса.\n\nВозможно, вы завершили сеанс работы. Пожалуйста, убедитесь, что вы всё ещё авторизованы, и попробуйте снова.\nЕсли это всё равно не помогло, попробуйте [[Special:UserLogout|выйти из системы]] и войти заново, а также проверьте, что ваш браузер позволяет принимать cookies с этого сайта.", + "import-token-mismatch": "Потеряны данные сеанса.\n\nВозможно, вы завершили сеанс работы. '''Пожалуйста, убедитесь, что вы всё ещё авторизованы, и попробуйте снова.'''\nЕсли это всё равно не помогло, попробуйте [[Special:UserLogout|выйти из системы]] и войти заново, а также проверьте, что ваш браузер позволяет принимать cookies с этого сайта.", "import-invalid-interwiki": "Невозможно импортировать из указанной вики.", "import-error-edit": "Страница «$1» не была импортирована, так как вам не разрешено её редактировать.", "import-error-create": "Страница «$1» не была импортирована, так как вам не разрешено её создавать.", @@ -3687,6 +3698,13 @@ "compare-invalid-title": "Указанное вами название недопустимо.", "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)", @@ -4046,7 +4064,7 @@ "authmanager-provider-password": "Аутентификация на основе пароля", "authmanager-provider-password-domain": "Проверка подлинности на основе пароля и домена", "authmanager-provider-temporarypassword": "Временный пароль", - "authprovider-confirmlink-message": "На основании ваших последних попыткок входа, учётные записи могут быть связаны с вашей учётной записью в вики. Их связывание даёт возможность входа через эти учётные записи. Пожалуйста, выберите, какие из них должны быть связаны между собой.", + "authprovider-confirmlink-message": "На основании ваших последних попыток входа, учётные записи могут быть связаны с вашей учётной записью в вики. Их связывание даёт возможность входа через эти учётные записи. Пожалуйста, выберите, какие из них должны быть связаны между собой.", "authprovider-confirmlink-option": "$1 ($2)", "authprovider-confirmlink-request-label": "Учётные записи, которые должны быть связаны", "authprovider-confirmlink-success-line": "$1: успешно связан.", diff --git a/languages/i18n/sa.json b/languages/i18n/sa.json index 7875342afd..fab6663ec8 100644 --- a/languages/i18n/sa.json +++ b/languages/i18n/sa.json @@ -30,6 +30,7 @@ "tog-hideminor": "सद्योजातानां परिवर्तनानां लघूनि सम्पादनानि गोप्यन्ताम्", "tog-hidepatrolled": "सद्योजातानां परिवर्तनानां परिशीलितानि सम्पादनानि गोप्यन्ताम्", "tog-newpageshidepatrolled": "नूतनपृष्ठानाम् आवलेः परिशीलितानि पृष्ठानि गोप्यन्त्ताम्", + "tog-hidecategorization": "पृष्ठानां श्रेणीविभाजनं न दर्श्यताम् ।", "tog-extendwatchlist": "न केवलं सद्योजातानि अपि तु निरीक्षासूचेः सर्वाणि परिवर्तनानि दृश्यन्ताम्", "tog-usenewrc": "सद्यः परिवर्तनावल्यां, निरीक्षासूचौ च पृष्ठानि विभागानुसारं प्रदर्श्यन्ताम् (जावा-लिपिः अपेक्ष्यते)", "tog-numberheadings": "शीर्षकाणि स्वयमेव यथाक्रमं करोतु", @@ -40,6 +41,7 @@ "tog-watchdefault": "मया सम्पादितानि पृष्ठानि मम निरीक्षासूचौ योज्यन्ताम्।", "tog-watchmoves": "मया चालितानि पृष्ठानि मम निरीक्षासूचौ योज्यन्ताम्।", "tog-watchdeletion": "मया अपाकृतानि पृष्ठानि मम निरीक्षासूचौ योज्यन्ताम्।", + "tog-watchuploads": "मया आरोपिताः नूतनसञ्चिकाः मम निरीक्षासूच्यां योजनीयाः ।", "tog-watchrollback": "मया प्रत्यापन्नानि (rollback) पृष्ठानि मम निरीक्षासूचौ योज्यताम् ।", "tog-minordefault": "मम सर्वाणि सम्पादनानि लघुत्वेन प्रदर्श्यन्ताम् ।", "tog-previewontop": "सम्पादनात् पूर्वं प्राग्दृश्यं दर्श्यताम् ।", @@ -163,13 +165,7 @@ "anontalk": "सम्भाषणम्", "navigation": "सञ्चरणम्", "and": " तथा च", - "qbfind": "अन्विष्यताम्", - "qbbrowse": "अन्विष्यताम्", - "qbedit": "सम्पाद्यताम्", - "qbpageoptions": "इदं पृष्ठम्", - "qbmyoptions": "मम पृष्ठानि", "faq": "सामान्यजिज्ञासाः (FAQ)", - "faqpage": "Project:सामान्यजिज्ञासाः(FAQ)", "actions": "क्रियाः", "namespaces": "नामाकाशाः", "variants": "पाठभेदाः", @@ -194,29 +190,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": "फलकपृष्ठं दृश्यताम्", @@ -2905,7 +2891,6 @@ "fileduplicatesearch-noresults": "\"$1\" इति नाम्ना सञ्चिका न दृष्टा ।", "specialpages": "विशिष्टपृष्ठानि", "specialpages-note-top": "तालिका", - "specialpages-note": "* विशिष्टपृष्ठानि । \n* प्रतिबन्धितानि विशिष्टपृष्ठानि ।", "specialpages-group-maintenance": "निर्वहणवृत्तानि ।", "specialpages-group-other": "अन्यविशेषपुटानि ।", "specialpages-group-login": "प्रविश्यताम् / लेखा सृज्यताम्", diff --git a/languages/i18n/sd.json b/languages/i18n/sd.json index 907e6c7ccd..047d508183 100644 --- a/languages/i18n/sd.json +++ b/languages/i18n/sd.json @@ -35,7 +35,7 @@ "tog-shownumberswatching": "ڏسندڙ يوزرس جو انگ ڏيکاريو", "tog-oldsig": "توھان جو موجوده دستخط:", "tog-fancysig": "صحيح کي وڪيٽيڪسٽ سمجھو (ڪنھن خوڪار ڳنڍڻي کانسواءِ)", - "tog-uselivepreview": "سڌي سنئين پيش نگاھہ استعمال ڪريو", + "tog-uselivepreview": "صفحي کي ٻيھر اتارڻ سواءِ پيش نگاھ ڏيکاريو", "tog-watchlisthideown": "نظر ۾ فھرست مان منھنجون ترميمون لڪايو", "tog-watchlisthidebots": "نظر ۾ فھرست تان بوٽ جون ترميمون لڪايو", "tog-watchlisthideminor": "نظر ۾ فھرست تان معمولي ترميمون لڪايو", @@ -552,8 +552,8 @@ "permissionserrorstext": "هيٺين {{PLURAL:$1|سبب|سببن}} ڪري، توهان کي اهو ڪرڻ جي اجازت حاصل ڪانهي.", "permissionserrorstext-withaction": "ھيٺين {{PLURAL:$1|سبب|سببن}} ڪري، توھان کي $2 جي اجازت ڪانھي.", "recreate-moveddeleted-warn": "'''خبردار: توھان اھڙو صفحو نئين سِر سرجي رھيا آھيو جيڪو اڳ ڊاٺو ويو آھي.'''\n\nبھتر ٿيندو تہ توھان سوچي وٺو تہ ڇا ان صفحي کي سنوارڻ چڱو ٿيندو.\nتوهان جي سھولت خاطر ھتي ان صفحي جو ڊاٺ لاگ ميسر ڪجي ٿو:", - "moveddeleted-notice": "ھيءُ صفحو ڊھي چڪو آهي. \nحوالي طور ڊاٺ ۽ چور لاگ ھيٺ ڏجن ٿا.", - "moveddeleted-notice-recent": "معاف ڪندا، هيءُ صفحو تازو ئي ڊاٺو ويو آهي (پوين 24 ڪلاڪن اندر). حوالي طور ڊاٺ ۽ چور لاگ هيٺ پيش ڪجي ٿو:", + "moveddeleted-notice": "ھيءُ صفحو ڊھي چڪو آهي. \nحوالي طور صفحي جا ڊاھ، حفاظت ۽ چورڻ لاگ ھيٺ ڏنل آھن.", + "moveddeleted-notice-recent": "معاف ڪجو، هيءُ صفحو تازو ئي ڊاٺو ويو ھو (پوين 24 ڪلاڪن اندر). حوالي طور صفحي جا ڊاھ، حفاظت ۽ چورڻ لاگ ھيٺ ڏنل آھن.", "log-fulllog": "پُورو لاگ ڏسو", "edit-conflict": "سنوار تڪرار", "postedit-confirmation-created": "هيءُ صفحو سرجي چڪو آهي.", @@ -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 443e98e1ec..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": "ⴰⵙⵉⵏⴰⵙ", @@ -67,9 +67,9 @@ "fri": "Asimwas", "sat": "Asidyas", "january": "ⵉⵏⵏⴰⵢⵔ", - "february": "brayr", + "february": "ⴼⴱⵔⴰⵢⵔ", "march": "ⵎⴰⵔⵚ", - "april": "Ibrir", + "april": "ⴰⴱⵔⵉⵍ", "may_long": "ⵎⴰⵢⵢⵓ", "june": "ⵢⵓⵏⵢⵓ", "july": "ⵢⵓⵍⵢⵓⵣ", @@ -79,7 +79,7 @@ "november": "ⵏⵓⵡⴰⵏⴱⵉⵔ", "december": "ⴷⵓⵊⴰⵏⴱⵉⵔ", "january-gen": "ⵉⵏⵏⴰⵢⵔ", - "february-gen": "Brayr", + "february-gen": "ⴼⴱⵔⴰⵢⵔ", "march-gen": "ⵎⴰⵔⵚ", "april-gen": "Ibrir", "may-gen": "ⵎⴰⵢⵢⵓ", @@ -88,12 +88,12 @@ "august-gen": "ⵖⵓⵛⵜ", "september-gen": "ⵛⵓⵜⴰⵏⴱⵉⵔ", "october-gen": "ⴽⵜⵓⴱⵔ", - "november-gen": "ⵏⵓⵡⴰⵏⴱⵉⵔ", + "november-gen": "ⵏⵓⵡⴰⵎⴱⵉⵔ", "december-gen": "ⴷⵓⵊⴰⵏⴱⵉⵔ", "jan": "ⵉⵏⵏ", "feb": "brayr", "mar": "ⵎⴰⵔ", - "apr": "Ibrir", + "apr": "ⴰⴱⵔ", "may": "ⵎⴰⵢ", "jun": "ⵢⵓⵏ", "jul": "ⵢⵓⵍ", @@ -111,40 +111,40 @@ "october-date": "$1 ⴽⵜⵓⴱⵔ", "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", - "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}}.", + "pagecategories": "{{PLURAL:$1|ⵜⴰⴳⴳⴰⵢⵜ|ⵜⴰⴳⴳⴰⵢⵉⵏ}}", + "category_header": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⵏ ⵜⴰⴳⴳⴰⵢⵜ \"$1\"", + "subcategories": "ⵜⵉⴷⵓⴳⴳⴰⵢⵉⵏ", + "category-media-header": "ⵎⵉⴷⵢⴰ ⵏ ⵜⴰⴳⴳⴰⵢⵜ \"$1\"", + "category-empty": "ⵜⴰⴳⴳⴰⵢⵜ ⴰⴷ ⵓⵔ ⵜⵓⵎⵢ ⵖⵉⵍⴰⴷ ⴽⵔⴰ ⵏ ⵜⴰⵙⵏⴰ ⵏⵖ ⴰⴼⴰⵢⵍⵓ.", + "hidden-categories": "{{PLURAL:$1|ⵜⴰⴳⴳⴰⵢⵜ ⵉⵏⵜⵍⵏ|ⵜⴰⴳⴳⴰⵢⵉⵏ ⵏⵜⵍⵏⵉⵏ}}", + "hidden-category-category": "ⵜⴰⴳⴳⴰⵢⵉⵏ ⵏⵜⵍⵏⵉⵏ", + "category-subcat-count": "{{PLURAL:$2|ⵜⴰⴳⴳⴰⵢⵜ ⴰⴷ ⵓⵔ ⵜⵓⵎⵢ ⴰⴱⵍⴰ ⵜⴰⴷⵓⴳⴳⴰⵢⵜ ⴰⴷ ⵉⵍⵍⴰⵏ ⴷⴷⴰⵡ ⴰⵙ.|ⵜⴰⴳⴳⴰⵢⵜ ⴰⴷ ⵜⵓⵎⵢ $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": "Tisniwin ɣ llan izdayn rzanin", - "about": "ⵅⴼ", + "broken-file-category": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⵖ ⵍⵍⴰⵏ ⵉⵍⵉⵏⴽⵏ ⵔⵥⴰⵏⵉⵏ", + "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.", - "tagline": "ⵣⴳ {{SITENAME}}", + "returnto": "ⴰⵖⵓⵍ ⵏⵏ ⵙ $1.", + "tagline": "ⵣⵖ {{SITENAME}}", "help": "ⵜⵉⵡⵉⵙⵉ", "search": "ⵙⵉⴳⴳⵍ", "searchbutton": "ⵙⵉⴳⴳⵍ", @@ -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": "ⵙⵏⴼⵍ", @@ -169,31 +169,31 @@ "specialpage": "ⵜⴰⵙⵏⴰ ⵉⵥⵍⵉⵏ", "personaltools": "ⵉⵎⴰⵙⵙⵏ ⵉⵏⵉⵎⴰⵏⴻⵏ", "talk": "ⴰⵎⵙⴰⵡⴰⵍ", - "views": "Ẓr.. (Mel)", + "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.", - "copyrightpage": "{{ns:project}}:Izrfan n umgay", + "aboutsite": "ⴼ {{SITENAME}}", + "aboutpage": "Project:ⵖⴼ", + "copyright": "ⵜⴻⵜⵜⵢⵓⴼⵙⵔ ⵜⵓⵎⴰⵢⵜ ⵖ ⵓⵏⵛⴽ ⵏ $1, ⵉⵖ ⵓⵔ ⵉⵏⵏⵉ ⴽⵔⴰ ⵎⴳⴰⵍ ⵏ ⵖⴰⵢⴰⴷ.", + "copyrightpage": "{{ns:project}}:ⵉⵣⵔⴼⴰⵏ ⵏ ⵓⵎⴳⴰⵢ", "currentevents": "Immussutn n ɣila", "currentevents-url": "Project:Immussutn n ɣilad", "disclaimers": "ⵉⵙⵎⵉⴳⵍⵏ", @@ -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,51 +219,51 @@ "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": "Mel aɣbalu", + "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", - "red-link-title": "$1 (tasna yad ur tlli)", + "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", "nstab-help": "ⵜⴰⵙⵏⴰ ⵏ ⵜⵡⵉⵙⵉ", - "nstab-category": "ⴰⵙⵎⵉⵍ", + "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_tip": "Azday uwgns", - "extlink_sample": "http://www.example.com azwl n uzday", - "extlink_tip": "Azday n brra (af ur ttut amzwir http://prefix)", + "link_sample": "ⴰⵣⵡⵍ ⵏ ⵓⵍⵉⵏⴽ", + "link_tip": "ⴰⵍⵉⵏⴽ ⴰⴳⵯⵏⵙⴰⵏ", + "extlink_sample": "http://www.example.com ⴰⵣⵡⵍ ⵏ ⵓⵍⵉⵏⴽ", + "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", - "showpreview": "Iẓṛi amzwaru", - "showdiff": "Mel imbddln lli ifttun", + "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).", - "noarticletext": "ɣilad ur illa walu may ityuran f tasnatad ad, tzdart at [[Special:Search/{{PAGENAME}}|search for this page title]] in other pages,\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} search the related logs],\nulla cabba [{{fullurl:{{FULLPAGENAME}}|action=edit}} edit this page].", + "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": "Agdal", + "template-protected": "(ⵉⵜⵜⵢⵓⴼⵔⴰⴳ)", "template-semiprotected": "Azin-ugdal", - "hiddencategories": "{{PLURAL:$1|Taggayt iḥban|Taggayin ḥbanin}} lli ɣtlla tasba yad :", - "permissionserrors": "ⵜⴰⵣⴳⵍⵜ ⴳ ⵜⵓⵔⴰⴳⵜ", + "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": "Imal (wad yuckan)", - "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", + "next": "ⵓⴹⴼⵉⵔ", + "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,111 +449,111 @@ "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}})", - "searchresults": "Mad akkan icnubcn", - "searchresults-title": "ⵜⵉⵢⴰⴼⵓⵜⵉⵏ ⵏ ⵓⵔⵣⵣⵓ ⵅⴼ \"$1\"", + "searchresults": "ⵜⵉⵢⴰⴼⵓⵜⵉⵏ ⵏ ⵓⵔⵣⵣⵓ", + "searchresults-title": "ⵜⵉⵢⴰⴼⵓⵜⵉⵏ ⵏ ⵓⵔⵣⵣⵓ ⴼ \"$1\"", "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": "Fsr $1 tayafut{{PLURAL:$1||s}} s tasna", - "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.}}", + "shown-title": "ⵎⵍ $1 {{PLURAL:$1|ⵜⵢⴰⴼⵓⵜ|ⵜⵢⴰⴼⵓⵜⵉⵏ}} ⵉ ⵜⴰⵙⵏⴰ", + "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": "Multimedia", + "searchprofile-images": "ⴰⴳⵜⵎⵉⴷⵢⴰ", "searchprofile-everything": "ⴰⴽⴽⵯ", - "searchprofile-advanced": "motaqqadim", - "searchprofile-articles-tooltip": "ⵙⵉⴳⴳⵍ ⴳ $1", + "searchprofile-advanced": "Advanced", + "searchprofile-articles-tooltip": "ⵙⵉⴳⴳⵍ ⵖ $1", "searchprofile-images-tooltip": "ⵙⵉⴳⴳⵍ ⵉⴼⴰⵢⵍⵓⵜⵏ", - "searchprofile-everything-tooltip": "ⵙⵉⴳⴳⵍ ⴳ ⵜⵓⵎⴰⵢⵜ ⴽⵓⵍⵍⵓ ⵜⵜ (ⵓⵍⴰ ⴳ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵏ ⵓⵎⵙⴰⵡⴰⵍ)", - "searchprofile-advanced-tooltip": "Cabba ɣ igmmaḍn li tuyzlaynin", + "searchprofile-everything-tooltip": "ⵙⵉⴳⴳⵍ ⵖ ⵜⵓⵎⴰⵢⵜ ⴽⵓⵍⵍⵓ ⵜⵜ (ⵓⵍⴰ ⵖ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵏ ⵓⵎⵙⴰⵡⴰⵍ)", + "searchprofile-advanced-tooltip": "ⵙⵉⴳⴳⵍ ⵖ custom namespaces", "search-result-size": "$1 ({{PLURAL:$2|1 ⵜⴳⵓⵔⵉ|$2 ⵜⴳⵓⵔⵉⵡⵉⵏ}})", "search-result-category-size": "$1 {{PLURAL:$1|ⵓⴳⵎⴰⵎ|ⵉⴳⵎⴰⵎⵏ}} ($2 {{PLURAL:$2|ⵡⴰⴷⵓⵎⵙⵉⵍ|ⵉⴷⵓⵎⵙⵉⵍⵏ}}, $3 {{PLURAL:$3|ⵓⴼⴰⵢⵍⵓ|ⵉⴼⴰⵢⵍⵓⵜⵏ}})", "search-redirect": "(Asmmati $1)", "search-section": "(ⵜⵉⴳⵣⵎⵉ $1)", - "search-category": "(ⴰⵙⵎⵉⵍ $1)", - "search-suggest": "ⵉⵙ ⵜⵔⵉⴷ ⴰⴷ ⵜⵉⵏⵉⴷ: $1", + "search-category": "(ⵜⴰⴳⴳⴰⵢⵜ $1)", + "search-suggest": "ⵉⵙ ⵜⵔⵉⵜ ⴰⴷ ⵜⵉⵏⵉⵜ: $1", "search-interwiki-caption": "Tiwuriwin taytmatin", "search-interwiki-default": "ⵜⵉⵢⴰⴼⵓⵜⵉⵏ ⵏ $1:", "search-interwiki-more": "(ⵓⴳⴳⴰⵔ)", "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,16 +586,16 @@ "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-feed-description": "ⴹⴼⵓⵔ ⵉⵙⵏⴼⵍⵏ ⴰⴽⴽⵯ ⵉⴳⴳⵯⵔⴰⵏ ⵏ ⵓⵡⵉⴽⵉ ⴳ ⵉⴼⵉⵍⵉ ⴰⴷ.", + "recentchanges-summary": "ⴹⴼⵓⵔ ⴰⵎⴰⵢⵏⵓ ⴰⴽⴽⵯ ⵖ ⵉⵙⵏⴼⵉⵍⵏ ⵏ ⵓⵡⵉⴽⵉ ⵖ ⵜⴰⵙⵏⴰ ⴰⴷ.", + "recentchanges-feed-description": "ⴹⴼⵓⵔ ⵉⵙⵏⴼⵉⵍⵏ ⴰⴽⴽⵯ ⵉⴳⴳⵯⵔⴰⵏ ⵏ ⵓⵡⵉⴽⵉ ⵖ ⵉⴼⵉⵍⵉ ⴰⴷ.", "recentchanges-label-newpage": "ⵉⵙⵏⵓⵍⴼⴰ ⵓⵙⵏⴼⵍ ⴰⴷ ⵢⴰⵜ ⵜⴰⵙⵏⴰ ⵜⴰⵎⴰⵢⵏⵓⵜ", "recentchanges-label-minor": "ⵡⴰⴷ ⵉⴳⴰ ⴰⵙⵏⴼⵍ ⵓⵎⵥⵉⵢ", "recentchanges-label-bot": "ⴰⵙⵏⴼⵍ ⴰⴷ ⵉⵙⴽⵔ ⵜ ⵢⴰⵏ ⵓⵔⵓⴱⵓ", @@ -606,27 +608,31 @@ "rcfilters-days-show-days": "$1 {{PLURAL:$1|ⵡⴰⵙⵙ|ⵡⵓⵙⵙⴰⵏ}}", "rcfilters-savedqueries-new-name-label": "ⵉⵙⵎ", "rcfilters-filterlist-whatsthis": "ⵎⴰⵜⵜⴰ ⵓⵢⴰ?", - "rcfilters-filter-bots-label": "ⴱⵓⵜ", - "rcnotefrom": "Had imbddln lli ittuyskarn z '''$2''' ('''$1''' ɣ uggar).", - "rclistfrom": "Mel imbdeltn imaynutn z $3 $2", + "rcfilters-filter-bots-label": "ⴰⵔⵓⴱⵓ", + "rcnotefrom": "ⴷⴷⴰⵡ ⴰⵙ {{PLURAL:$5|ⴰⵙⵏⴼⵍ|ⵉⵙⵏⴼⵉⵍⵏ}} ⵣⵖ $3, $4 (ⴰⵔ $1 ⴰⴷ ⵉⴱⴰⵢⵏⴻⵏ ⵙ ⵉⴳⴳⵓⵜ).", + "rclistfrom": "ⵎⵍ ⵉⵙⵏⴼⵉⵍⵏ ⵉⵎⴰⵢⵏⵓⵜⵏ ⵣⵖ $3 ⵖ $2", "rcshowhideminor": "$1 ⵉⵙⵏⴼⵉⵍⵏ ⵓⵎⵥⵉⵢⵏ", "rcshowhideminor-hide": "ⵙⵙⵏⵜⵍ", "rcshowhidebots": "$1 ⵉⵔⵓⴱⵓⵜⵏ", + "rcshowhidebots-show": "ⵎⵍ", "rcshowhidebots-hide": "ⵙⵙⵏⵜⵍ", "rcshowhideliu": "$1 ⵉⵙⵎⵔⴰⵙⵏ ⵣⵎⵎⴻⵎⵏⵉⵏ", + "rcshowhideliu-show": "ⵎⵍ", "rcshowhideliu-hide": "ⵙⵙⵏⵜⵍ", "rcshowhideanons": "$1 midn ur ttuyssan nin", + "rcshowhideanons-show": "ⵎⵍ", "rcshowhideanons-hide": "ⵙⵙⵏⵜⵍ", "rcshowhidepatr": "$1 ⵉⵙⵏⴼⵉⵍⵏ ⵜⵜⵡⴰⵃⴹⴰⵏⵉⵏ", "rcshowhidepatr-hide": "ⵙⵙⵏⵜⵍ", "rcshowhidemine": "$1 ⵉⵙⵏⴼⵉⵍⵏ ⵉⵏⵓ", + "rcshowhidemine-show": "ⵎⵍ", "rcshowhidemine-hide": "ⵙⵙⵏⵜⵍ", "rcshowhidecategorization-hide": "ⵙⵙⵏⵜⵍ", "rclinks": "Ml id $1 n imbddltn immgura li ittuyskarn n id $2 ussan ad gguranin", "diff": "ⴰⵎⵣⴰⵔⴰⵢ", "hist": "ⴰⵎⵣⵔⵓⵢ", "hide": "ⵙⵙⵏⵜⵍ", - "show": "Mel", + "show": "ⵎⵍ", "minoreditletter": "ⵎⵥⵢ", "newpageletter": "ⵎⵢⵏ", "boteditletter": "ⴱ", @@ -634,17 +640,17 @@ "number_of_watching_users_pageview": "[$1 iżŗi {{PLURAL:$1|amsqdac|imsqdacn}}]", "rc_categories_any": "wanna", "rc-change-size": "$1", - "rc-change-size-new": "$1 {{PLURAL:$1|ⴱⴰⵢⵜ|ⵉⴷ ⴱⴰⵢⵜ}} ⴷⴼⴼⵉⵔ ⵓⵙⵏⴼⵍ", + "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", "recentchangeslinked-title": "ⵉⵙⵏⴼⵉⵍⵏ ⵇⵇⵏⵏⵉⵏ ⵙ \"$1\"", - "recentchangeslinked-summary": "Ɣid umuɣ iymbddeln li ittyskarnin tigira yad ɣ tisniwin li ittuyzdayn d kra n tasna (ulla i igmamn n kra taggayt ittuyzlayn). Tisniwin ɣ [[Special:Watchlist|Umuɣ n tisniwin li ttsaggat]].", + "recentchangeslinked-summary": "ⵉⵙⵏⴼⵉⵍⵏ ⵜⵜⵢⵓⵙⴽⴰⵔⵏⵉⵏ ⵜⵉⴳⵉⵔⴰ ⴰⴷ ⵉ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵏⵏⴰ ⵙⵔⵙⵏⵜ ⵜⴻⵜⵜⴰⵡⵉ ⴽⵔⴰ ⵏ ⵜⴰⵙⵏⴰ ⵉⵥⵍⵉⵏ (ⵏⵖ ⵉ ⵉⴳⵎⴰⵎⵏ ⵏ ⴽⵔⴰ ⵏ ⵜⴰⴳⴳⴰⵢⵜ ⵉⵥⵍⵉⵏ).\nⵜⴰⵙⵏⵉⵡⵉⵏ ⵍⵍⴰⵏⵉⵏ ⵖ [[Special:Watchlist|ⵜⵍⴳⴰⵎⵜ ⵏⵏⴽ/ⵎ ⵏ ⵓⴹⴼⴼⵓⵔ]] ⵍⵍⴰⵏⵜ ⵙ ⵜⵉⵔⵔⴰ ⵣⵓⵔⵏⵉⵏ.", "recentchangeslinked-page": "ⵉⵙⵎ ⵏ ⵜⴰⵙⵏⴰ:", - "recentchangeslinked-to": "Afficher les changements vers les pages liées au lieu de la page donnée\nMel imbddeln z tisniwin li ittuyzdayni bla tasna li trit.", + "recentchangeslinked-to": "ⵎⵍ ⵉⵙⵏⴼⵉⵍⵏ ⵏ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵇⵇⵏⵏⵉⵏ ⵙ ⵜⴰⵙⵏⴰ instead", "upload": "ⵙⴽⵜⵔ ⴽⵔⴰ ⵏ ⵓⴼⴰⵢⵍⵓ", "uploadbtn": "ⵙⴽⵜⵔ ⴰⴼⴰⵢⵍⵓ", "reuploaddesc": "Sbidd asrbu d turrit", @@ -663,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": "ⵜⵓⵔⴰⴳⵜ", @@ -677,67 +683,69 @@ "listfiles-latestversion-no": "ⵓⵀⵓ", "file-anchor-link": "ⴰⴼⴰⵢⵍⵓ", "filehist": "ⴰⵎⵣⵔⵓⵢ ⵏ ⵓⴼⴰⵢⵍⵓ", - "filehist-help": "Adr i asakud/tizi bac attżrt manik as izwar usddaw ɣ tizi yad", + "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": "ⴰⵅⴼⴰⵡⴰⵍ", - "imagelinks": "Izdayn n usdaw", + "filehist-comment": "ⴰⵖⴼⴰⵡⴰⵍ", + "imagelinks": "ⴰⵙⵇⴷⵛ ⵏ ⵓⴼⴰⵢⵍⵓ", "linkstoimage": "Tasna yad {{PLURAL:$1|izdayn n tasna|$1 azday n tasniwin}} s usdaw:", - "nolinkstoimage": "Ḥtta kra n tasna ur tra asdaw ad", + "nolinkstoimage": "ⵓⵔ ⵜⵍⵍⵉ ⴽⵔⴰ ⵏ ⵜⴰⵙⵏⴰ ⵉⵏⴰⵡⵍⵏ ⴰⴼⴰⵢⵍⵓ ⴰⴷ.", "sharedupload": "Asdawad z $1 tẓḍart at tsxdmt gr iswirn yaḍnin", - "sharedupload-desc-here": "ⴰⵙⴷⴰⵡ ⴰⴷ ⵉⴽⴽⴰⴷ ⵣ : $1. ⵜⵥⴹⴰⵔⵜ ⴰⵙⵙⵉ ⵜⵙⵡⵡⵓⵔ ⵖ ⵜⵉⵡⵓⵔⵉⵡⵉⵏ ⵜⴰⴹⵏ.\nⵓⴳⴳⴰⵔ ⴼⵍⵍⴰⵙ ⵍⵍⴰⵏ ⵖ [$2 ⵜⴰⵙⵏⴰ ⵏ ⵉⵎⵍⵓⵣⵣⵓⵜⵏ] ⵍⵍⵉ ⵉⵍⵍⴰⵏ ⵖⵉⴷ.", + "sharedupload-desc-here": "ⴰⴼⴰⵢⵍⵓ ⴰⴷ ⵉⴽⴽⴰ ⴷ $1 ⴷ ⵉⵥⴹⴰⵔ ⴰⴷ ⵢⵉⵍⵉ ⵉⵜⵜⵢⴰⵡⵙⵅⴷⴰⵎ ⵖ ⵉⵙⵏⴼⴰⵔⵏ ⵢⴰⴹⵏ.\nⴰⴳⵍⴰⵎ ⵉⵍⵍⴰⵏ ⵖ [$2 ⵜⴰⵙⵏⴰ ⵏⵏⵙ ⵏ ⵓⴳⵍⴰⵎ] ⵀⴰ ⵜ ⴷⴷⴰⵡ ⴰⵙ.", "uploadnewversion-linktext": "ⵙⴽⵜⵔ ⴽⵔⴰ ⵏ ⵜⵓⵏⵖⵉⵍⵜ ⵜⴰⵎⴰⵢⵏⵓⵜ ⵏ ⵓⴼⴰⵢⵍⵓ ⴰⴷ", "filedelete": "ⴽⴽⵙ $1", "filedelete-legend": "ⴽⴽⵙ ⴰⴼⴰⵢⵍⵓ", "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|byt|byt}}", - "ncategories": "$1 {{PLURAL:$1|ⵓⵙⵎⵉⵍ|ⵉⵙⵎⵉⵍⵏ}}", - "nlinks": "$1 {{PLURAL:$1|azday|izdayn}}", + "nbytes": "$1 {{PLURAL:$1|ⴱⴰⵢⵜ|ⵉⴷ ⴱⴰⵢⵜ}}", + "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": "Amsqdac", + "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": "Tisniwin kullu tnt", - "nextpage": "Tasna li rad yack ($1)", + "allpages": "ⴽⵓⵍⵍⵓ ⵜⴰⵙⵏⵉⵡⵉⵏ", + "nextpage": "ⵜⴰⵙⵏⴰ ⵜⵓⴹⴼⵉⵔⵜ ($1)", "prevpage": "Tasna li izrin $1", "allpagesfrom": "Mel tisniwin li ittizwirn z", "allpagesto": "Mel tasniwin li ttgurunin s", @@ -745,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": "ⵜⴰⵔⴰⴱⴱⵓⵜ", @@ -764,9 +772,9 @@ "watchthispage": "ⴹⴼⵓⵔ ⵜⴰⵙⵏⴰ ⴰⴷ", "unwatch": "ⵙⴱⴷⴷ ⴰⴹⴼⴼⵓⵔ", "watchlist-details": "{{PLURAL:$1|$1 ⵜⴰⵙⵏⴰ|$1 ⵜⴰⵙⵏⵉⵡⵉⵏ}} ⴳ ⵜⵍⴳⴰⵎⵜ {{GENDER:|ⵏⵏⴽ|ⵏⵏⵎ}} ⵏ ⵓⴹⴼⴼⵓⵔ, not separately counting talk pages.", - "wlshowlast": "Ml ikudan imggura $1 , ussan imggura $2 niɣd", + "wlshowlast": "ⵎⵍ $1 ⵜⵙⵔⴰⴳⵉⵏ ⴳⴳⵯⵔⴰⵏⵉⵏ, $2 ⵡⵓⵙⵙⴰⵏ ⴳⴳⵯⵔⴰⵏⵉⵏ", "watchlist-hide": "ⵙⵙⵏⵜⵍ", - "wlshowhidebots": "ⵉⴷ ⴱⵓⵜ", + "wlshowhidebots": "ⵉⵔⵓⴱⵓⵜⵏ", "watchlist-options": "ⵜⵉⵙⵖⴰⵍ ⵏ ⵜⵍⴳⴰⵎⵜ ⵏ ⵓⴹⴼⴼⵓⵔ", "watching": "ⵉⴹⴼⴰⵔ...", "unwatching": "Ur at sul ntsagga", @@ -777,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.", @@ -811,16 +819,16 @@ "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):", - "sp-contributions-newbies": "Ad ur tmlt abla tiwuriwin n wiyyaḍ", + "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", "sp-contributions-blocklog": "Tinɣmas n willi ttuyqqanin (blocage)", @@ -833,26 +841,27 @@ "sp-contributions-blocked-notice-anon": "Tansa yad IP ttuysbddad. Maf ittuysbddad illa ɣ uɣmmis n n willi n sbid. Mayad ɣ trit ad tsnt maɣ", "sp-contributions-search": "ⵙⵉⴳⴳⵍ ⵜⵓⵎⵓⵜⵉⵏ", "sp-contributions-username": "Tansa IP niɣ assaɣ nu umsqdac:", - "sp-contributions-toponly": "Ad urtmlt adla mat ittuyẓran tigira yad", + "sp-contributions-toponly": "ⵎⵍ ⵖⴰⵔ ⵉⵙⵏⴼⵉⵍⵏ ⴳⴰⵏⵉⵏ ⵜⵓⵏⵖⵉⵍⵉⵏ ⵜⵉⵎⵉⵔⴰⵏⵉⵏ", + "sp-contributions-newonly": "ⵎⵍ ⵖⴰⵔ ⵉⵙⵏⴼⵉⵍⵏ ⴳⴰⵏⵉⵏ ⵉⵙⵏⵓⵍⴼⵓⵜⵏ ⵏ ⵜⴰⵙⵏⵉⵡⵉⵏ", "sp-contributions-submit": "ⵙⵉⴳⴳⵍ", "sp-contributions-explain": "↓", - "whatlinkshere": "ⵎⴰⴷ ⵉⵇⵇⵏⴻⵏ ⵙ ⵖⵉⴷ", - "whatlinkshere-title": "Tisniwin li izdayn d \"$1\"", + "whatlinkshere": "ⵎⴰⴷ ⵉⵜⵜⴰⵡⵉⵏ ⵙ ⵖⵉⴷ", + "whatlinkshere-title": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⵜⵜⴰⵡⵉⵏⵉⵏ ⵙ \"$1\"", "whatlinkshere-page": "ⵜⴰⵙⵏⴰ:", - "linkshere": "Tasnawinad ar slkamnt i '''[[:$1]]''':", - "nolinkshere": "Ur llant tasniwin li izdin d '''[[:$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": "Azday s usdaw", - "whatlinkshere-prev": "{{PLURAL:$1|amzwaru|amzwaru $1}}", - "whatlinkshere-next": "{{PLURAL:$1|wali d yuckan|wali d yuckan $1}}", - "whatlinkshere-links": "← izdayn", + "isimage": "ⴰⵍⵉⵏⴽ ⵏ ⵓⴼⴰⵢⵍⵓ", + "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 izdayn", - "whatlinkshere-hideimages": "$1 izdayn awlaf", - "whatlinkshere-filters": "Istayn", + "whatlinkshere-hidelinks": "$1 ⵉⵍⵉⵏⴽⵏ", + "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", @@ -861,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": "ⵔⵏⵓ", @@ -897,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.", @@ -917,42 +926,42 @@ "tooltip-ca-undelete": "Rard imbddeln imzwura li ittyskarnin ɣ tasna yad", "tooltip-ca-move": "ⵙⵎⵓⵜⵜⵉ ⵜⴰⵙⵏⴰ ⴰⴷ", "tooltip-ca-watch": "ⵔⵏⵓ ⵜⴰⵙⵏⴰ ⴰⴷ ⵉ ⵜⵍⴳⴰⵎⵜ {{GENDER:|ⵏⵏⴽ|ⵏⵏⵎ}} ⵏ ⵓⴹⴼⴼⵓⵔ", - "tooltip-ca-unwatch": "ⵙⵉⵜⵜⵉ ⵜⴰⵙⵏⴰ ⴰⴷ ⵣⴳ ⵜⵍⴳⴰⵎⵜ {{GENDER:|ⵏⵏⴽ|ⵏⵏⵎ}} ⵏ ⵓⴹⴼⴼⵓⵔ", - "tooltip-search": "ⵙⵉⴳⴳⵍ ⴳ {{SITENAME}}", + "tooltip-ca-unwatch": "ⵙⵉⵜⵜⵉ ⵜⴰⵙⵏⴰ ⴰⴷ ⵣⵖ ⵜⵍⴳⴰⵎⵜ {{GENDER:|ⵏⵏⴽ|ⵏⵏⵎ}} ⵏ ⵓⴹⴼⴼⵓⵔ", + "tooltip-search": "ⵙⵉⴳⴳⵍ ⵖ {{SITENAME}}", "tooltip-search-go": "Ftu s tasna s w-assaɣ znd ɣ-wad iɣ tlla", - "tooltip-search-fulltext": "Cnubc aṭṛiṣad ɣ tisnatin", + "tooltip-search-fulltext": "ⵙⵉⴳⴳⵍ ⴰⴹⵔⵉⵙ ⴰⴷ ⵖ ⵜⴰⵙⵏⵉⵡⵉⵏ", "tooltip-p-logo": "ⴽⴽ ⴷ ⵜⴰⵙⵏⴰ ⵏ ⵓⵙⵏⵓⴱⴳ", "tooltip-n-mainpage": "ⴽⴽ ⴷ ⵜⴰⵙⵏⴰ ⵏ ⵓⵙⵏⵓⴱⴳ", "tooltip-n-mainpage-description": "ⴽⴽ ⴷ ⵜⴰⵙⵏⴰ ⵏ ⵓⵙⵏⵓⴱⴳ", - "tooltip-n-portal": "f' usenfar, matzdart atitskrt, maniɣrattaft ɣayli trit", + "tooltip-n-portal": "ⴼ ⵓⴱⵔⵓⵊⵉ, ⵎⴰⴷ ⵜⵥⴹⴰⵔⵜ ⴰⴷ ⵜ ⵜⵙⴽⵔⵜ, ⵎⴰⵏⵉ ⵔⴰⴷ ⵜⴰⴼⵜ ⵓⵎⵍⴰⵏ", "tooltip-n-currentevents": "Tiɣri izrbn i kullu maɣid immusn", - "tooltip-n-recentchanges": "ⵜⴰⵍⴳⴰⵎⵜ ⵏ ⵉⵙⵏⴼⵉⵍⵏ ⴳⴳⵯⵔⴰⵏⵉⵏ ⴳ ⵓⵡⵉⴽⵉ", - "tooltip-n-randompage": "Srbu yat tasna ɣik nna ka tga", + "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-recentchangeslinked": "Imbddln imaynutn n tisnatin li ittylkamn s tasna yad", + "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-specialpages": "ⵜⴰⵍⴳⴰⵎⵜ ⵏ ⴽⵓⵍⵍⵓ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵥⵍⵉⵏⵉⵏ", + "tooltip-t-print": "Printable version of this page", "tooltip-t-permalink": "Azday bdda i lqim n tasna yad", - "tooltip-ca-nstab-main": "Ẓr mayllan ɣ tasna", + "tooltip-ca-nstab-main": "ⵥⵔ ⵜⴰⵙⵏⴰ ⵏ ⵜⵓⵎⴰⵢⵜ", "tooltip-ca-nstab-user": "Ẓr tasna n useqdac", "tooltip-ca-nstab-media": "Iẓri n tasna n midya", - "tooltip-ca-nstab-special": "ⵜⴰⴷ ⵜⴳⴰ ⵢⴰⵜ ⵜⴰⵙⵏⴰ ⵉⵥⵍⵉⵏ, ⴷ ⵓⵔ ⵉⵎⴽⵉⵏ ⴰⴷ ⵜⵜ ⵜⵙⵏⴼⵍⴷ", + "tooltip-ca-nstab-special": "ⵜⴰⴷ ⵜⴳⴰ ⵢⴰⵜ ⵜⴰⵙⵏⴰ ⵉⵥⵍⵉⵏ, ⴷ ⵓⵔ ⵉⵎⴽⵉⵏ ⴰⴷ ⵜⵜ ⵜⵙⵏⴼⵍⵜ", "tooltip-ca-nstab-project": "Żr tasna n twwuri", - "tooltip-ca-nstab-image": "Źr tasna n usdaw", + "tooltip-ca-nstab-image": "ⵥⵔ ⵜⴰⵙⵏⴰ ⵏ ⵓⴼⴰⵢⵍⵓ", "tooltip-ca-nstab-mediawiki": "Żr tabrat nu-nagraw.", "tooltip-ca-nstab-template": "Żr tamudemt", "tooltip-ca-nstab-help": "Źr tasna nu-saws", - "tooltip-ca-nstab-category": "Źr tasna nu-stay", + "tooltip-ca-nstab-category": "ⵥⵔ ⵜⴰⵙⵏⴰ ⵏ ⵜⴰⴳⴳⴰⵢⵜ", "tooltip-minoredit": "ⵔⵛⵎ ⴰⵢⴰ ⵎⴰⵙ ⵉⴳⴰ ⴰⵙⵏⴼⵍ ⵓⵎⵥⵉⵢ", "tooltip-save": "Ḥbu imbddel nek", "tooltip-preview": "Mel(fsr) imbddeln nek, urat tḥibit matskert", - "tooltip-diff": "Mel (fsr) imbddeln li tskert u-ṭṛiṣ", + "tooltip-diff": "ⵎⵍ ⵎⴰⵏ ⵉⵙⵏⴼⵉⵍⵏ ⴰⴷ ⵜⵙⴽⵔⵜ ⵉ ⵓⴹⵔⵉⵙ", "tooltip-compareselectedversions": "Ẓr inaḥyatn gr sin lqimat li ttuystaynin ɣ tasna yad.", "tooltip-watch": "ⵔⵏⵓ ⵜⴰⵙⵏⴰ ⴰⴷ ⵉ ⵜⵍⴳⴰⵎⵜ {{GENDER:|ⵏⵏⴽ|ⵏⵏⵎ}} ⵏ ⵓⴹⴼⴼⵓⵔ", "tooltip-recreate": "Als askr n tasna yad waxxa ttuwḥiyyad", @@ -961,22 +970,23 @@ "tooltip-undo": "\"Sglb\" ḥiyd ambdl ad t mmurẓmt tasatmt n umbdl ɣ umuḍ tiẓri tamzwarut.", "tooltip-summary": "Skcm yat tayafut imẓẓin", "pageinfo-header-edits": "ⴰⵎⵣⵔⵓⵢ ⵏ ⵓⵙⵏⴼⵍ", + "pageinfo-length": "ⵜⵉⴷⴷⵉ ⵏ ⵜⴰⵙⵏⴰ (ⵙ ⵉⴷ ⴱⴰⵢⵜ)", "pageinfo-language": "ⵜⵓⵜⵍⴰⵢⵜ ⵏ ⵜⵓⵎⴰⵢⵜ ⵏ ⵜⴰⵙⵏⴰ", "pageinfo-language-change": "ⵙⵏⴼⵍ", "pageinfo-content-model-change": "ⵙⵏⴼⵍ", "pageinfo-firsttime": "ⴰⵙⴰⴽⵓⴷ ⵏ ⵓⵙⵏⵓⵍⴼⵓ ⵏ ⵜⴰⵙⵏⴰ", "pageinfo-lastuser": "ⴰⵎⵙⵏⴼⵍ ⵉⴳⴳⵯⵔⴰⵏ", - "pageinfo-lasttime": "ⴰⵙⴰⴽⵓⴷ ⵏ ⵓⵙⵏⴼⵍ ⵉⴳⴳⵯⵔⴰⵏ", + "pageinfo-lasttime": "ⴰⵙⴰⴽⵓⴷ ⵏ ⵓⵙⵏⴼⵍ ⴰⴽⴽⵯ ⵉⴳⴳⵯⵔⴰⵏ", "pageinfo-hidden-categories": "{{PLURAL:$1|ⴰⵙⵎⵉⵍ ⵉⵏⵜⵍⵏ|ⵉⵙⵎⵉⵍⵏ ⵏⵜⵍⵏⵉⵏ}} ($1)", "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 piksil, asdaw tugut: $3, MIME anaw: $4", + "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 ⵡⵓⵙⵙⴰⵏ}}", @@ -989,11 +999,12 @@ "variantname-shi-latn": "Tašlḥiyt", "variantname-shi": "disable", "metadata": "ⵎⵉⵜⴰⴷⴰⵜⴰ", - "metadata-help": "Asdaw ad llan gis inɣmisn yaḍnin lli tfl lkamira tuṭunit niɣd aṣfḍ n uxddam lliɣ ay sgadda asdaw ad", + "metadata-help": "ⵢⵓⵙⵢ ⵓⴼⴰⵢⵍⵓ ⴰⴷ ⵓⵎⵍⴰⵏ , lli tfl lkamira tuṭunit niɣd aṣfḍ n uxddam lliɣ ay sgadda asdaw ad.\nⵉⵖ ⵉⵏⴼⵍ ⵓⴼⴰⵢⵍⵓ ⵣⵖ ⴰⴷⴷⴰⴷ ⵏⵏⵙ ⴰⵏⵚⵍⵉ, .", "metadata-expand": "Ml ifruriyn lluzzanin", "metadata-collapse": "Aḥbu n ifruriyn lluzzanin", "metadata-fields": "Igran n isfkan n metadata li illan ɣ tabratad ran ilin ɣ tawlaf n tasna iɣ mzzin tiflut n isfka n mita\nWiyyaḍ raggis ḥbun s ɣiklli sttin kkan gantn.\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-orientation": "ⴰⵙⵡⴰⵍⴰ", + "exif-datetime": "ⴰⵙⴰⴽⵓⴷ ⴷ ⵡⴰⴽⵓⴷ ⵏ ⵓⵙⵏⴼⵍ ⵏ ⵓⴼⴰⵢⵍⵓ", "exif-flash": "ⴼⵍⴰⵛ", "exif-source": "ⴰⵙⴰⴳⵎ", "exif-languagecode": "ⵜⵓⵜⵍⴰⵢⵜ", @@ -1020,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": "ⴰⴽⴽⵯ", @@ -1049,14 +1060,14 @@ "img-lang-default": "(ⵜⵓⵜⵍⴰⵢⵜ ⵙ ⵓⵡⵏⵓⵍ)", "ascending_abbrev": "aryaqliw", "descending_abbrev": "aritgiiz", - "table_pager_next": "tawriqt tamaynut", + "table_pager_next": "ⵜⴰⵙⵏⴰ ⵜⵓⴹⴼⵉⵔⵜ", "table_pager_prev": "tawriqt izrin", "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", @@ -1080,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": "Astay n [[Special:Tags|balises]] :", - "tag-filter-submit": "Istayn", + "tag-filter": "ⵜⴰⵙⵜⵜⴰⵢⵜ ⵏ [[Special:Tags|ⵜⵔⵛⴰⵎⵉⵏ]]:", + "tag-filter-submit": "ⵜⴰⵙⵜⵜⴰⵢⵜ", "tags-title": "imarkiwn", "tags-source-header": "ⴰⵙⴰⴳⵎ", "tags-hitcount-header": "tghyiran markanin", @@ -1127,7 +1138,7 @@ "feedback-message": "ⵜⵓⵣⵉⵏⵜ:", "feedback-subject": "ⴰⵙⵏⵜⵍ:", "feedback-thanks-title": "ⵜⴰⵏⵎⵎⵉⵔⵜ!", - "searchsuggest-search": "ⵙⵉⴳⴳⵍ ⴳ {{SITENAME}}", + "searchsuggest-search": "ⵙⵉⴳⴳⵍ ⵖ {{SITENAME}}", "duration-days": "$1 {{PLURAL:$1|ⵡⴰⵙⵙ|ⵡⵓⵙⵙⴰⵏ}}", "expand_templates_ok": "ⵡⴰⵅⵅⴰ", "pagelanguage": "ⵙⵏⴼⵍ ⵜⵓⵜⵍⴰⵢⵜ ⵏ ⵜⴰⵙⵏⴰ", diff --git a/languages/i18n/shn.json b/languages/i18n/shn.json index d8258dacb1..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ဢၼ်ၸဝ်ႈၵဝ်ႇ ႁဵတ်းလွင်ႈလႅၵ်ႈလၢႆႈမႃးၸိူဝ်းၼၼ်ႉ ပႆႇလႆႈသိမ်းၵွၼ်ႇ။", @@ -615,7 +618,7 @@ "permissionserrorstext-withaction": "ၸဝ်ႈၵဝ်ႇဢမ်ႇမီးသုၼ်ႇ တႃႇ $2, တွၼ်ႈတႃႇ ၸိူဝ်း ဢၼ်ပဵၼ် {{PLURAL:$1|reason|လွင်ႈတၢင်း}}:", "contentmodelediterror": "ၸဝ်ႈၵဝ်ႇတေဢမ်ႇၸၢင်ႈ မႄးထတ်း ၵၢၼ်ၶူၼ်ႉၶႆႈၼႆႉ၊ ယွၼ်ႉပိူဝ်ႈဝႃႈ ၽၢင်တူဝ် ၶေႃႈၶဝ်ႈပႃး မၼ်းၼႆႉပဵၼ် $1, ဢၼ် ပႅၵ်ႇပိူင်ႈၵၼ်တၢင်း ၽၢင်တူဝ် ၶေႃႈၶဝ်ႈပႃး ၶွင်ႈၼႃႈလိၵ်ႈ $2 ၼႆႉ။", "recreate-moveddeleted-warn": "ၶေႃႈၽၢင်ႉပၼ် : ၸဝ်ႈၵဝ်ႇ ၶိုၼ်းၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈ ဢၼ်လႆႈ မွတ်ႇပႅတ်ႈၵႂႃႇဝႆႉၼၼ်ႉ။\n\nၸဝ်ႈၵဝ်ႇ ထုၵ်ႇလီဝူၼ်ႉတူၺ်းဝႃႈ ၸွင်ႇမၼ်းသၢင်ႇထုၵ်ႇ တွၼ်ႈတႃႇတေသိုပ်ႇ မႄးထတ်း ၼႃႈလိၵ်ႈၼႆႉဢၼ်ဝႃႈၼၼ်ႉ။\nသဵၼ်ႈလၢႆ မွတ်ႇပႅတ်ႈလႄႈ ၶၢႆႉဢွင်ႈ တွၼ်ႈတႃႇၼႃႈလိၵ်ႈၼႆႉ ၵမ်ႉထႅမ်ဝႆႉပၼ် ၵႃႈတီႈၼႆႈ တွၼ်ႈတႃႇ ႁႂ်းငၢႆႈလူမ်ၸႂ် :", - "moveddeleted-notice": "ၼႃႈလိၵ်ႈၼႆႉ မွတ်ႇပႅတ်ႈၵႂႃႇယဝ်ႉ။ လွင်ႈမွတ်ႇပႅတ်ႈလႄႈ လွင်ႈၶၢႆႉသၢႆမၢႆ တွၼ်ႈတႃႇ ၼႃႈလိၵ်ႈၼႆႉ ၵမ်ႉထႅမ်ဝႆႉပၼ် ၼင်ႇပႃႈတႂ်ႈၼႆႉယူႇ။ မၼ်းပဵၼ် တွၼ်ႈတႃႇ ႁဵတ်းၽိုၼ်ဢိင်ယဝ်ႉ။", + "moveddeleted-notice": "ၼႃႈလိၵ်ႈၼႆႉ မွတ်ႇပႅတ်ႈၵႂႃႇယဝ်ႉ။ လွင်ႈမွတ်ႇပႅတ်ႈ၊ လွင်ႈႁႄႉၵင်ႈ လႄႈ သၢႆမၢႆလွင်ႈၶၢႆႉ တွၼ်ႈတႃႇ ၼႃႈလိၵ်ႈၼႆႉ ၵမ်ႉထႅမ်ဝႆႉပၼ် ၼင်ႇပႃႈတႂ်ႈၼႆႉ ပဵၼ် တွၼ်ႈတႃႇ ႁဵတ်းၽိုၼ်ဢိင်ယဝ်ႉ။", "moveddeleted-notice-recent": "ယိၼ်းၶီၸွမ်ႈယူႇ၊ ၼႃႈလိၵ်ႈၼႆႉ တိုၵ်ႉႁႃထုၵ်ႇမွတ်ႇပႅတ်ႈ (ၼႂ်းၶၢဝ်းတၢင်း မိူဝ်ႈပူၼ်ႉမႃး 24 ၸူဝ်ႈမူင်း) ၼႆႉၵူၺ်း။ သဵၼ်ႈမၢႆ မွတ်ႇပႅတ်ႈ လႄႈ ၶၢႆႉဢွင်ႈတီႈ ၸိူဝ်းၼၼ်ႉ လႆႈၵမ်ႉထႅမ်ဝႆႉပၼ်ၼင်ႇၽၢႆႇတႂ်ႈ ႁႂ်ႈၸၢင်ႈပဵၼ် ၵၢၼ်ၽိုၼ်ဢိင်။", "log-fulllog": "တူၺ်း သဵၼ်ႈမၢႆဢၼ်တဵမ်ထူၼ်ႈ", "edit-hook-aborted": "ၵၢၼ်မႄးထတ်း ထုၵ်ႇလူတ်းပႅတ်တင်းၶေႃၵွင်ႉ။\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": "ၵဝ်ႇသုတ်း", @@ -754,6 +759,7 @@ "editundo": "ၶိုၼ်ၶိုၼ်း", "diff-empty": "(ဢမ်ႇမီးလွင်ႈပႅၵ်ႇပိူင်ႈ)", "diff-multi-sameuser": "({{PLURAL:$1|လွင်ႈၶူၼ်ႉၶႆႈ ပၢၼ်ၵၢင် |$1 လွင်ႈၶူၼ်ႉၶႆႈ ပၢၼ်ၵၢင်}} ​ပေႃးတႃႇ ၽူႈၸႂ်တိုဝ်းမိူၼ်ၵၼ် တေဢမ်ႇၼႄပၼ်)", + "diff-multi-otherusers": "({{PLURAL:$1|လွင်ႈၶူၼ်ႉၶႆႈမႄးၶိုၼ်း ပၢၼ်ၵၢင် |$1 လွင်ႈၶူၼ်ႉၶႆႈမႄးၶိုၼ်း ပၢၼ်ၵၢင်}} ​\n{{PLURAL:$2|ၽူႈၸႂ်ႉတိုဝ်း ထႅင်ႈၵေႃႉၼိုင်ႈ|$2 ၽူႈၸႂ်ႉတိုဝ်း}} ဢမ်ႇၼႄဝႆႉ)", "searchresults": "ၶူၼ်ႉႁႃၺႃး", "searchresults-title": "ၶူၼ်ႉႁႃၺႃးတွၼ်ႈတႃႇ \"$1\"", "titlematches": "ႁူဝ်ၶေႃႈ ၼႃႈလိၵ်ႈ ၶူပ်းၵၼ်ယူႇ", @@ -778,9 +784,11 @@ "searchprofile-everything-tooltip": "သွၵ်ႈႁႃလမ်းၼႂ်းတင်းမူတ်း (ဢိၵ်ႇပႃးၼႃႈလိၵ်ႈ ဢုပ်ႇဢူဝ်း)", "searchprofile-advanced-tooltip": "သွၵ်ႈႁႃတီႈၼႂ်း ဢွင်ႈတီႈၸိုဝ်ႈႁင်းတူဝ်", "search-result-size": "$1 ({{PLURAL:$2|1 ၶေႃႈ|$2 ၶေႃႈ}})", + "search-result-category-size": "{{PLURAL:$1|1 ၽူႈၶဝ်ႈၸုမ်း|$1 ၽူႈၶဝ်ႈၸုမ်း}} ({{PLURAL:$2|1 ၵၼ်ၽႄ|$2 ၵၼ်ၽႄ}}, {{PLURAL:$3|1 ၾၢႆႇ|$3 ၾၢႆႇ}})", "search-redirect": "(ပိၼ်ႇဝၢႆႇမႃးတီႈ $1)", "search-section": "(တွၼ်ႈၵၼ် $1)", "search-category": "(တွၼ်ႈၵၼ် $1)", + "search-file-match": "(လမ်းၼႂ်းၾၢႆႇဢၼ်မႅၼ်ႈၵၼ်)", "search-suggest": "ၶႂ်ႈဝႃႈ $1 - ၼႆႁႃႉ", "search-interwiki-caption": "ၽွၼ်းလႆႈ ၵႃႈတီႈ ၼႃႈၵၢၼ် ပီႈၼွင်ႉၵၼ်", "search-interwiki-default": "ၽွၼ်းလႆႈ ၵႃႈတီႈ $1 :", @@ -1088,17 +1096,16 @@ "rcfilters-empty-filter": "ဢမ်ႇမီးတူဝ်ထွင် ဢၼ်တူင်ႉၼိုင်။ ၵၢၼ်ၶဝ်ႈႁူမ်ႈတၢင်းသဵင်ႈၵေႃႈၼႄဝႆႉယူႇ။", "rcfilters-filterlist-title": "တူဝ်ထွင်", "rcfilters-filterlist-noresults": "ဢမ်ႇႁၼ်မီးတူဝ်ထွင်", - "rcfilters-filtergroup-registration": "လွင်ႈတၢင်ႇမၢႆၽၢင် ၽူႈၸႂ်ႉတိုဝ်း", - "rcfilters-filter-registered-label": "တၢင်ႇမၢႆၾၢင်ဝႆႉယဝ်ႉ", - "rcfilters-filter-registered-description": "ၽူႈမႄးထတ်းၶဝ် ၶဝ်ႈလွၵ်ႉဢိၼ်ႇဝႆႉ", - "rcfilters-filter-unregistered-label": "ဢမ်ႇလႆႈတၢင်ႇမၢႆႇၽၢင်ဝႆႉ", - "rcfilters-filter-unregistered-description": "ၽူႈမႄးထတ်း ၸိူဝ်းဢမ်ႇလႆႈၶဝ်ႈ လွၵ်ႉဢိၼ်ႇဝႆႉ", "rcfilters-filtergroup-authorship": "လွင်ႈၶဝ်ႈႁူမ်ႈ ၸဝ်ႈပၢႆၵမ်", "rcfilters-filter-editsbyself-label": "လွင်ႈ​လႅၵ်ႈလၢႆႈ ၸဝ်ႈၵဝ်ႇႁဵတ်း", "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": "ဢမ်ႇလႆႈတၢင်ႇမၢႆႇၽၢင်ဝႆႉ", + "rcfilters-filter-user-experience-level-unregistered-description": "ၽူႈမႄးထတ်း ၸိူဝ်းဢမ်ႇလႆႈၶဝ်ႈ လွၵ်ႉဢိၼ်ႇဝႆႉ", "rcfilters-filter-user-experience-level-newcomer-label": "ၵူၼ်းၼႃႈမႂ်ႇ", "rcfilters-filter-user-experience-level-newcomer-description": "ဢေႇလိူဝ် ၵၢၼ်မႄးထတ်း ႑႐ ဢၼ် လႄႈ လွင်ႈတူင်ႉၼိုင် တႃႇသီႇဝၼ်း", "rcfilters-filter-user-experience-level-learner-label": "ၽူႈလဵပ်ႈႁဵၼ်း", @@ -1342,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", @@ -1539,6 +1547,7 @@ "log": "သၢႆမၢႆ", "logeventslist-submit": "ၼႄ", "all-logs-page": "သဵၼ်ႈမၢႆၵူၼ်းတင်းၼမ် တင်းမူတ်း", + "alllogstext": "ႁူမ်ႈၵၼ်ၼႄဝႆႉပၼ် သဵၼ်ႈမၢႆတွင်း ၶွင် {{SITENAME}} ဢၼ်ၸၢင်ႈဢဝ်လႆႈၼၼ်ႉ။\nၸဝ်ႈၵဝ်ႇ ၸၢင်ႈ လိူၵ်ႈ လိူင်ႈသဵၼ်ႈမၢႆတွင်း၊ ၽူႈၸႂ်ႉတိုဝ်း(ၼင်ႇတူဝ်လိၵ်ႈလဵၵ်ႉယႂ်ႇ)၊ ဢမ်ႇၼၼ် ၼႃႈလိၵ်ႈဢၼ်ၵပ်းၵၢႆႇ (ၼင်ႇတူဝ်လိၵ်ႈလဵၵ်ႉယႂ်ႇ) သေၵေႃႈ တူၺ်းလႆႈယူႇ။", "logempty": "ဢမ်ႇငမ်ႇၵၼ်တင်း တီႈၼႂ်းသဵၼ်ႈမၢႆ", "log-title-wildcard": "ဢဝ်လိၵ်ႈၸိူဝ်းၼႆႉသေ တႄႇသွၵ်ႈႁႃ ႁူဝ်ၶေႃႈ", "showhideselectedlogentries": "လႅၵ်ႈလၢႆႈ ၵၢၼ်ႁၼ်လႆႈ ၶွင် ၶေႃႈၶူၼ်ႉဢၢၼ်ႇ ၸိူဝ်းလိူၵ်ႈဝႆႉ", @@ -1556,6 +1565,7 @@ "allinnamespace": "ၼႃႈလိၵ်ႈတင်းမူတ်း ($1 ဢွင်ႈၸိုဝ်ႈ)", "allpagessubmit": "သိုပ်ႇၵႂႃႇ", "allpagesprefix": "ၼႃးလိၵ်ႈဢၼ်ၼႄ ဢိၵ်ႇတင်း ၶေႃႈလူင်ႈၼႃႈ", + "allpages-hide-redirects": "သိူင်ႇ ၸိူဝ်းတူဝ်ပိၼ်ႇၸီႉ", "categories": "လိူင်ႈ", "sp-deletedcontributions-contribs": "လွင်ႈၶဝ်ႈႁူမ်ႈ", "linksearch": "သွၵ်ႈႁႃ ႁဵင်းၵွင်ႉၽၢႆႇၼွၵ်ႈ", @@ -1639,6 +1649,11 @@ "watchnologin": "ဢမ်ႇလႆႈၶဝ်ႈလွၵ်ႉဢိၼ်ႇဝႆ့", "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": "ၼႄ", "wlshowtime": "ပွင်ႈၶၢဝ်းယၢမ်း တွၼ်ႈတႃႇ ဢွၵ်ႇၼႄ:", @@ -1652,6 +1667,7 @@ "watchlist-options": "ၵၼ်လိူၵ်ႈသၢင်ႈ တူဝ်ပႂ်ႉတူၺ်း", "watching": "တိုၵ်ႉတူၺ်းယူႇ...", "unwatching": "ဢမ်ႇတူၺ်းဝႆႉ...", + "enotif_reset": "ႁဵတ်းၼႃႈလိၵ်ႈတင်းသဵင်ႈ ၼင်ႇဢႅဝ်ႇဝႆႉယဝ်ႉ", "enotif_impersonal_salutation": "{{SITENAME}} ၽူႈၸႂ်ႉတိုဝ်း", "enotif_subject_deleted": "ၼႃႈလိၵ်ႈ {{SITENAME}} $1 ၼႆႉ ထုၵ်ႇ $2 ၵေႃႉ {{GENDER:$2|မူတ်ႇပႅတ်ႈ}} ဢေႃႈ။", "enotif_subject_created": "ၼႃႈလိၵ်ႈ {{SITENAME}} $1 ၼႆႉ ထုၵ်ႇ $2 ၵေႃႉ {{GENDER:$2|ၵေႃႇသၢင်ႈဝႆႉ}} ဢေႃႈ", @@ -1701,6 +1717,8 @@ "logentry-contentmodel-change-revertlink": "ပိၼ်ႈၶိုၼ်း", "logentry-contentmodel-change-revert": "ပိၼ်ႈၶိုၼ်း", "protectlogpage": "မၢႆတမ်း ၵၢၼ်ႁေႉၵင်ႈ", + "protectedarticle": "ႁႄႉၵင်ႈဝႆႉ \"[[$1]]\"", + "modifiedarticleprotection": "ၸၼ်ႉထၢၼ်ႈလွင်ႈႁႄႉၵင်ႈ ဢၼ်လႅၵ်ႈလၢႆႈဝႆႉတႃႇ \"[[$1]]\"", "protect-default": "ၶႂၢင်းပၼ် ၽူႈၸႂ်ႉတိုဝ်း တၢင်းသဵင်ႈ", "protect-fallback": "ၶႂၢင်းပၼ် ၽူႈၸႂ်ႉတိုဝ်း ဢၼ်တင်း လွင်ႈၶႂၢင်းပၼ် \"$1\" ၼၼ်ႉၵူၺ်း", "protect-level-autoconfirmed": "ၶႂၢင်းပၼ် ၽူႈၸႂ်ႉတိုဝ်း ဢၼ်ၼႄႉၼွၼ်းႁင်းၵူၺ်းၼၼ်ႉ ၵူၺ်း", @@ -1738,11 +1756,15 @@ "tooltip-namespace_association": "လိူၵ်ႈပၼ် လွၵ်းၼႆႉ တႃႇတေႁႂ်ႈပႃး ၶေႃႈဢုပ်ႇဢူဝ်း ဢမ်ႇၼၼ် ၸိုဝ်ႈႁူဝ်ၶေႃႈ ဢၼ်ၵပ်းၵၢႆႇလူၺ်ႈ ႁူဝ်ၶေႃႈ ဢၼ်လိူၵ်ႈဝႆႉၼၼ်ႉ။", "blanknamespace": "ႁူဝ်ႁႅၵ်ႇ", "contributions": "{{GENDER:$1|User}} ၶဝ်ႈႁူမ်ႈပႃး", + "contributions-title": "လွင်ႈၶဝ်ႈႁူမ်ႈၽူႈၸႂ်ႉတိုဝ်း တွၼ်ႈတႃႇ $1", "mycontris": "လွင်ႈၶဝ်ႈႁူမ်ႈ", "anoncontribs": "လွင်ႈၶဝ်ႈႁူမ်ႈ", + "contribsub2": "တွၼ်ႈတႃႇ {{GENDER:$3|$1}} ($2)", + "nocontribs": "ဢမ်ႇမီးလွင်ႈလႅၵ်ႈလၢႆး ၸိူဝ်းဢၼ်ငမ်ႇမႅၼ်ႈၵၼ်တင်း ၶေႃႈမၵ်းမၢႆၸိူဝ်းၼႆႉ။", "uctop": "(ယၢမ်းလဵဝ်)", "month": "တႄႇဢဝ်လိူၼ် (လႄႈ ဢၼ်ပူၼ်ႉမႃး):", "year": "တႄႇဢဝ်ပီ (လႄႈ ဢၼ်ပူၼ်ႉမႃး):", + "sp-contributions-newbies": "ၼႄပၼ်လွင်ႈၶဝ်ႈႁူမ်ႈ ၶွင် ဢၶွင်ႉဢၼ်မႂ်ႇလၢႆလၢႆၵူၺ်းလႄႈ", "sp-contributions-newbies-sub": "တွၼ်ႈတႃႇဢၶွင်ႉ ဢၼ်မႂ်ႇ", "sp-contributions-blocklog": "မၢႆတမ်းၵၢၼ်​ႁေႉတတ်း", "sp-contributions-suppresslog": "လွင်ႈၶဝ်ႈႁူမ်ႈ {{GENDER:$1|ၽူႈၸႂ်ႉတိုဝ်း}} ဢၼ်ႁူမ်ႇလပ်ႉဝႆႉ", @@ -1868,6 +1890,7 @@ "ipb_hide_invalid": "ဢမ်ႇၸၢင်ႈႁူမ်ႇလပ်ႉဝႆႉ ဢၶွင်ႉဢၼ်ၼႆႉ; မၼ်းမီးလိူဝ်ဝႆႉ {{PLURAL:$1|လွင်ႈမႄးထတ်း ဢၼ်ၼိုင်ႈ|$1 လွင်ႈမႄးထတ်းတင်းၼမ်}}။", "ipb_already_blocked": "\"$1\" ၼႆႉ ထုၵ်ႇ ႁႄႉတတ်းဝႆႉယဝ်ႉ။", "ipb-needreblock": "$1 ၼႆႉ ထုၵ်ႇႁႄႉတတ်းဝႆႉယဝ်ႉ။ ၸွင်ႇၸဝ်ႈၵဝ်ႇ ၶႂ်ႈလႅၵ်ႈလၢႆႈ ၵၼ်တင်ႈႁိုဝ်?", + "proxyblocker": "တူဝ်ႁႄႉတတ်း ပရၢဝ်ႇသီႇ", "ipbnounblockself": "ၸဝ်ႈၵဝ်ႇ ဢမ်ႇမီးသုၼ်ႇ တွၼ်ႈတႃႇ ပိုတ်ႇသေႃးၶိုၼ်းတႃႇၸဝ်ႈၵဝ်ႇ။", "lockdb": "ၶတ်းယွင်ၶေႃႈမုၼ်း", "unlockdb": "ပိုတ်ႇသေႃး ယွင်ၶေႃႈမုၼ်း", @@ -2069,6 +2092,7 @@ "lastmodifiedatby": "ၼႃႈလိၵ်ႈဢၼ်ၼႆႉ ထုၵ်ႇ $3 ၵေႃႉမူၼ်ႉမႄးဝႆႉမိူဝ်ႈ $2, $1။", "spam_reverting": "လွင်ႈပိၼ်ႈၶိုၼ်း လွင်ႈၶူၼ်ႉၶႆႈ ၵမ်းလိုၼ်းသုတ်းၼၼ်ႉ မၼ်းဢမ်ႇၶဝ်ႈပႃးဝႆႉ ႁဵင်းၵွင်ႉ ဢၼ်ၵွင်ႉၸူး $1", "simpleantispam-label": "ၵူတ်ႇထတ်း Anti-spam.\nယႃႇပေထႅမ်ဢၼ်ၼႆႉသႂ်ႇ!", + "pageinfo-title": "လွၼ်ႉၶၢဝ်ႇ တွၼ်ႈတႃႇ \"$1\"", "pageinfo-header-basic": "�လွၼ်ႉၶၢဝ်ႈ ပိုၼ်ႉထၢၼ်", "pageinfo-header-edits": "ပိုၼ်းမႄးထတ်း", "pageinfo-header-restrictions": "လွင်ႈႁႄႉၵင်ႈၼႃႈလိၵ်ႈ", @@ -2081,11 +2105,15 @@ "pageinfo-language-change": "လႅၵ်ႈလၢႆႈ", "pageinfo-content-model": "ပိူင်ၵေႃႇသၢင်ႈ လမ်းၼႂ်း ၼႃႈလိၵ်ႈ", "pageinfo-content-model-change": "လႅၵ်ႈလၢႆႈ", + "pageinfo-robot-policy": "လွင်ႈ ၶိူင်ႈၸၢၵ်ႈၵေႃႉ ၸီႉၼႄပၼ်", "pageinfo-robot-index": "ၶႂၢင်းပၼ်ဝႆႉ", "pageinfo-robot-noindex": "ဢမ်ႇၶႂၢင်းပၼ်ဝႆႉ", "pageinfo-watchers": "တၢင်းၼမ် ၽူႈတူၺ်းၼႃႈလိၵ်ႈ", "pageinfo-visiting-watchers": "တၢင်းၼမ်ၽူႈၶဝ်ႈတူၺ်း ၼႃႈလိၵ်ႈ ၵေႃႉဢၼ် တိုၵ်ႉႁႃၶဝ်ႈဢႅဝ်တီႈ လွင်ႈမႄးထတ်း ၸိူဝ်းပႆႇပေႃးႁိုင်", "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": "ၽူႈမႄးထတ်း ၵေႃႉလိုၼ်းသုတ်း", @@ -2094,7 +2122,9 @@ "pageinfo-authors": "ႁူဝ်ႁုပ်ႈတၢင်းၼမ် ၽူႈတႅမ်ႈလိၵ်ႈ ပႅၵ်ႇပိူင်ႈ", "pageinfo-recent-edits": "တၢင်းၼမ်လွင်ႈမႄးထတ်း ၸိူဝ်းပႆႇပေႃးႁိုင် (တီႈၼႂ်း ၶၢဝ်းပူၼ်ႉမႃး $1)", "pageinfo-recent-authors": "တၢင်းၼမ် ၽူႈတႅမ်ႈလိၵ်ႈ ပႅၵ်ႇပိူင်ႈ ၸိူဝ်းဢၼ်ပႆႇပေႃးႁိုင်", + "pageinfo-magic-words": " {{PLURAL:$1|ၶေႃႈၵႂၢမ်း|ၶေႃႈၵႂၢမ်းၸိူဝ်း}} ($1) မေႃၽၢမ်း", "pageinfo-hidden-categories": "သိူင်ႇဝႆႉ {{PLURAL:$1|လိူင်ႈ|လိူင်ႈ(ၼမ်)}} ($1)", + "pageinfo-templates": "{{PLURAL:$1|ပိူင်တမ်း|ၸိူဝ်းပိူင်တမ်း}} ($1) ဢၼ်ႁဵတ်းဝႆႉ Transclude", "pageinfo-toolboxlink": "လွၼ်ႉၶၢဝ်ႇၼႃႈလိၵ်ႈ", "pageinfo-redirectsto": "ဝိၼ်ႇၵႂႃႇၸူး", "pageinfo-redirectsto-info": "လွၼ်ႉၶၢဝ်ႇ", @@ -2112,8 +2142,10 @@ "markaspatrolleddiff": "မၢႆဝႆႉၼင်ႇ ပႂ်ႉယၢမ်း", "markaspatrolledtext": "မၢႆဝႆႉၼႃႈလိၵ်ႈၼင်ႇ ပႂ်ႉယၢမ်း", "markedaspatrolled": "မၢႆဝႆႉၼင်ႇ ပႂ်ႉယၢမ်း", + "patrol-log-page": "သဵၼ်ႈမၢႆ လွင်ႈပႂ်ႉၵူတ်ႇထတ်း", "previousdiff": "ၵၢၼ်မႄးထတ်း ဢၼ်ၵဝ်ႇ", "nextdiff": "ထတ်းသၢင်ႈဢၼ်မႂ်ႇမႂ်ႇ", + "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|ၼႃႈလိၵ်ႈ|ၼႃႈလိၵ်ႈ။}}", "file-info-size": "$1 × $2 pixels, တၢင်းလဵၵ်ႉတၢင်းယႂ်ႇ ၾၢႆႇ: $3, ယိူင်ႈ MIME: $4", "file-info-size-pages": "$1 × $2 pixels, သႅၼ်းၾၢႆႇ: $3, ၸုပ်ႈ MIME: $4, $5 {{PLURAL:$5|ၼႃႈ|ၼႃႈ(ၼမ်)}}", "file-nohires": "ဢမ်ႇမီး ဢၼ်ႁႅင်းၸိုၼ်ႈသႂ်ႇမၼ်း သုင်သုင်", @@ -2197,16 +2229,37 @@ "version-extensions": "သၢႆလင် ၸိူဝ်းဢူၼ်းသႂ်ႇဝႆႉ�", "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": "ၵႃႈၶၼ်:", + "redirect-user": "ၽၢႆၽၢင် ၽူႈၸႂ်ႉတိုဝ်း", + "redirect-page": "မၢႆၽၢင် ၼႃႈလိၵ်ႈ", + "redirect-revision": "လွင်ႈမႄးၶိုၼ်းၼႃႈလိၵ်ႈ", + "redirect-file": "ၸိုဝ်ႈၾၢႆႇ", "specialpages": "ၼႃႈလိၵ်ႈ ၶိုၵ်ႉတွၼ်း", "tag-filter": "ၶတ်းလိူၵ်ႈဢဝ်[[Special:Tags|Tag]]:", "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Tag|Tags}}]]: $2)", + "tags-active-yes": "ၸႂ်ႈယဝ်ႉ", + "tags-active-no": "ဢမ်ႇ", + "tags-hitcount": "$1 {{PLURAL:$1|လႅၵ်ႈလၢႆႈ|ၸိူဝ်းလႅၵ်ႈလၢႆႈ}}", "logentry-delete-delete": "$1 {{GENDER:$2|မွတ်ႇယဝ်ႉ}} ၼႃႈလိၵ်ႈ $3", "logentry-delete-restore": "$1 {{GENDER:$2|ဢဝ်ၶိုၼ်း}} ၼႃႈလိၵ်ႈ $3 ($4)", + "logentry-delete-revision": "$1 {{GENDER:$2|လႅၵ်ႈလၢႆႈဝႆႉ}} လွင်ႈႁၼ်လႆႈၶွင် {{PLURAL:$5|လွင်ႈၶူၼ်ႉမႄးၶိုၼ်း|$5 လွင်ႈၶူၼ်ႉမႄးၶိုၼ်း}} တီႈၼိူဝ် ၼႃႈလိၵ်ႈ $3: $4", + "revdelete-content-hid": "လမ်းၼႂ်း ဢၼ်သိူင်ႇဝႆႉ", "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", + "logentry-upload-overwrite": "$1 {{GENDER:$2|လူတ်ႇၶိုၼ်ႈဝႆႉ}} မၢႆဢွၵ်ႇဢၼ်မႂ်ႇ ၶွင် $3", "searchsuggest-search": "ၶူၼ်ႉႁႃ {{SITENAME}}", + "duration-days": "$1 {{PLURAL:$1|ဝၼ်း|ဝၼ်း။}}", "mw-widgets-dateinput-no-date": "ပႆႇလိူၵ်ႈဝၼ်းယၢမ်း", + "randomrootpage": "ၼႃႈလိၵ်ႈငဝ်ႈႁၢၵ်ႈ ၵမ်ႉသၢင်ႇတေႃႇ", "revid": "ၶူၼ်ႉၶႆႈ $1", "pageid": "မၢႆၽၢင် ၽိုၼ်လိၵ်ႈ $1" } diff --git a/languages/i18n/sk.json b/languages/i18n/sk.json index 9daccbb295..0dd4975807 100644 --- a/languages/i18n/sk.json +++ b/languages/i18n/sk.json @@ -717,7 +717,8 @@ "permissionserrorstext": "Na to nemáte povolenie z {{PLURAL:$1|nasledujúceho dôvodu|nasledujúcich dôvodov}}:", "permissionserrorstext-withaction": "Nemáte oprávnenie $2 z {{PLURAL:$1|nasledovného dôvodu|nasledovných dôvodov}}:", "recreate-moveddeleted-warn": "'''Upozornenie: Opätovne vytvárate stránku, ktorá bola predtým zmazaná.'''\n\nMali by ste zvážiť, či je vhodné pokračovať v úpravách tejto stránky.\nĎalšie informácie si môžete pozrieť v zázname zmazaní a presunutí:", - "moveddeleted-notice": "Táto stránka bola zmazaná.\nĎalšie informácie si môžete pozrieť v zázname zmazaní a presunutí.", + "moveddeleted-notice": "Táto stránka bola zmazaná.\nĎalšie informácie si môžete pozrieť v zázname zmazaní, zamknutí a presunutí.", + "moveddeleted-notice-recent": "Ospravedlňujeme sa, ale táto stránka bola zmazaná (počas posledným 24 hodín).\nĎalšie informácie si môžete pozrieť v zázname zmazaní, zamknutí a presunutí.", "log-fulllog": "Zobraziť úplný záznam", "edit-hook-aborted": "Úpravu zrušila prídavná funkcia (prípojný bod syntaktického analyzátora).\nNeudala vysvetlenie.", "edit-gone-missing": "Nebolo možné aktualizovať stránku.\nZdá sa, že bola zmazaná.", @@ -3147,8 +3148,8 @@ "version-libraries-license": "Licencia", "version-libraries-description": "Popis", "version-libraries-authors": "Autori", - "redirect": "Presmerovanie podľa súboru, používateľa alebo ID revízie", - "redirect-summary": "Táto špeciálna stránka presmerováva na súbor (podľa názvu), stránku (podľa ID stránky alebo revízie) alebo používateľa (podľa číselného ID). Použitie: [[{{#Special:Redirect}}/file/Test.jpg]], [[{{#Special:Redirect}}/revision/328429]], resp. [[{{#Special:Redirect}}/user/101]].", + "redirect": "Presmerovanie podľa súboru, používateľa, ID revízie alebo ID protokolového záznamu.", + "redirect-summary": "Táto špeciálna stránka presmerováva na súbor (podľa názvu), stránku (podľa ID stránky alebo revízie), používateľa (podľa číselného ID) alebo protokolový záznam (podľa ID záznamu). Použitie: [[{{#Special:Redirect}}/file/Test.jpg]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]], resp. [[{{#Special:Redirect}}/logid/186]].", "redirect-submit": "Ísť", "redirect-lookup": "Vyhľadať:", "redirect-value": "Hodnota:", @@ -3168,7 +3169,6 @@ "fileduplicatesearch-noresults": "Súbor s názvom „$1“ nebol nájdený.", "specialpages": "Špeciálne stránky", "specialpages-note-top": "Legenda", - "specialpages-note": "* Bežné špeciálne stránky.\n* Špeciálne stránky s obmedzeným prístupom.", "specialpages-group-maintenance": "Údržbové správy", "specialpages-group-other": "Iné špeciálne stránky", "specialpages-group-login": "Prihlásenie / registrácia", @@ -3241,6 +3241,7 @@ "compare-invalid-title": "Názov, ktorý ste zadali nie je platný.", "compare-title-not-exists": "Názov, ktorý ste zadali neexistuje.", "compare-revision-not-exists": "Revízia, ktorú ste zadali, neexistuje.", + "diff-form": "'''formulár'''", "dberr-problems": "Prepáčte! Táto stránka má práve technické problémy.", "dberr-again": "Skúste niekoľko minút počkať a potom opäť načítať stránku.", "dberr-info": "(Spojenie s databázovým serverom neúspešné: $1)", @@ -3269,7 +3270,7 @@ "htmlform-datetime-placeholder": "RRRR-MM-DD HH:MM:SS", "logentry-delete-delete": "$1 zmazal stránku $3", "logentry-delete-delete_redir": "$1 {{GENDER:$2|zmazal|zmazala}} presunom presmerovanie $3", - "logentry-delete-restore": "$1 obnovil stránku $3", + "logentry-delete-restore": "$1 {{GENDER:$2|obnovil|obnovila}} stránku $3 ($4)", "logentry-delete-event": "$1 zmenil viditeľnosť {{PLURAL:$5|záznamu udalostí|$5 záznamov udalostí}} k stránke $3: $4", "logentry-delete-revision": "$1 {{GENDER:$2|zmenil|zmenila}} viditeľnosť {{PLURAL:$5|revízie|$5 revízií}} na stránke $3: $4", "logentry-delete-event-legacy": "$1 {{GENDER:$2|zmenil|zmenila}} viditeľnosť záznamov udalostí k stránke $3", @@ -3313,6 +3314,7 @@ "logentry-rights-rights-legacy": "$1 zmenil členstvo $3 v skupinách", "logentry-rights-autopromote": "$1 bol automaticky povýšený z $4 na $5", "logentry-upload-upload": "$1 {{GENDER:$2|pridal|pridala}} $3", + "logentry-upload-overwrite": "$1 {{GENDER:$2|nahral|nahrala}} novú verziu $3", "log-name-managetags": "Záznam správy značiek", "log-description-managetags": "Táto stránka obsahuje zoznam správcovských úkonov týkajúcich sa [[Special:Tags|značiek]]. Záznam obsahuje len akcie, zrealizované manuálne správcom. Značky môže vytvárať a mazať aj priamo softvér wiki, bez zmienky v tomto zázname.", "log-name-tag": "Záznam značiek", diff --git a/languages/i18n/skr-arab.json b/languages/i18n/skr-arab.json index 9092510af9..f52bc998e2 100644 --- a/languages/i18n/skr-arab.json +++ b/languages/i18n/skr-arab.json @@ -6,10 +6,15 @@ }, "tog-underline": "لنک ہیٹھ لکیر", "tog-hideminor": "چھوٹیاں تبدیلیاں لُکاؤ", + "tog-hidepatrolled": "تازہ تبدیلیاں وچوں زیرنگرانی تبدیلیاں لکاؤ", + "tog-hidecategorization": "ورقیاں دیاں قسم بندی لُکاؤ", "tog-numberheadings": "سرخیاں کوں خود کار نمبر ݙیوو", "tog-showtoolbar": "آلات ترمیم ݙکھاؤ", "tog-editondblclick": "ڈبل کلک نال ورقے وچ تبدیلیاں کرو", + "tog-oldsig": "تہاݙے موجودہ دستخط:", "tog-uselivepreview": "ورقہ ولدا لوڈ کیتے ٻاجھوں نمائش ݙکھاؤ", + "tog-watchlisthideminor": "چھوٹیاں تبدیلیاں اکھیں ہیٹھ فہرست وچوں لکاؤ", + "tog-watchlisthidecategorization": "ورقیاں دیاں قسم بندی لُکاؤ", "tog-showhiddencats": "لڳیاں قسماں ݙکھاؤ", "underline-always": "ہمیشہ", "underline-never": "کݙاہیں وی کائناں", @@ -87,9 +92,11 @@ "category_header": "زمرہ \"$1\" وچ ورقے", "subcategories": "ذیلی زمرہ جات", "category-media-header": "زمرہ \"$1\" وچ میڈیا", + "category-empty": "ایں قسم وچ اڄݨ تائیں کوئی ورقہ یا میڈیا کائنی۔", "hidden-categories": "{{PLURAL:$1|پوشیدہ زمرہ|پوشیدہ زمرہ جات}}", "hidden-category-category": "لکیاں قسماں", "listingcontinuesabbrev": "جاری۔", + "index-category": "فہرست شدہ ورقے", "noindex-category": "غیر فہرست شدہ صفحات", "broken-file-category": "ٹٹے ہوۓ جوڑاں آلے صفحے", "about": "تعارف", @@ -97,6 +104,7 @@ "newwindow": "(نویں ونڈو وچ کھولو)", "cancel": "مکاؤ", "moredotdotdot": "ٻئے", + "morenotlisted": "ایہ فہرست پوری کائنی", "mypage": "ورقہ", "mytalk": "ڳالھ مہاڑ", "anontalk": "ڳالھ مہاڑ", @@ -104,7 +112,7 @@ "and": " تے", "faq": "عام طور تے پچھے ونڄݨ آلے سوال", "actions": "کم", - "namespaces": "ناں دیاں جہاواں", + "namespaces": "ناں جاہیں", "variants": "قسماں", "navigation-heading": "فہرست رہنمائی", "errorpagetitle": "نقص", @@ -124,8 +132,9 @@ "view": "ݙکھالے", "view-foreign": "$1 تے ݙیکھو", "edit": "لکھو", + "edit-local": "مقامی تفصیل درج کرو", "create": "بݨاؤ", - "create-local": "آپنی لکھت رلاؤ", + "create-local": "آپݨی لکھت رَلاؤ", "delete": "مٹاؤ", "protect": "حفاظت کرو", "protect_change": "تبدیل کرو", @@ -154,8 +163,10 @@ "jumptonavigation": "رہنمائی", "jumptosearch": "ڳولو", "pool-errorunknown": "نامعلوم غلطی", + "poolcounter-usage-error": "استعمال وچ خامی: $1", "aboutsite": "{{SITENAME}} دا تعارف", "aboutpage": "Project:تعارف", + "copyright": "مواد $1 دے تحت مل سڳدے، جے تائیں کوئی ٻئی ڳالھ نہ ہوسے۔", "copyrightpage": "{{ns:project}}:حقوق تصانیف", "currentevents": "حالیہ واقعات", "currentevents-url": "Project:حالیہ واقعات", @@ -165,10 +176,12 @@ "helppage-top-gethelp": "مدد", "mainpage": "وݙا ورقہ", "mainpage-description": "پہلا ورقہ", + "policy-url": "Project:پالیسی", "portal": "بیٹھک", "portal-url": "Project:دیوان عام", "privacy": "پرائیویسی پالیسی", "privacypage": "Project:پرائیویسی پالیسی", + "badaccess": "نقص اجازت", "ok": "ٹھیک ہے", "retrievedfrom": "\"$1\" توں گھدا", "youhavenewmessages": "{{PLURAL:$3| تہاݙے کیتے}} $1 ($2).", @@ -180,7 +193,7 @@ "editlink": "لکھو", "viewsourcelink": "ماخذ ݙیکھو", "editsectionhint": "حصہ لکھو: $1", - "toc": "حصے", + "toc": "شامل حصے", "showtoc": "ݙیکھاؤ", "hidetoc": "لُکاؤ", "collapsible-collapse": "لکاؤ", @@ -189,9 +202,13 @@ "confirmable-no": "کو", "viewdeleted": "ݙیکھو $1؟", "feedlinks": "فیڈ", + "site-rss-feed": "$1 آر.ایس.ایس فیڈ", "site-atom-feed": "$1 اٹوم فیڈ", + "page-rss-feed": "\"$1\" آر.ایس.ایس فیڈ", "page-atom-feed": "$1 اٹوم فیڈ", "red-link-title": "$1 (ایہ ورقہ اڄݨ تائیں کائنی بݨیا)", + "sort-descending": "ترتیب نزولی", + "sort-ascending": "ترتیب صعودی", "nstab-main": "ورقہ", "nstab-user": "صفحۂ صارف", "nstab-media": "میڈیا آلا ورقہ", @@ -207,14 +224,24 @@ "nosuchspecialpage": "اینجھا کوئی خاص ورقہ کائنی", "error": "نقص", "databaseerror": "ڈیٹابیس دی غلطی", + "databaseerror-query": "کیوری: $1", + "databaseerror-function": "فنکشن: $1", "databaseerror-error": "نقص: $1", + "missingarticle-rev": "(دہرائی#: $1)", "missingarticle-diff": "(فرق: $1، $2)", "internalerror": "اندر دی غلطی", "internalerror_info": "اندر دی غلطی:$1", + "filedeleteerror": "مِسَل \"$1\" کوں مٹایا نی ونڄ سڳیا۔", + "formerror": "رپھڑ: فارم نی بھیج سڳے", + "cannotdelete-title": "ورقہ\"$1\" نی مٹا سڳدے", "badtitle": "بھیڑا عنوان", "viewsource": "ماخذ ݙیکھو", "viewsource-title": "$1 دا مسودہ ݙیکھو", "viewsourcetext": "تساں ایں ورقے کوں صرف ݙیکھ تے ماخز نقل کر سڳدے ہو لیکن تبدیلی نہوے کر سڳدے", + "exception-nologin": "لاگ ان نہوے تھئے", + "virus-unknownscanner": "ان ڄاݨ اینٹی وائرس", + "cannotlogoutnow-title": "ہݨ لاگ ان نہوے تھی سڳدے", + "welcomeuser": "خوش آمدید، $1!", "yourname": "صارف دا ناں", "userlogin-yourname": "صارف ناں", "userlogin-yourname-ph": "آپݨا ورتݨ ناں صارف درج کرو", @@ -231,7 +258,11 @@ "cannotlogin-title": "لاگ ان نی تھی سڳدے", "cannotlogin-text": "لاگ ان تھیوݨ ناممکن ہے", "cannotloginnow-title": "ہݨ لاگ ان نہوے تھی سڳدے", + "cannotcreateaccount-title": "کھاتے نہوے بݨا سڳدے", + "yourdomainname": "تہاݙی ڈومین:", "login": "لاگ ان تھیوو", + "login-security": "آپݨی سنڄاݨ دی تصدیق کرو", + "nav-login-createaccount": "لاگ ان / کھاتہ کھولو", "logout": "لاگ آؤٹ", "userlogout": "لاگ آؤٹ", "notloggedin": "لاگ ان نہوے تھئے", @@ -240,13 +271,17 @@ "createaccount": "کھاتہ کھولو", "userlogin-resetpassword-link": "پاسورڈ بھل ڳئے ہو؟", "userlogin-helplink2": "لاگ ان تھیوݨ کیتے مدد دی لوڑ ہے؟", + "userlogin-createanother": "اپݨاں نواں کھاتہ کھولو", "createacct-emailrequired": "ای میل پتہ", "createacct-emailoptional": "ای-میل پتہ، آپشنل", "createacct-email-ph": "اپنا ای-میل پتہ لکھو", "createacct-another-email-ph": "اپنا ای-میل پتہ لکھو", + "createacct-realname": "اصلی ناں (اختیاری)", "createacct-reason": "سبب", "createacct-submit": "اپݨاں کھاتا کھولو", "createacct-another-submit": "کھاتہ کھولو", + "createacct-continue-submit": "کھاتہ بݨاوݨ جاری رکھو", + "createacct-another-continue-submit": "کھاتہ بݨاوݨ جاری رکھو", "createacct-benefit-heading": "{{SITENAME}} تہاݙے وانگوں علم دوست افراد دا مرہون منت ہے۔", "createacct-benefit-body1": "$1 {{PLURAL:$1|تبدیلی|تبدیلیاں}}", "createacct-benefit-body2": "\n$1 {{PLURAL:$1|ورقہ|ورقے}}", @@ -255,21 +290,31 @@ "createacct-error": "کھاتہ بݨاوݨ وچ غلطی", "loginsuccesstitle": "لاگ ان تھی ڳیا", "mailmypassword": "نواں پاس ورڈ بݨاؤ", + "emailconfirmlink": "آپݨے ای میل پتے دی تصدیق کرو", + "emaildisabled": "ایہ سائٹ ای میل نی بھیج سڳدی۔", "accountcreated": "کھاتہ کھل ڳیا", "loginlanguagelabel": "زبان: $1", "pt-login": "لاگ ان تھیوو", "pt-login-button": "لاگ ان تھیوو", + "pt-login-continue-button": "لاگ ان جاری رکھو", "pt-createaccount": "کھاتہ کھولو", "pt-userlogout": "لاگ آؤٹ", "changepassword": "پاس ورڈ تبدیل کرو", + "resetpass_header": "پاس ورڈ بدلو", "oldpassword": "پراݨا پاس ورڈ", "newpassword": "نواں پاس ورڈ", "retypenew": "نواں پاس ورڈ ولدا لکھو", + "resetpass_submit": "پاس ورڈ بݨاؤ تے لاگ ان تھیوو", + "changepassword-success": "تہاݙا پاس ورڈ تبدیل تھی ڳیا!", + "botpasswords": "بوٹ پاس ورڈ", + "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\" بوٹ ناں ٹھیک کائنی۔", "resetpass-submit-loggedin": "پاس ورڈ تبدیل کرو", "resetpass-submit-cancel": "منسوخ", "resetpass-temp-password": "عارضی لنگھݨ لفظ، پاس ورڈ", @@ -278,6 +323,9 @@ "passwordreset-domain": "ڈومین", "passwordreset-email": "ای میل پتہ", "passwordreset-emailtitle": "{{SITENAME}} کھاتہ دی تفصیلات", + "passwordreset-invalidemail": "ای۔میل پتہ درست کائنی", + "changeemail-oldemail": "موجودہ ای میل پتہ:", + "changeemail-newemail": "نواں ای میل پتہ", "changeemail-none": "(کوئی وی کائنی)", "changeemail-password": "تہاݙا {{SITENAME}} پاس ورڈ:", "changeemail-submit": "ای-میل بدلو", @@ -310,13 +358,21 @@ "preview": "نمائش", "showpreview": "نمائش", "showdiff": "تبدیلیاں ݙکھاؤ", + "subject-preview": "موضوع دا ݙکھالا:", + "blockedtitle": "ورتݨ آلا بلاک ہے", + "blockednoreason": "کوئی وجہ نی ݙتی ڳئی", + "loginreqtitle": "لاگ ان ضروری ہے", "loginreqlink": "لاگ ان", + "accmailtitle": "پاس ورڈ بھیج ݙتے", "newarticle": "(نواں)", "userpage-userdoesnotexist-view": "صارف کھاتہ \"$1\" رجسٹرڈ کائنی۔", + "updated": "(اپ ڈیٹ تھی ڳیا)", + "note": "نوٹ:", "continue-editing": "خانہ ترمیم وچ ونڄو", "editing": "تساں \"$1\" لکھدے پئے ہو", "creating": "زیر تخلیق $1", "editingsection": "«$1» دے قطعہ دی ترمیم", + "editconflict": "تبدیلی رپھڑ: $1", "yourtext": "تہاݙی لکھائی", "yourdiff": "فرق", "templatesused": "ایں ورقے تے ورتے ڳئے {{PLURAL:$1|سانچے|سانچہ}}:", @@ -325,7 +381,9 @@ "template-semiprotected": "(نیم محفوظ)", "hiddencategories": "ایہ ورقہ {{PLURAL:$1|1 لُکے زمریاں|$1 لکا زمرہ }} وچ شامل ہے:", "permissionserrors": "خطائے اجازت", - "moveddeleted-notice": "ایہ ورقہ مٹایا ڳیا ہے۔ مٹاوݨ دا لاگ ہیٹھاں ݙتا ہویا ہے", + "permissionserrorstext-withaction": "انہاں {{PLURAL:$1|وجہ|وجوہات}} پاروں تہاکوں$2 دی اجازت کائنی", + "moveddeleted-notice": "ایہ ورقہ مٹایا ڳیا ہے۔ مٹاوݨ دا لاگ،حفاظت دا لاگ تے ورقہ ٹورݨ دا لاگ حوالے کیتے ہیٹھاں ݙتے ہوئے ہن۔", + "log-fulllog": "پورا لاگ ݙیکھو", "content-model-wikitext": "ویکی متن", "content-model-text": "سادہ متن", "content-model-javascript": "جاوا سکرپٹ", @@ -333,8 +391,10 @@ "content-json-empty-array": "خالی ایرے", "undo-failure": "متنازع تبدیلیاں پاروں ایہ تبدیلی واپس نی تھی سڳدی۔", "viewpagelogs": "صفحے دے لاگ ݙیکھو", + "currentrev": "موجودہ حالت", "currentrev-asof": "حالیہ نسخہ بمطابق $1", "revisionasof": "دی تبدیلیاں $1", + "revision-info": " $1 دی دہرائی توں {{جنس:$6|$2}}$7", "previousrevision": "→ پراݨا نسخہ", "nextrevision": "نویں تبدیلی →", "currentrevisionlink": "موجودہ حالت", @@ -350,10 +410,19 @@ "history-feed-title": "ریویژن رکارڈ", "history-feed-description": "وکی تے ایں ورقے دی ریویژن ہسٹری", "history-feed-item-nocomment": "$2 کوں $1", + "rev-deleted-user": "(ورتن آلا ناں مٹ ڳیا)", "rev-delundel": "ݙکھاؤ/لکاؤ", "rev-showdeleted": "ݙیکھاؤ", "revdelete-show-file-submit": "ڄیا", "revdelete-hide-comment": "تبدیلی دا خلاصہ", + "revdelete-radio-same": "(تبدیل نہ کرو)", + "revdelete-radio-set": "پوشیدہ", + "revdelete-radio-unset": "ظاہر", + "revdelete-log": "سبب:", + "deletedhist": "مٹایا ہویا تاریخچہ", + "revdelete-reasonotherlist": "ہور وجہ", + "revdelete-edit-reasonlist": "مٹاوݨ دی وجہ لکھو", + "mergehistory-from": "مآخذ ورقہ:", "mergehistory-reason": "سبب", "mergelog": "لاگ رلاؤ", "revertmerge": "وکھریاں کرو", @@ -384,8 +453,13 @@ "search-result-size": "$1 ({{PLURAL:$2|1 لفظ|$2 الفاظ}})", "search-redirect": "($1 کنوں ولدا رجوع )", "search-section": "(قطعہ $1)", + "search-category": "(کیٹیگری $1)", "search-file-match": "فائل مواد نال ملدا ہے", "search-suggest": "بھلا تہاݙا مطلب ہائی: $1", + "search-interwiki-more": "(ٻیا)", + "search-interwiki-more-results": "ٻئے نتیجے", + "search-relatedarticle": "متعلقہ", + "searchrelated": "متعلقہ", "searchall": "یکے", "search-nonefound": "سوال دے نال رلدے ملدے نتارے کائنی۔", "powersearch-togglelabel": "ݙیکھو", @@ -398,10 +472,17 @@ "prefs-skin": "جِلد", "skin-preview": "نمائش", "datedefault": "کوئی ترجیح کائنی", + "prefs-user-pages": "ورتݨ آلے دے ورقے", + "prefs-personal": "پروفائل", + "prefs-rc": "نویاں تبدیلیاں", + "prefs-watchlist": "نظریں ہیٹھ فہرست", + "prefs-rendering": "شکل و صورت", "saveprefs": "بچاؤ", "searchresultshead": "ڳولو", "stub-threshold-sample-link": "نمونہ", "stub-threshold-disabled": "غیر فعال", + "timezonelegend": "ویلے دا علاقہ:", + "localtime": "مقامی ویلا:", "servertime": "سرور دا وقت:", "guesstimezone": "براؤزر توں بھرو۔", "timezoneregion-africa": "افریقہ", @@ -415,17 +496,20 @@ "timezoneregion-indian": "بحر ہند", "timezoneregion-pacific": "بحر الکاہل", "prefs-searchoptions": "ڳولو", - "prefs-namespaces": "ناں دیاں جہاواں", + "prefs-namespaces": "ناں جاہیں", "default": "پہلے کنوں طے تھیا ہویا", "prefs-files": "فائلاں", "prefs-custom-css": "کسٹم سی ایس ایس", "prefs-custom-js": "کسٹم جاوا سکرپٹ", "prefs-emailconfirm-label": "ای میل دی تصدیق", "youremail": "ای میل", + "username": "{{GENDER:$1|ورتݨ آلا ناں}}:", "prefs-registration": "رجسٹریشن ویلہ:", "yourrealname": "اصلی ناں:", "yourlanguage": "زبان", + "yournick": "نویں دستخط:", "email": "ای میل", + "prefs-help-email-required": "ای میل پتے دی لوڑ ہے۔", "prefs-info": "بنیادی معلومات", "prefs-i18n": "بین الاقوامیت", "prefs-signature": "دستخط", @@ -434,19 +518,41 @@ "prefs-advancedediting": "عام آپشن", "prefs-editor": "خانہ ترمیم", "prefs-preview": "نمائش", + "prefs-advancedrc": "اعلیٰ اختیارات", + "prefs-advancedrendering": "اعلیٰ اختیارات", + "prefs-advancedsearchoptions": "اعلیٰ اختیارات", + "prefs-advancedwatchlist": "اعلیٰ اختیارات", "prefs-tokenwatchlist": "ٹوکن", + "prefs-diffs": "فرق", + "userrights-user-editname": "ورتݨ آلا ناں درج کرو:", + "userrights-reason": "سبب:", + "userrights-expiry": "مُکسی:", + "userrights-expiry-othertime": "ٻیا ویلا:", "group": "گروپ:", "group-user": "ورتݨ آلے", "group-bot": "بوٹ", "group-sysop": "منتظمین", "group-all": "(سارے)", + "group-user-member": "{{GENDER:$1|ورتݨ آلا}}", "grouppage-bot": "{{ns:project}}:بوٹ", "grouppage-sysop": "{{ns:project}}:ایڈمنسٹریٹر", + "right-upload": "فائلاں چڑھاؤ", "right-writeapi": "اے پی آئی تحریر دا استعمال", + "right-delete": "ورقے مٹاؤ", + "right-editmyoptions": "آپݨیاں ذاتی ترجیحاں لکھو", + "grant-group-email": "ای میل بھیجو", + "grant-createaccount": "کھاتے کھولو", + "grant-basic": "بنیادی حقوق", "newuserlogpage": "یوزر بنݨاوݨ آلی لاگ", "rightslog": "ورتݨ والے دے حقاں دی لاگ", + "action-read": "ایہ ورقہ پڑھو", "action-edit": "ایں ورقے تے لکھو", + "action-createpage": "ایہ ورقہ بݨاؤ", "action-createaccount": "ایہ ورتݨ آلا کھاتہ کھولو", + "action-move": "ایہ ورقہ ٹورو", + "action-movefile": "ایہ فائل ٹورو", + "action-delete": "ایہ ورقہ مٹاؤ", + "action-sendemail": "ای میلاں بھیجو", "enhancedrc-history": "پچھلا کم", "recentchanges": "نویاں تبدیلیاں", "recentchanges-legend": "اِختیاراتِ حالیہ تبدیلیاں", @@ -468,8 +574,14 @@ "rcfilters-savedqueries-unsetdefault": "ݙیفالٹ توں ہٹاؤ", "rcfilters-savedqueries-remove": "مٹاؤ", "rcfilters-savedqueries-new-name-label": "ناں", + "rcfilters-savedqueries-apply-label": "نتارا بݨاؤ", "rcfilters-savedqueries-cancel-label": "منسوخ", + "rcfilters-filterlist-title": "نتارے", + "rcfilters-highlightmenu-title": "رنگ چݨو", "rcfilters-filter-bots-label": "ٻوٹ", + "rcfilters-filter-minor-label": "معمولی تبدیلیاں", + "rcfilters-filtergroup-lastRevision": "موجودہ حالت", + "rcfilters-filter-lastrevision-label": "موجودہ حالت", "rclistfrom": "$3 $2 توں ہونے آلیاں نویاں تبدیلیاں ݙکھاؤ", "rcshowhideminor": "$1 معمولی تبدیلیاں", "rcshowhideminor-show": "ݙیکھاؤ", @@ -500,6 +612,8 @@ "newpageletter": "نواں", "boteditletter": " خودکار", "rc-change-size-new": "تبدیلی دے بعد $1 {{PLURAL:$1|بائٹ}}", + "rc-enhanced-expand": "تفصیل ݙکھاؤ", + "rc-enhanced-hide": "تفضیل لکاؤ", "rc-old-title": "اصلاً «$1» دے عنوان نال تخلیق شدہ", "recentchangeslinked": "رلدیاں ملدیاں تبدیلیاں", "recentchangeslinked-feed": "رلدیاں ملدیاں تبدیلیاں", @@ -508,6 +622,7 @@ "recentchangeslinked-page": "ورقے دا ناں", "recentchangeslinked-to": "کھلے ہوئے ورقے دی بجائے ایندے نال جُڑے ہوئے ورقے دیاں تبدیلیاں ݙکھاؤ", "upload": "فائل چڑھاؤ", + "uploadbtn": "فائل چڑھاؤ", "uploadlogpage": "اپلوڈ لاگ", "filename": "فائل دا ناں", "filedesc": "خلاصہ", @@ -515,6 +630,7 @@ "filereuploadsummary": "حالیہ تبدیلیاں", "filesource": "ماخذ", "savefile": "فائل بچاؤ", + "upload-source": "اصل فائل", "upload-dialog-title": "فائل چڑھاؤ", "upload-dialog-button-cancel": "منسوخ", "upload-dialog-button-back": "پچھوں", @@ -529,6 +645,7 @@ "upload-form-label-own-work": "یہ میݙا ذاتی کم ہے", "upload-form-label-infoform-categories": "قسماں، زمرے", "upload-form-label-infoform-date": "تاریخ", + "backend-fail-delete": "مِسَل \"$1\" کوں مٹایا نی ونڄ سڳیا۔", "license": "اجازت نامہ:", "license-header": "اجازہ کاری", "listfiles-delete": "مٹاؤ", @@ -546,7 +663,7 @@ "listfiles-latestversion-no": "کو", "file-anchor-link": "فائل", "filehist": "فائل دا تاریخچہ", - "filehist-help": "کہیں خاص ویلے تے تاریخ کوں فائل کینویں نظردی ہائی، ݙیکݨ کیتے اوں ویلے تے کلک کرو۔", + "filehist-help": "کہیں خاص ویلے تے تاریخ کوں فائل کین٘ویں نظردی ہائی، ݙیکھݨ کیتے اوں ویلے تے کلک کرو۔", "filehist-deleteall": "سارے مٹاؤ", "filehist-deleteone": "مٹاؤ", "filehist-revert": "واپس", @@ -566,11 +683,18 @@ "sharedupload-desc-here": "ایہ فائل $1 توں ہے تے ݙوجھیاں منصوبیاں تے وی ورتی ویسی۔\nایندی وضاحت [$2 فائل دی وضاحت دا ورقہ] تے تھلے ݙتی ڳئی۔", "filepage-nofile": "ایں ناں دی کوئی فائل کائنی۔", "upload-disallowed-here": "تساں ایں فائل تے لکھ نی سڳدے۔", + "filerevert-comment": "سبب:", + "filerevert-submit": "واپس", + "filedelete": "$1 مٹاؤ", + "filedelete-legend": "فائل مٹاؤ", "filedelete-comment": "سبب:", "filedelete-submit": "مٹاؤ", + "filedelete-maintenance-title": "مِسل نی مٹا سڳدے", "randompage": "رلے ملے ورقے", + "randomincategory-category": "قسم:", "randomincategory-submit": "ڄلو", "statistics": "شماريات", + "statistics-pages": "ورقے", "pageswithprop-submit": "ڄلو", "double-redirect-fixer": "ریڈائرکٹ فکسر", "brokenredirects-edit": "لکھو", @@ -579,29 +703,57 @@ "nbytes": "$1 {{PLURAL:$1|بائٹ}}", "nmembers": "{{PLURAL:$1|رکن|اراکین}}", "prefixindex": "سارے ورقے بمع سابقہ", + "prefixindex-submit": "ݙِکھاؤ", "protectedpages-page": "ورقہ", "protectedpages-reason": "سبب", - "listusers": "ورتݨ والیاں دے ناں", + "protectedpages-unknown-timestamp": "اݨ سونہاں", + "listusers": "ورتݨ آلیاں دے ناں", "newpages": "نویں ورقے", - "move": "ٹرو", + "newpages-submit": "ݙِکھاؤ", + "newpages-username": "ورتݨ آلا ناں:", + "move": "ٹورو", "pager-newer-n": "{{PLURAL:$1|newer 1|زیادہ نواں $1}}", "pager-older-n": "{{PLURAL:$1|قدیم}} $1", + "apisandbox-unfullscreen": "ورقہ ݙکھاؤ", "apisandbox-reset": "صاف", + "apisandbox-retry": "ولدا کوشش کرو", + "apisandbox-results": "نتیجے", + "apisandbox-continue": "جاری رکھو", + "apisandbox-continue-clear": "صاف", "booksources": "کتابی وسائل", "booksources-search-legend": "ایں مضمون تے کتاباں لبھو", "booksources-search": "ڳولو", "specialloguserlabel": "کرݨ آلا :", "speciallogtitlelabel": "ہدف (عنوان یا {{ns:user}}: صارف کیتے صارف دا ناں):", "log": "لاگز", + "logeventslist-submit": "ݙِکھاؤ", "all-logs-page": "سارےعوامی لاگ", "logempty": "لاگ وچ رلدیاں ملدیاں چیزاں کائنی۔", + "checkbox-all": "یکے", + "checkbox-none": "کوئی وی کائنی", "allpages": "سارے مقالے", + "nextpage": "اڳلا ورقہ ($1)", + "prevpage": "پچھلا ورقہ ($1)", "allarticles": "سارے مقالے", "allpagessubmit": "ڄلو", "allpages-hide-redirects": "رجوع مکررات لکاؤ", "categories": "زمرہ", + "categories-submit": "ݙِکھاؤ", + "deletedcontributions": "ورتݨ آلے دے کم مٹا ݙتے ڳئے", + "linksearch-ok": "ڳولو", + "listusers-submit": "ݙِکھاؤ", + "listgrouprights-group": "گروپ:", + "listgrouprights-rights": "حق", "listgrouprights-members": "(رکناں دی لسٹ)", "emailuser": "ایں ورتݨ والے کوں ای میل کرو", + "emailuser-title-notarget": "ای میل ورتݨ آلا", + "emailusername": "ورتݨ آلا ناں:", + "emailusernamesubmit": "جمع کرواؤ", + "emailfrom": "توں:", + "emailto": "کوں:", + "emailsubject": "عنوان:", + "emailmessage": "سنیہا:", + "emailsend": "بھیجو", "usermessage-editor": "نظامی پیغام رساں", "watchlist": "زیرنظر فہرست", "mywatchlist": "زیرنظر فہرست", @@ -609,16 +761,45 @@ "watch": "اکھ تلے رکھو", "unwatch": "اکھ ہیٹھوں ہٹاؤ", "wlshowlast": "ݙیکھاؤ چھیکڑی $1 گھنٹے $2 ݙینہ", + "watchlist-hide": "لُکاؤ", + "watchlist-submit": "ݙِکھاؤ", + "wlshowtime": "ظاہر تھیوݨ دی مدت:", + "wlshowhideminor": "معمولی تبدیلیاں", + "wlshowhidebots": "بوٹ", + "wlshowhidemine": "میݙیاں تبدیلیاں", "watchlist-options": "نظر تھلے رکھݨ دیاں راہواں", "enotif_reset": "سارے ورقے ڈیکھ گھدن", + "deletepage": "ورقہ مٹاؤ", + "confirm": "تصدیق", + "delete-confirm": "\"$1\" مٹاؤ", + "delete-legend": "مٹاؤ", + "historyaction-submit": "ݙِکھاؤ", "dellogpage": "مٹاوݨ آلی لاگ", + "deletecomment": "سبب:", "rollbacklink": "واپس", + "rollbacklinkcount": "واپس $1 {{PLURAL:$1|تبدیلی|تبدیلیاں}}", + "changecontentmodel-reason-label": "سبب:", + "changecontentmodel-submit": "تبدیل کرو", + "logentry-contentmodel-change-revertlink": "واپس", + "logentry-contentmodel-change-revert": "واپس", "protectlogpage": "بچت لاگ", "protectedarticle": "\"[[$1]]\" بچایا گیا اے", "modifiedarticleprotection": "«[[$1]]» دا درجہ حفاظت تبدیل کیتا", + "protectcomment": "سبب:", + "protectexpiry": "مُکسی:", "protect-default": "تمام صارفین کوں اجازت ہے", + "protect-expiring-local": "مکسی $1", + "protect-expiry-indefinite": "لا محدود", + "protect-othertime": "ٻیا ویلا:", + "protect-othertime-op": "ٻیا ویلا", "restriction-edit": "لکھو", "restriction-move": "ٹرو", + "restriction-create": "بݨاؤ", + "restriction-upload": "اپلوڈ", + "undelete": "مٹائے ڳئے ورقے ݙیکھو", + "undeletecomment": "سبب:", + "undelete-search-submit": "ڳولو", + "undelete-show-file-submit": "جیا", "namespace": "ناں دی جگہ:", "invert": "انتخاب معکوس", "namespace_association": "رلدے ناں دی تھاں", @@ -658,6 +839,10 @@ "whatlinkshere-hidelinks": "روابط $1", "whatlinkshere-hideimages": "تصویر دے روابط $1", "whatlinkshere-filters": "نتارے", + "whatlinkshere-submit": "ڄلو", + "ipbreason": "سبب:", + "autoblocklist-submit": "ڳولو", + "blocklist-reason": "سبب:", "infiniteblock": "بے انت", "blocklink": "پابندی لاؤ", "contribslink": "حصے داری", @@ -697,7 +882,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": "ایں ورقے توں جڑے ورقیاں وچ نویاں تبدیلیاں", @@ -707,8 +892,8 @@ "tooltip-t-upload": "فائل چڑھاؤ", "tooltip-t-specialpages": "سارے خاص ورقیاں دی تندیر", "tooltip-t-print": "ایں ورقے دا چھپݨ آلا انگ ݙیکھو", - "tooltip-t-permalink": "اس صفے دے ایں روپ نال پکا جوڑ", - "tooltip-ca-nstab-main": "مواد آلا صفہ ݙیکھو", + "tooltip-t-permalink": "ایں ورقے دی ایں رویژن دا پکا لنک جوڑ", + "tooltip-ca-nstab-main": "مواد آلا ورقہ ݙیکھو", "tooltip-ca-nstab-user": "صارف دا ورقہ ݙیکھو", "tooltip-ca-nstab-special": "ایہ ہک خاص ورقہ ہے، اینکوں تبدیل نسے کرسڳدے", "tooltip-ca-nstab-project": "منصبے آلا ورقہ ݙیکھو", @@ -770,6 +955,7 @@ "show-big-image-preview": "ایں نمائش دا حجم:$1", "show-big-image-other": "ٻیاں {{PLURAL:$2|قرارداد|قراردادیں}}: $1۔", "show-big-image-size": "$1 × $2 پکسلز", + "sunday-at": "اتوار بوقت $1", "metadata": "میٹا ڈیٹا", "metadata-help": "ایں فائل وچ ٻیاں معلومات وی ہن۔ شاید او تہاݙے کیمرے یا سیکنر توں آیاں ہن، جیندے نال تساں ایہ فائل بݨائی ہائی۔\nجے ایہ فائل آپݨی اصل حالت وچ نہ ہووے تاں کجھ معلومات تبدیل تھئی ہوئی فائل دی پوری پوری عکاسی کائناں کریسی۔", "metadata-fields": "تصویر دے میٹاڈیٹا دے او خانے جہڑے پیغام میں درج ہن او تصویر دے صفحے تے شامل ہوندے ہن۔ ایہ ااوں ویلے ظاہر تھیندن جڈݨ میٹاڈیٹا کوں ودھایا ونڄے۔\nٻئے خانے شروع وچ لُڳے ہوندن۔\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", @@ -791,7 +977,7 @@ "imgmultigo": "ونڄو!", "imgmultigoto": "$1 تے ونڄو", "watchlisttools-clear": "زیرنظر فہرست دی صفائی", - "watchlisttools-view": "متعلقہ تبدیلیاں ݙیکو", + "watchlisttools-view": "متعلقہ تبدیلیاں ݙیکھو", "watchlisttools-edit": "زیرنظر فہرست کوں ݙیکھو تے تبدیلی کرو", "watchlisttools-raw": "کچی زیرِنظرفہرست وچ تبدیلی کرو", "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|تبادلۂ خیال]])", @@ -809,10 +995,11 @@ "tags-active-yes": "ڄیا", "tags-active-no": "کو", "tags-hitcount": "$1 {{PLURAL:$1|تبدیلی|تبدیلیاں}}", + "diff-form": "فرق", "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_redir": "$1 نے رجوع مکرر ہٹا تے ورقہ $3 کوں $4 آلے پاسے {{GENDER:$2|منتقل کیتا}}", "logentry-newusers-create": "صارف کھاتہ $1 {{GENDER:$2|بݨایا ڳیا}}", "logentry-newusers-autocreate": "صارف کھاتہ $1 خودکار طور {{GENDER:$2|تخلیق تھیا}}", diff --git a/languages/i18n/sl.json b/languages/i18n/sl.json index 658e8f0d1d..e99c7ad74c 100644 --- a/languages/i18n/sl.json +++ b/languages/i18n/sl.json @@ -44,13 +44,14 @@ "tog-shownumberswatching": "Prikaži število uporabnikov, ki spremljajo temo", "tog-oldsig": "Vaš trenutni podpis:", "tog-fancysig": "Obravnavaj podpis kot wikibesedilo (brez samodejne povezave)", - "tog-uselivepreview": "Uporabi hitri predogled", + "tog-uselivepreview": "Pokaži predoglede brez ponovnega nalaganja strani", "tog-forceeditsummary": "Ob vpisu praznega povzetka urejanja me opozori", "tog-watchlisthideown": "Na spisku nadzorov skrij moja urejanja", "tog-watchlisthidebots": "Na spisku nadzorov skrij urejanja botov", "tog-watchlisthideminor": "Na spisku nadzorov skrij manjša urejanja", "tog-watchlisthideliu": "Na spisku nadzorov skrij urejanja prijavljenih uporabnikov", "tog-watchlistreloadautomatically": "Samodejno ponovno naloži spisek nadzorov ob spremembi filtra (zahteva JavaScript)", + "tog-watchlistunwatchlinks": "Dodaj neposredne povezave za dodajanje/odstranjevanje strani s spiska nadzorov (za funkcionalnost preklopa je zahtevan JavaScript)", "tog-watchlisthideanons": "Na spisku nadzorov skrij urejanja anonimnih uporabnikov", "tog-watchlisthidepatrolled": "Na spisku nadzorov skrij pregledana urejanja", "tog-watchlisthidecategorization": "Skrij kategorizacijo strani", @@ -701,8 +702,8 @@ "permissionserrorstext-withaction": "Za $2 zaradi {{PLURAL:$1|naslednjega razloga|naslednjih razlogov}} nimate dovoljenja:", "contentmodelediterror": "Redakcije ne morete urejati, ker je njen vsebinski model $1, kar se razlikuje od trenutnega vsebinskega modela strani $2.", "recreate-moveddeleted-warn": "'''Opozorilo: Pišete stran, ki je bila nekoč že izbrisana.'''\n\nPremislite preden nadaljujete s pisanjem, morda bo stran zaradi istih razlogov ponovno odstranjena.\nSpodaj je prikazan dnevnik brisanja in prestavljanja:", - "moveddeleted-notice": "Stran je bila izbrisana.\nSpodaj sta za sklicevanje na razpolago dnevnik brisanja in dnevnik prestavljanja strani.", - "moveddeleted-notice-recent": "Oprostite, stran je bila nedavno izbrisana (v zadnjih 24 urah).\nDnevnik brisanja in prestavljanj strani je naveden spodaj.", + "moveddeleted-notice": "Stran je bila izbrisana.\nSpodaj sta za sklicevanje na razpolago dnevnik brisanja, zaščite in prestavljanja strani.", + "moveddeleted-notice-recent": "Oprostite, stran je bila nedavno izbrisana (v zadnjih 24 urah).\nDnevnik brisanja, zaščite in prestavljanja strani je naveden spodaj.", "log-fulllog": "Ogled celotnih dnevniških zapiskov", "edit-hook-aborted": "Urejanje je bilo brez obrazložitve prekinjeno zaradi neznane napake.", "edit-gone-missing": "Strani ni mogoče posodobiti.\nIzgleda, da je bila izbrisana.", @@ -970,7 +971,7 @@ "prefs-editwatchlist-clear": "Počistite svoj spisek nadzorov", "prefs-watchlist-days": "Število dni za prikaz na spisku nadzorov:", "prefs-watchlist-days-max": "Največ $1 {{PLURAL:$1|dan|dneva|dni}}", - "prefs-watchlist-edits": "Število urejanj za prikaz na razširjenem spisku nadzorov:", + "prefs-watchlist-edits": "Največje število sprememb za prikaz na spisku nadzorov:", "prefs-watchlist-edits-max": "Največje število: 1000", "prefs-watchlist-token": "Ključ spiska nadzorov:", "prefs-misc": "Druge nastavitve", @@ -1286,16 +1287,20 @@ "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-other-review-tools": "Druga orodja za pregled", + "rcfilters-group-results-by-page": "Združi rezultate po strani", + "rcfilters-grouping-title": "Združevanje", "rcfilters-activefilters": "Dejavni filtri", "rcfilters-advancedfilters": "Napredni filtri", "rcfilters-limit-title": "Spremembe za prikaz", - "rcfilters-limit-shownum": "Prikaži zadnjih $1 sprememb", + "rcfilters-limit-shownum": "Prikaži {{PLURAL:$1|1=zadnjo spremembo|zadnjo $1 spremembo|zadnji $1 spremembi|zadnje $1 spremembe|zadnjih $1 sprememb}}", "rcfilters-days-title": "Pretekli dnevi", "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.", @@ -1312,6 +1317,7 @@ "rcfilters-savedqueries-add-new-title": "Shrani nastavitve trenutnega filtra", "rcfilters-restore-default-filters": "Obnovi privzete filtre", "rcfilters-clear-all-filters": "Počisti vse filtre", + "rcfilters-show-new-changes": "Ogled najnovejših sprememb", "rcfilters-search-placeholder": "Zadnje spremembe filtrov (prebrskajte ali začnite vnašati)", "rcfilters-invalid-filter": "Neveljaven filter", "rcfilters-empty-filter": "Ni dejavnih filtrov. Prikazani so vsi prispevki.", @@ -1324,7 +1330,7 @@ "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.", @@ -1363,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 ...", @@ -1384,11 +1395,15 @@ "rcfilters-tag-prefix-namespace-inverted": ":ne $1", "rcfilters-exclude-button-off": "Izključi izbrane", "rcfilters-exclude-button-on": "Izključitev izbranih", + "rcfilters-view-advanced-filters-label": "Napredni filtri", "rcfilters-view-tags": "Označena urejanja", "rcfilters-view-namespaces-tooltip": "Filtriraj rezultate po imenskem prostoru", "rcfilters-view-tags-tooltip": "Filtriraj rezultate z uporabo oznak urejanj", "rcfilters-view-return-to-default-tooltip": "Vrni se na glavni meni filtriranja", "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", "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", @@ -1488,7 +1503,7 @@ "tmp-write-error": "Napaka pri pisanju začasne datoteke", "large-file": "Priporočeno je, da datoteke niso večje od $1; ta datoteka je $2.", "largefileserver": "Velikost datoteke presega strežnikove nastavitve.", - "emptyfile": "Kaže, da je aložena datoteka prazna.\nDo tega bi lahko prišlo zaradi tipkarske napake v imenu.\nAli datoteko resnično želite naložiti?", + "emptyfile": "Kaže, da je naložena datoteka prazna.\nDo tega bi lahko prišlo zaradi tipkarske napake v imenu.\nAli resnično želite datoteko naložiti?", "windows-nonascii-filename": "Ta wiki ne podpira imen datotek s posebnimi znaki.", "fileexists": "Datoteka s tem imenom že obstaja. Preden jo {{GENDER:|povozite}}, preverite stran [[:$1]].\n[[$1|thumb]]", "filepageexists": "Opisna stran za to datoteko je bila že ustvarjena na [[:$1]], vendar datoteka s tem imenom trenutno ne obstaja.\nPovzetek, ki ste ga vnesli, se ne bo prikazal na opisni strani.\nDa tam prikažete povzetek, morate stran urediti ročno.\n[[$1|thumb]]", @@ -2590,7 +2605,7 @@ "import-nonewrevisions": "Uvozil nisem nobene redakcije (vse so bile že prisotne ali pa sem jih preskočil zaradi napak).", "xml-error-string": "$1 v vrstici $2, znak $3 (zlog $4): $5", "import-upload": "Naložite podatke XML", - "import-token-mismatch": "Izguba podatkov o seji.\n\nMorda ste bili odjavljeni. Prosimo, preverite, da ste še vedno prijavljeni, in poskusite znova.\nČe še vedno ne deluje, se poskusite [[Special:UserLogout|odjaviti]] in znova prijaviti; prav tako preverite, da vaš brskalnik dovoljuje piškotke s te strani.", + "import-token-mismatch": "Izguba podatkov o seji.\n\nMorda ste bili odjavljeni. '''Prosimo, preverite, da ste še vedno prijavljeni, in poskusite znova.'''\nČe še vedno ne deluje, se poskusite [[Special:UserLogout|odjaviti]] in znova prijaviti; prav tako preverite, da vaš brskalnik dovoljuje piškotke s te strani.", "import-invalid-interwiki": "Uvoz iz navedenega wikija ni možen.", "import-error-edit": "Strani »$1« nismo uvozili, ker vam ni dovoljeno, da jo urejate.", "import-error-create": "Strani »$1« nismo uvozili, ker vam ni dovoljeno, da jo ustvarite.", @@ -3474,6 +3489,13 @@ "compare-invalid-title": "Navedeni naslov ni veljaven.", "compare-title-not-exists": "Navedeni naslov ne obstaja.", "compare-revision-not-exists": "Navedena redakcija ne obstaja.", + "diff-form": "Razlike", + "diff-form-oldid": "ID stare redakcije (izbirno)", + "diff-form-revid": "ID redakcije razlike", + "diff-form-submit": "Prikaži razlike", + "permanentlink": "Trajna povezava", + "permanentlink-revid": "ID redakcije", + "permanentlink-submit": "Pojdi na redakcijo", "dberr-problems": "Oprostite! Ta stran se sooča s tehničnimi težavami.", "dberr-again": "Poskusite počakati nekaj minut in ponovno naložite stran.", "dberr-info": "(Ne morem dostopati do zbirke podatkov: $1)", diff --git a/languages/i18n/sq.json b/languages/i18n/sq.json index 3c2245fa7d..0755c0922c 100644 --- a/languages/i18n/sq.json +++ b/languages/i18n/sq.json @@ -51,7 +51,7 @@ "tog-watchdefault": "Shto faqet dhe skedat e redaktuara prej meje tek lista e faqeve nën mbikqyrje", "tog-watchmoves": "Shto faqet dhe skedat e zhvendosura prej meje tek lista e faqeve nën mbikqyrje", "tog-watchdeletion": "Shto faqet dhe skedat e grisura prej meje tek lista e faqeve nën mbikqyrje", - "tog-watchuploads": "Shtoni fotografitë e rreja që ngarkoj në listën mbikëqyrëse", + "tog-watchuploads": "Shtoni fotografitë e reja që ngarkova në listën mbikëqyrëse", "tog-watchrollback": "Shto faqet ku unë kam kryer një rikthim tek lista ime mbikqyrëse", "tog-minordefault": "Shëno të gjitha redaktimet si të vogla automatikisht", "tog-previewontop": "Trego parapamjen para kutisë së redaktimit", @@ -400,7 +400,7 @@ "userlogin-yourname": "Emri i përdoruesit", "userlogin-yourname-ph": "Fut emrin tënd të përdoruesit", "createacct-another-username-ph": "Shtypni emrin e përdoruesit", - "yourpassword": "Fusni fjalëkalimin tuaj", + "yourpassword": "Fjalëkalimi:", "userlogin-yourpassword": "Fjalëkalimi", "userlogin-yourpassword-ph": "Shtypni fjalëkalimin tuaj", "createacct-yourpassword-ph": "Shtypni një fjalëkalim", @@ -429,7 +429,7 @@ "createaccount": "Hap një llogari", "userlogin-resetpassword-link": "Keni harruar fjalëkalimin?", "userlogin-helplink2": "Ndihmë rreth identifikimit", - "userlogin-loggedin": "Ju tashmë jeni i regjistruar si {{GENDER:$1|$1}}.\nPërdore formularin më poshtë për të hyrë si një përdorues tjetër.", + "userlogin-loggedin": "Ju tashmë jeni i regjistruar si {{GENDER:$1|$1}}.\nPërdor formularin më poshtë për të hyrë si një përdorues tjetër.", "userlogin-reauth": "Duhet të identifikoheni përsëri për të verifikuar që jeni {{GENDER:$1|$1}}", "userlogin-createanother": "Krijo një llogari tjeter", "createacct-emailrequired": "Posta elektronike", @@ -451,7 +451,7 @@ "createacct-benefit-body2": "{{PLURAL:$1|faqe|faqe}}", "createacct-benefit-body3": "{{PLURAL:$1|kontribuesi i|kontribuesit e}} fundit", "badretype": "Fjalëkalimet nuk janë njësoj.", - "usernameinprogress": "Një krijim i llogarisë me këtë emër përdoruesi tashmë është në progres.\nTë lutem prit.", + "usernameinprogress": "Një krijim i llogarisë me këtë emër përdoruesi tashmë është në progres.\nJu lutemi prisni.", "userexists": "Emri i përdoruesit që kërkuat është në përdorim. \nZgjidhni një emër tjetër.", "loginerror": "Gabim gjatë identifikimit", "createacct-error": "krijim gabim llogarie", @@ -491,7 +491,7 @@ "emailconfirmlink": "Vërtetoni adresën tuaj", "invalidemailaddress": "Posta elektronike nuk mund të pranohet kështu si është pasi ka format jo valid. Ju lutemi, vendoni një postë mirë të formatuar, ose zbrazeni fushën.", "cannotchangeemail": "Adresat e-mail të llogarive nuk mund të ndryshohen në këtë wiki.", - "emaildisabled": "Kjo faqe nuk mund të dërgojë e-maila.", + "emaildisabled": "Kjo faqe nuk mund të dërgojë e-maile.", "accountcreated": "Llogarija e Përdoruesit u krijua", "accountcreatedtext": "Llogarija e Përdoruesit për $1 u krijua", "createaccount-title": "Hapja e llogarive për {{SITENAME}}", @@ -504,7 +504,7 @@ "createacct-another-realname-tip": "* Emri i vërtetë nuk është i domosdoshëm: Nëse e jepni do të përmendeni si kontribues për punën që ke bërë.", "pt-login": "Hyni", "pt-login-button": "Hyni", - "pt-login-continue-button": "Vazhdoidntifikohu", + "pt-login-continue-button": "Vazhdoni identifikohuni", "pt-createaccount": "Krijo llogari", "pt-userlogout": "Dil", "php-mail-error-unknown": "Gabim i panjohur në funksionin e postës PHP ()", @@ -513,10 +513,10 @@ "changepassword": "Ndërroni fjalëkalimin", "resetpass_announce": "Për të përfunduar regjistrimin, ju duhet të vendosni një fjalëkalim të ri.", "resetpass_header": "Ndrysho fjalëkalimin e llogarisë", - "oldpassword": "I vjetri", - "newpassword": "I riu", - "retypenew": "I riu përsëri", - "resetpass_submit": "Ndrysho fjalëkalimin dhe hyni brenda", + "oldpassword": "Fjalëkalimi i vjetër:", + "newpassword": "Fjalëkalimi i ri", + "retypenew": "Rivendosni fjalëkalimin e ri përsëri,", + "resetpass_submit": "Ndryshoni fjalëkalimin dhe hyni brenda", "changepassword-success": "Fjalëkalimi yt është ndryshuar.", "changepassword-throttled": "Keni bërë shumë tentime të njëpasnjëshme në fjalëkalimin e kësaj llogarie. Ju lutemi prisni para se te tentoni përsëri.", "botpasswords": "Bot fjalëkalimet", @@ -1263,7 +1263,7 @@ "rcfilters-invalid-filter": "Filtër jo i vlefshëm", "rcfilters-empty-filter": "S'ka filtra aktiv. Tregohen të gjitha kontributet.", "rcfilters-filterlist-title": "Filtrat", - "rcfilters-filterlist-whatsthis": "Çka është kjo?", + "rcfilters-filterlist-whatsthis": "Si punon?", "rcfilters-highlightbutton-title": "Thekso rezultatet", "rcfilters-highlightmenu-title": "Zgjedh një ngjërë", "rcfilters-highlightmenu-help": "Zgjedh një ngjyrë për të theksuar këtë tipar", @@ -1274,7 +1274,7 @@ "rcfilters-filter-editsbyself-description": "Kontributet tuaja.", "rcfilters-filter-editsbyother-label": "Kontributet nga të tjerët", "rcfilters-filter-editsbyother-description": "Të gjitha ndryshimet përveç nga ti.", - "rcfilters-filtergroup-userExpLevel": "Niveli i përvojës (vetëm për përdoruesit e regjistruar)", + "rcfilters-filtergroup-userExpLevel": "Përdoruesit e regjistruar dhe me eksperience", "rcfilters-filter-user-experience-level-registered-label": "Regjistruar", "rcfilters-filter-user-experience-level-registered-description": "Redaktorët e kyçur", "rcfilters-filter-user-experience-level-unregistered-label": "Ç'regjistruar", @@ -1315,10 +1315,10 @@ "rcfilters-filter-categorization-description": "Regjistri i faqeve të shtuara ose hequra nga kategoritë.", "rcfilters-filter-logactions-label": "Veprimet e regjistruara", "rcfilters-filter-logactions-description": "Veprimet administrative, krijimet e llogarive, fshirjet e faqeve, ngarkimet...", - "rcfilters-filtergroup-lastRevision": "Versioni i fundit", - "rcfilters-filter-lastrevision-label": "Versioni i fundit", - "rcfilters-filter-lastrevision-description": "Ndryshimet më të fundit në një faqe.", - "rcfilters-filter-previousrevision-label": "Versionet më të hershme", + "rcfilters-filtergroup-lastRevision": "Rishikimet e fundit", + "rcfilters-filter-lastrevision-label": "Versioni më i fundit", + "rcfilters-filter-lastrevision-description": "Vetëm dryshimet më të fundit në një faqe.", + "rcfilters-filter-previousrevision-label": "Jo rishimet e fundit", "rcfilters-filter-previousrevision-description": "Të gjitha ndryshimet që nuk janë ndryshimet më të fundit në një faqe.", "rcfilters-filter-excluded": "Përjashtuar", "rcfilters-tag-prefix-namespace-inverted": ":jo $1", @@ -3245,6 +3245,7 @@ "compare-invalid-title": "Titulli që keni specifikuar është i pavlefshëm", "compare-title-not-exists": "Titulli që keni specifikuar nuk ekziston.", "compare-revision-not-exists": "Rishikimi që ju specifikuat nuk ekziston", + "diff-form": "Ndryshimet", "dberr-problems": "Na vjen keq! Kjo faqe po has vështirësi teknike.", "dberr-again": "Pritni disa minuta dhe provoni të ringarkoni faqen.", "dberr-info": "(Nuk mund të qaset në bazën e të dhënave: $1)", diff --git a/languages/i18n/sr-ec.json b/languages/i18n/sr-ec.json index 47b3505e99..edb1ff66ad 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,24 @@ "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-created-title": "Направљена лозинка бота", + "botpasswords-created-body": "Лозинка за бота \"$1\" корисника \"$2\" је направљена.", + "botpasswords-updated-title": "Лозинка бота промењена", + "botpasswords-deleted-title": "Обрисана лозинка бота", "resetpass_forbidden": "Лозинка не може бити промењена", + "resetpass_forbidden-reason": "Лозинке није могуће променити: $1", "resetpass-no-info": "Морате бити пријављени да бисте приступили овој страници.", "resetpass-submit-loggedin": "Промени лозинку", "resetpass-submit-cancel": "Откажи", @@ -548,6 +567,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 +663,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": "Неки делови обрасца за уређивање нису стигли до сервера. Проверите да ли су ваше измене непромењене и покушајте поново.", @@ -843,6 +866,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 +930,7 @@ "search-interwiki-caption": "Резултати са сестринских пројеката", "search-interwiki-default": "Резултати са $1:", "search-interwiki-more": "(више)", + "search-interwiki-more-results": "још резултата", "search-relatedarticle": "Повезано", "searchrelated": "повезано", "searchall": "све", @@ -909,6 +938,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 +948,7 @@ "search-external": "Спољна претрага", "searchdisabled": "Претрага је онемогућена.\nУ међувремену можете тражити преко Гугла.\nУпамтите да његови пописи овог викија могу бити застарели.", "search-error": "Дошло је до грешке приликом претраге: $1", + "search-warning": "Упозорење приликом претраге: $1", "preferences": "Подешавања", "mypreferences": "Подешавања", "prefs-edits": "Број измена:", @@ -937,7 +968,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": "Друга подешавања", @@ -1053,6 +1084,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 +1112,7 @@ "right-createpage": "прављење страница (изузев страница за разговор)", "right-createtalk": "прављење страница за разговор", "right-createaccount": "отварање нових корисничких налога", + "right-autocreateaccount": "Пријавите се аутоматски са екстерним корисничким налогом", "right-minoredit": "означавање измена мањим", "right-move": "Премештање страница", "right-move-subpages": "премештање страница с њиховим подстраницама", @@ -1225,7 +1258,7 @@ "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|измена од ваше последње посете}}", "enhancedrc-history": "историја", "recentchanges": "Скорашње измене", - "recentchanges-legend": "Поставке скорашњих измена", + "recentchanges-legend": "Опције скорашњих измена", "recentchanges-summary": "Пратите скорашње измене на овој страници.", "recentchanges-noresult": "Нема промена у задатом времену за задате критеријуме.", "recentchanges-feed-description": "Пратите скорашње измене уз помоћ овог довода.", @@ -1237,11 +1270,16 @@ "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-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-quickfilters": "Сачувани филтери", @@ -1256,9 +1294,15 @@ "rcfilters-savedqueries-add-new-title": "Сачувај тренутне поставке филтера", "rcfilters-restore-default-filters": "Враћање подразумеваних филтера", "rcfilters-clear-all-filters": "Уклони све филтере", - "rcfilters-show-new-changes": "Прикажи нове измене", + "rcfilters-show-new-changes": "Погледајте најновије измене", "rcfilters-search-placeholder": "Филтер скорашњих измјена (претражите или почните куцати)", "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", @@ -1272,11 +1316,11 @@ "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-newcomer-description": "Регистровани уредници са мање од 10 измјена и 4 дана активности.", "rcfilters-filter-user-experience-level-learner-label": "Ученици", - "rcfilters-filter-user-experience-level-learner-description": "Више искуства од „новајлија”, али мање од „искусних корисника”.", + "rcfilters-filter-user-experience-level-learner-description": "Регистровани уредници са више искуства од „новајлија”, али мање од „искусних корисника”.", "rcfilters-filter-user-experience-level-experienced-label": "Искусни корисници", - "rcfilters-filter-user-experience-level-experienced-description": "Преко 30 дана активности и 500 измјена.", + "rcfilters-filter-user-experience-level-experienced-description": "Регистровани уредници са више од 500 измјена и 30 дана активности.", "rcfilters-filter-bots-label": "Бот", "rcfilters-filter-humans-label": "Човјек (није бот)", "rcfilters-filter-patrolled-label": "Патролирано", @@ -1289,6 +1333,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": "Стварање страница", @@ -1299,10 +1344,12 @@ "rcfilters-typeofchange-conflicts-hideminor": "Овај филтер типа измене је у сукобу са филтером за „мање” измене. Одређени типови измена не могу да се означе као „мање”.", "rcfilters-filtergroup-lastRevision": "Последња измена", "rcfilters-filter-lastrevision-label": "Последња измена", - "rcfilters-filter-lastrevision-description": "Најскорашњија измена странице.", + "rcfilters-filter-lastrevision-description": "Само најновија измена на страници.", "rcfilters-filter-previousrevision-label": "Раније измене", "rcfilters-filter-previousrevision-description": "Све измене које нису најскорашњије измене странице.", + "rcfilters-view-advanced-filters-label": "Напредни филтери", "rcfilters-view-namespaces-tooltip": "Филтер резултата према именском простору", + "rcfilters-view-tags-tooltip": "Филтер резултата према ознаци измјене", "rcnotefrom": "Испод {{PLURAL:$5|је измена|су измене}} од $3, $4 (до $1 приказано).", "rclistfromreset": "Ресетуј одабир датума", "rclistfrom": "Прикажи нове измене почев од $2 $3", @@ -1663,6 +1710,8 @@ "pageswithprop-legend": "Стране с особином стране", "pageswithprop-text": "Ова страна излистава стране које имају одређену особину", "pageswithprop-prop": "Име особине:", + "pageswithprop-reverse": "Сортирај у супротном редоследу", + "pageswithprop-sortbyvalue": "Сортирај према својствима", "pageswithprop-submit": "Иди", "doubleredirects": "Двострука преусмерења", "doubleredirectstext": "Ова страница приказује странице које преусмеравају на друга преусмерења.\nСваки ред садржи везе према првом и другом преусмерењу, као и одредишну страницу другог преусмерења која је обично „прави“ чланак на кога прво преусмерење треба да упућује.\nПрецртани уноси су већ решени.", @@ -1764,12 +1813,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": "Очисти", @@ -1891,7 +1960,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", @@ -2087,6 +2156,7 @@ "undelete-search-title": "Претрага обрисаних страница", "undelete-search-box": "Претражи обрисане странице", "undelete-search-prefix": "Прикажи странице које почињу са:", + "undelete-search-full": "Прикажи наслове који садрже:", "undelete-search-submit": "Претражи", "undelete-no-results": "Одговарајућа страница у дневнику брисања није пронађена.", "undelete-filename-mismatch": "Не могу да вратим измену датотеке од $1: назив датотеке се не поклапа", @@ -2280,8 +2350,8 @@ "lockedbyandtime": "(од $1 дана $2 у $3)", "move-page": "Премештање „$1“", "move-page-legend": "Премештање странице", - "movepagetext": "Доњи образац ће преименовати страницу, премештајући целу историју на ново име.\nСтари наслов постаће преусмерење на нови наслов.\nМожете ажурирати преусмерења која воде до изворног наслова;\nпогледајте [[Special:DoubleRedirects|двострука]] или [[Special:BrokenRedirects|покварена]] преусмерења.\nНа вама је одговорност да везе и даље иду тамо где треба.\n\nСтраница неће бити премештена ако већ постоји страница с тим именом, осим ако је празна, садржи преусмерење или нема историју измена.\nТо значи да можете вратити страницу на претходно име ако погрешите, али не можете ''преписати'' постојећу.\n\nНапомена:\nОво може представљати драстичну и неочекивану измену за популарну страницу;\nдобро размислите о последицама пре него што наставите.", - "movepagetext-noredirectfixer": "Доњи образац ће преименовати страницу, премештајући целу историју на ново име.\nСтари наслов постаће преусмерење на нови наслов.\nПогледајте [[Special:DoubleRedirects|двострука]] или [[Special:BrokenRedirects|покварена]] преусмерења.\nНа вама је одговорност да везе и даље иду тамо где би требало да иду.\n\nСтраница неће бити премештена ако већ постоји страница с тим именом, осим ако је она празна, садржи преусмерење или нема историју измена.\nТо значи да можете вратити страницу на претходно место ако погрешите, али не можете заменити постојећу страницу.\n\nПажња!\nОво може представљати драстичну и неочекивану измену за популарну страницу;\nдобро размислите о последицама пре него што наставите.", + "movepagetext": "Доњи образац ће преименовати страницу, премештајући целу историју на ново име.\nСтари наслов постаће преусмерење на нови.\nМожете ажурирати преусмерења која воде до изворног наслова;\nпогледајте [[Special:DoubleRedirects|двострука]] или [[Special:BrokenRedirects|покварена]] преусмерења.\nНа вама је одговорност да везе и даље иду тамо где треба.\n\nСтраница неће бити премештена ако већ постоји страница с тим именом (осим ако је празна, садржи преусмерење или нема историју измена).\nТо значи да можете вратити страницу на претходно име ако погрешите, али не можете ''преписати'' постојећу.\n\nНапомена:\nОво може представљати драстичну и неочекивану измену за популарну страницу;\nдобро размислите о последицама пре него што наставите.", + "movepagetext-noredirectfixer": "Доњи образац ће преименовати страницу, премештајући целу историју на ново име.\nСтари наслов постаће преусмерење на нови.\nПогледајте [[Special:DoubleRedirects|двострука]] или [[Special:BrokenRedirects|покварена]] преусмерења.\nНа вама је одговорност да везе и даље иду тамо где треба.\n\nСтраница неће бити премештена ако већ постоји страница с тим именом (осим ако је празна, садржи преусмерење или нема историју измена).\nТо значи да можете вратити страницу на претходно име ако погрешите, али не можете ''преписати'' постојећу.\n\nНапомена:\nОво може представљати драстичну и неочекивану измену за популарну страницу;\nдобро размислите о последицама пре него што наставите.", "movepagetalktext": "Ако сте означили овај квадратић, одговарајућа страница за разговор биће аутоматски премештена на нови наслов, осим ако већ постоји страница за разговор са истим насловом.\n\nУ том случају, мораћете ручно да је преместите или спојите, ако има потребе за тим.", "moveuserpage-warning": "'''Упозорење:''' на путу сте да преместите корисничку страницу. Имајте у виду да ће само страница бити премештена, а сам корисник ''неће'' бити преименован.", "movecategorypage-warning": "Упозорење: премештате страницу категорије. Имајте на уму да ће само страница бити премештена и да све странице у старој категорији неће бити рекатегорисане у нову категорију.", @@ -3230,6 +3300,7 @@ "timezone-utc": "UTC", "duplicate-defaultsort": "Упозорење: Подразумевани кључ сврставања „$2“ мења ранији подразумевани кључ сврставања „$1“.", "duplicate-displaytitle": "Упозорење: наслов за приказ „$2“ замениће постојећи „$1“.", + "restricted-displaytitle": "Упозорење: Наслов за приказ „$1” је игнорисан пошто није еквивалентан стварном наслову странице.", "version": "Верзија", "version-extensions": "Инсталирана проширења", "version-skins": "Инсталиране теме", @@ -3373,6 +3444,7 @@ "compare-invalid-title": "Наведени наслов је неисправан.", "compare-title-not-exists": "Наведени наслов не постоји.", "compare-revision-not-exists": "Наведена измена не постоји.", + "diff-form": "'''форма'''", "dberr-problems": "Дошло је до техничких проблема.", "dberr-again": "Сачекајте неколико минута и поново учитајте страницу.", "dberr-info": "(Не могу приступити бази података: $1)", diff --git a/languages/i18n/sr-el.json b/languages/i18n/sr-el.json index c08da7b39d..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.", @@ -1182,7 +1182,9 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|spisak novih stranica]])", "recentchanges-submit": "Prikaži", "rcfilters-legend-heading": "Spisak skraćenica:", + "rcfilters-other-review-tools": "Ostali alati za pregled:", "rcfilters-activefilters": "Aktivni filteri", + "rcfilters-advancedfilters": "Napredni filteri", "rcfilters-limit-title": "Prikazati izmjena", "rcfilters-limit-shownum": "Prikaži posljednjih $1 izmjena", "rcfilters-days-show-days": "$1 {{PLURAL:$1|dana|dana}}", @@ -1208,7 +1210,9 @@ "rcfilters-filter-newpages-label": "Stvaranje stranica", "rcfilters-filter-newpages-description": "Izmjene kojima se stvaraju nove stranice.", "rcfilters-filter-logactions-label": "Radnje zabilježene u dnevnicima", + "rcfilters-view-advanced-filters-label": "Napredni filteri", "rcfilters-view-namespaces-tooltip": "Filter rezultata prema imenskom prostoru", + "rcfilters-view-tags-tooltip": "Filter rezultata prema oznaci izmjene", "rcnotefrom": "Ispod {{PLURAL:$5|je izmena|su izmene}} od $3, $4 (do $1 prikazano).", "rclistfrom": "Prikaži nove izmene počev od $2 $3", "rcshowhideminor": "$1 manje izmene", @@ -1779,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", @@ -2155,8 +2159,8 @@ "lockedbyandtime": "(od $1 dana $2 u $3)", "move-page": "Premeštanje „$1“", "move-page-legend": "Premeštanje stranice", - "movepagetext": "Donji obrazac će preimenovati stranicu, premeštajući celu istoriju na novo ime.\nStari naslov postaće preusmerenje na novi naslov.\nMožete automatski izmeniti preusmerenje do izvornog naslova.\nPogledajte [[Special:DoubleRedirects|dvostruka]] ili [[Special:BrokenRedirects|pokvarena]] preusmerenja.\nNa vama je odgovornost da veze i dalje idu tamo gde bi trebalo da idu.\n\nStranica neće biti premeštena ako već postoji stranica s tim imenom, osim ako je ona prazna, sadrži preusmerenje ili nema istoriju izmena.\nTo znači da možete vratiti stranicu na prethodno mesto ako pogrešite, ali ne možete zameniti postojeću stranicu.\n\nPažnja!\nOvo može predstavljati drastičnu i neočekivanu izmenu za popularnu stranicu;\ndobro razmislite o posledicama pre nego što nastavite.", - "movepagetext-noredirectfixer": "Donji obrazac će preimenovati stranicu, premeštajući celu istoriju na novo ime.\nStari naslov postaće preusmerenje na novi naslov.\nPogledajte [[Special:DoubleRedirects|dvostruka]] ili [[Special:BrokenRedirects|pokvarena]] preusmerenja.\nNa vama je odgovornost da veze i dalje idu tamo gde bi trebalo da idu.\n\nStranica neće biti premeštena ako već postoji stranica s tim imenom, osim ako je ona prazna, sadrži preusmerenje ili nema istoriju izmena.\nTo znači da možete vratiti stranicu na prethodno mesto ako pogrešite, ali ne možete zameniti postojeću stranicu.\n\nPažnja!\nOvo može predstavljati drastičnu i neočekivanu izmenu za popularnu stranicu;\ndobro razmislite o posledicama pre nego što nastavite.", + "movepagetext": "Donji obrazac će preimenovati stranicu, premeštajući celu istoriju na novo ime.\nStari naslov postaće preusmerenje na novi.\nMožete ažurirati preusmerenja koja vode do izvornog naslova;\npogledajte [[Special:DoubleRedirects|dvostruka]] ili [[Special:BrokenRedirects|pokvarena]] preusmerenja.\nNa vama je odgovornost da veze i dalje idu tamo gde treba.\n\nStranica neće biti premeštena ako već postoji stranica s tim imenom (osim ako je prazna, sadrži preusmerenje ili nema istoriju izmena).\nTo znači da možete vratiti stranicu na prethodno ime ako pogrešite, ali ne možete ''prepisati'' postojeću.\n\nNapomena:\nOvo može predstavljati drastičnu i neočekivanu izmenu za popularnu stranicu;\ndobro razmislite o posledicama pre nego što nastavite.", + "movepagetext-noredirectfixer": "Donji obrazac će preimenovati stranicu, premeštajući celu istoriju na novo ime.\nStari naslov postaće preusmerenje na novi.\nPogledajte [[Special:DoubleRedirects|dvostruka]] ili [[Special:BrokenRedirects|pokvarena]] preusmerenja.\nNa vama je odgovornost da veze i dalje idu tamo gde treba.\n\nStranica neće biti premeštena ako već postoji stranica s tim imenom (osim ako je prazna, sadrži preusmerenje ili nema istoriju izmena).\nTo znači da možete vratiti stranicu na prethodno ime ako pogrešite, ali ne možete ''prepisati'' postojeću.\n\nNapomena:\nOvo može predstavljati drastičnu i neočekivanu izmenu za popularnu stranicu;\ndobro razmislite o posledicama pre nego što nastavite.", "movepagetalktext": "Ako ste označili ovaj kvadratić, odgovarajuća stranica za razgovor biće automatski premeštena na novi naslov, osim ako već postoji stranica za razgovor sa istim naslovom.\n\nU tom slučaju, moraćete ručno da je premestite ili spojite, ako ima potrebe za tim.", "moveuserpage-warning": "'''Upozorenje:''' na putu ste da premestite korisničku stranicu. Imajte u vidu da će samo stranica biti premeštena, a sam korisnik ''neće'' biti preimenovan.", "movecategorypage-warning": "Upozorenje: premeštate stranicu kategorije. Imajte na umu da će samo stranica biti premeštena i da sve stranice u staroj kategoriji neće biti rekategorisane u novu kategoriju.", @@ -3094,6 +3098,7 @@ "timezone-utc": "UTC", "duplicate-defaultsort": "Upozorenje: Podrazumevani ključ svrstavanja „$2“ menja raniji podrazumevani ključ svrstavanja „$1“.", "duplicate-displaytitle": "Upozorenje: naslov za prikaz „$2“ zameniće postojeći „$1“.", + "restricted-displaytitle": "Upozorenje: Naslov za prikaz „$1” je ignorisan pošto nije ekvivalentan stvarnom naslovu stranice.", "version": "Verzija", "version-extensions": "Instalirana proširenja", "version-skins": "Instalirane teme", @@ -3235,6 +3240,7 @@ "compare-invalid-title": "Navedeni naslov je neispravan.", "compare-title-not-exists": "Navedeni naslov ne postoji.", "compare-revision-not-exists": "Navedena izmena ne postoji.", + "diff-form": "'''forma'''", "dberr-problems": "Došlo je do tehničkih problema.", "dberr-again": "Sačekajte nekoliko minuta i ponovo učitajte stranicu.", "dberr-info": "(Ne mogu pristupiti bazi podataka: $1)", diff --git a/languages/i18n/su.json b/languages/i18n/su.json index c53b13af9f..3619406e68 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,8 @@ "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-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 +848,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 +903,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 +915,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 +940,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 +1004,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 +1029,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 +1048,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 +1088,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 +1110,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 +1170,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 +1196,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 +1215,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 +1241,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 +1286,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 +1306,47 @@ "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-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", + "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 +1406,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 +1432,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 +1457,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 +1472,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 +1493,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.", @@ -1395,6 +1512,7 @@ "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.", @@ -1411,7 +1529,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 +1540,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:", @@ -1463,6 +1581,7 @@ "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", @@ -1490,15 +1609,19 @@ "mimesearch": "Pamaluruhan MIME", "mimesearch-summary": "Ieu kaca bisa dipaké nyaring koropak dumasar tipeu MIME-na. Asupan: contenttype/subtype, contona image/jpeg.", "mimetype": "Tipeu MIME:", - "download": "pulut", + "download": "undeur", "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 +1642,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 +1686,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 +1745,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 +1798,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 +1816,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 +1830,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 +1839,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 +1860,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 +1870,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 +1900,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 +1910,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 +1921,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 +1945,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 +1972,12 @@ "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}}", "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 +1986,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 +2007,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 +2024,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 +2074,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,11 +2161,11 @@ "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", @@ -2037,20 +2212,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,6 +2252,7 @@ "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.", + "namespace-nosubpages": "Ngaranspasi \"$1\" teu ngidinan subkaca.", "newtitle": "Judul anyar:", "move-watch": "Awaskeuneun kaca ieu", "movepagebtn": "Pindahkeun kaca", @@ -2142,10 +2322,10 @@ "djvu_no_xml": "Hanteu bisa nyokot XML pikeun berkas DjVu", "thumbnail_invalid_params": "Kasalahan paraméter miniatur", "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:", @@ -2177,8 +2357,8 @@ "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}}", @@ -2257,7 +2437,7 @@ "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", "creditspage": "Pangajén kaca", "nocredits": "Teu aya émbaran pangajén pikeun kaca ieu.", "spamprotectiontitle": "Saringan spam", @@ -2269,6 +2449,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 +2460,17 @@ "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-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 +2505,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 +2530,7 @@ "newimages-legend": "Saringan", "newimages-label": "Ngaran berkas (atawa sawaréh tina ngaranna):", "newimages-user": "Alamat IP atawa sandiasma", + "newimages-mediatype": "Tipeu média:", "noimages": "Taya nanaon.", "gallery-slideshow-toggle": "''Toggle'' miniatur", "ilsubmit": "Paluruh", @@ -2387,8 +2574,13 @@ "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 +2590,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,18 +2634,28 @@ "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-gpsprocessingmethod": "Ngaran métodeu olah GPS", "exif-gpsareainformation": "Ngaran wewengkon GPS", "exif-gpsdatestamp": "Titimangsa GPS", @@ -2503,7 +2710,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 +2720,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,7 +2729,7 @@ "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-2": "format datar", "exif-componentsconfiguration-0": "euweuh", "exif-exposureprogram-1": "Manual", @@ -2615,7 +2822,7 @@ "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", @@ -2716,12 +2923,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 +2948,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,9 +2973,9 @@ "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-note": "* Kaca husus normal.\n* Kaca husus diwates.", "specialpages-group-maintenance": "Laporan pigawéeun", "specialpages-group-other": "Kaca husus lainna", "specialpages-group-login": "Asup log / jieun akun", @@ -2786,10 +2999,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}}", @@ -2797,6 +3014,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", @@ -2806,18 +3025,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.", @@ -2829,7 +3062,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", @@ -2857,7 +3092,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", @@ -2878,20 +3115,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", @@ -2900,25 +3148,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 6f53839bea..ce66881fc7 100644 --- a/languages/i18n/sv.json +++ b/languages/i18n/sv.json @@ -107,13 +107,14 @@ "tog-shownumberswatching": "Visa antalet användare som bevakar", "tog-oldsig": "Din nuvarande signatur:", "tog-fancysig": "Behandla signatur som wikitext (utan en automatisk länk)", - "tog-uselivepreview": "Använd direktuppdaterad förhandsgranskning", + "tog-uselivepreview": "Visa förhandsgranskningar utan att uppdatera sidan", "tog-forceeditsummary": "Påminn mig om jag inte fyller i en redigeringskommentar", "tog-watchlisthideown": "Dölj mina redigeringar i bevakningslistan", "tog-watchlisthidebots": "Visa inte robotredigeringar i bevakningslistan", "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", @@ -763,8 +764,8 @@ "permissionserrorstext-withaction": "Du har inte behörighet att $2, av följande {{PLURAL:$1|anledning|anledningar}}:", "contentmodelediterror": "Du kan inte redigera den här sidversionen eftersom dess innehållsmodell är $1 som skiljer sig från sidans aktuella innehållsmodell $2.", "recreate-moveddeleted-warn": "'''Varning: Du återskapar en sida som tidigare raderats.'''\n\nDu bör överväga om det är lämpligt att fortsätta redigera den här sidan.\nRaderings- och sidflyttningsloggen för den här sidan visas här som hjälp:", - "moveddeleted-notice": "Den här sidan har raderats.\nRaderings- och sidflyttningsloggen för sidan visas nedan som referens.", - "moveddeleted-notice-recent": "Tyvärr, denna sida raderades nyligen (inom de senaste 24 timmarna).\nLoggen för radering och flyttning av sidan visas nedan som referens.", + "moveddeleted-notice": "Den här sidan har raderats.\nRaderings-, skydd- och sidflyttningsloggen för sidan visas nedan som referens.", + "moveddeleted-notice-recent": "Tyvärr, denna sida raderades nyligen (inom de senaste 24 timmarna).\nLoggen för radering, skydd och flyttning av sidan visas nedan som referens.", "log-fulllog": "Visa fullständig logg", "edit-hook-aborted": "Redigering avbruten av hook.\nDen gav ingen förklaring.", "edit-gone-missing": "Kunde inte uppdatera sidan.\nDet verkar som att den har raderats.", @@ -1033,7 +1034,7 @@ "prefs-editwatchlist-clear": "Rensa din bevakningslista", "prefs-watchlist-days": "Antal dygn som skall visas i bevakningslistan:", "prefs-watchlist-days-max": "Maximalt $1 {{PLURAL:$1|dag|dygn}}", - "prefs-watchlist-edits": "Maximalt antal redigeringar som visas i utökad bevakningslista:", + "prefs-watchlist-edits": "Maximalt antal redigeringar som visas i bevakningslistan:", "prefs-watchlist-edits-max": "Maximalt antal: 1 000", "prefs-watchlist-token": "Bevakningslistsnyckel:", "prefs-misc": "Diverse", @@ -1349,16 +1350,20 @@ "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-other-review-tools": "Andra granskningsverktyg", + "rcfilters-group-results-by-page": "Gruppera resultat efter sida", + "rcfilters-grouping-title": "Gruppering", "rcfilters-activefilters": "Aktiva filter", "rcfilters-advancedfilters": "Avancerade filter", "rcfilters-limit-title": "Ändringar att visa", - "rcfilters-limit-shownum": "Visa de senaste $1 ändringarna", + "rcfilters-limit-shownum": "Visa {{PLURAL:$1|den senaste ändringen|de senaste $1 ändringarna}}", "rcfilters-days-title": "Senaste dagarna", "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.", @@ -1375,8 +1380,7 @@ "rcfilters-savedqueries-add-new-title": "Spara filterinställningar", "rcfilters-restore-default-filters": "Återställ standardfilter", "rcfilters-clear-all-filters": "Rensa alla filter", - "rcfilters-show-new-changes": "Visa nya ändringar", - "rcfilters-previous-changes-label": "Ändringar som visades tidigare", + "rcfilters-show-new-changes": "Visa nyaste ändringarna", "rcfilters-search-placeholder": "Filtrera senaste ändringar (bläddra eller börja skriva)", "rcfilters-invalid-filter": "Ogiltigt filter", "rcfilters-empty-filter": "Inga aktiva filter. Alla bidrag visas.", @@ -1389,7 +1393,7 @@ "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.", @@ -1428,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…", @@ -1449,11 +1458,15 @@ "rcfilters-tag-prefix-namespace-inverted": ":not $1", "rcfilters-exclude-button-off": "Exkludera markerade", "rcfilters-exclude-button-on": "Exkluderar markerade", + "rcfilters-view-advanced-filters-label": "Avancerade filter", "rcfilters-view-tags": "Märkta redigeringar", "rcfilters-view-namespaces-tooltip": "Filtrera resultat efter namnrymder", "rcfilters-view-tags-tooltip": "Filtrera resultat med redigeringsmärken", "rcfilters-view-return-to-default-tooltip": "Återvänd till huvudfiltreringsmenyn", "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", "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", @@ -2656,7 +2669,7 @@ "import-nonewrevisions": "Inga sidversioner importerades (alla var antingen redan där eller hoppades över p.g.a. fel).", "xml-error-string": "$1 på rad $2, kolumn $3 (byte $4): $5", "import-upload": "Ladda upp XML-data", - "import-token-mismatch": "Sessionsdata har förlorats.\n\nDu kanske har loggats ut. Var god se till att du fortfarande är inloggad och försök igen.\nOm det fortfarande inte fungerar, prova att [[Special:UserLogout|logga ut]] och logga in igen, samt kontrollera att din webbläsare tillåter kakor från denna webbplats.", + "import-token-mismatch": "Sessionsdata har förlorats.\n\nDu kanske har loggats ut. '''Var god se till att du fortfarande är inloggad och försök igen.'''\nOm det fortfarande inte fungerar, prova att [[Special:UserLogout|logga ut]] och logga in igen, samt kontrollera att din webbläsare tillåter kakor från denna webbplats.", "import-invalid-interwiki": "Kan inte importera från den angivna wikin.", "import-error-edit": "Sidan \"$1\" blev inte importerad eftersom du inte har tillåtelse att redigera den.", "import-error-create": "Sidan \"$1\" blev inte importerad eftersom du inte har tillåtelse att skapa den.", @@ -3549,6 +3562,13 @@ "compare-invalid-title": "Titeln du angav är ogiltig.", "compare-title-not-exists": "Titeln du angav finns inte.", "compare-revision-not-exists": "Versionen du angav finns inte.", + "diff-form": "Skillnader", + "diff-form-oldid": "Gammalt versions-ID (valfritt)", + "diff-form-revid": "Versions-ID för diff", + "diff-form-submit": "Visa differenser", + "permanentlink": "Permanent länk", + "permanentlink-revid": "Sidversions-ID", + "permanentlink-submit": "Gå till sidversion", "dberr-problems": "Ursäkta! Denna sajt har just nu tekniska problem.", "dberr-again": "Pröva med att vänta några minuter och ladda om.", "dberr-info": "(Kan inte komma åt databasen: $1)", diff --git a/languages/i18n/tay.json b/languages/i18n/tay.json new file mode 100644 index 0000000000..47214e0ca3 --- /dev/null +++ b/languages/i18n/tay.json @@ -0,0 +1,794 @@ +{ + "@metadata": { + "authors": [ + "Akamycoco", + "Corainn", + "Hitaypayan", + "Temu19900728", + "Translatealcd" + ] + }, + "sunday": "Hngawan ryax", + "monday": "’Ringan qutux hngawan", + "tuesday": "Tay sazing ryax qutux hngawan", + "wednesday": "Tay cyugal ryax qutux hngawan", + "thursday": "Tay spayat ryax qutux hngawan", + "friday": "Tay zmagal ryax qutux hngawan", + "saturday": "Smka’ ryax", + "sun": "Hngawan ryax", + "mon": "Ringan qutux hngawan", + "tue": "Tay sazing ryax qutux hngawan", + "wed": "Tay cyugal ryax qutux hngawan", + "thu": "Tay spayat ryax qutux hngawan", + "fri": "Tay zmagal ryax qutux hngawan", + "sat": "Smka’ ryax", + "january": "Tay qutux byacing", + "february": "Tay sazing byacing", + "march": "Tay cyugal byacing", + "april": "Tay spayat byacing", + "may_long": "Tay ymagal byacing", + "june": "Tay mtzyu’ byacing", + "july": "Tay mpitu’ byacing", + "august": "Tay mspat byacing", + "september": "Tay mqiru’ byacing", + "october": "Tay mawpuw byacing", + "november": "Tay mawpuw qutux byacing", + "december": "Tay mawpuw sazing byacing", + "january-gen": "tay qutux byacing", + "february-gen": "Tay sazing byacing", + "march-gen": "Tay cyugal byacing", + "april-gen": "Tay spayat byacing", + "may-gen": "Tay ymagal byacing", + "june-gen": "Tay mtzyu’ byacing", + "july-gen": "Tay mpitu’ byacing", + "august-gen": "Tay mspat byacing", + "september-gen": "Tay mqiru’ byacing", + "october-gen": "Tay mawpuw byacing", + "november-gen": "Tay mawpuw qutux byacing", + "december-gen": "Tay mawpuw sazing byacing", + "jan": "Tay qutux byacing", + "feb": "Tay sazing byacing", + "mar": "Tay cyugal byacing", + "apr": "Tay spayat byacing", + "may": "Tay ymagal byacing", + "jun": "Tay mtzyu’ byacing", + "jul": "Tay mpitu’ byacing", + "aug": "Tay mspat byacing", + "sep": "Tay mqiru’ byacing", + "oct": "Tay mawpuw byacing", + "nov": "Tay mawpuw qutux byacing", + "dec": "Tay mawpuw sazing byacing", + "january-date": "tay qutux byacing $1", + "february-date": "tay sazing byacing $1", + "march-date": "tay cyugal byacing $1", + "april-date": "tay spayat byacing $1", + "may-date": "tay ymagal byacing $1", + "june-date": "tay mtzyu’ byacing $1", + "july-date": "tay mpitu’ byacing $1", + "august-date": "tay mspat byacing $1", + "september-date": "tay mqiru’ byacing $1", + "october-date": "tay mawpuw byacing $1", + "november-date": "tay mawpuw qutux byacing $1", + "december-date": "tay mawpuw sazing byacing $1", + "period-am": "AM", + "period-pm": "PM", + "pagecategories": "{{PLURAL:$1|Pinbuci’ niya’ qmasuw|$1 Pinbuci’ niya’ qmasuw}}", + "category_header": "Zngazyan tay qsahuy pintbcyan sa\"$1\"", + "subcategories": "Uzyuk na pintbcyan", + "category-media-header": "Cyux niya’ ptbcyun na \"$1\" Meti’", + "hidden-categories": "{{PLURAL:$1| Lnqing na pintbcyan }}", + "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", + "about": "Nanu’ quw", + "newwindow": "(gyahiy na giqas na kktan)", + "cancel": "laxan", + "moredotdotdot": "Pzyux na’...", + "mypage": "Zzngayan", + "mytalk": "mpkal", + "anontalk": "mpkal", + "navigation": "Pglaing pzyangay", + "and": " squw ", + "faq": "FAQ", + "namespaces": "Kungcyen na sslalu’", + "variants": "Qbuci’ pinsbahan", + "navigation-heading": "Biru’ na bzyagan pglaing pzyangay", + "returnto": " ’bzinah $1", + "tagline": "Minkahul squw {{SITENAME}}", + "help": "Minblaq kmal", + "search": "Hhkangi’", + "searchbutton": "Shkangi’", + "go": "mtzyuwaw", + "searcharticle": "Ptzyuwaw", + "history": "Zngazyan binrwan sraral", + "history_short": "Kwara’ binrwan sraral", + "history_small": "Pinhknyan sraral", + "printableversion": "Kinbalay sa musa’ blaq sp’isat", + "permalink": "Mrayrhuw na pin’ubuy", + "view": "Psbaybzih minblaq mita’", + "view-foreign": "Psbzih mita’ squ$1", + "edit": "Smr’zyut miru’smr’zyut miru’", + "create": "Ps’rux", + "create-local": "Tnwang sa kay’ na rhzyal qasa", + "delete": "’muyut", + "protect": "mlahang", + "protect_change": "smbah", + "newpage": "Giqas na zngayan", + "talkpagelinktext": "mpkal", + "specialpage": "Mnanak na bbrwan", + "personaltools": "Qayqaya’ nanak saxa’", + "talk": "Spkayal", + "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": "Hhkangi’", + "aboutsite": "Nanu’ quw {{SITENAME}}", + "aboutpage": "Project: Nanu’ quw", + "copyrightpage": "{{ns:project}}:pancyuen", + "currentevents": "’Awsan na giqas na Sinbung", + "currentevents-url": "Project: Pzyang giqas na sinbung", + "disclaimers": "Gaga’ na iyat ppanga’ sikining", + "disclaimerpage": "Project: kwara’ qu gaga’ na iyat ppanga’ sikining", + "edithelp": "Smbbaq sa ssawn nanu’ miru’ qsahuy na ssr’zyut miru’", + "helppage-top-gethelp": "Minblaq kmal", + "mainpage": "T’ringan na zzngayan", + "mainpage-description": "T’ringan na zzngayan", + "policy-url": "Project:Gaga’ na zyuwaw nanak", + "portal": "Kkzyup secyun", + "portal-url": "Project:kkzyup secyun", + "privacy": "Gaga’ na zyuwaw nanak", + "privacypage": "Project: Gaga’ na zyuwaw nanak", + "ok": "Wal balay", + "retrievedfrom": "’Nagal sa \"$1\"", + "editsection": "smr’zyut miru’", + "editold": "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": "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)", + "nstab-main": "Zzngayan", + "nstab-user": "Pkt’aniy", + "nstab-special": "Mnanak na bbrwan", + "nstab-project": "Zngyan na Cwan’an", + "nstab-image": "biru’ na zayzyuwaw", + "nstab-mediawiki": "pintkaykay’", + "nstab-template": "Mopan", + "nstab-category": "Ps’anak sa mkgluw", + "mainpage-nstab": "T’ringan na zzngayan", + "missingarticle-diff": "(Kin’ini’ ptnaq:$1, $2)", + "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’", + "yourpassword": "Mima’:", + "userlogin-yourpassword": "Nanak kung baq sa llpgan qaniy", + "userlogin-yourpassword-ph": "Brwaniy Mima’ su’", + "userlogin-remembermypassword": "Laxiy zngiy kinzyup maku’", + "login": "mzyup", + "logout": "mshriq", + "userlogout": "mshriq", + "notloggedin": "Ini’ su’ kzyup na’", + "userlogin-noaccount": "Ungat canghaw?", + "userlogin-joinproject": "Twangiy {{SITENAME}}", + "createaccount": "Ps’rux canghaw", + "userlogin-resetpassword-link": "Zngyan mima’?", + "userlogin-helplink2": "Mzyup musa’ rmaw", + "createacct-emailrequired": "Zyusyo na e-meyo’", + "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}}", + "createacct-benefit-body3": "misuw qaniy na{{PLURAL:$1| smnr’zyut miru’}}", + "loginlanguagelabel": "Kay’:$1", + "pt-login": "Mzyup", + "pt-login-button": "mzyup", + "pt-createaccount": "Ps’rux canghaw", + "pt-userlogout": "mshriq", + "botpasswords-label-create": "Ps’rux", + "botpasswords-label-update": "Sbahun giqas", + "botpasswords-label-cancel": "laxan", + "botpasswords-label-delete": "’muyut", + "botpasswords-label-resetpassword": "T’aring lawziy smi’ mima’", + "resetpass-submit-cancel": "laxan", + "passwordreset": "T’aring lawziy smi’ mima’", + "passwordreset-username": "Lalu’ na pptzyuwaw:", + "passwordreset-email": "Zyusyo na e-meyo’:", + "resettokens-tokens": "Niwan sawsu’:", + "bold_sample": "Qthuy na biru’", + "bold_tip": "Qthuy na biru’", + "italic_sample": "Mtkkiy na biru’", + "italic_tip": "Mtkkiy na biru’", + "link_sample": "Spzyang lalu’ na ’ubuy sqaniy", + "link_tip": "’nubuy sa qsahuy", + "extlink_sample": "http://www.example.com qaniy quw lalu’ na ’ubuy", + "extlink_tip": "’ubuy tay bzinah(zngyay su’ yaquw http://quw tqsu’ miru’)", + "headline_sample": "Biru’ spzyang lalu’ tay msinqutux", + "headline_tip": "Biru’ na spzyang lalu’ na binrwan tay msinsazing", + "nowiki_sample": "Si’ quw biru’ na iyat minKs’ xwa’", + "nowiki_tip": "Ini’ si’ inlung quw minKs’xwa’ kkayal kay’ na Wiki’", + "image_tip": "Pinraw niya’ biru’ na zayzyuwaw", + "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:", + "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.", + "note": " pinkita’ niya’ sa pinzga’ :", + "editing": "Nyuw smr’zyut miru’ $1", + "editingsection": "smr’zyut miru’ $1 (gnaygay binrwan)", + "templatesused": "Zngayan qaniy ga cyux niya’ sptzyuwaw qu nyux sbiru’ hugal qaniy{{PLURAL:$1|mopan}}:", + "template-protected": "(klhangan)", + "template-semiprotected": "(ana walskun ga baqun smbah)", + "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", + "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’", + "revision-info": "Nanu’ squ $1 kahul sa {{GENDER:$6|$2}} smnbah squ $7", + "previousrevision": "Sinbahan tay glaing", + "nextrevision": "Ssbahun babaw nya’→", + "currentrevisionlink": "Pzyang giqas na sinhzi’", + "cur": "misuw qaniy ga", + "last": "tay glaing", + "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:", + "editundo": "Psbzinah", + "diff-multi-sameuser": "({{PLURAL:ini’ kta quw sinbahan tay kska’ nquw sinbahan tay $1}})", + "searchresults": "Babaw na hinkangi", + "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)", + "searchmenu-new": "Ps’rux zngazyan squw Wiki qaniy \"[[:$1]]\"!{{PLURAL:$2|0=|Ini’ ga kt’aniy squ zngayan ka wal su’ ’lwan.|Ini’ ga kta sa hinkangi’ naha’ sa bzinah na zngazyan.}}", + "searchprofile-articles": "Bnrwan tay qsahuy na zzngazyan", + "searchprofile-images": "Twometi’", + "searchprofile-everything": "Kwara’", + "searchprofile-advanced": "minbayblaq balay", + "searchprofile-articles-tooltip": "Hkangi’ sa qsahuy na $1", + "searchprofile-images-tooltip": "Hhkangi’ biru’ na bniru’ sa zayzyuwaw", + "searchprofile-everything-tooltip": "Hkangi’ kwara’ qu bnrwan tay qsahuy na (kwara’ kin na spkayal sa zzngyan)", + "searchprofile-advanced-tooltip": "Hkangi’ sa sniyan nanak Kungcyen nasslalu’", + "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’", + "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’", + "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", + "youremail": "e-meyo’:", + "username": "{{GENDER:$1|Lalu’ na pptzyuwaw}}:", + "yourlanguage": "Kay’:", + "email": "e-meyo’", + "prefs-i18n": "Koksayka", + "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-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-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", + "recentchanges-summary": "Sksa’ quw misan sinbah sa misuw qaniy ka zngayan sa Wiki’ qaniy.", + "recentchanges-label-newpage": "Cyux ps’rux sa qutux giqas na zzngayan quw sinr’zitan qasa", + "recentchanges-label-minor": "Qaniy hya’ ga mszik sa ssr’zitun miru’", + "recentchanges-label-bot": "Ssr’zyut miru’ qaniy hya’ ga kikay psr’zyut miru’", + "recentchanges-label-unpatrolled": "Iyat pnbzih mita’ na’ quw sinr’zyut bniru’ qaniy", + "recentchanges-label-plusminus": "Wayal spkciky sinbahan na(bzyaqan kkayal na llpgan) ka zzngazyan qasa", + "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-learner-label": "Misan mqbaq", + "rcfilters-filter-bots-label": "squliq na kikay", + "rcfilters-filtergroup-significance": "Spzyang krhun na zyuwaw", + "rclistfrom": "Inkahul misan sinbahan sa $2, $3", + "rcshowhideminor": "$1 mszik sa ssr’tun", + "rcshowhideminor-show": "Pkaykita’", + "rcshowhideminor-hide": "Lqing", + "rcshowhidebots": "$1 squliq na kikay", + "rcshowhidebots-show": "Pkaykita’", + "rcshowhidebots-hide": "Lqing", + "rcshowhideliu": "$1 wal pbiru’ na pptzyuwaw", + "rcshowhideliu-show": "Pkaykita’", + "rcshowhideliu-hide": "Lqing", + "rcshowhideanons": "$1 ini’ sbbqan lalu’ na mintzyuwaw", + "rcshowhideanons-show": "Pkaykita’", + "rcshowhideanons-hide": "Lqing", + "rcshowhidepatr-show": "Pkaykita’", + "rcshowhidepatr-hide": "Lqing", + "rcshowhidemine": "$1 sinr’zyut maku’ miru’", + "rcshowhidemine-show": "Pkaykita’", + "rcshowhidemine-hide": "Lqing", + "rcshowhidecategorization-show": "Pkaykita’", + "rcshowhidecategorization-hide": "Lqing", + "rclinks": "Pinkaykita’ sinbah sa $1 smbah squw $2 misuw qaniy", + "diff": "kin’ini’ ptnaq", + "hist": "Pinhknyan sraral", + "hide": "Lqing", + "show": "pkaykita’", + "minoreditletter": "cipuq", + "newpageletter": "Giqas", + "boteditletter": "squliq na kikay", + "rc-change-size-new": "sin-nbah$1 {{PLURAL:bzyaqan kkayal na llpgan}}", + "recentchangeslinked": "M’ubuy quw zyuwaw na sinbahan", + "recentchangeslinked-feed": "M’ubuy quw zyuwaw na sinbahan", + "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": "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-dialog-button-back": "’bzinah", + "upload-dialog-button-save": "Cucun", + "upload-form-label-infoform-description": "Miblaq pnqzyu’ sa zyuwaw", + "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’", + "filehist-thumbtext": "Pinkcikuy kbalay na syasing squ kinblayan $1", + "filehist-user": "kwara’ ka cyux mbing ka qutux qutux ngasal.", + "filehist-dimensions": "Sspngan kinkrahu’", + "filehist-comment": "Tnwang smbbaq miru’", + "imagelinks": "Pptzyuwaw na sinr’zyut biru’", + "linkstoimage": "Nyux sbiru’ tay hugal ka {{PLURAL:$1| qutux zngazyan |$1 qutux zngazyan}}sp’ubuy sa biru’ qaniy.", + "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", + "randompage": "Random page", + "randomincategory-submit": "Musa’", + "statistics": "Sinqunan plpuw", + "pageswithprop-submit": "Musa’", + "brokenredirects-edit": "Smr’zyut miru’", + "brokenredirects-delete": "’muyut", + "withoutinterwiki-submit": "Pkaykita’", + "nbytes": "$1 {{PLURAL:$1|qutux llpgan na bzyaqan kkayal}}", + "nmembers": "$1 {{PLURAL:$1|pinglgan}}", + "prefixindex-submit": "Pkaykita’", + "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’", + "pager-older-n": "{{PLURAL:$1|smural hazi’ quw $1}}", + "suppress": "Shtuy", + "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": "Pinhknyan sraral", + "logeventslist-submit": "Pkaykita’", + "checkbox-all": "Kwara’", + "allpages": "Kwara’ biru’ na zngyan", + "nextpage": "Llpgan tay suruw ($1)", + "prevpage": "Llpgan tay glaing ($1)", + "allarticles": "Kwara’ biru’ na zngyan", + "allpagessubmit": "Mtzyuwaw", + "categories": "Pintbcyan", + "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", + "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’", + "restriction-create": "Ps’rux", + "undeletebtn": "Psbzih", + "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’.”)", + "namespace_association": "M’ubuy squw \"kungcyen na sslalu’ \" imi’ niya’", + "tooltip-namespace_association": "Prawngan mwazyaw squw “bbzyagan” qaniy ga spgluw niya’ kwara’ quw kin na ppkayal sa wnwazyaw kungcyen na sslalu’, ini’ ga tunux lalu’ nquw kungcyen na sslalu’", + "blanknamespace": "(Spzyang balay)", + "contributions": "{{GENDER:$1| squliq mniru’}}bniru’ na qmnlah biru’", + "mycontris": "Snli’ sa binrwan", + "anoncontribs": "Snli’ sa binrwan", + "month": "Pcingan na sniyan naha’ ryax na byacing:", + "year": "Pcingan na sniyan naha’ ryax na kawas", + "sp-contributions-logs": "pinhknyan sraral", + "sp-contributions-talk": "mpkal", + "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", + "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 }}", + "whatlinkshere-links": "←p’ubuy", + "whatlinkshere-hideredirs": "t’aring maras lawziy sa spzyang balay sa $1", + "whatlinkshere-hidetrans": "’ nagal sa $1", + "whatlinkshere-hidelinks": "$1 p’ubuy", + "whatlinkshere-filters": "Hmkangi’", + "whatlinkshere-submit": "Musa’", + "ipbreason": "’ringan:", + "autoblocklist-submit": "Hhkangi’", + "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-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", + "tooltip-pt-watchlist": "Nyux su’ mita’ squw binkgan biru’ na sinbahan sinr’zyut miru’", + "tooltip-pt-mycontris": "{{GENDER:|Rwa su’}}binkgan binrwan na squliq mniru’", + "tooltip-pt-login": "Kzyup ha sun misu’, ga baliy maha sikiy musa’ su’ mzyup balay", + "tooltip-pt-logout": "mshriq", + "tooltip-pt-createaccount": "Musa’ misu’ miyan slawkahan maha ps’rux canghaw hru kzyup qsahuy niya ha, ana maha baliy sikiy musa’ maha qasa hiya", + "tooltip-ca-talk": "Nanu’quw spkayal squw zyuwaw qsahuy na zzngayan", + "tooltip-ca-edit": "Sr’zyut squw zzngayan tay sqaniy", + "tooltip-ca-viewsource": "Ana wayal skun quw zngazyan qaniy ga, musa’ su’ baqun musa’ msbaybzih mita’ na’ quw puqing balay lalu’ na binkgan niya’.", + "tooltip-ca-history": "Zzngayan qaniy hya’ ga sinbahan sa wayal qasa", + "tooltip-ca-watch": "Aniy tmwang sa baqun du’ mita’ na biru’ binkgan ka ggyahan llpgan qaniy", + "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": "Usa’ sa t’ringan zzngayan", + "tooltip-n-mainpage": "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", + "tooltip-n-randompage": "Spgluw sa pinkita’ na Randommzyup sa zngayan", + "tooltip-n-help": "Hmkangi’ sa musa’ thuzyay sa ppraw", + "tooltip-t-whatlinkshere": "Aniy paybkuw kwara’ quw m’ubuy sa zzngayan sqaniy ka gniyahan lpgan", + "tooltip-t-recentchangeslinked": "Misan sinbahan sa misuw qaniy lpgan sqaniy ka wayal sp’ubuy sa zzngayan tay bzinah", + "tooltip-feed-atom": "Inkhulan na Atom sa zngazyan qaniy", + "tooltip-t-contributions": "{{GENDER:$1|nanu’ quw nyux mtzyuwaw qaniy ga}}bnkuw niya’ ka bnrwan niya’", + "tooltip-t-upload": "Pawsa’ sa kktan zayzyuwaw na biru’", + "tooltip-t-specialpages": "Kwara’ ka binkgan kktan sa mnanak na zzngayan", + "tooltip-t-print": "Biru’ ka musa’ blaq sp’insat na gniyahan lpgan", + "tooltip-t-permalink": "Sinbahan llpgan ka mrayrhuw pin’ubuy", + "tooltip-ca-nstab-main": "Psbzinah mita; qsahuy na zzngayan", + "tooltip-ca-nstab-user": "Psbzih mita’ zngayan na cyux mtzyuwaw squliq qaniy.", + "tooltip-ca-nstab-special": "Zzngayan qaniy hya’ ga ini’ ptnaq balayna zzngayan, iyat baqun smr’zyut", + "tooltip-ca-nstab-project": "Inblaq mita’ quw zngazyan na Cwan’an qaniy", + "tooltip-ca-nstab-image": "Psbzih mita’ zzngzyan sa biru’ na bniru’ sa zayzyuwaw", + "tooltip-ca-nstab-template": "Kta quw mopan", + "tooltip-ca-nstab-category": "psbzih mita’ sa pintbcyan na zngazyan", + "tooltip-save": "Sku’ qu wayal su’ sbahun", + "tooltip-preview": "Zik na sskun su’ quw sinbahan su’ ga, sbnahiy mita’ quw sinbah su’.", + "tooltip-diff": "Aniy pkita’ quw wayal su’ sbahun tay qsahuy niya’", + "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-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": "Kwara’ tay bbzinah na {{PLURAL:$2|kinbaqun iyal mita’ na}}:$1", + "show-big-image-size": "$1 × $2 qqblayqan zzyangay", + "file-info-gif-looped": "syunxwan", + "file-info-png-looped": "syunxwan", + "newimages-legend": "Hhkangi’", + "ilsubmit": "Hhkangi’", + "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-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’", + "exif-software": "Ggalan pptzyuwaw sa zyuwaw na Tennaw", + "exif-exifversion": "ktan sa kinblayan na Exif", + "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-flash": "Pnilaw na pyax pyax", + "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-orientation-1": "Mutuw galan sa puqing pspngan kwara’ na squliq", + "exif-meteringmode-0": "Ini’ bqbaqiy ginlaylwan", + "exif-meteringmode-255": "Bzinah", + "exif-lightsource-0": "Ini’ bqbaqiy ginlaylwan", + "exif-lightsource-2": "Pnilaw na inkwang", + "exif-lightsource-4": "Pnilaw na pyax pyax", + "exif-lightsource-10": "Mzyulung", + "exif-focalplaneresolutionunit-2": "incun", + "exif-customrendered-0": "Kwara’ hya’ ga cngsyu’", + "exif-scenecapturetype-0": "Galan pspngan", + "exif-contrast-0": "Galan pspngan", + "exif-saturation-0": "Galan pspngan", + "exif-sharpness-0": "Galan pspngan", + "exif-subjectdistancerange-0": "Ini’ bqbaqiy ginlaylwan", + "exif-gpslatitude-n": "Pewe’", + "exif-gpslatitude-s": "Nanwe’", + "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-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’", + "table_pager_next": "Llpgan tay suruw", + "table_pager_prev": "Llpgan tay glaing", + "table_pager_limit_submit": "Pawsun", + "watchlistedit-raw-titles": "Lalu’:", + "watchlistedit-clear-titles": "Lalu’:", + "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|mpkal]])", + "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", + "fileduplicatesearch-filename": "Lalu’ na tang’an:", + "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-reason": "’ringan:", + "compare-page2": "Zzngayan 2", + "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", + "feedback-back": "’bzinah", + "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%)", + "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-persian": "Przn", + "special-characters-group-bangla": "Biru’ na Bengr", + "special-characters-group-thai": "Biru’ na Taykok", + "mw-widgets-titleinput-description-new-page": "ungat zzngayan", + "log-action-filter-all": "Kwara’ biru’ na zngyan", + "log-action-filter-block-block": "Qmhut", + "authmanager-email-label": "e-meyo’", + "authmanager-email-help": "Zyusyo na e-meyo’" +} diff --git a/languages/i18n/te.json b/languages/i18n/te.json index 493d2e6e4e..547c09c643 100644 --- a/languages/i18n/te.json +++ b/languages/i18n/te.json @@ -2292,7 +2292,7 @@ "allmessages-filter": "కస్టమైజేషను స్థితిని బట్టి వడకట్టు:", "allmessages-filter-unmodified": "మార్చబడనివి", "allmessages-filter-all": "అన్నీ", - "allmessages-filter-modified": "మార్చబడినవి", + "allmessages-filter-modified": "అనువదించినవి", "allmessages-prefix": "ఉపసర్గ పై వడపోత:", "allmessages-language": "భాష:", "allmessages-filter-submit": "వెళ్ళు", @@ -3141,6 +3141,7 @@ "compare-invalid-title": "మీరు ఇచ్చిన శీర్షిక చెల్లనిది.", "compare-title-not-exists": "మీరు పేర్కొన్న శీర్షిక లేనే లేదు.", "compare-revision-not-exists": "మీరు పేర్కొన్న కూర్పు లేనే లేదు.", + "diff-form": "ఒక '''ఫారం'''", "dberr-problems": "క్షమించండి! ఈ సైటు సాంకేతిక సమస్యలని ఎదుర్కొంటుంది.", "dberr-again": "కొన్ని నిమిషాలాగి మళ్ళీ ప్రయత్నించండి.", "dberr-info": "(డేటాబేసును చేరలేకున్నాం: $1)", diff --git a/languages/i18n/th.json b/languages/i18n/th.json index a6fde72fb8..cf24b3716a 100644 --- a/languages/i18n/th.json +++ b/languages/i18n/th.json @@ -75,9 +75,9 @@ "tog-prefershttps": "ใช้การเชื่อมต่อปลอดภัยทุกครั้งเมื่อเข้าสู่ระบบแล้ว", "underline-always": "ทุกครั้ง", "underline-never": "ไม่", - "underline-default": "ค่าเริ่มต้นของหน้าตาหรือเบราว์เซอร์", + "underline-default": "ค่าปริยายของหน้าตาหรือเบราว์เซอร์", "editfont-style": "รูปแบบชุดแบบอักษรในพื้นที่แก้ไข:", - "editfont-default": "ค่าเริ่มต้นของเบราว์เซอร์", + "editfont-default": "ค่าปริยายของเบราว์เซอร์", "editfont-monospace": "ชุดอักษรแบบความกว้างคงที่", "editfont-sansserif": "ชุดอักษรแบบไม่มีเชิง", "editfont-serif": "ชุดอักษรแบบมีเชิง", @@ -718,7 +718,7 @@ "postedit-confirmation-restored": "กู้คืนหน้าแล้ว", "postedit-confirmation-saved": "บันทึกการแก้ไขของคุณแล้ว", "edit-already-exists": "ไม่สามารถสร้างหน้าใหม่ได้\nเพราะมีแล้ว", - "defaultmessagetext": "ข้อความสารโดยปริยาย", + "defaultmessagetext": "ข้อความสารปริยาย", "content-failed-to-parse": "แจงส่วนเนื้อหา $2 ของตัวแบบ $1 ล้มเหลว: $3", "invalid-content-data": "ข้อมูลเนื้อหาไม่ถูกต้อง", "content-not-allowed-here": "ไม่อนุญาตเนื้อหา \"$1\" ในหน้า [[$2]]", @@ -732,6 +732,7 @@ "content-model-css": "CSS", "content-json-empty-object": "วัตถุเปล่า", "content-json-empty-array": "แถวเปล่า", + "duplicate-args-warning": "คำเตือน: [[:$1]] กำลังเรียกใช้ [[:$2]] ด้วยค่ามากกว่าหนึ่งค่าสำหรับตัวแปร \"$3\" เฉพาะค่าสุดท้ายที่ระบุเท่านั้นจะถูกนำมาใช้", "duplicate-args-category": "หน้าที่ใช้อาร์กิวเมนต์ซ้ำในการเรียกแม่แบบ", "expensive-parserfunction-warning": "คำเตือน: หน้านี้มีการเรียกใช้ฟังก์ชันแจงส่วนมากเกินไป\n\nหน้านี้ควรมีการเรียกใช้น้อยกว่า $2 ครั้ง แต่ปัจจุบันมีการเรียกใช้ $1 ครั้ง", "expensive-parserfunction-category": "หน้าที่มีการเรียกใช้ฟังก์ชันแจงส่วนมากเกินไป", @@ -938,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": "ทั้งหมด", @@ -977,7 +978,7 @@ "prefs-email": "ตัวเลือกอีเมล", "prefs-rendering": "การแสดงผล", "saveprefs": "บันทึก", - "restoreprefs": "คืนการตั้งค่าโดยปริยายทั้งหมด (ในทุกส่วน)", + "restoreprefs": "คืนการตั้งค่าปริยายทั้งหมด (ในทุกส่วน)", "prefs-editing": "การแก้ไข", "searchresultshead": "ค้นหา", "stub-threshold": "ความยาวของหน้าที่ใช้เป็นเส้นแบ่งในการระบุหน้าโครง เพื่อจะให้มีการจัดรูปแบบเฉพาะตัว สำหรับลิงก์ที่โยงมายังโครง ($1):", @@ -992,7 +993,7 @@ "savedrights": "บันทึกกลุ่มผู้ใช้ของ {{GENDER:$1|$1}} แล้ว", "timezonelegend": "เขตเวลา:", "localtime": "เวลาท้องถิ่น:", - "timezoneuseserverdefault": "ใช้ค่าโดยปริยายของวิกิ ($1)", + "timezoneuseserverdefault": "ใช้ค่าปริยายของวิกิ ($1)", "timezoneuseoffset": "อื่น ๆ (ระบุส่วนต่างเวลา)", "servertime": "เวลาเซิร์ฟเวอร์:", "guesstimezone": "เรียกค่าจากเบราว์เซอร์", @@ -1009,12 +1010,12 @@ "allowemail": "เปิดรับอีเมลจากผู้ใช้อื่น", "prefs-searchoptions": "ค้นหา", "prefs-namespaces": "เนมสเปซ", - "default": "ค่าโดยปริยาย", + "default": "ค่าปริยาย", "prefs-files": "ไฟล์", "prefs-custom-css": "สไตล์ชีตปรับแต่งเอง", "prefs-custom-js": "จาวาสคริปต์ปรับแต่งเอง", "prefs-common-css-js": "CSS / จาวาสคริปต์รวมสำหรับทุกหน้าตา:", - "prefs-reset-intro": "คุณสามารถใช้หน้านี้ตั้งการตั้งค่าของคุณเป็นค่าโดยปริยายของเว็บใหม่\nไม่สามารถทำกลับได้", + "prefs-reset-intro": "คุณสามารถใช้หน้านี้ตั้งการตั้งค่าของคุณเป็นค่าปริยายของเว็บใหม่\nไม่สามารถทำกลับได้", "prefs-emailconfirm-label": "การยืนยันอีเมล:", "youremail": "อีเมล:", "username": "{{GENDER:$1|ชื่อผู้ใช้}}:", @@ -1272,6 +1273,8 @@ "recentchanges-submit": "แสดง", "rcfilters-activefilters": "ตัวกรองที่ทำงาน", "rcfilters-advancedfilters": "ตัวกรองขั้นสูง", + "rcfilters-days-show-days": "$1 วัน", + "rcfilters-days-show-hours": "$1 ชั่วโมง", "rcfilters-quickfilters": "ตัวกรองที่บันทึกไว้", "rcfilters-quickfilters-placeholder-title": "ยังไม่มีลิงก์ที่บันทึกไว้", "rcfilters-savedqueries-defaultlabel": "ตัวกรองที่บันทึกไว้", @@ -1282,6 +1285,7 @@ "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": "คืนค่าตัวกรองปริยาย", @@ -1295,16 +1299,15 @@ "rcfilters-highlightmenu-help": "เลือกสีสำหรับเน้นการแสดงคุณสมบัตินี้", "rcfilters-filterlist-noresults": "ไม่พบตัวกรองใด ๆ", "rcfilters-noresults-conflict": "ไม่พบผลลัพธ์ เนื่องจากเงื่อนไขการค้นขัดแย้งกัน", - "rcfilters-filtergroup-registration": "การลงทะเบียนผู้ใช้", - "rcfilters-filter-registered-label": "ลงทะเบียน", - "rcfilters-filter-registered-description": "ผู้แก้ไขที่ล็อกอินแล้ว", - "rcfilters-filter-unregistered-label": "ไม่ได้ลงทะเบียน", - "rcfilters-filter-unregistered-description": "ผู้แก้ไขที่ไม่ได้ล็อกอิน", "rcfilters-filter-editsbyself-label": "การแก้ไขของคุณเอง", "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": "ไม่ได้ลงทะเบียน", + "rcfilters-filter-user-experience-level-unregistered-description": "ผู้แก้ไขที่ไม่ได้ล็อกอิน", "rcfilters-filter-user-experience-level-newcomer-label": "ผู้ที่มาใหม่", "rcfilters-filter-user-experience-level-experienced-label": "ผู้ใช้ที่มีความเชี่ยวชาญ", "rcfilters-filter-minor-label": "การแก้ไขเล็กน้อย", @@ -1480,6 +1483,7 @@ "upload-form-label-own-work": "นี่เป็นงานสร้างสรรค์ของฉันเอง", "upload-form-label-infoform-categories": "หมวดหมู่", "upload-form-label-infoform-date": "วันที่", + "upload-form-label-not-own-work-local-generic-local": "คุณอาจต้องการทดลองใช้[[Special:Upload|หน้าอัปโหลดปริยาย]]", "backend-fail-backup": "ไม่สามารถสำรองไฟล์ \"$1\"", "backend-fail-notexists": "ไม่มีไฟล์ $1", "backend-fail-hashes": "ไม่สามารถดึง hash ของไฟล์ เพื่อใช้เปรียบเทียบ", @@ -2504,12 +2508,12 @@ "pageinfo-header-edits": "ประวัติการแก้ไข", "pageinfo-header-restrictions": "การล็อกหน้า", "pageinfo-header-properties": "คุณสมบัติหน้า", - "pageinfo-display-title": "แสดงชื่อ", - "pageinfo-default-sort": "หลักการเรียงลำดับโดยปริยาย", + "pageinfo-display-title": "หัวเรื่องของหน้าเมื่อแสดงผล", + "pageinfo-default-sort": "ค่าปริยายของคำหลักในการเรียงลำดับ", "pageinfo-length": "ความยาวหน้า (ไบต์)", "pageinfo-article-id": "หมายเลขประจำหน้า", - "pageinfo-language": "ภาษาเนื้อหาของหน้า", - "pageinfo-content-model": "ตัวแบบเนื้อหาของหน้า", + "pageinfo-language": "ภาษาของเนื้อหาของหน้า", + "pageinfo-content-model": "รูปแบบเนื้อหาของหน้า", "pageinfo-robot-policy": "การทำดัชนีโดยบอต", "pageinfo-robot-index": "อนุญาต", "pageinfo-robot-noindex": "ไม่อนุญาต", @@ -2526,8 +2530,9 @@ "pageinfo-lasttime": "วันที่แก้ไขล่าสุด", "pageinfo-edits": "จำนวนการแก้ไขรวม", "pageinfo-authors": "จำนวนผู้เขียนทั้งหมด", - "pageinfo-recent-edits": "การแก้ไขล่าสุด (ภายใน $1ที่ผ่านมา)", + "pageinfo-recent-edits": "การแก้ไขล่าสุด (ในช่วง $1ที่ผ่านมา)", "pageinfo-recent-authors": "จำนวนผู้เขียนล่าสุด", + "pageinfo-magic-words": "{{PLURAL:$1|คำสั่งพิเศษ}} ($1)", "pageinfo-hidden-categories": "หมวดหมู่ที่ซ่อนอยู่ ($1)", "pageinfo-templates": "แม่แบบที่ใช้ ($1)", "pageinfo-toolboxlink": "สารสนเทศหน้า", @@ -3025,7 +3030,6 @@ "fileduplicatesearch-noresults": "ไม่พบไฟล์ที่มีชื่อ \"$1\"", "specialpages": "หน้าพิเศษ", "specialpages-note-top": "คำอธิบายสัญลักษณ์", - "specialpages-note": "* หน้าพิเศษปกติ\n* หน้าพิเศษที่ถูกจำกัด", "specialpages-group-maintenance": "รายงานการบำรุงรักษา", "specialpages-group-other": "หน้าพิเศษอื่น ๆ", "specialpages-group-login": "ล็อกอิน / สร้างบัญชี", @@ -3074,6 +3078,7 @@ "compare-invalid-title": "ชื่อเรื่องที่คุณระบุไม่ถูกต้อง", "compare-title-not-exists": "ชื่อเรื่องที่คุณระบุไม่มีอยู่", "compare-revision-not-exists": "รุ่นที่คุณระบุไม่มีอยู่", + "diff-form": "'''แบบฟอร์ม'''", "dberr-problems": "ขออภัย เว็บไซต์นี้กำลังพบกับข้อผิดพลาดทางเทคนิค", "dberr-again": "กรุณารอสักครู่แล้วจึงโหลดใหม่", "dberr-info": "(ไม่สามารถเข้าถึงฐานข้อมูล: $1)", diff --git a/languages/i18n/tl.json b/languages/i18n/tl.json index f700a7ade3..43c0c7745d 100644 --- a/languages/i18n/tl.json +++ b/languages/i18n/tl.json @@ -20,7 +20,8 @@ "Stranger195", "Emem.calist", "Asmen", - "MJPCubelo" + "MJPCubelo", + "Blakegripling ph" ] }, "tog-underline": "Pagsasalungguhit ng link:", @@ -539,6 +540,8 @@ "minoredit": "Ito ay isang munting pagbabago", "watchthis": "Bantayan ang pahinang ito", "savearticle": "Itala ang pahina", + "publishpage": "Ilimbag ang pahina", + "publishchanges": "Ilathala ang binago", "preview": "Paunang tingin", "showpreview": "Paunang tingin", "showdiff": "Ipakita ang mga pagbabago", @@ -2106,6 +2109,7 @@ "tooltip-ca-nstab-category": "Tingnan ang pahina ng kategorya", "tooltip-minoredit": "Tandaan ito bilang isang maliit na pagbabago", "tooltip-save": "Sagipin ang iyong mga pagbabago", + "tooltip-publish": "Ilimbag ang pagbabago", "tooltip-preview": "Paunang-tingnan ang mga pagbabago mo, pakigamit muna ito bago sagipin o magtala!", "tooltip-diff": "Ipakita ang mga pagbabagong ginawa mo sa teksto.", "tooltip-compareselectedversions": "Tingnan ang pagkakaiba sa pagitan ng dalawang napiling bersyon ng pahinang ito.", @@ -2839,7 +2843,6 @@ "fileduplicatesearch-result-n": "Ang talaksan na \"$1\" ay may {{PLURAL:$2|1 kapareho|$2 mga kapareho}}.", "fileduplicatesearch-noresults": "Walang natagpuang talaksan na may pangalang \"$1\".", "specialpages": "Mga natatanging pahina", - "specialpages-note": "* Normal na natatanging mga pahina.\n* Pinaghihigpitang natatanging mga pahina.", "specialpages-group-maintenance": "Mga pagpapanatiling ulat", "specialpages-group-other": "Iba pang natatanging mga pahina", "specialpages-group-login": "Mag-login / lumikha ng account", @@ -2886,6 +2889,7 @@ "compare-invalid-title": "Hindi katanggap-tanggap ang tinukoy mong pamagat.", "compare-title-not-exists": "Hindi umiiral ang tinukoy mong pamagat.", "compare-revision-not-exists": "Hindi umiiral ang tinukoy mong rebisyon.", + "diff-form": "isang '''pormularyo'''", "dberr-problems": "Paumanhin! Dumaranas ng mga kahirapang teknikal ang sityong ito.", "dberr-again": "Subuking maghintay ng ilang mga minuto at muling magkarga.", "dberr-info": "(Hindi makaugnay sa tagapaghain ng kalipunan ng dato: $1)", @@ -2957,6 +2961,7 @@ "searchsuggest-containing": "naglalaman ng ...", "api-error-badtoken": "Panloob na kamalian: masamang kahalip.", "api-error-emptypage": "Lumilikha ng bago, hindi pinapayagan ang mga pahinang walang laman.", + "api-error-publishfailed": "Kamaliang panloob: nabigo ang tagapaghain na magtabi ng pansamantalang talaksan.", "api-error-stashfailed": "Panloob na kamalian: nabigo ang tagapaghain na magtabi ng pansamantalang talaksan.", "api-error-unknown-warning": "Hindi nalalamang babala: $1", "api-error-unknownerror": "Hindi malamang kamalian: \"$1\".", diff --git a/languages/i18n/tr.json b/languages/i18n/tr.json index b1cbe8d3c7..aad07df838 100644 --- a/languages/i18n/tr.json +++ b/languages/i18n/tr.json @@ -2618,7 +2618,7 @@ "pageinfo-firstuser": "Sayfa oluşturucu", "pageinfo-firsttime": "Sayfa oluşturulma tarihi", "pageinfo-lastuser": "En son düzenleyici", - "pageinfo-lasttime": "Son düzenleme tarihi", + "pageinfo-lasttime": "Son değişiklik tarihi", "pageinfo-edits": "Düzenleme sayısı", "pageinfo-authors": "Farklı yazar sayısı", "pageinfo-recent-edits": "Son zamanlardaki düzenlemeler (son $1)", @@ -3361,6 +3361,7 @@ "compare-invalid-title": "Belirttiğiniz başlık geçersiz.", "compare-title-not-exists": "Belirttiğiniz başlık mevcut değil.", "compare-revision-not-exists": "Belirttiğiniz sürüm mevcut değil.", + "diff-form": "bir '''form'''", "dberr-problems": "Üzgünüz! Bu site teknik zorluklar yaşıyor.", "dberr-again": "Bir kaç dakika bekleyip tekrar yüklemeyi deneyin.", "dberr-info": "(Veritabanı sunucusuyla irtibat kurulamıyor: $1)", diff --git a/languages/i18n/tt-cyrl.json b/languages/i18n/tt-cyrl.json index 659ef139f4..79af9d4a05 100644 --- a/languages/i18n/tt-cyrl.json +++ b/languages/i18n/tt-cyrl.json @@ -991,20 +991,45 @@ "rcfilters-limit-shownum": "Соңгы $1 үзгәртүне күрсәтү", "rcfilters-days-title": "Соңгы көннәр", "rcfilters-hours-title": "Соңгы сәгатьләр", + "rcfilters-days-show-days": "$1 көн", + "rcfilters-days-show-hours": "$1 сәгать", "rcfilters-quickfilters": "Сакланган фильтрлар", + "rcfilters-savedqueries-add-new-title": "Хәзерге фильтр көйләнмәләрен саклау", "rcfilters-clear-all-filters": "Барлык филтерләрне чистарту", "rcfilters-search-placeholder": "Фильтрланы соңгы үзгәртү (карау яисә кертүне башлау)", + "rcfilters-filterlist-feedbacklink": "Яңа (бета) фильтрләр турында фикер калдыру", + "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-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-experienced-label": "Тәҗрибәле кулланучылар", + "rcfilters-filtergroup-automated": "Автоматлаштырылган кертем", + "rcfilters-filter-bots-description": "Автоматлаштырылган кораллар ярдәмендә ясалган үзгәртүләр.", "rcfilters-filter-humans-label": "Кеше (бот түгел)", + "rcfilters-filter-humans-description": "Кешеләр ясаган үзгәртүләр.", "rcfilters-filter-minor-label": "Кече үзгәртүләр", "rcfilters-filter-minor-description": "«Кече үзгәртү» дип тамгаланган үзгәртүләр", + "rcfilters-filter-major-label": "Гади үзгәртүләр", + "rcfilters-filter-major-description": "«Кече» дип тамгаланмаган үзгәртүләр", + "rcfilters-filtergroup-watchlist": "Күзәтү исемлегегездәге битләр", "rcfilters-filtergroup-changetype": "Үзгәртү төре", "rcfilters-filter-pageedits-label": "Бит үзгәртүләре", "rcfilters-filter-newpages-label": "Бит төзүләре", + "rcfilters-filter-categorization-label": "Төркем үзгәртүләре", + "rcfilters-filter-categorization-description": "Төркемнәргә кушылган яки төркемнәрдән алып ташланган битләр турында язмалар.", "rcfilters-filter-logactions-label": "Беркетмәләнүче гамәлләр", "rcfilters-filter-logactions-description": "Административ гамәлләр, хисап язмасын төзүләр, битне бетерүләр, файл йөкләүләр...", + "rcfilters-filter-lastrevision-label": "Соңгы юрама", + "rcfilters-filter-lastrevision-description": "Битнең соңгы гына үзгәртүе.", + "rcfilters-filter-previousrevision-label": "Соңгы булмаган юрама", + "rcfilters-filter-previousrevision-description": "«Соңгы юрама» булмаган барлык үзгәртүләр.", + "rcfilters-view-advanced-filters-label": "Киңәйтелгән фильтрлар", + "rcfilters-view-tags": "Тәгләнгән үзгәртүләр", "rcnotefrom": "Астарак $3, $4 өчен {{PLURAL:$5|үзгәртүләр күрсәтелгән}} ($1 артык түгел).", "rclistfrom": "$3 $2 башлап яңа үзгәртүләрне күрсәт", "rcshowhideminor": "кече үзгәртүләрне $1", diff --git a/languages/i18n/ug-arab.json b/languages/i18n/ug-arab.json index d942cd8811..2e07b2bf73 100644 --- a/languages/i18n/ug-arab.json +++ b/languages/i18n/ug-arab.json @@ -12,15 +12,17 @@ "아라", "Macofe", "Matma Rex", - "Amire80" + "Amire80", + "Uzdil" ] }, "tog-underline": "ئۇلانما ئاستى سىزىقى:", - "tog-hideminor": "يېقىنقى ئۆزگەرتىشتە ئازراقلا تەھرىرنى يوشۇر", - "tog-hidepatrolled": "يېقىنقى ئۆزگەرتىشتە كۆزەتكەن تەھرىرنى يوشۇر", - "tog-newpageshidepatrolled": "يېڭى بەت تىزىملىكىدە كۆزەتكەن تەھرىرنى يوشۇر", - "tog-extendwatchlist": "كۈچەيتىلگەن كۆزەت تىزىملىكىدە يېقىنقى ئۆزگەرتىشنىلا كۆرسەتمەي بەلكى ھەممە ئۆزگەرتىشنى كۆرسەت", - "tog-usenewrc": "يېقىنقى ئۆزگەرتىش ۋە كۆزەت تىزىملىلىگىدىكى بەتلەر ئۆزگىرىشىگە ئاساسەن گۇرۇپپىلا", + "tog-hideminor": "يېقىنقى ئۆزگەرتىشىكى كىچىك تەھرىرلەشنى يوشۇرۇش", + "tog-hidepatrolled": "يېقىنقى ئۆزگەرتىشتە تەكشۈرۈلگەن تەھرىرلەشنى يوشۇرۇش", + "tog-newpageshidepatrolled": "يېڭى بەت تىزىملىكىدە كۆزەتكەن تەھرىرنى يوشۇرۇش", + "tog-hidecategorization": "بەت تۈرىنى يوشۇرۇش", + "tog-extendwatchlist": "كۆزىتىش تىزىملىكىدە يېقىنقى ئۆزگەرتىشنىلا كۆرسەتمەي بەلكى ھەممە ئۆزگەرتىشنى كۆرسىتىش", + "tog-usenewrc": "يېقىنقى ئۆزگەرتىش ۋە كۆزەت تىزىملىلىگىدىكى بەتلەر ئۆزگىرىشىگە ئاساسەن گۇرۇپپىلاش", "tog-numberheadings": "ماۋزۇغا ئۆزلۈكىدىن تەرتىپ نومۇرى قوش", "tog-showtoolbar": "تەھرىر قورال بالداقنى كۆرسەت", "tog-editondblclick": "قوش چەككەندە بەت تەھرىرلە", @@ -29,6 +31,8 @@ "tog-watchdefault": "مەن تەھرىرلىگەن بەت ۋە ھۆججەتنى كۆزەت تىزىملىكىمگە قوش", "tog-watchmoves": "مەن يۆتكىگەن بەت ۋە ھۆججەتنى كۆزەت تىزىملىكىمگە قوش", "tog-watchdeletion": "مەن ئۆچۈرگەن بەت ۋە ھۆججەتنى كۆزەت تىزىملىكىمگە قوش", + "tog-watchuploads": "يوللىغان يېڭى ھۆججەتلىرىمنى نازارەت تىزىملىكىگە قوشىمەن", + "tog-watchrollback": "قايتقان بەتلەرنى نازارەت تىزىملىكىمگە قوشىمەن", "tog-minordefault": "ھەممە تەھرىرلەشنى ئازراقلا تەھرىرگە تەڭشە", "tog-previewontop": "تەھرىر رامكىسىنىڭ ئۈستىدە ئالدىن كۆزىتىشنى كۆرسەت", "tog-previewonfirst": "تۇنجى قېتىم تەھرىرلىگەندە ئالدىن كۆزىتىشنى كۆرسەت", @@ -39,20 +43,21 @@ "tog-shownumberswatching": "بۇ بەتنى كۆزىتىۋاتقان ئىشلەتكۈچى سانىنى كۆرسەت", "tog-oldsig": "نۆۋەتتىكى ئىمزا:", "tog-fancysig": "ئىمزاغا wiki تېكستى سۈپىتىدە مۇئامىلە قىل (ئۆزلۈكىدىن ئۇلانما ھاسىل بولمايدۇ)", - "tog-uselivepreview": "جانلىق ئالدىن كۆزىتىشنى ئىشلەت (سىناق)", + "tog-uselivepreview": "بەتنى قاچىلىماي تۇرۇپ ئالدىن كۆرۈشنى كۆرسىتىش", "tog-forceeditsummary": "ئۈزۈندە كىرگۈزمىگەندە مېنى ئەسكەرت", - "tog-watchlisthideown": "كۆزەت تىزىملىكىدىن مېنىڭ تەھرىرلىگىنىمنى يوشۇر", - "tog-watchlisthidebots": "كۆزەت تىزىملىكىدىن ماشىنا ئادەم تەھرىرلىگەننى يوشۇر", - "tog-watchlisthideminor": "كۆزەت تىزىملىكىدىن ئازراقلا تەھرىرلىگەننى يوشۇر", - "tog-watchlisthideliu": "كۆزەت تىزىملىكىدە تىزىمغا كىرگەن ئىشلەتكۈچىلەرنى يوشۇر", - "tog-watchlisthideanons": "كۆزەت تىزىملىكىدە ئىمزاسىز ئىشلەتكۈچىلەرنى يوشۇر", - "tog-watchlisthidepatrolled": "كۆزەت تىزىملىكىدىن كۆزىتىلگەن تەھرىرنى يوشۇر", + "tog-watchlisthideown": "كۆزىتىش تىزىملىكىدىن تەھرىرلىگىنىمنى يوشۇرىمەن", + "tog-watchlisthidebots": "كۆزىتىش تىزىملىكىدىن ماشىنا ئادەم تەھرىرلىگەننى يوشۇرۇش", + "tog-watchlisthideminor": "كۆزىتىش تىزىملىكىدىن ئازراقلا تەھرىرلىگەننى يوشۇرۇش", + "tog-watchlisthideliu": "كۆزىتىش تىزىملىكىدە تىزىمغا كىرگەن ئىشلەتكۈچىلەرنىڭ تەھرىرىنى يوشۇرۇش", + "tog-watchlisthideanons": "كۆزەت تىزىملىكىدە ئىمزاسىز ئابونتلارنى يوشۇرۇش", + "tog-watchlisthidepatrolled": "كۆزىتىش تىزىملىكىدىن كۆزىتىلگەن تەھرىرنى يوشۇرۇش", + "tog-watchlisthidecategorization": "بەت تۈرىنى يوشۇرۇش", "tog-ccmeonemails": "مەن باشقىلارغا يوللىغان ئېلخەتنى ئۆزەمگىمۇ بىر نۇسخا يوللا", "tog-diffonly": "تۈزىتىلگەن ئىككى نەشرىنىڭ پەرقىنى سېلىشتۇرغاندا بەت مەزمۇنىنى كۆرسەتمە", "tog-showhiddencats": "يوشۇرۇن تۈرلەرنى كۆرسەت", "tog-norollbackdiff": "قايتۇرۇشنى ئىجرا قىلغاندىن كېيىن پەرقنى كۆرسەتمە", "tog-useeditwarning": "بىر تەھرىرلىگەن بەتنى ساقلىماي چېكىنگەندە مېنى ئەسكەرت", - "tog-prefershttps": "تىزىمغا كىرگەندە دائىم بىخەتەر ئۇلىنىشنى ئىشلەت", + "tog-prefershttps": "تىزىمغا كىرگەندە دائىم بىخەتەر ئۇلىنىشنى ئىشلىتىمەن", "underline-always": "دائىم", "underline-never": "ھەرگىز", "underline-default": "تېرە ياكى توركۆرگۈ كۆڭۈلدىكىسى", @@ -123,6 +128,8 @@ "october-date": "$1- ئۆكتەبىر", "november-date": "$1- نويابىر", "december-date": "$1- دىكابىر", + "period-am": "چۈشتىن بۇرۇن", + "period-pm": "چۈشتىن كېيىن", "pagecategories": "{{PLURAL:$1|تۈر|تۈرلەر}}", "category_header": "\"$1\" تۈردىكى بەتلەر", "subcategories": "تارماق تۈر", @@ -149,16 +156,10 @@ "morenotlisted": "بۇ تىزىملىك تولۇق ئەمەس.", "mypage": "بەت", "mytalk": "مۇنازىرە بېتىم", - "anontalk": "بۇ IP نىڭ مۇنازىرە بېتى", + "anontalk": "مۇنازىرە", "navigation": "يولباشچى", "and": " ۋە", - "qbfind": "ئىزدە:", - "qbbrowse": "كۆز يۈگۈرت", - "qbedit": "تەھرىر", - "qbpageoptions": "بۇ بەت", - "qbmyoptions": "بەتلەرىم", "faq": "كۆپ كۆرۈلىدىغان مەسىلىلەر", - "faqpage": "Project:كۆپ كۆرۈلىدىغان مەسىلىلەر", "actions": "مەشغۇلات", "namespaces": "ئات بوشلۇقى", "variants": "ۋارىيانتلار", @@ -169,40 +170,37 @@ "help": "ياردەم", "search": "ئىزدە", "searchbutton": "ئىزدە", - "go": "يۆتكەل", - "searcharticle": "يۆتكەل", + "go": "يۆتكىلىش", + "searcharticle": "يۆتكىلىش", "history": "بەتنىڭ تارىخى", "history_short": "تارىخ", + "history_small": "تارىخ", "updatedmarker": "مەن ئالدىنقى قېتىم زىيارەت قىلغاندىن بۇيانقى يېڭىلانغىنى", - "printableversion": "باسقىلى بولىدىغان نەشرى", + "printableversion": "باسما نۇسخىسى", "permalink": "مەڭگۈلۈك ئۇلانما", "print": "باس", "view": "كۆرۈنۈش", - "edit": "تەھرىر", + "view-foreign": "$1 دە كۆرۈش", + "edit": "تەھرىرلەش", + "edit-local": "يەرلىك ئىزاھاتنى تەھرىرلەش", "create": "قۇر", - "editthispage": "بۇ بەتنى تەھرىرلە", - "create-this-page": "بۇ بەتنى قۇر", + "create-local": "يەرلىك ئىزاھات قوشۇش", "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": "قۇرۇلۇش بېتىنى كۆرسەت", + "tool-link-userrights": "{{GENDER:$1|ئەزا}} گۇرۇپپىسىنى ئۆزگەرتىش", + "tool-link-userrights-readonly": "{{GENDER:$1|ئەزا}} گۇرۇپپىسىنى كۆرۈش", + "tool-link-emailuser": "بۇ {{ئىشلەتكۈچى|GENDER:$1}} گە ئېلخەت يوللاش", "imagepage": "ھۆججەت بېتىنى كۆرسەت", "mediawikipage": "ئۇچۇر بېتىنى كۆرسەت", "templatepage": "قېلىپ بېتىنى كۆرسەت", @@ -212,6 +210,7 @@ "otherlanguages": "باشقا تىلاردا", "redirectedfrom": "(قايتا نىشان بەلگىلەش ئورنى $1)", "redirectpagesub": "قايتا نىشان بەلگىلەنگەن بەت", + "redirectto": "قايتا نىشانلاش:", "lastmodifiedat": "بۇ بەتنى $1 ئاخىرقى قېتىم $2 دا ئۆزگەرتكەن.", "viewcount": "بۇ بەت {{PLURAL:$1|بىر قېتىم|$1 قېتىم}} زىيارەت قىلىندى.", "protectedpage": "قوغدالغان بەت", @@ -222,15 +221,17 @@ "pool-timeout": "قۇلۇپنى ساقلاش ۋاقىت ھالقىدى", "pool-queuefull": "قاچا ئۆچرىتى توشتى", "pool-errorunknown": "نامەلۇم خاتالىق", + "poolcounter-usage-error": "ئىشلىتىش خاتالىقى: $1", "aboutsite": "{{SITENAME}} ھەققىدە", "aboutpage": "Project:ھەققىدە", "copyright": "خاتىرىلەنگەندىن باشقا تېكست مەزمۇنى $1 ماددىسىغا ئاساسەن تەمىنلىنىدۇ.", "copyrightpage": "{{ns:project}}:نەشر ھوقۇقى", "currentevents": "نۆۋەتتىكى ھادىسە", "currentevents-url": "Project:نۆۋەتتىكى ھادىسە", - "disclaimers": "ئاگاھلاندۇرۇشلار", + "disclaimers": "ھوقۇق باياناتى", "disclaimerpage": "Project:ئومۇمىي ئاگاھلاندۇرۇش", "edithelp": "تەھرىرلەش ياردىمى", + "helppage-top-gethelp": "ياردەم", "mainpage": "باش بەت", "mainpage-description": "باش بەت", "policy-url": "Project:تاكتىكا", @@ -254,17 +255,19 @@ "newmessageslinkplural": "{{PLURAL:$1|بىر يېڭى ئۇچۇر|999=يېڭى ئۇچۇرلار}}", "newmessagesdifflinkplural": "ئاخىرقى {{PLURAL:$1|ئۆزگەرتىش|999=ئۆزگەرتىشلەر}}", "youhavenewmessagesmulti": "$1 دە يېڭى ئۇچۇرىڭىز بار", - "editsection": "تەھرىر", - "editold": "تەھرىر", + "editsection": "تەھرىرلەش", + "editold": "تەھرىرلەش", "viewsourceold": "مەنبەنى كۆرسەت", - "editlink": "تەھرىر", + "editlink": "تەھرىرلەش", "viewsourcelink": "مەنبەنى كۆرسەت", - "editsectionhint": "ئابزاس تەھرىر: $1", + "editsectionhint": "ئابزاس تەھرىرلەش: $1", "toc": "مەزمۇنى", "showtoc": "كۆرسەت", - "hidetoc": "يوشۇر", - "collapsible-collapse": "ئابزاس ئايرىمىسى يوشۇر", + "hidetoc": "يوشۇرۇش", + "collapsible-collapse": "قاتلاش", "collapsible-expand": "ياي", + "confirmable-yes": "ھەئە", + "confirmable-no": "ياق", "thisisdeleted": "كۆرسەت ياكى ئەسلىگە كەلتۈر $1 ؟", "viewdeleted": "$1 كۆرسەت؟", "restorelink": "{{PLURAL:$1|بىر ئۆچۈرۈلگەن نەشرى|$1 ئۆچۈرۈلگەن نەشرى}}", @@ -312,10 +315,13 @@ "readonly_lag": "قوشۇمچە ساندان مۇلازىمىتىر غەملەكنى ئاساسىي مۇلازىمىتىرغا يېڭىلاۋاتىدۇ، ساندان ئۆزلۈكىدىن قۇلۇپلاندى", "internalerror": "ئىچكى خاتالىق", "internalerror_info": "ئىچكى خاتالىق: $1", + "internalerror-fatal-exception": "تىپ \"$1\" نىڭ ئەجەللىك خاتالىقى", "filecopyerror": "\"$1\" ھۆججەتنى\"$2\" غا كۆچۈرەلمىدى.", "filerenameerror": "\"$1\" ھۆججەتنىڭ ئاتىنى \"$2\" غا ئۆزگەرتەلمىدى.", "filedeleteerror": "\"$1\" ھۆججەتنى ئۆچۈرەلمىدى.", "directorycreateerror": "\"$1\" مۇندەرىجىنى قۇرالمىدى.", + "directoryreadonlyerror": "مۇندەرىجە \"$1\" پەقەت ئوقۇشچان.", + "directorynotreadableerror": "مۇندەرىجە \"$1\" نى ئوقۇغىلى بولمىدى.", "filenotfound": "\"$1\" ھۆججەتنى تاپالمىدى.", "unexpected": "كۈتۈلمىگەن قىممەت: \"$1\"=\"$2\".", "formerror": "خاتالىق: جەدۋەلنى يوللىيالمىدى", @@ -334,7 +340,7 @@ "actionthrottled": "مەشغۇلات چەكلەندى", "actionthrottledtext": "ئەخلەتكە قارشى تۇرۇش ئۆلچىمىگە ئاساسەن، سىز بۇ بىر بۆلۈك قىسقا ۋاقىتتا بۇ مەشغۇلاتنى ئېلىپ بېرىشىڭىزنى چەكلىدى، ئەمما سىز بۇ چەكتىن ئېشىپ كەتتىڭىز.\n\nبىر قانچە مىنۇتتىن كېيىن قايتا سىناڭ.", "protectedpagetext": "بۇ بەت تەھرىرلەشنىڭ ئالدىنى ئېلىش ئۈچۈن قۇلۇپلانغان.", - "viewsourcetext": "سىز بۇ بەتنى ئەسلى كودىنى كۆرەلەيسىز ۋە كۆچۈرەلەيسىز:", + "viewsourcetext": "بۇ بەتنىڭ ئەسلى كودىنى كۆرەلەيسىز ۋە كۆچۈرەلەيسىز.", "viewyourtext": "بۇ بەتتىكى '''تەھرىرلىگەنلىرىڭىز'''نىڭ ئەسلى كودىنى كۆرۈپ كۆچۈرەلەيسىز.", "protectedinterface": "بۇ بەت يۇمشاق دېتالنىڭ كۆرۈنۈش تېكستىنى تەمىنلىگەن، خالىغانچە تەھرىرلەشتىن ساقلىنىش ئۈچۈن قۇلۇپلانغان.\nمەسىلەن ئەگەر تەرجىمە قىلسىڭىز [https://translatewiki.net/wiki/Main_Page?setlang=ug translatewiki.net] ئۇنداقتا MediaWiki يەرلىكلەشتۈرۈش پىلانىنى ئىشلىتىشنى ئويلىشىڭ.", "editinginterface": "'''ئاگاھلاندۇرۇش:''' سىز تەھرىرلەۋاتقان بەت يۇمشاق دېتالنىڭ كۆرۈنۈش تېكستىگە ئىشلىتىلىدۇ.\n\nبۇ بەت ئۆزگەرتىلسە باشقا ئىشلەتكۈچىلەرنىڭ كۆرۈنۈش ئۇسلۇبىغا تەسىر كۆرسىتىدۇ.\n\nمەسىلەن ئەگەر تەرجىمە قىلسىڭىز [https://translatewiki.net/wiki/Main_Page?setlang=ug translatewiki.net] ئۇنداقتا MediaWiki يەرلىكلەشتۈرۈش پىلانىنى ئىشلىتىشنى ئويلىشىڭ.", @@ -358,6 +364,7 @@ "virus-scanfailed": "تەكشۈرۈش مەغلۇپ بولدى (كودى $1)", "virus-unknownscanner": "نامەلۇم ۋىرۇسخور", "logouttext": "'''ھازىر تىزىمدىن چىقتىڭىز.'''\n\nدىققەت، بەزى بەتلەر توركۆرگۈنىڭ غەملىكى تازىلانمىغۇچە يەنىلا سىزنى تىزىمغا كىرگەن ھالەتتە كۆرسىتىشى مۇمكىن.", + "cannotlogoutnow-title": "ھازىر چېكىنگىلى بولمايدۇ", "welcomeuser": "$1، خۇش كەپسىز!", "welcomecreation-msg": "ھېساباتىڭىز قۇرۇلدى.\n\n[[Special:Preferences|{{SITENAME}} تەڭشىكىڭىزنى تەڭشەشنى ئۇنتۇپ قالماڭ]].", "yourname": "ئىشلەتكۈچى نامى:", @@ -373,18 +380,24 @@ "createacct-yourpasswordagain-ph": "پارولنى قايتا كىرگۈزۈڭ", "userlogin-remembermypassword": "مېنى ئەستە ساقلا", "userlogin-signwithsecure": "بىخەتەر ئۇلىنىشنى ئىشلەت", + "cannotlogin-title": "ھازىر كىرگىلى بولمايدۇ", + "cannotlogin-text": "كىرگىلى بولمايدۇ.", + "cannotloginnow-title": "ھازىر كىرگىلى بولمايدۇ", + "cannotcreateaccount-title": "ھېسابات قۇرالمىدى", "yourdomainname": "دائىرە نامىڭىز:", "password-change-forbidden": "بۇ ۋىكىدىكى پارولنى ئۆزگەرتەلمەيسىز.", "externaldberror": "بۇ سانداننى دەلىللەش خاتالىقى ياكى سىرتقى ھېساباتىڭىزنى يېڭىلاشنى چەكلىگەنلىكتىن بولغان بولۇشى مۇمكىن.", "login": "تىزىمغا كىر", + "login-security": "سالاھيىتىڭىزنى جەزىملەشتۈرۈڭ", "nav-login-createaccount": "تىزىمغا كىر/ھېسابات قۇر", - "logout": "تىزىمدىن چىق", - "userlogout": "تىزىمدىن چىق", + "logout": "چېكىنىش", + "userlogout": "چېكىنىش", "notloggedin": "تىزىمغا كىرمىدى", "userlogin-noaccount": "ھېساباتىڭىز يوقمۇ؟", "userlogin-joinproject": "{{SITENAME}} قا ئەزا بولۇڭ", "createaccount": "ھېسابات قۇر", "userlogin-resetpassword-link": "پارولىڭىزنى ئۇنتۇپ قالدىڭىزمۇ؟", + "userlogin-helplink2": "كىرىشتىن ياردەم", "userlogin-loggedin": "سىز ئاللىقاچان {{GENDER:$1|$1}} ھالىتىدە تىزىمغا كىرىپ بولدىڭىز. تۆۋەندىكىلەرنى تولدۇرۇپ باشقا ئىشلەتكۈچى ھالىتىدە تىزىمغا كىرىڭ.", "userlogin-createanother": "باشقا ھېسابات قۇرىمەن", "createacct-emailrequired": "ئېلخەت ئادرېسى", @@ -395,8 +408,11 @@ "createacct-realname": "ھەقىقى ئىسمىڭىز (ئىختىيارى)", "createacct-reason": "سەۋەبى", "createacct-reason-ph": "نېمىشقا باشقا ھېسابات قۇرماقچى بولدىڭىز", + "createacct-reason-help": "ئاككونت قۇرۇش خاتىرىسىدە كۆرۈنىدىغان ئۇچۇر", "createacct-submit": "ھېساباتىڭىزنى قۇرۇڭ", - "createacct-another-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|بەت}}", @@ -411,7 +427,7 @@ "nocookiesfornew": "ئىشلەتكۈچى ھېساباتى قۇرۇلمىدى، ئۇنىڭ مەنبەسىنى جەزملىيەلمەيمىز.\ncookies نى قوزغاتقانلىقىڭىزنى جەزملەڭ، بۇ بەتنى قايتا يۈكلەپ ئاندىن قايتا سىناڭ.", "nocookiesforlogin": "{{int:nocookieslogin}}", "noname": "سىز تېخى ئىناۋەتلىك ئىشلەتكۈچى نامىنى بەلگىلىمىدىڭىز.", - "loginsuccesstitle": "تىزىمغا كىرىش مۇۋەپپەقىيەتلىك", + "loginsuccesstitle": "تىزىمغا كىردىڭىز", "loginsuccess": "'''سىز {{SITENAME}} غا \"$1\" سالاھىيىتىدە كىردىڭىز.'''", "nosuchuser": "\"$1\" ناملىق ئىشلەتكۈچىنى تاپالمىدى.\nئىشلەتكۈچى نامىنى تەكشۈرۈڭ.\nياكى [[Special:CreateAccount|يېڭى ھېسابات قۇرۇڭ]].", "nosuchusershort": "\"$1\" ناملىق ئىشلەتكۈچى يوق.\nكىرگۈزگىنىڭىزنى تەكشۈرۈڭ.", @@ -450,12 +466,15 @@ "suspicious-userlogout": "تىزىمدىن چىقىش ئىلتىماسىڭىز رەت قىلىندى، چۈنكى ئۇ بەلكىم بۇزۇلغان توركۆرگۈ ياكى غەملەك ۋاكالەتچىسى يوللىغان بولۇشى مۇمكىن.", "createacct-another-realname-tip": "ھەقىقىي ئىسمىڭىز ئىختىيارى.\nئەگەر تەمىنلەشنى تاللىسىڭىز، ئۇ سىزنىڭ تۆھپىڭىزنىڭ ئىمزاسى بولىدۇ.", "pt-login": "تىزىمغا كىرىڭ", + "pt-login-button": "كىرىش", + "pt-login-continue-button": "داۋاملىق كىرىش", "pt-createaccount": "ھېسابات قۇر", + "pt-userlogout": "چېكىنىش", "php-mail-error-unknown": "PHP نىڭ mail() فونكسىيەسىدىكى يوچۇن خاتالىق", "user-mail-no-addy": "ئېلخەت ئادرېسسىز خەت يوللاشنى سىنىدى.", "user-mail-no-body": "بوش ياكى مەزمۇنى قىسقا مۇۋاپىق بولمىغان تورخەت ئەۋەتىشنى سىنىدى.", "changepassword": "پارولنى ئۆزگەرتىش", - "resetpass_announce": "سىز ۋاقىتلىق ئېلخەت جەزملەش كودىدا تىزىمغا كىرگەن.\nتىزىمغا كىرىشنى تاماملاشتا، بۇ جايدا يېڭى ئىم بەلگىلىشىڭىز لازىم:", + "resetpass_announce": "كىرىشنى تاماملاشتا، چوقۇم يېڭى پارول بەلگىلەيسىز.", "resetpass_text": "", "resetpass_header": "ھېسابات ئىمنى ئۆزگەرت", "oldpassword": "كونا پارول:", @@ -464,7 +483,24 @@ "resetpass_submit": "پارول بەلگىلەپ تىزىمغا كىرىڭ", "changepassword-success": "پارولىڭىز ئوڭۇشلۇق ئۆزگەرتىلدى!", "changepassword-throttled": "سىز بۇ ھېساباتتا تىزىمغا كىرىشنى كۆپ قېتىم سىنىدىڭىز.\n$1 ساقلاپ، ئاندىن قايتا سىناڭ.", + "botpasswords": "ماشىنا ئادەم پارولى", + "botpasswords-disabled": "ماشىنا ئادەم پارولى چەكلەنگەن.", + "botpasswords-existing": "نۆۋەتتە بار ماشىنا ئادەم پارولى", + "botpasswords-createnew": "يېڭى ماشىنا ئادەم پارولى قۇرۇش", + "botpasswords-label-appid": "ماشىنا ئادەم نامى:", + "botpasswords-label-create": "قۇرۇش", + "botpasswords-label-update": "يېڭىلاش", + "botpasswords-label-cancel": "قالدۇرۇش", + "botpasswords-label-delete": "ئۆچۈرۈلگەن", + "botpasswords-label-resetpassword": "پارولنى ئەسلىگە قايتۇرماق", + "botpasswords-label-grants": "قوللىنىش ھوقۇقى:", + "botpasswords-label-grants-column": "ھوقۇقلۇق", + "botpasswords-bad-appid": "ماشىنا ئادەم نامى \"$1\" ئىناۋەتسىز.", + "botpasswords-created-title": "ماشىنا ئادەم پارولى قۇرۇلدى", + "botpasswords-updated-title": "ماشىنا ئادەم پارولى يېڭىلاندى", + "botpasswords-deleted-title": "ماشىنا ئادەم پارولى ئۆچۈرۈلدى", "resetpass_forbidden": "پارولنى ئۆزگەرتەلمىدى", + "resetpass_forbidden-reason": "پارولنى ئۆزگەرتەلمىدى: $1", "resetpass-no-info": "سىز تىزىمغا كىرگەندىن كېيىن بىۋاسىتە بۇ بەتكە كىرىشىڭىز لازىم.", "resetpass-submit-loggedin": "پارولنى ئۆزگەرتىش", "resetpass-submit-cancel": "ۋاز كەچ", @@ -484,6 +520,9 @@ "passwordreset-emailtext-user": "{{SITENAME}} دىكى ئىشلەتكۈچى $1 بېكەت {{SITENAME}} ($4) دىكى پارولىڭىزنى قايتا بېكىتىشنى ئىلتىماس قىلدى .\nتۆۋەندىكى ئىشلەتكۈچىنىڭ {{PLURAL:$3|ھېسابات|ھېسابات}}($4)ى مۇشۇ ئېلخەتكە باغلانغان:\n\n$2\n\n{{PLURAL:$3|بۇ ۋاقىتلىق پارول|بۇ ۋاقىتلىق پارول}} {{PLURAL:$5|بىر كۈن|$5 كۈن}}دە ۋاقتى ئۆتىدۇ. ئەگەر بۇ مەشغۇلاتنى سىز ئىلتىماس قىلغان بولسىڭىز، دەرھال تىزىمغا كىرىپ يېڭى پارولدىن بىرنى تاللاڭ.\nسىز بەلگىلىگەن يېڭى پارول {{PLURAL:$5|كۈن|$5 كۈن}}دە ۋاقتى توشىدۇ. ئەگەر باشقىلار ئىلتىماس قىلغان بولسا ياكى ئۆزىڭىز بەلگىلىگەن پارول ئېسىڭىزگە كېلىپ ئۇنى ئۆزگەرتمىسىڭىز، \nبۇ ئۇچۇرغا پەرۋا قىلماي ئۆزىڭىزنىڭ كونا پارولىنى ئىشلىتىۋېرىڭ.", "passwordreset-emailelement": "ئىشلەتكۈچى نامى: \n$1\n\nۋاقىتلىق پارول: \n$2", "passwordreset-emailsentemail": "پارولنى قايتا بېكىتىش ئېلخېتى يوللاندى.", + "passwordreset-nocaller": "چوقۇم بىر يۆتكەپ ئىشلەتكۈچى تەمىنلەڭ", + "passwordreset-nosuchcaller": "يۆتكەپ ئىشلەتكۈچى تەرەپ مەۋجۇت ئەمەس: $1", + "passwordreset-invalidemail": "ئىناۋەتسىز ئېلخەت ئادرېسى", "changeemail": "ئېلخەت ئادرېس ئۆزگەرت", "changeemail-header": "ھېساباتنىڭ ئېلخەت ئادرېسىنى ئۆزگەرت", "changeemail-no-info": "سىز تىزىمغا كىرگەندىن كېيىن بىۋاسىتە بۇ بەتكە كىرىشىڭىز لازىم.", @@ -520,10 +559,13 @@ "sig_tip": "ۋاقىت تامغىلىق ئىمزايىڭىز", "hr_tip": "توغرىسىغا سىزىق (ئېھتىيات بىلەن ئىشلىتىڭ)", "summary": "ئۈزۈندە", - "subject": "تېما/ماۋزۇ:", + "subject": "ماۋزۇ:", "minoredit": "بۇ ئازراقلا تەھرىرلەش", - "watchthis": "بۇ بەتنى كۆزەت", + "watchthis": "بۇ بەتنى كۆزىتىش", "savearticle": "بەت ساقلا", + "savechanges": "ئۆزگەرتىشنى ساقلاش", + "publishpage": "بەتنى ئېلان قىلىش", + "publishchanges": "يوللىغاننى ئۆزگەرتىش", "preview": "ئالدىن كۆزەت", "showpreview": "ئالدىن كۆزىتىشنى كۆرسەت", "showdiff": "ئۆزگەرتىشنى كۆرسەت", @@ -532,8 +574,8 @@ "missingsummary": "'''ئەسكەرتىش:''' سىز تەھرىرلەش ئۈزۈندىسى تەمىنلىمىدىڭىز. .\nئەگەر ساقلانى يەنە بىر قېتىم چەكسىڭىز، تەھرىرلىگىنىڭىزنى ئۈزۈندە يوق ھالەتتە ساقلايدۇ.", "missingcommenttext": "تۆۋەندە ئىزاھات كىرگۈزۈڭ.", "missingcommentheader": "'''ئەسكەرتىش:''' سىز ئىزاھاتقا ماۋزۇ تەمىنلىمىدىڭىز.\nئەگەر \"$1\"نى يەنە بىر قېتىم چەكسىڭىز، تەھرىرلىگىنىڭىزنى ماۋزۇسىز ھالەتتە ساقلايدۇ.", - "summary-preview": "ئۈزۈندە ئالدىن كۆزىتىش:", - "subject-preview": "تېما/ماۋزۇنى ئالدىن كۆزەت:", + "summary-preview": "ئۈزۈندىنى ئالدىن كۆزىتىش:", + "subject-preview": "ماۋزۇنى ئالدىن كۆرۈش:", "blockedtitle": "ئىشلەتكۈچى چەكلەنگەن", "blockedtext": "'''ئىشلەتكۈچى ئاتىڭىز ياكى IP ئادرېسىڭىزنى $1 چەكلىگەن .'''\n\n بۇنى $1 چەكلىگەن.\nسەۋەبى ''$2''.\n\n* چەكلەش باشلانغان ۋاقىت: $8\n* چەكلەش ئاخىرلىشىدىغان ۋاقىت: $6\n* چەكلەنگۈچى: $7\n\n $1 بىلەن ئالاقىلىشىڭ ياكى باشقا [[{{MediaWiki:Grouppage-sysop}}|باشقۇرغۇچى]] بىلەن بۇ قېتىملىق چەكلەشنى سۆزلىشىشڭ.\nسىز [[Special:Preferences|ھېسابات مايىللىقى]] تەڭشىكىڭىزدە ئىناۋەتلىك ئېلخەت ئادرېسى بەلگىلىمىگەن بولسىڭىز، 'بۇ ئىشلەتكۈچىگە ئېلخەت يوللا' ئىقتىدارىنى ئىشلىتەلمەيسىز. ئىناۋەتلىك ئېلخەتتىن بىرنى بەلگىلىگەندىن كېيىن، بۇ ئىقتىدار چەكلەنمەيدۇ.\nسىزنىڭ نۆۋەتتىكى IP ئادرېسىڭىز $3، چەكلەنگەن كىملىك #$5.\nسوئالىڭىزدا يۇقىرىقى بارلىق ماتېرىياللارنى ئىزاھلاڭ.", "autoblockedtext": "IP ئادرېسىڭىز ئاپتوماتىك چەكلەنگەن، چۈنكى ئىلگىرى باشقا بىر ئىشلەتكۈچىنى $1 چەكلىگەن.\nچەكلەش سەۋەبى:\n\n''$2''.\n\n* چەكلەش باشلانغان ۋاقىت: $8\n* چەكلەش ئاخىرلىشىدىغان ۋاقىت: $6\n* چەكلەنگۈچى: $7\n\n $1 بىلەن ئالاقىلىشىڭ ياكى باشقا [[{{MediaWiki:Grouppage-sysop}}|باشقۇرغۇچى]] بىلەن بۇ قېتىملىق چەكلەشنى سۆزلىشىشڭ.\nسىز [[Special:Preferences|ھېسابات مايىللىقى]] تەڭشىكىڭىزدە ئىناۋەتلىك ئېلخەت ئادرېسى بەلگىلىمىگەن بولسىڭىز، 'بۇ ئىشلەتكۈچىگە ئېلخەت يوللا' ئىقتىدارىنى ئىشلىتەلمەيسىز. ئىناۋەتلىك ئېلخەتتىن بىرنى بەلگىلىگەندىن كېيىن، بۇ ئىقتىدار چەكلەنمەيدۇ.\nسىزنىڭ نۆۋەتتىكى IP ئادرېسىڭىز $3، چەكلەنگەن كىملىك #$5.\nسوئالىڭىزدا يۇقىرىقى بارلىق ماتېرىياللارنى ئىزاھلاڭ.", @@ -567,7 +609,7 @@ "updated": "(يېڭىلاندى)", "note": "'''ئىزاھات:'''", "previewnote": "'''ئېسىڭىزدە بولسۇنكى بۇ پەقەتلا ئالدىن كۆزىتىش.'''\nئۆزگەرتكەن مەزمۇنىڭىز تېخى ساقلانمىدى!", - "continue-editing": "تەھرىرلەشكە يۆتكەل", + "continue-editing": "تەھرىرلەش رايونىغا كۆچۈش", "previewconflict": "بۇ ئالدىن كۆزىتىشتە ئۈستىدىكى تېكست تەھرىرلەش رايونىدىكى مەزمۇننى كۆرسەتتى. ئۇ ساقلانى تاللىغاندىن كېيىن كۆرۈنىدۇ.", "session_fail_preview": "'''كەچۈرۈڭ! سىزنىڭ جەريان سانلىق مەلۇماتىڭىز يوقاپ كەتكەندە ئېلىپ بارغان تەھرىرىڭىزنى بىر تەرەپ قىلالمايمىز.'''\nقايتا سىناڭ.\nئەگەر يەنىلا مەغلۇپ بولسا، [[Special:UserLogout|تىزىمدىن چىق]]قاندىن كېيىن قايتا تىزىمغا كىرىڭ.", "session_fail_preview_html": "'''كەچۈرۈڭ! سىزنىڭ جەريان سانلىق مەلۇماتىڭىز يوقاپ كەتكەندە ئېلىپ بارغان تەھرىرىڭىزنى بىر تەرەپ قىلالمايمىز.'''\n\n''چۈنكى {{SITENAME}} بېكىتى ئەسلى HTML ئىشلىتىشكە يول قويىدۇ، JavaScript ھۇجۇمىنىڭ ئالدىنى ئېلىش ئۈچۈن، ئالدىن كۆزىتىش يوشۇرۇلدى.''\n\n'''ئەگەر بۇ قانۇنلۇق تەھرىرلەش بولسا قايتا سىناڭ'''\nئەگەر ئۇنداق بولمىسا [[Special:UserLogout|تىزىمدىن چىق]]ىپ قايتا تىزىمغا كىرىڭ.", @@ -608,12 +650,14 @@ "permissionserrorstext": "تۆۋەندىكى {{PLURAL:$1|سەۋەپ|سەۋەپ}}: تۈپەيلىدىن تۆۋەندىكى مەشغۇلاتنى ئېلىپ بېرىش ھوقۇقىڭىز يوق.", "permissionserrorstext-withaction": "{{PLURAL:$1|سەۋەب|سەۋەبلەر}} تۈپەيلىدىن $2 مەشغۇلاتى ئېلىپ بېرىش ھوقۇقىڭىز يوق:", "recreate-moveddeleted-warn": "'''ئاگاھلاندۇرۇش: ئىلگىرى ئۆچۈرگەن ھۆججەتتىن بىرنى قۇرۇۋاتىسىز.'''\n\nبۇ ھۆججەتنى قايتا يۈكلەشنىڭ مۇۋاپىق ياكى ئەمەسلىكىنى ئويلىنىپ بېقىڭ.\nقولايلىق بولۇشى ئۈچۈن بۇ ھۆججەتنىڭ ئۆچۈرۈش خاتىرىسى تۆۋەندە تەمىنلەندى:", - "moveddeleted-notice": "بۇ بەت ئۆچۈرۈلگەن.\nبۇ بەتنىڭ ئۆچۈرۈش ۋە يۆتكەش خاتىرىسى پايدىلىنىش ئۈچۈن تۆۋەندە كۆرسىتىلدى.", + "moveddeleted-notice": "بۇ بەت ئۆچۈرۈلدى.\nتۆۋەندە بۇ بەتنىڭ ئۆچۈرۈش، قوغداش ۋە يۆتكەش خاتىرىسى پايدىلىنىش ئۈچۈن تەمىنلەندى.", "log-fulllog": "تولۇق خاتىرىنى كۆرسەت", "edit-hook-aborted": "تەھرىر ئىلمەك تەرىپىدىن چېكىندۈرۈلدى\nئۇ سەۋەبىنى تەمىنلىمىدى.", "edit-gone-missing": "بۇ بەتنى يېڭىلىيالمايدۇ.\nئۇ بايىلا ئۆچۈرۈلگەن بولۇشى مۇمكىن.", "edit-conflict": "تەھرىر توقۇنۇشى.", "edit-no-change": "تەھرىرلىگىنىڭىزگە پەرۋا قىلىنمىدى، چۈنكى تېكستتە ئۆزگىرىش بولمىدى.", + "postedit-confirmation-created": "بەت قۇرۇلدى.", + "postedit-confirmation-restored": "بەت ئەسلىگە كەلدى.", "postedit-confirmation-saved": "تەھرىرلىگىنىڭىز ساقلاندى.", "edit-already-exists": "يېڭى بەت قۇرالمىدى.\nبەت بۇرۇندىن مەۋجۇد.", "defaultmessagetext": "كۆڭۈلدىكى ئۇچۇر تېكستى", @@ -621,12 +665,16 @@ "invalid-content-data": "مەزمۇن سانلىق مەلۇماتى ئىناۋەتسىز", "content-not-allowed-here": "[[$2]] بەتتە \"$1\" مەزمۇنغا يول قويۇلمايدۇ", "editwarning-warning": "بەتتىن ئايرىلغاندا بەلكىم بارلىق تەھرىرلىگىنىڭىز بېكار بولۇپ كېتىشى مۇمكىن.\nئ‍ەگەر تىزىمغا كىرسىڭىز، مايىللىق بېتىڭىزنىڭ «{{int:prefs-editing}}» بۆلىكىدە، بۇ ئەسكەرتمىنى ئىناۋەتسىز قىلالايسىز.", + "editpage-invalidcontentmodel-title": "مەزمۇن ئەندىزىسىنى قوللىمىدى.", + "editpage-invalidcontentmodel-text": "مەزمۇن مودېلى “$1” نى قوللىمىدى.", "editpage-notsupportedcontentformat-title": "مەزمۇن ئەندىزىسىنى قوللىمىدى.", "editpage-notsupportedcontentformat-text": "مەزمۇن قېلىپى $2 نى مەزمۇن ئەندىزىسى $1 نى قوللىمىدى.", "content-model-wikitext": "ۋىكىتېكىست", "content-model-text": "ساپ تېكىست", "content-model-javascript": "JavaScript", "content-model-css": "CSS", + "content-json-empty-object": "قۇرۇق ئوبېكىت", + "content-json-empty-array": "قۇرۇق سانلار گۇرۇپپىسى", "expensive-parserfunction-warning": "'''ئاگاھلاندۇرۇش:''' بۇ بەت ناھايىتى كۆپ يۇقىرى سەرپىياتتىكى گىرامماتىكىلىق ئىقتىدارنى چاقىرغان.\\n\n\\n\nئۇ {{PLURAL:$2|قېتىم|قېتىم}} دىن ئاز چاقىرىشى لازىم، ھازىر {{PLURAL:$1| $1 قېتىم| $1 قېتىم}} چاقىرىلغان.", "expensive-parserfunction-category": "بەتتە يۇقىرى سەرپىياتتىكى گرامماتىكىلىق ئىقتىدار چاقىرىلغان.", "post-expand-template-inclusion-warning": "'''ئاگاھلاندۇرۇش:''' ئۆز ئىچىگە ئالغان قېلىپ بەك چوڭ.\nبەزى قېلىپنى ئۆز ئىچىگە ئالمايدۇ.", @@ -634,10 +682,11 @@ "post-expand-template-argument-warning": "'''ئاگاھلاندۇرۇش:''' بۇ بەتتە ئاز دېگەندە بىر پارامېتىر كېڭەيتىلگەن يۇقىرى قىممەتنى ئۆز ئىچىگە ئالغان.\nبۇ پارامېتىرلار ئېتىبارغا ئېلىنمايدۇ.", "post-expand-template-argument-category": "ئېتىبارغا ئېلىنمىغان قېلىپ پارامېتىرىنى ئۆز ئىچىگە ئالغان بەت", "parser-template-loop-warning": "قېلىپ دەۋرىيلىكى بايقالدى: [[$1]]", + "template-loop-category": "قېلىپ دەۋرىيلىنىدىغان بەت بار", "parser-template-recursion-depth-warning": "قايتىلانما ئىپادە چوڭقۇر چەكلىمىسىدىن ئېشىپ كەتتى ($1)", "language-converter-depth-warning": "تىل ئالماشتۇرۇش چوڭقۇرلۇقى چەكتىن ئاشتى ($1)", "node-count-exceeded-category": "بەتنىڭ نۇقتا سانى چەكتىن ئېشىپ كەتتى", - "node-count-exceeded-warning": "بەت نۇقتا سانىدىن ئېشىپ كەتتى", + "node-count-exceeded-warning": "بەت نۇقتا چەكلىمە سانىدىن ئېشىپ كەتتى", "expansion-depth-exceeded-category": "كېڭەيتىلگەن چوڭقۇرلۇق بەت چەكلىمىسىدىن ئېشىپ كەتتى", "expansion-depth-exceeded-warning": "بەت كېڭەيتىلگەن چوڭقۇرلۇقتىن ئېشىپ كەتتى", "parser-unstrip-loop-warning": "دەۋرىيلىك بايقالدى", @@ -665,7 +714,7 @@ "page_first": "تۇنجى", "page_last": "ئاخىرقى", "histlegend": "پەرق تاللاش: سېلىشتۇرىدىغان ئۆزگەرتىلگەن نەشرىنىڭ يەككە تاللاش كۇنۇپكىسىغا بەلگە سېلىپ، ئاستىدىكى كۇنۇپكىنى چېكىپ سېلىشتۇرۇڭ.
\nچۈشەندۈرۈش: '''({{int:cur}})'' نۆۋەتتىكى نەشرى بىلەن سېلىشتۇرۇشنى كۆرسىتىدۇ.\n '''({{int:last}})''' ئالدىنقى ئۆزگەرتىلگەن نەشرى بىلەن سېلىشتۇرۇشنى كۆرسىتىدۇ.\n '''{{int:minoreditletter}}''' ئازراقلا ئۆزگەرتىش.", - "history-fieldset-title": "تارىخىنى كۆرسەت", + "history-fieldset-title": "ئۆزگەرتىلگەن نەشىرىنى ئىزدەش", "history-show-deleted": "ئۆچۈرۈلگەننىلا", "histfirst": "ئەڭ كونا", "histlast": "ئەڭ يېڭى", @@ -675,10 +724,11 @@ "history-feed-description": "مەزكۇر بەتنىڭ بۇ بېكەتتىكى ئۆزگەرتىش تارىخى", "history-feed-item-nocomment": "$2 دىكى $1", "history-feed-empty": "ئىلتىماس قىلغان بەت مەۋجۇد ئەمەس\nئۇ ئۆچۈرۈلگەن ياكى ئاتى ئۆزگەرتىلگەن بولۇشى مۇمكىن\n [[Special:Search|wiki دىن ئىزدە]] نى سىناپ مۇناسىۋەتلىك يېڭى بەتكە ئېرىشىڭ.", + "history-edit-tags": "تاللانغان ئۆزگەرتىلگەن نەشىرىنىڭ خەتكۈچىنى تەھرىرلەش", "rev-deleted-comment": "(تەھرىرلەش ئۈزۈندىسى چىقىرىۋېتىلدى)", "rev-deleted-user": "(ئىشلەتكۈچى نامى چىقىرىۋېتىلدى)", "rev-deleted-event": "(خاتىرە مەشغۇلاتى چىقىرىۋېتىلدى)", - "rev-deleted-user-contribs": "[ئىشلەتكۈچى نامى ياكى IP ئادرېس چىقىرىۋېتىلدى - تۆھپىدىن تەھرىرنى يوشۇر]", + "rev-deleted-user-contribs": "[ئىشلەتكۈچى نامى ياكى IP ئادرېس چىقىرىۋېتىلدى - تۆھپىە تەھرىرلەشكە يوشۇرۇلدى]", "rev-deleted-text-permission": "'''ئاگاھلاندۇرۇش: بۇ بەتنىڭ تۈزىتىلگەن نەشرى'''ئۆچۈرۈلگەن'''\n[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} ئۆچۈرۈش خاتىرىسى]دىن تەپسىلىي ئۇچۇرنى تاپقىلى بولىدۇ.", "rev-deleted-text-unhide": "بۇ بەتنىڭ تۈزىتىلگەن نەشرى '''ئۆچۈرۈلگەن'''.\n[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} ئۆچۈرۈش خاتىرىسى]دىن تەپسىلىي ئۇچۇرنى تاپقىلى بولىدۇ.\nداۋاملاشتۇرماقچى بولسىڭىز يەنىلا [$1 بۇ نەشرىنى كۆرسەت]ەلەيسىز.", "rev-suppressed-text-unhide": "بۇ بەتنىڭ تۈزىتىلگەن نەشرى '''نازارەتچى يوشۇرغان'''.\n[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} نازارەتچى يوشۇرۇش خاتىرىسى]دىن تەپسىلىي ئۇچۇرنى تاپقىلى بولىدۇ. ئەگەر داۋاملاشتۇرماقچى بولسىڭىز يەنىلا [$1 بۇ تۈزىتىلگەن نەشرىنى كۆرسەت]ەلەيسىز.", @@ -690,7 +740,7 @@ "rev-suppressed-unhide-diff": "بۇ بەتنىڭ تۈزىتىلگەن نەشرى '''نازارەتچى يوشۇرغان'''.\n[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} نازارەتچى يوشۇرۇش خاتىرىسى]دىن تەپسىلىي ئۇچۇرنى تاپقىلى بولىدۇ. ئەگەر داۋاملاشتۇرماقچى بولسىڭىز يەنىلا [$1 بۇ تۈزىتىلگەن نەشرىنى كۆرسەت]ەلەيسىز.", "rev-deleted-diff-view": "بۇ بەتنىڭ بىر قېتىملىق تۈزىتىلگەن نەشرى '''ئۆچۈرۈلگەن'''\nبۇ پەرقنى كۆرەلەيسىز.: تەپسىلاتىنى [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} ئۆچۈرۈش خاتىرىسى]دىن تاپالايسىز.", "rev-suppressed-diff-view": "بۇ بەتنىڭ بىر قېتىملىق تۈزىتىلگەن نەشرى '''نازارەتچى يوشۇرغان'''.\nبۇ پەرقنى كۆرەلەيسىز.: تەپسىلاتىنى [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} نازارەتچى يوشۇرۇش خاتىرىسى]دىن تاپالايسىز.", - "rev-delundel": "كۆرسەت/يوشۇر", + "rev-delundel": "كۆرسىتىش ھالىتىنى ئۆزگەرتىش", "rev-showdeleted": "كۆرسەت", "revisiondelete": "تۈزىتىلگەن نەشرىنى ئۆچۈر/ئەسلىگە كەلتۈر", "revdelete-nooldid-title": "ئىناۋەتسىز نىشان تۈزىتىش نەشرى", @@ -704,9 +754,9 @@ "revdelete-legend": "كۆرۈنۈشچانلىق چەكلىمە تەڭشىكى", "revdelete-hide-text": "تۈزىتىلگەن تېكىست", "revdelete-hide-image": "ھۆججەت مەزمۇنىنى يوشۇر", - "revdelete-hide-name": "مەشغۇلات ۋە نىشاننى يوشۇر", + "revdelete-hide-name": "نىشان ۋە سانلىق ئۇچۇرنى يوشۇرۇش", "revdelete-hide-comment": "تەھرىر ئىزاھاتىنى يوشۇر", - "revdelete-hide-user": "تەھرىرلىگۈچىنىڭ نامى/IP ئادرېسىنى يوشۇر", + "revdelete-hide-user": "تەھرىرلىگۈچىنىڭ نامى/IP ئادرېسىنى يوشۇرۇش", "revdelete-hide-restricted": "مەشغۇلاتچى ۋە باشقا ئىشلەتكۈچىنىڭ سانلىق مەلۇمات كۆرۈشىنىمۇ چەكلە", "revdelete-radio-same": "(ئۆزگەرتمە)", "revdelete-radio-set": "يوشۇرۇن", @@ -748,6 +798,9 @@ "mergehistory-empty": "بىرلەشتۈرگىلى بولىدىغان تۈزىتىلگەن نەشرى يوق.", "mergehistory-done": "$1 نىڭ {{PLURAL:$3|قېتىملىق|قېتىملىق}} تۈزىتىلگەن نەشرى مۇۋەپپەقىيەتلىك ھالدا [[:$2]] غا بىرلەشتۈرۈلدى.", "mergehistory-fail": "تارىخنى بىرلەشتۈرگىلى بولمايدۇ، بۇ بەت ۋە ۋاقىت پارامېتىرىنى قايتا تەكشۈرۈڭ.", + "mergehistory-fail-bad-timestamp": "ۋاقىت ئوقى ئىناۋەتسىز.", + "mergehistory-fail-invalid-source": "مەنبە بەت ئىناۋەتسىز.", + "mergehistory-fail-invalid-dest": "نىشان بەت ئىناۋەتسىز.", "mergehistory-no-source": "مەنبە بەت $1 مەۋجۇد ئەمەس.", "mergehistory-no-destination": "نىشان بەت $1 مەۋجۇد ئەمەس.", "mergehistory-invalid-source": "مەنبە بەتنىڭ چوقۇم ئىناۋەتلىك ماۋزۇسى بولۇشى لازىم.", @@ -778,6 +831,8 @@ "notextmatches": "ماس كېلىدىغان بەت مەزمۇنى يوق", "prevn": "ئالدى {{PLURAL:$1|$1}}", "nextn": "كەينى {{PLURAL:$1|$1}}", + "prev-page": "ئالدىنقى بەت", + "next-page": "كېيىنكى بەت", "prevn-title": "ئالدىنقى $1 {{PLURAL:$1|نەتىجە|نەتىجە}}", "nextn-title": "كېيىكى $1 {{PLURAL:$1|نەتىجە|نەتىجە}}", "shown-title": "ھەر بىر بەتتە $1 {{PLURAL:$1|نەتىجە |نەتىجە }} كۆرسەت", @@ -796,11 +851,13 @@ "search-result-category-size": "{{PLURAL:$1|1 ئەزا|$1 ئەزا}}({{PLURAL:$2|1 تارماق تۈر|$2 تارماق تۈر}}, {{PLURAL:$3|1 ھۆججەت|$3 ھۆججەت}})", "search-redirect": "($1 قايتا نىشانلا)", "search-section": "(ئابزاس $1)", + "search-category": "(تۈر $1)", "search-file-match": "(ھۆججەت مەزمۇنى ماس كەلگەن)", "search-suggest": "ئىزدىمەكچى بولغىنىڭىز: $1", "search-interwiki-caption": "ھەمشىرە قۇرۇلۇشلار", - "search-interwiki-default": "$1 نەتىجە:", + "search-interwiki-default": "$1 دىكى نەتىجە:", "search-interwiki-more": "(تېخىمۇ كۆپ)", + "search-interwiki-more-results": "تېخىمۇ كۆپ نەتىجە", "search-relatedarticle": "ئالاقىدار", "searchrelated": "ئالاقىدار", "searchall": "ھەممىسى", @@ -816,7 +873,7 @@ "search-error": "ئىزدەش جەريانىدا بىر خاتالىق يۈز بەردى: $1", "preferences": "مايىللىق", "mypreferences": "مايىللىق", - "prefs-edits": "تەھرىر سانى:", + "prefs-edits": "تەھرىرلەش قېتىم سانى:", "prefsnologintext2": "مايىللىقىڭىزنى ئۆزگەرتىش ئۈچۈن $1.", "prefs-skin": "تېرە", "skin-preview": "ئالدىن كۆزەت", @@ -826,20 +883,23 @@ "prefs-personal": "ئىشلەتكۈچى سەپلىمە ھۆججىتى", "prefs-rc": "ئاخىرقى ئۆزگەرتىشلەر", "prefs-watchlist": "كۆزەت تىزىملىكى", + "prefs-editwatchlist": "كۆزەت تىزىملىكىنى تەھرىرلەش", + "prefs-editwatchlist-raw": "ئەسلى كۆزەت تىزىملىكىنى تەھرىرلەش", + "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": "ئارىلاشما تۈر", "prefs-resetpass": "پارولنى ئۆزگەرتىش", - "prefs-changeemail": "ئېلخەت ئۆزگەرت", + "prefs-changeemail": "ئېلخەت ئۆزگەرتىش ياكى چىقىرۋېتىش", "prefs-setemail": "ئېلخەت ئادرېس تەڭشەك", "prefs-email": "ئېلخەت تاللانما", "prefs-rendering": "كۆرۈنۈش", "saveprefs": "ساقلا", "restoreprefs": "بارلىق كۆڭۈلدىكى تەڭشەكنى ئەسلىگە كەلتۈر (بارلىق بۆلەكلەردە)", - "prefs-editing": "تەھرىر", + "prefs-editing": "تەھرىرلەش", "searchresultshead": "ئىزدە", "stub-threshold": "قىسقا بەت ئۇلانمىسى فورمات چەك قىممىتى (بايت) :", "stub-threshold-disabled": "چەكلەنگەن", @@ -878,6 +938,7 @@ "username": "{{GENDER:$1|ئىشلەتكۇچى ئىسمى}}:", "prefs-memberingroups": "{{PLURAL:$1|گۇرۇپپا}} دىكى{{GENDER:$2| ئەزا}}:", "prefs-memberingroups-type": "$1", + "group-membership-link-with-expiry": "$1 (غىچە $2)", "prefs-registration": "خەتلەتكەن ۋاقىت:", "prefs-registration-date-time": "$1", "yourrealname": "ھەقىقىي ئىسىم:", @@ -915,10 +976,10 @@ "prefs-tokenwatchlist": "ئاچقۇچ", "prefs-diffs": "پەرقلەر", "prefs-help-prefershttps": "بۇ سەپلەك، سىز قايتا تىزىمغا كىرگەندە ئىشلەيدۇ.", - "userrights": "ئىشلەتكۈچى ھوقۇقى باشقۇرۇش", - "userrights-lookup-user": "ئىشلەتكۈچى گۇرۇپپىسى باشقۇرۇش", + "userrights": "ئابونت ھوقۇقى", + "userrights-lookup-user": "ئەزا تاللاڭ", "userrights-user-editname": "ئىشلەتكۈچى ئاتى كىرگۈزۈڭ:", - "editusergroup": "ئىشلەتكۈچى گۇرۇپپىسى تەھرىر", + "editusergroup": "ئىشلەتكۈچى گۇرۇپپىسى", "editinguser": "ئىشلەتكۈچى '''[[User:$1|$1]]''' $2 نىڭ ھوقۇقىنى ئۆزگەرتىۋاتىدۇ", "userrights-editusergroup": "ئىشلەتكۈچى گۇرۇپپىسى تەھرىر", "saveusergroups": "ئىشلەتكۈچى گۇرۇپپىسى ساقلا", @@ -932,6 +993,10 @@ "userrights-changeable-col": "سىز ئۆزگەرتەلەيدىغان گۇرۇپپا", "userrights-unchangeable-col": "سىز ئۆزگەرتەلمەيدىغان گۇرۇپپا", "userrights-irreversible-marker": "$1*", + "userrights-expiry-current": "$1 دا توختاش", + "userrights-expiry-none": "توختىتىلمايدۇ", + "userrights-expiry": "قەرەلى:", + "userrights-expiry-othertime": "باشقا ۋاقىت:", "group": "گۇرۇپپا:", "group-user": "ئىشلەتكۈچىلەر", "group-autoconfirmed": "ئۆزلۈكىدىن جەزملەنگەن ئىشلەتكۈچىلەر", @@ -961,13 +1026,14 @@ "right-move": "بەت يۆتكە", "right-move-subpages": "بەتنى تاماق بەتلىرى بىلەن قوشۇپ يۆتكە", "right-move-rootuserpages": "غول ئىشلەتكۈچى بېتىنى يۆەتكە", + "right-move-categorypages": "تۈر بېتىنى يۆتكەش", "right-movefile": "ھۆججەت يۆتكە", "right-suppressredirect": "ھۆججەت يۈتكىگەندە مەنبە بەتنىڭ قايتا نىشان بەلگىلىنىشىنى قۇرما.", "right-upload": "ھۆججەتلەرنى يۈكلە", "right-reupload": "مەۋجۇد ھۆججەتنى قاپلا", "right-reupload-own": "ئوخشاش بىر ئادەم يوللىغان ھۆججەتنى قاپلىۋەت", "right-reupload-shared": "ئېتىبارغا ئېلىنمايدىغان يەرلىك ھەمبەھىر كۆپ ۋاسىتە ئامبىرىدىكى ھۆججەت", - "right-upload_by_url": "URL دىن ھۆججەت يۈكلە", + "right-upload_by_url": "URL دىن ھۆججەت يۈكلەش", "right-purge": "جەزملەشنى سورىمايلا تور بېكەت غەملىكىنى تازىلا", "right-autoconfirmed": "يېرىم قوغدالغان بەت تەھرىر", "right-bot": "ئاپتوماتىك جەريان دەپ قارىلىدۇ", @@ -1011,19 +1077,29 @@ "right-siteadmin": "ساندان قۇلۇپلا ۋە قۇلۇپ ئاچ", "right-override-export-depth": "بەت قەۋەتلىك ئۇلىنىشى بار بەتنى چىقار", "right-sendemail": "باشقا ئىشلەتكۈچىگە ئېلخەت يوللا", + "grant-group-email": "ئېلخەت يوللاش", + "grant-createaccount": "ھېسابات قۇرۇش", + "grant-editmywatchlist": "كۈزىتىش تىزىملىكىڭىزنى تەھرىرلەڭ", + "grant-editpage": "مەۋجۇت بەتنى تەھرىرلەش", + "grant-editprotected": "قوغدىلىدىغان بەتنى تەھرىرلەش", + "grant-highvolume": "چوڭ مىقدارلىق تەھرىرلەش", + "grant-uploadfile": "يېڭى ھۆججەت يۈكلەش", + "grant-basic": "ئاساسىي ھوقۇق", + "grant-viewmywatchlist": "كۈزىتىش تىزىملىكىڭىزنى كۆرۈڭ", "newuserlogpage": "ئىشلەتكۈچى قۇرغان خاتىرە", "newuserlogpagetext": "(چەكلەنگەن)", "rightslog": "ئىشلەتكۈچى ھوقۇق خاتىرىسى", "rightslogtext": "ئىشلەتكۈچى ھوقۇق خاتىرىسى", "action-read": "بۇ بەتنى ئوقۇ", "action-edit": "بۇ بەتنى تەھرىرلە", - "action-createpage": "بۇ بەتنى قۇر", - "action-createtalk": "مۇنازىرە بېتى قۇر", + "action-createpage": "بۇ بەتنى قۇرۇش", + "action-createtalk": "بۇ مۇنازىرە بېتىنى قۇرۇش", "action-createaccount": "بۇ ئىشلەتكۈچى ھېساباتىنى قۇر", "action-minoredit": "بۇنىڭغا ئازراقلا تەھرىر بەلگىسى قوي", "action-move": "بۇ بەتنى يۆتكە", "action-move-subpages": "بۇ بەتنىڭ تارماق بەتلىرىنى قوشۇپ يۆتكە", "action-move-rootuserpages": "غول ئىشلەتكۈچى بېتىنى يۆتكە", + "action-move-categorypages": "تۈر بېتىنى يۆتكەش", "action-movefile": "بۇ ھۆججەتنى يۆتكە", "action-upload": "بۇ ھۆججەتنى يۈكلە", "action-reupload": "مەۋجۇد ھۆججەتنى قاپلا", @@ -1031,10 +1107,11 @@ "action-upload_by_url": "بۇ ھۆججەتنى URL دىن يۈكلە", "action-writeapi": "API يېزىشقا ئىشلىتىلىدۇ", "action-delete": "بۇ بەتنى ئۆچۈر", - "action-deleterevision": "بۇ تۈزىتىلگەن نەشرىنى ئۆچۈر", - "action-deletedhistory": "بۇ بەتنىڭ ئۆچۈرۈش تارىخىنى كۆرسەت", + "action-deleterevision": "تۈزىتىلگەن نەشرىنى ئۆچۈرۈش", + "action-deletelogentry": "كۈندىلىك خاتىرىنى ئۆچۈرۈش", + "action-deletedhistory": "بۇ بەتنىڭ ئۆچۈرۈش تارىخىنى كۆرسىتىش", "action-browsearchive": "ئۆچۈرۈلگەن بەتنى ئىزدە", - "action-undelete": " بۇ بەتنى ئەسلىگە كەلتۈر", + "action-undelete": "بەتنى ئەسلىگە كەلتۈرۈش", "action-suppressrevision": "بۇ يوشۇرۇلغان تۈزىتىلگەن نەشرىنى قايتا كۆرۈپ ئەسلىگە كەلتۈر", "action-suppressionlog": "بۇ شەخسىي خاتىرىنى كۆرسەت", "action-block": "بۇ ئىشلەتكۈچىنىڭ تەھرىرىنى چەكلە", @@ -1052,6 +1129,7 @@ "action-sendemail": "ئېلخەت يوللا", "action-editmywatchlist": "كۈزىتىش تىزىملىكىڭىزنى تەھرىرلەڭ", "action-viewmywatchlist": "كۈزىتىش تىزىملىكىڭىزنى كۆرۈڭ", + "action-purge": "بۇ بەتنى يېڭىلاش", "nchanges": "$1 {{PLURAL:$1|ئۆزگەرتىش|ئۆزگەرتىش}}", "enhancedrc-history": "تارىخ", "recentchanges": "يېقىنقى ئۆزگەرتىشلەر", @@ -1062,19 +1140,73 @@ "recentchanges-label-minor": "بۇ ئازراقلا تەھرىرلەش", "recentchanges-label-bot": "بۇ تەھرىرنى ماشىنا ئادەم ئېلىپ بارغان", "recentchanges-label-unpatrolled": "بۇ تەھرىر تېخى كۆزىتىلمىگەن", + "recentchanges-legend-heading": "ئىزاھات:", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (بۇنىڭغىمۇ قاراڭ [[Special:NewPages|يېڭى بەتلەر تىزىملىگى]])", + "recentchanges-submit": "كۆرسىتىش", + "rcfilters-legend-heading": "قىسقارتىپ يېزىلىش تىزىملىكى:", + "rcfilters-other-review-tools": " باشقا تەكشۈرۈش قوراللىرى", + "rcfilters-grouping-title": "گۇرۇپپىلىنىۋاتىدۇ", + "rcfilters-activefilters": "قوزغىتىلىغان سۈزگۈچلەر", + "rcfilters-days-title": "يېقىنقى بىر نەچچە كۈن", + "rcfilters-hours-title": "يېقىنقى بىر نەچچە سائەت", + "rcfilters-quickfilters": "سۈزگۈچ ساقلاندى", + "rcfilters-quickfilters-placeholder-title": "ئۇلىنىش ساقلانمىدى", + "rcfilters-savedqueries-defaultlabel": "سۈزگۈچ ساقلاندى", + "rcfilters-savedqueries-rename": "ئىسىم ئۆزگەرتىش", + "rcfilters-savedqueries-remove": "چىقىرىۋىتىش", + "rcfilters-savedqueries-new-name-label": "نامى", + "rcfilters-savedqueries-apply-label": "سۈزگۈچ قۇرۇش", + "rcfilters-savedqueries-apply-and-setdefault-label": "ئەسلىدىكى سۈزگۈچنى قۇرۇش", + "rcfilters-savedqueries-cancel-label": "چېكىنىش", + "rcfilters-filterlist-title": "سۈزگۈچلەر", + "rcfilters-filterlist-whatsthis": "بۇلار قانداق خىزمەت قىلىدۇ؟", + "rcfilters-highlightmenu-title": "رەڭ تاللاش", + "rcfilters-filterlist-noresults": "سۈزگۈچ تېپىلمىدى", + "rcfilters-filter-editsbyself-label": "سىز ئۆزگەرتكەن", + "rcfilters-filter-editsbyself-description": "ئۆزىڭىزنىڭ تۆھپىسى.", + "rcfilters-filter-editsbyother-label": "باشقىلار ئۆزگەرتكەن", + "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-newcomer-label": "يېڭى كەلداخۇن", + "rcfilters-filter-user-experience-level-learner-label": "يېڭى ئۆگەنچى", + "rcfilters-filter-bots-label": "ماشىنا ئادەم", + "rcfilters-filtergroup-reviewstatus": "رازۋىتكا ھالىتى", + "rcfilters-filter-patrolled-label": "چارلاندى", + "rcfilters-filter-minor-label": "كىچىك تەھرىرلەش", + "rcfilters-filter-major-label": "كىچىك تەھرىرلەش ئەمەس", + "rcfilters-filter-watchlist-watched-label": "كۆزىتىش تىزىملىكىدە", + "rcfilters-filter-newpages-label": "بەت قۇرۇلدى", + "rcfilters-filter-categorization-label": "تۈر ئۆزگەرتىلدى", + "rcfilters-filtergroup-lastRevision": "ئاخىرقى نەشىرلىرى", + "rcfilters-filter-lastrevision-label": "ئاخىرقى نەشىرى", + "rcfilters-view-tags": "بەلگە قويۇلغان تەھرىرلەش", "rcnotefrom": "تۆۋەندىكىسى '''$2''' نىڭ ئۆزگەرتىشى (ئەڭ كۆپ بولغاندا '''$1''' كۆرسىتىدۇ )", "rclistfrom": "$3 $2 دىن باشلانغان يېڭى ئۆزگەرتىشنى كۆرسەت", - "rcshowhideminor": "$1 ئازراقلا تەھرىر", + "rcshowhideminor": "$1 ئازراقلا تەھرىرلەش", + "rcshowhideminor-show": "كۆرسىتىش", + "rcshowhideminor-hide": "يوشۇر", "rcshowhidebots": "$1 ماشىنا ئادەمنىڭ تەھرىرى", + "rcshowhidebots-show": "كۆرسەت", + "rcshowhidebots-hide": "يوشۇرۇش", "rcshowhideliu": "$1 خەتلەنگەن ئىشلەتكۈچى", + "rcshowhideliu-show": "كۆرسىتىش", + "rcshowhideliu-hide": "يوشۇرۇش", "rcshowhideanons": "$1 ئىمزاسىز ئىشلەتكۈچى تەھرىرى", - "rcshowhidepatr": "$1 كۆزىتىلگەن تەھرىر", + "rcshowhideanons-show": "كۆرسىتىش", + "rcshowhideanons-hide": "يوشۇر", + "rcshowhidepatr": "$1 كۆزىتىلگەن تەھرىرلەش", + "rcshowhidepatr-show": "كۆرسىتىش", + "rcshowhidepatr-hide": "يوشۇرۇش", "rcshowhidemine": "$1 مېنىڭ تەھرىرىم", + "rcshowhidemine-show": "كۆرسىتىش", + "rcshowhidemine-hide": "يوشۇرۇش", + "rcshowhidecategorization-show": "كۆرسىتىش", + "rcshowhidecategorization-hide": "يوشۇرۇش", "rclinks": "يېقىنقى $2 كۈن ئىچىدىكى ئەڭ يېڭى $1 قېتىملىق ئۆزگەرتىشنى كۆرسەت.", "diff": "پەرق", "hist": "تارىخ", - "hide": "يوشۇر", + "hide": "يوشۇرۇش", "show": "كۆرسەت", "minoreditletter": "ئازراقلا", "newpageletter": "يېڭى", @@ -1082,12 +1214,12 @@ "unpatrolledletter": "!", "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|ئىشلەتكۈچى|ئىشلەتكۈچى}}كۆزىتىۋاتىدۇ]", "rc_categories": "تۈر چېگرىسى (\"|\" بىلەن ئايرىلىدۇ )", - "rc_categories_any": "خالىغان", + "rc_categories_any": "خالىغانچە تاللاش", "rc-change-size": "$1", "rc-change-size-new": "ئۆزگەرتكەندىن كېيىن $1 {{PLURAL:$1|بايت}}", "newsectionsummary": "* $1 * يېڭى ئابزاس", "rc-enhanced-expand": "تەپسىلاتىنى كۆرسەت", - "rc-enhanced-hide": "تەپسىلاتىنى يوشۇر", + "rc-enhanced-hide": "تەپسىلاتىنى يوشۇرۇش", "rc-old-title": "ئەڭ دەسلەپتە \"$1\" سۈپىتىدە قۇرۇلغان", "recentchangeslinked": "مۇناسىۋەتلىك ئۆزگەرتىشلەر", "recentchangeslinked-feed": "مۇناسىۋەتلىك ئۆزگەرتىشلەر", @@ -1096,8 +1228,8 @@ "recentchangeslinked-summary": "بۇ ئالاھىدە بەت يۈزى كۆرسەتكەن بەتتىن ئۇلىنىپ چىققان يېقىنقى ئۆزگەرتىش تىزىملىكى (ياكى ئالاھىدە تۈرنىڭ ئەزاسى).\n [[Special:Watchlist|كۆزەت تىزىملىكىڭىز]] دىكى بەت يۈزى '''توم''' كۆرسىتىلىدۇ.", "recentchangeslinked-page": "بەت نامى:", "recentchangeslinked-to": "بېرىلگەن بەتكە ئۇلانغان ئۆزگەرتىشنى كۆرسەت", - "upload": "ھۆججەت يۈكلە", - "uploadbtn": "ھۆججەت يۈكلە", + "upload": "ھۆججەت يۈكلەش", + "uploadbtn": "ھۆججەت يۈكلەش", "reuploaddesc": "يۈكلەشتىن ۋاز كېچىپ، يۈكلەش كۆزنىكىگە قايت", "upload-tryagain": "ئۆزگەرتىلگەن ھۆججەت چۈشەندۈرۈشى يوللا", "uploadnologin": "تىزىمغا كىرمىدى", @@ -1107,9 +1239,9 @@ "uploaderror": "يۈكلەش خاتالىقى", "upload-recreate-warning": "'''ئاگاھلاندۇرۇش: ئوخشاش ئاتلىق ھۆججەتتىن بىرى ئىلگىرى ئۆچۈرۈلگەن ياكى باشقا جايغا يۆتكەلگەن.'''\nپايدىلىنىش ئۈچۈن بۇ بەتنىڭ ئۆچۈرۈش ۋە يۆتكەش خاتىرىسى بۇ جايدا تەمىنلەندى:", "uploadtext": "تۆۋەندىكى كۆزنەكنى ئىشلىتىپ ھۆججەت يۈكلەڭ.\nئىلگىرى يۈكلەنگەن ھۆججەتلەرنى كۆرۈش ياكى ئىزدەشتە [[Special:FileList|ھۆججەت يۈكلەش تىزىملىكى]]گە كىرىپ، (يېڭىدىن) يۈكلەنگەننى [[Special:Log/upload|يۈكلەش خاتىرىسى]]دە خاتىرىلىنىدۇ، ئۆچۈرۈلگىنى [[Special:Log/delete|ئۆچۈرۈش خاتىرىسى]]دە خاتىرىلىنىدۇ.\n\nبەتكە ھۆججەت يۈكلىمەكچى بولسىڭىز، تۆۋەندىكى ئۇلانما شەكلىنى ئىشلىتىڭ:\n* '''[[{{ns:file}}:File.jpg]]''' ھۆججەتنىڭ تولۇق نەشرىنى ئىشلىتىدۇ\n* '''[[{{ns:file}}:File.png|200px|thumb|left|alt text]]''' 200 نۇقتا كەڭلىكتىكى سول ياندىكى رامكىدا قايتا پەيدا بولىدىغان 'ئالماشتۇرىدىغان تېكست' چۈشەندۈرۈشىنى ئىشلىتىدۇ.\n* '''[[{{ns:media}}:File.ogg]]''' ھۆججەتنى كۆرسەتمەيلا بىۋاسىتە ئۇلىنىدۇ", - "upload-permitted": "يول قويىدىغان ھۆججەت تىپى: $1", - "upload-preferred": "تەۋسىيىلىك ھۆججەت تىپى: $1", - "upload-prohibited": "چەكلەيدىغان ھۆججەت تىپى: $1", + "upload-permitted": "يول قويىدىغان ھۆججەت {{PLURAL:$2|تىپى}}: $1", + "upload-preferred": "تەۋسىيىلىك ھۆججەت {{PLURAL:$2|تىپى}}: $1", + "upload-prohibited": "چەكلەيدىغان ھۆججەت {{PLURAL:$2|تىپى}}: $1", "uploadlogpage": "خاتىرە يۈكلە", "uploadlogpagetext": "تۆۋەندىكىسى يېقىندا يوللانغان ھۆججەت تىزىملىكى.\\n\n [[Special:NewFiles|يېڭى ھۆججەت كارىدورى]]دىن تېخىمۇ كۆپ سۈرەتلەرنى كۆرۈڭ.", "filename": "ھۆججەت ئاتى", @@ -1437,7 +1569,7 @@ "nopagetext": "سىز بەلگىلىگەن نىشان بەت مەۋجۇد ئەمەس.", "pager-newer-n": "{{PLURAL:$1|يېڭى 1|يېڭى $1}}", "pager-older-n": "{{PLURAL:$1|كونا 1|كونا $1}}", - "suppress": "نازارەتچى", + "suppress": "چەكلەش", "querypage-disabled": "بۇ ئالاھىدە بەت ئۈنۈم سەۋەبىدىن چەكلەندى.", "apisandbox": "API قۇم ساندۇقى", "apisandbox-api-disabled": "مەزكۇر بېكەتتە API چەكلەندى.", @@ -1445,12 +1577,13 @@ "apisandbox-submit": "ئىلتىماس يوللا", "apisandbox-reset": "تازىلا", "apisandbox-examples": "مىسال", - "apisandbox-results": "نەتىجە", + "apisandbox-results": "نەتىجىسى", "apisandbox-request-url-label": "تەلەپ قىلغان URL:", "apisandbox-request-time": "ئىلتىماس ۋاقتى: $1", "booksources": "كىتاب مەنبەسى", "booksources-search-legend": "كىتاب مەنبەسى ئىزدە", "booksources-isbn": "ISBN:", + "booksources-search": "ئىزدەش", "booksources-text": "تۆۋەندىكىسى بىر قىسىم تور كىتابخانىلىرىنىڭ تىزىملىكى، ئىچىدە سىز ئىزدىمەكچى بولغان كىتابلارنىڭ تېخىمۇ كۆپ ئۇچۇرى بولۇشى مۇمكىن:", "booksources-invalid-isbn": "تەمىنلىگەن ISBN نومۇرى توغرا ئەمەس. ئەسلى كۆچۈرگەن مەنبەدىكى نومۇردا خاتالىق بار يوقلۇقىنى تەكشۈرۈڭ.", "specialloguserlabel": "ئىشلەتكۈچى:", @@ -1460,7 +1593,7 @@ "alllogstext": "{{SITENAME}} بارلىق ئىشلەتكىلى بولىدىغان خاتىرىنى ئۇنىۋېرسال كۆرسىتىدۇ.\nسىز خاتىرە تىپى، ئىشلەتكۈچى ئاتى (چوڭ كىچىك يېزىلىشنى پەرقلەندۈرىدۇ) نى تاللىيالايسىز ياكى مۇناسىۋەتلىك بەت (چوڭ كىچىك يېزىلىشنى پەرقلەندۈرىدۇ) ئارقىلىق ئىزدەش دائىرىسىنى كىچىكلىتەلەيسىز.", "logempty": "خاتىرىدە ماس كېلىدىغان تۈر يوق.", "log-title-wildcard": "بۇ تېكست بىلەن باشلانغان ماۋزۇنى ئىزدە", - "showhideselectedlogentries": "تالغان خاتىرىسى كۈرسەت / يوشۇر", + "showhideselectedlogentries": "تاللىغان خاتىرىنى كۆرسىتىش/يوشۇرۇش", "allpages": "ھەممە بەت", "nextpage": "كەينى بەت ($1)", "prevpage": "ئالدىنقى بەت ($1)", @@ -1468,11 +1601,11 @@ "allpagesto": "بۇ جايدىن ئاياغلاشقان بەتنى كۆرسەت:", "allarticles": "ھەممە بەت", "allinnamespace": "ئالدى بەت ($1)", - "allpagessubmit": "يۆتكەل", + "allpagessubmit": "يوللاش", "allpagesprefix": "ئالدى قوشۇلغۇچىسى بار بەتنى كۆرسەت:", "allpagesbadtitle": "بېرىلگەن بەت ماۋزۇسى قانۇنسىز ياكى ئىچكى تىلغا ئىگە ياكى ئىچكى wiki نىڭ ئالدى قوشۇلغۇچىسى.\nئۇ ماۋزۇغا ئىشلەتكىلى بولمايدىغان بىر ياكى بىر قانچە ھەرپنى ئۆز ئىچىگە ئالغان بولۇشى مۇمكىن.", "allpages-bad-ns": "{{SITENAME}} دا\\\"$1\" ئات بوشلۇقى يوق.", - "allpages-hide-redirects": "قايتا نىشانلاشنى يوشۇر", + "allpages-hide-redirects": "قايتا نىشانلاشنى يوشۇرۇش", "cachedspecial-viewing-cached-ttl": "سىز بۇ بەتنىڭ غەملەك نەشرىنى كۆرۈۋاتىسىز، ئەڭ كۆپ بولغاندا $1 كونىراق.", "cachedspecial-viewing-cached-ts": "سىز بۇ بەتنىڭ غەملەك نەشرىنى كۆرۈۋاتىسىز، ئۇ ئەڭ يېڭى تولۇق نەشرى بولماسلىقى مۇمكىن.", "cachedspecial-refresh-now": "يېقىنقىنى كۈرىشى.", @@ -1611,7 +1744,7 @@ "delete-edit-reasonlist": "ئۆچۈرۈش سەۋەبى تەھرىر", "delete-toobig": "بۇ بەتنىڭ بەك كۆپ تەھرىرلەش تارىخى بار، {{PLURAL:$1|تۈزىتىلگەن نەشرى|تۈزىتىلگەن نەشرى}} قېتىمدىن ئارتۇق. {{SITENAME}} قالايمىقانچىلىقنىڭ ئالدىنى ئېلىش ئۈچۈن بۇ خىل بەتلەرنى ئۆچۈرۈش مەشغۇلاتى چەكلەندى.", "delete-warning-toobig": "بۇ بەتنىڭ تەھرىرلەش تارىخى بەك كۆپ، {{PLURAL:$1|تۈزىتىلگەن نەشرى|تۈزىتىلگەن نەشرى}} قېتىمدىن ئارتۇق.\nبۇ بەت ئۆچۈرۈلسە {{SITENAME}} ساندانىنىڭ مەشغۇلاتىنى قالايمىقانلاشتۇرۇۋېتىشى مۇمكىن؛\nبۇ مەشغۇلاتنى داۋاملاشتۇرۇشتىن ئىلگىرى ئېھتىيات قىلىڭ.", - "rollback": "تەھرىر ئەسلىگە قايتۇر", + "rollback": "تەھرىرلەشكە قايتىش", "rollbacklink": "ئەسلىگە قايتۇر", "rollbacklinkcount": "$1 {{PLURAL:$1|تەھرىر}}نى ئەسلىگە قايتۇر", "rollbacklinkcount-morethan": "$1 دىن كۆپ {{PLURAL:$1|تەھرىر}}نى ئەسلىگە قايتۇر", @@ -1671,7 +1804,7 @@ "minimum-size": "ئەڭ كىچىك چوڭلۇقى", "maximum-size": "ئەڭ چوڭ چوڭلۇقى:", "pagesize": "(بايت)", - "restriction-edit": "تەھرىر", + "restriction-edit": "تەھرىرلەش", "restriction-move": "يۆتكە", "restriction-create": "قۇر", "restriction-upload": "يۈكلە", @@ -1723,6 +1856,7 @@ "contributions": "{{GENDER:$1|ئىشلەتكۈچى}} تۆھپىسى", "contributions-title": "$1 نىڭ ئىشلەتكۈچى تۆھپىسى", "mycontris": "تۆھپە", + "anoncontribs": "تۆھپە", "contribsub2": "{{GENDER:$3|$1}} ($2) ئۈچۈن", "nocontribs": "بۇ ئۆلچەمگە ماس كېلىدىغان ئۆزگەرتىش تېپىلمىدى.", "uctop": "(نۆۋەتتىكى)", @@ -1742,6 +1876,7 @@ "sp-contributions-search": "تۆھپە ئىزدە", "sp-contributions-username": "IP ئادرېس ياكى ئىشلەتكۈچى نامى:", "sp-contributions-toponly": "ئەڭ يېڭى تۈزىتىلگەن نەشرىنىلا كۆرسەت", + "sp-contributions-newonly": "بەت قۇرۇش تەھرىرىنىلا كۆرسەت", "sp-contributions-submit": "ئىزدە", "whatlinkshere": "بۇ جايدىكى ئۇلانما", "whatlinkshere-title": "\"$1\" بەتكە ئۇلانغان بەتلەر", @@ -1755,7 +1890,7 @@ "whatlinkshere-prev": "{{PLURAL:$1|ئالدى|ئالدى $1}}", "whatlinkshere-next": "{{PLURAL:$1|كەينى|كەينى $1}}", "whatlinkshere-links": "→ ئۇلانما", - "whatlinkshere-hideredirs": "$1 قايتا نىشان بەلگىلە", + "whatlinkshere-hideredirs": "$1 قايتا نىشان بەلگىلەش", "whatlinkshere-hidetrans": "$1 ئۆز ئىچىگە ئالغان", "whatlinkshere-hidelinks": "$1 ئۇلانما", "whatlinkshere-hideimages": "$1 ھۆججەت ئۇلانما", @@ -1802,9 +1937,9 @@ "ipblocklist": "چەكلەنگەن ئىشلەتكۈچىلەر", "ipblocklist-legend": "چەكلەنگەن ئىشلەتكۈچىدىن بىرنى ئىزدە", "blocklist-userblocks": "ھېسابات چەكلەشنى يوشۇر", - "blocklist-tempblocks": "ۋاقىتلىق چەكلەشنى يوشۇر", + "blocklist-tempblocks": "ۋاقىتلىق چەكلەنمىنى يوشۇرۇش", "blocklist-addressblocks": "يەككە IP چەكلەشنى يوشۇر", - "blocklist-rangeblocks": "دائىرە چەكلىمىسىنى يوشۇر", + "blocklist-rangeblocks": "چەكلەنگەن IP بۆلىكىنى يوشۇرۇش", "blocklist-timestamp": "ۋاقىت تامغاسى", "blocklist-target": "نىشان", "blocklist-expiry": "ۋاقتى ئۆتتى", @@ -1960,7 +2095,7 @@ "allmessages-filter-modified": "ئۆزگەرتىلگەن", "allmessages-prefix": "ئالدى قوشۇلغۇچى سۈزگۈچ:", "allmessages-language": "تىل:", - "allmessages-filter-submit": "يۆتكەل", + "allmessages-filter-submit": "يوللاش", "thumbnail-more": "چوڭايت", "filemissing": "ھۆججەت يوقالغان", "thumbnail_error": "كىچىك رەسىم قۇرۇش خاتالىقى: $1", @@ -2001,7 +2136,7 @@ "import-nonewrevisions": "ھەممە تۈزىتىش بايىلا ئەكىرىلگەن.", "xml-error-string": "$2 قۇردىكى $1، ستون $3 ($4 بايت): $5", "import-upload": "XML سانلىق مەلۇماتى يۈكلە", - "import-token-mismatch": "جەريان سانلىق مەلۇماتى يوقالدى.\n قايتا سىناڭ.", + "import-token-mismatch": "جەريان سانلىق مەلۇماتى يوقالدى.\n\nسىز بەلكىم چېكىنىپ چىقتىڭىز. '''سېستىمىغا تىزىملىتىپ كىرگەنلىك ھالىتىڭىزنى تەكشۈرۈڭ، ھەم قايتا سىناڭ '''. ئەگەر داۋاملىق ئىشلىمىسە، [[Special:UserLogout|چېكىنىش]] نى سىناپ قايتا كىرىڭ، شۇنداقلا توركۆرگۈچىڭىزنىڭ تور بېكەت cookie نى قوللايدىغانلىقىنى تەكشۈرۈڭ.", "import-invalid-interwiki": "بەلگىلەنگەن wiki دىن ئەكىرەلمىدى.", "import-error-edit": "\"$1\" نى ئەكىرمىدى چۈنكى سىز ئۇنى تەھرىرلەشكە يول قويمىغان.", "import-error-create": "\"$1\" نى ئەكىرمىدى چۈنكى سىز ئۇنى قۇرۇشقا يول قويمىغان.", @@ -2018,18 +2153,18 @@ "import-logentry-interwiki-detail": "$2 دىن كەلگەن $1 {{PLURAL:$1|تۈزىتىش|تۈزىتىش}}", "javascripttest": "JavaScript سىناش", "javascripttest-qunit-intro": "mediawiki.org دىكى [$1 سىناش قوللانمىسى]نى كۆرۈڭ.", - "tooltip-pt-userpage": "ئىشلەتكۈچى بېتىڭىز", + "tooltip-pt-userpage": "{{GENDER:|سىزنىڭ ئىشلەتكۈچى}} بېتىڭىز", "tooltip-pt-anonuserpage": "بۇ بېكەتنى تەھرىرلىگەندە ئىشلەتكەن IP ماس كەلگەن ئىشلەتكۈچى بېتى", - "tooltip-pt-mytalk": "مۇنازىرە بېتىڭىز", + "tooltip-pt-mytalk": "{{GENDER:|سىزنىڭ}} مۇنازىرە بېتىڭىز", "tooltip-pt-anontalk": "مەزكۇر IP ئادرېستىن كەلگەن تەھرىرنىڭ مۇنازىرىسى", - "tooltip-pt-preferences": "مايىللىق تەڭشىگىڭىز", + "tooltip-pt-preferences": "{{GENDER:|سىزنىڭ}} مايىللىق تەڭشىكىڭىز", "tooltip-pt-watchlist": "سىز كۆزىتىۋاتقان بەتلەر تىزىملىگى", - "tooltip-pt-mycontris": "تۆھپە تىزىملىكىڭىز", + "tooltip-pt-mycontris": "{{GENDER:|سىزنىڭ}} تۆھپە تىزىملىكىڭىز", "tooltip-pt-login": "تىزىمغا كىرىشىڭىزنى تەۋسىيە قىلىمىز ئەمما مەجبۇرىي ئەمەس", - "tooltip-pt-logout": "تىزىمدىن چىق", + "tooltip-pt-logout": "چېكىنىش", "tooltip-pt-createaccount": "ھېساباتتىن بىرنى قۇرۇپ تىزىمغا كىرىشىڭىزنى تەۋسىيە قىلىمىز، ئەمما بۇ مەجبۇرىي ئەمەس.", "tooltip-ca-talk": "بەت مەزمۇنى ھەققىدىكى مۇنازىرە", - "tooltip-ca-edit": "بۇ بەتنى تەھرىرلىيەلەيسىز.\nساقلاشتىن ئىلگىرى ئالدىن كۆزەت كۇنۇپكىسىنى ئىشلىتىڭ", + "tooltip-ca-edit": "بۇ بەتنى تەھرىرلەش", "tooltip-ca-addsection": "يېڭى بىر مۇنازىرە باشلاڭ", "tooltip-ca-viewsource": "بۇ بەت قوغدالغان.\nمەنبە ھۆججىتىنى كۆرەلەيسىز", "tooltip-ca-history": "بۇ بەتنىڭ بۇرۇنقى نەشرى", @@ -2041,7 +2176,7 @@ "tooltip-ca-watch": "بۇ بەتنى كۆزەت تىزىملىكىگە قوش", "tooltip-ca-unwatch": "بۇ بەتنى كۆزەت تىزىملىكىمدىن چىقىرىۋەت", "tooltip-search": "{{SITENAME}} ئىزدە", - "tooltip-search-go": "ئەگەر بۇ ئاتتىكى بەت مەۋجۇد بولسا شۇ بەتكە يۆتكەل", + "tooltip-search-go": "ئوخشاش ماۋزۇلۇق تېما بولسا، بىۋاستە بۇ بەتكە يۆتكىلىدۇ", "tooltip-search-fulltext": "بۇ تېكست بار بەتنى ئىزدە", "tooltip-p-logo": "باش بەتنى زىيارەت قىل", "tooltip-n-mainpage": "باش بەتنى زىيارەت قىل", @@ -2056,10 +2191,10 @@ "tooltip-feed-rss": "بۇ بەتنىڭ RSS قانىلى", "tooltip-feed-atom": "بۇ بەتنىڭ Atom قانىلى", "tooltip-t-contributions": "بۇ ئىشلەتكۈچىنىڭ تۆھپە تىزىملىكىنى كۆرسەت", - "tooltip-t-emailuser": "بۇ ئىشلەتكۈچىگە ئېلخەت يوللا", + "tooltip-t-emailuser": "{{GENDER:$1|بۇ ئىشلەتكۈچىگە}} ئېلخەت يوللاش", "tooltip-t-upload": "ھۆججەتلەرنى يۈكلە", "tooltip-t-specialpages": "بارلىق ئالاھىدە بەتلەر تىزىملىكى", - "tooltip-t-print": "بۇ بەتنىڭ باسقىلى بولىدىغان نەشرى", + "tooltip-t-print": "بۇ بەتنىڭ باسما نۇسخىسى", "tooltip-t-permalink": "ئۆزگەرتىلگەن نەشرىدىكى بۇ بەتنىڭ مەڭگۈلۈك ئۇلانمىسى", "tooltip-ca-nstab-main": "مەزمۇن بېتىنى كۆرسەت", "tooltip-ca-nstab-user": "ئىشلەتكۈچى بېتىنى كۆرسەت", @@ -2125,7 +2260,8 @@ "pageinfo-length": "بەت چوڭلۇقى (بايت)", "pageinfo-article-id": "بەت ID", "pageinfo-language": "بەت مەزمۇن تىلى", - "pageinfo-robot-policy": "ئىزدەش ماتور ھالىتى", + "pageinfo-content-model": "بەت مەزمۇنى تىپى", + "pageinfo-robot-policy": "ماشىنا ئادەمدە ئىنىدىكىسلاش", "pageinfo-robot-index": "چەكلەنمىگەن", "pageinfo-robot-noindex": "چەكلەنگەن", "pageinfo-watchers": "بەت كۆزەتكۈچىلەر سانى", @@ -2178,7 +2314,7 @@ "filedelete-old-unregistered": "بەلگىلەنگەن ھۆججەتنىڭ \"$1\" تۈزىتىلگەن نەشرى سانداندا يوق.", "filedelete-current-unregistered": "بەلگىلەنگەن ھۆججەت \"$1\" سانداندا يوق.", "filedelete-archive-read-only": "تور بەت مۇلازىمىتىرىدىكى ئارخىپ مۇندەرىجىسى \"$1\" گە يازغىلى بولمايدۇ.", - "previousdiff": "→ ئالدىنقى تەھرىر", + "previousdiff": "→ ئالدىنقى تەھرىرلەش", "nextdiff": "كېيىنكى تەھرىر ←", "mediawarning": "'''ئاگاھلاندۇرۇش''': بۇ ھۆججەتتە زەھەرخەندە كود بولۇشى مۇمكىن، ئۇنى ئىجرا قىلسىڭىز سىستېمىڭىزغا خەۋپ ئېلىپ كېلىشى مۇمكىن.", "imagemaxsize": "سۈرەت چوڭلۇق چەكلىمىسى:
''(ھۆججەت چۈشەندۈرۈش بېتى ئۈچۈن)''", @@ -2635,8 +2771,8 @@ "confirm-unwatch-top": "بۇ بەتنى كۆزەت تىزىمىدىن چىقىرىۋېتەمسىز؟", "imgmultipageprev": "← ئالدىنقى بەت", "imgmultipagenext": "كېيىنكى بەت →", - "imgmultigo": "يۆتكەل!", - "imgmultigoto": "$1 بەتكە يۆتكەل", + "imgmultigo": "يوللاش!", + "imgmultigoto": "$1 .بەتكە يۆتكىلىش", "ascending_abbrev": "ئۆسكۈچى", "descending_abbrev": "كېمەيگۈچى", "table_pager_next": "كېيىنكى بەت", @@ -2645,7 +2781,7 @@ "table_pager_last": "ئەڭ ئاخىرقى بەت", "table_pager_limit": "ھەر بىر بەتتە $1 تۈر كۆرسەت", "table_pager_limit_label": "ھەر بەتتىكى تۈر سانى:", - "table_pager_limit_submit": "يۆتكەل", + "table_pager_limit_submit": "يوللاش", "table_pager_empty": "نەتىجە يوق", "autosumm-blank": "بەتنى قۇرۇقدا", "autosumm-replace": "ئالماشتۇرۇلغان مەزمۇن '$1'", @@ -2666,6 +2802,7 @@ "watchlistedit-raw-done": "كۆزەت تىزىملىكىڭىز يېڭىلاندى.", "watchlistedit-raw-added": "{{PLURAL:$1|1 ماۋزۇ|$1 ماۋزۇ}} قوشۇلدى:", "watchlistedit-raw-removed": "{{PLURAL:$1|1 ماۋزۇ|$1 ماۋزۇ}} چىقىرىۋېتىلدى:", + "watchlisttools-clear": "كۆزىتىش تىزىملىكىنى تازىلاش", "watchlisttools-view": "مۇناسىۋەتلىك ئۆزگەرتىشنى كۆرسەت", "watchlisttools-edit": "كۆزەت تىزىملىكىنى كۆرۈپ تەھرىرلەش", "watchlisttools-raw": "ئەسلى كۆزەت تىزىملىك تەھرىرى", @@ -2698,7 +2835,12 @@ "version-entrypoints": "كىرىش نۇقتىسىنىڭ URL لىرى", "version-entrypoints-header-entrypoint": "كىرىش نۇقتىسى", "version-entrypoints-header-url": "URL", + "redirect-submit": "يوللاش", + "redirect-lookup": "تەكشۈرۈش:", "redirect-value": "قىممىتى:", + "redirect-user": "ئابونت ID", + "redirect-page": "بەت ID", + "redirect-revision": "بەت نەشىرى", "redirect-file": "ھۆججەت نامى", "redirect-not-exists": "قىممىتى تېپىلمىدى", "fileduplicatesearch": "تەكرار ھۆججەت ئىزدە", @@ -2710,7 +2852,6 @@ "fileduplicatesearch-result-n": " \"$1\" ھۆججەتنىڭ تامامەن ئوخشاش {{PLURAL:$2|1 تەكرار|$2 تەكرار}} نۇسخىسى بار.", "fileduplicatesearch-noresults": "\"$1\" ئاتلىق ھۆججەت تېپىلمىدى.", "specialpages": "ئالاھىدە بەتلەر", - "specialpages-note": "* ئادەتتىكى ئالاھىدە بەت.\n* چەكلىمىلىك ئالاھىدە بەتلەر.\n* غەملەنگەن ئالاھىدە بەتلەر(ۋاقتى ئۆتكەن بولۇشى مۇمكىن).", "specialpages-group-maintenance": "ئاسراش دوكلاتى", "specialpages-group-other": "باشقا ئالاھىدە بەتلەر", "specialpages-group-login": "تىزىملىتىش / كىرىش", @@ -2749,6 +2890,9 @@ "compare-invalid-title": "سىز بەلگىلىگەن تېما ئىناۋەتسىز.", "compare-title-not-exists": "سىز بەلگىلىگەن تېما مەۋجۇت ئەمەس.", "compare-revision-not-exists": "سىز بەلگىلىگەن تۈزىتىلگەن نەشرى مەۋجۇت ئەمەس.", + "diff-form": "پەرقلەر", + "permanentlink": "مەڭگۈلۈك ئۇلانما", + "permanentlink-revid": "تۈزىتىلگەن نەشرى ID", "dberr-problems": "كەچۈرۈڭ! بۇ بېكەتتە تېخنىكىلىق قىيىنچىلىق كۆرۈلدى.", "dberr-again": "بىر قانچە مىنۇت كۈتۈپ ئاندىن قايتا يۈكلەڭ.", "dberr-info": "(ساندان مۇلازىمىتىرىغا ئۇلىنالمىدى: $1)", @@ -2795,13 +2939,14 @@ "logentry-patrol-patrol": "$3 بەتنىڭ $4 تۈزىتىلگەن نەشرىگە $1 چارلاش بەلگىسى سالدى", "logentry-patrol-patrol-auto": "$3 بەتنىڭ $4 تۈزىتىلگەن نەشرىگە $1 چارلاش بەلگىسى ئاپتوماتىك سالدى", "logentry-newusers-newusers": "ئەزا $1 قۇرۇلبولدى", - "logentry-newusers-create": "ئەزا $1 قۇرۇلبولدى", + "logentry-newusers-create": "ئەزا ئاكونت $1 تىنى {{GENDER:$2|قۇرۇپ بولغان}}", "logentry-newusers-create2": "ئىشلەتكۈچى ھېساباتى $3 نى $1 قۇردى", "logentry-newusers-byemail": "ئىشلەتكۈچى ھېساباتى $3 نى $1 قۇردى ھەمدە ئىمنى تورخەتكە ئەۋەتتى", - "logentry-newusers-autocreate": "ئىشلەتكۈچى $1 ئاپتوماتلىق قۇرۇلدى", + "logentry-newusers-autocreate": "ئىشلەتكۈچى ئاكونتى $1 نى {{GENDER:$2|ئاپتوماتىك قۇردى}}", "logentry-rights-rights": "$3 نىڭ ئىشلەتكۈچى گۇرۇپپىسىنى $4 دىن $5 غا $1 ئالماشتۇردى", "logentry-rights-rights-legacy": "$3 نىڭ ئىشلەتكۈچى گۇرۇپپىسىنى $1 ئۆزگەرتتى", "logentry-rights-autopromote": "$1 نىڭ ئىشلەتكۈچى گۇرۇپپىسى ئۆزلۈكىدىن $4 دىن $5 غا يۈكسەلدى", + "logentry-upload-overwrite": "$1 يېڭى نەشىرى $3 نى {{GENDER:$2|يوللاش}}", "rightsnone": "(يوق)", "feedback-adding": "قايتۇرما ئىنكاسنى بەتكە قوشۇۋاتىدۇ…", "feedback-bugcheck": "قالتىس! كەمتۈكنىڭ ئاللىبۇرۇن يوللانغان [$1 مەلۇملۇق كەمتۈك] ياكى ئەمەسلىكىنى تەكشۈرۈڭ.", @@ -2816,7 +2961,7 @@ "feedback-subject": "تېما:", "feedback-submit": "تاپشۇر", "feedback-thanks": "كۆپ رەھمەت! قايتۇرما ئىنكاسىڭىز \"[$2 $1]\" بەتكە يوللاندى.", - "searchsuggest-search": "ئىزدەش", + "searchsuggest-search": "{{SITENAME}} ئىزدەش", "searchsuggest-containing": "ئىچىدە…", "api-error-badtoken": "ئىچكى خاتالىق: سۆزلىشىش ئىناۋەتسىز.", "api-error-emptypage": "يېڭىدىن قۇرۇش، قۇرۇق بەت يول قۇيۇلمايدۇ.", @@ -2862,5 +3007,6 @@ "special-characters-group-devanagari": "سانسكرىتچە", "special-characters-group-thai": "تايلاندچە", "special-characters-group-lao": "لائوسچە", - "special-characters-group-khmer": "كېخمېرچە" + "special-characters-group-khmer": "كېخمېرچە", + "randomrootpage": "خالىغان غول بەت" } diff --git a/languages/i18n/uk.json b/languages/i18n/uk.json index 146647e2ea..b40f5d44a2 100644 --- a/languages/i18n/uk.json +++ b/languages/i18n/uk.json @@ -101,13 +101,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": "Приховати категоризацію сторінок", @@ -764,8 +765,8 @@ "permissionserrorstext-withaction": "У Вас нема дозволу на $2 з {{PLURAL:$1|1=такої причини|таких причин}}:", "contentmodelediterror": "Ви не можете редагувати цю версію, оскільки модель його змісту — $1, відрізняється від теперішньої моделі змісту сторінки — $2.", "recreate-moveddeleted-warn": "'''Попередження: Ви намагаєтеся створити сторінку, яка раніше вже була вилучена.'''\n\nПеревірте, чи Вам справді потрібно створювати цю сторінку.\nНижче, для зручності, наведений журнал вилучень і перейменувань:", - "moveddeleted-notice": "Ця сторінка була вилучена.\nДля довідки нижче наведені відповідні записи з журналів вилучень і перейменувань.", - "moveddeleted-notice-recent": "На жаль, ця сторінка нещодавно була вилучена (протягом останніх 24 годин). Для довідки нижче наведені відповідні записи з журналів вилучень і перейменувань.", + "moveddeleted-notice": "Цю сторінку було вилучено.\nДля довідки нижче наведені відповідні записи з журналів вилучень, захисту й перейменувань цієї сторінки.", + "moveddeleted-notice-recent": "На жаль, ця сторінка нещодавно була вилучена (протягом останніх 24 годин). Для довідки нижче наведені відповідні записи з журналів вилучень, захисту й перейменувань цієї сторінки.", "log-fulllog": "Переглянути весь журнал", "edit-hook-aborted": "Редагування скасоване процедурою-перехоплювачем.\nДодаткові пояснення не наведені.", "edit-gone-missing": "Неможливо оновити сторінку.\nІмовірно, вона була вилучена.", @@ -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": "найдавніші", @@ -1033,7 +1034,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": "Інші налаштування", @@ -1352,8 +1353,20 @@ "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": "Групувати результати за сторінкою", + "rcfilters-grouping-title": "Групування", "rcfilters-activefilters": "Активні фільтри", "rcfilters-advancedfilters": "Розширені фільтри", + "rcfilters-limit-title": "Зміни, які слід показати", + "rcfilters-limit-shownum": "Показати {{PLURAL:$1|$1 останню зміну|$1 останні зміни|$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-quickfilters-placeholder-description": "Щоб зберегти Ваші налаштування фільтрів та використати їх пізніше, клацніть на іконку закладки в ділянці активних фільтрів нижче.", @@ -1365,10 +1378,12 @@ "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": "Без фільтрів. Показано всі зміни.", @@ -1381,23 +1396,23 @@ "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": "Ваш власний внесок.", "rcfilters-filter-editsbyother-label": "Зміни, здійснені іншими", "rcfilters-filter-editsbyother-description": "Усі зміни, за винятком Ваших власних.", - "rcfilters-filtergroup-userExpLevel": "Рівень досвіду (тільки для зареєстрованих користувачів)", + "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-newcomer-description": "Зареєстровані редактори, які мають менш ніж 10 редагувань і 4 дні активності.", "rcfilters-filter-user-experience-level-learner-label": "Учні", - "rcfilters-filter-user-experience-level-learner-description": "Більше досвіду, ніж у «новачків», але менше, ніж у «досвідчених користувачів».", + "rcfilters-filter-user-experience-level-learner-description": "Зареєстровані редактори, рівень досвіду яких перебуває між «новачками» та «досвідченими користувачами».", "rcfilters-filter-user-experience-level-experienced-label": "Досвідчені користувачі", - "rcfilters-filter-user-experience-level-experienced-description": "Більше 30 днів активності і понад 500 редагувань.", + "rcfilters-filter-user-experience-level-experienced-description": "Зареєстровані редактори, які мають понад 500 редагувань і 30 днів активності.", "rcfilters-filtergroup-automated": "Автоматизовані редагування", "rcfilters-filter-bots-label": "Бот", "rcfilters-filter-bots-description": "Редагування, зроблені з допомогою автоматизованих засобів.", @@ -1420,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": "Редагування вікі-вмісту, обговорень, опису категорій тощо.", @@ -1432,17 +1452,24 @@ "rcfilters-hideminor-conflicts-typeofchange-global": "Фільтр «Незначні редагування» конфліктує з одним або більше фільтрів за типом змін, оскільки певні типи змін не можна позначити як «незначні». Конфліктні фільтри позначені в ділянці активних фільтрів угорі.", "rcfilters-hideminor-conflicts-typeofchange": "Певні типи змін не можна позначити як «незначні», тож цей фільтр конфліктує з такими фільтрами за типом змін: $1", "rcfilters-typeofchange-conflicts-hideminor": "Цей фільтр за типом змін конфліктує з фільтром «Незначні редагування». Певні типи змін не можна позначати як «незначні».", - "rcfilters-filtergroup-lastRevision": "Поточна версія", + "rcfilters-filtergroup-lastRevision": "Останні версії", "rcfilters-filter-lastrevision-label": "Поточна версія", - "rcfilters-filter-lastrevision-description": "Остання зміна на сторінці.", - "rcfilters-filter-previousrevision-label": "Попередні версії", - "rcfilters-filter-previousrevision-description": "Усі зміни, які не є поточною версією сторінки.", + "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-exclude-button-on": "Виключення вибраного", + "rcfilters-view-advanced-filters-label": "Розширені фільтри", "rcfilters-view-tags": "Редагування з мітками", "rcfilters-view-namespaces-tooltip": "Фільтрувати результати за простором назв", "rcfilters-view-tags-tooltip": "Фільтрувати результати, використовуючи мітки до редагувань", "rcfilters-view-return-to-default-tooltip": "Повернутися до головного меню фільтра", + "rcfilters-liveupdates-button": "Оновлення наживо", + "rcfilters-liveupdates-button-title-on": "Вимкнути оновлення наживо", + "rcfilters-liveupdates-button-title-off": "Показувати нові зміни одразу ж після їх здійснення", + "rcfilters-watchlist-markSeen-button": "Позначити всі зміни як переглянуті", "rcnotefrom": "Нижче знаходяться {{PLURAL:$5|редагування}} з $3, $4 (відображено до $1).", "rclistfromreset": "Скинути вибір дати", "rclistfrom": "Показати редагування починаючи з $3 $2.", @@ -1826,6 +1853,8 @@ "pageswithprop-legend": "Сторінки з перевизначеними властивостями", "pageswithprop-text": "Тут перераховані сторінки, у яких були вручну перевизначені окремі властивості.", "pageswithprop-prop": "Назва властивості:", + "pageswithprop-reverse": "Сортувати у зворотньому порядку", + "pageswithprop-sortbyvalue": "Сортувати за значенням властивості", "pageswithprop-submit": "Перейти", "pageswithprop-prophidden-long": "довге значення текстової властивості приховано ($1)", "pageswithprop-prophidden-binary": "двійкове значення властивості приховано ($1)", @@ -2166,6 +2195,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:genitive|{{SITENAME}}}}\n\n--\nЗміна налаштувань повідомлень електронною поштою\n{{canonicalurl:{{#special:Preferences}}}}\n\nЩоб змінити налаштування списку спостереження, перейдіть за посиланням\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nЩоб вилучити сторінку зі списку спостереження, відвідайте сторінку\n$UNWATCHURL\n\nЗворотній зв'язок і допомога:\n$HELPPAGE", + "enotif_minoredit": "Це незначна зміна", "created": "створена", "changed": "змінена", "deletepage": "Вилучити сторінку", @@ -2194,6 +2224,7 @@ "delete-warning-toobig": "У цієї сторінки дуже довга історія редагувань, більше $1 {{PLURAL:$1|версії|версій|версій}}.\nЇї вилучення може призвести до порушень у роботі бази даних сайту {{SITENAME}};\nдійте обережно.", "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|редагування|редагування|редагувань}}", @@ -2312,6 +2343,7 @@ "undelete-search-title": "Пошук видалених сторінок", "undelete-search-box": "Пошук вилучених сторінок", "undelete-search-prefix": "Показати сторінки, що починаються з:", + "undelete-search-full": "Показати назви сторінок, які містять:", "undelete-search-submit": "Знайти", "undelete-no-results": "Не знайдено потрібних сторінок серед вилучених.", "undelete-filename-mismatch": "Неможливо відновити версію файлу з відміткою часу $1: невідповідність назви файлу", @@ -2647,7 +2679,7 @@ "import-nonewrevisions": "Ніякі поправки не були імпортовані (всі вже були оброблені, або пропущені через помилки).", "xml-error-string": "$1 в рядку $2, позиції $3 (байт $4): $5", "import-upload": "Завантажити XML-дані", - "import-token-mismatch": "Втрачені дані сеансу. \n\nВи могли вийти з системи. Будь ласка, переконайтеся, що досі залогінені, і спробуйте ще раз.\nЯкщо це не спрацює, спробуйте [[Special:UserLogout|вийти з системи]] і увійти знову, та перевірте, чи Ваш браузер дозволяє куки з цього сайту.", + "import-token-mismatch": "Втрачено дані сеансу. \n\nВи могли вийти з системи. '''Будь ласка, переконайтеся, що досі перебуваєте в системі, і спробуйте ще раз'''.\nЯкщо це не спрацює, спробуйте [[Special:UserLogout|вийти з системи]] і увійти знову, та перевірте, чи Ваш браузер дозволяє куки з цього сайту.", "import-invalid-interwiki": "Неможливо імпортувати із зазначеної вікі.", "import-error-edit": "Сторінку «$1» не було імпортовано, оскільки Вам не дозволено її редагувати.", "import-error-create": "Сторінку «$1» не було імпортовано, оскільки Вам не дозволено її створювати.", @@ -3549,6 +3581,7 @@ "fileduplicatesearch-noresults": "Файл з назвою «$1» не знайдено.", "specialpages": "Спеціальні сторінки", "specialpages-note-top": "Легенда", + "specialpages-note-restricted": "* Звичайні спеціальні сторінки.\n* Спеціальні сторінки з обмеженим доступом.", "specialpages-group-maintenance": "Технічні звіти", "specialpages-group-other": "Інші", "specialpages-group-login": "Вхід до системи / реєстрація", @@ -3667,6 +3700,13 @@ "compare-invalid-title": "Зазначена назва неприпустима.", "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)", diff --git a/languages/i18n/vi.json b/languages/i18n/vi.json index 8dd0c53c3b..9ab3d48554 100644 --- a/languages/i18n/vi.json +++ b/languages/i18n/vi.json @@ -37,7 +37,8 @@ "Nguyên Lê", "Asmen", "Stephanecbisson", - "Quoclinh94" + "Quoclinh94", + "Tmp1109" ] }, "tog-underline": "Gạch chân liên kết:", @@ -993,7 +994,7 @@ "prefs-editwatchlist-clear": "Xóa sạch danh sách theo dõi của bạn", "prefs-watchlist-days": "Số ngày hiển thị trong danh sách theo dõi:", "prefs-watchlist-days-max": "Tối đa $1 ngày", - "prefs-watchlist-edits": "Số lần sửa đổi tối đa trong danh sách theo dõi mở rộng:", + "prefs-watchlist-edits": "Số lần sửa đổi lớn nhất trong danh sách theo dõi mở rộng:", "prefs-watchlist-edits-max": "Con số tối đa: 1.000", "prefs-watchlist-token": "Dấu hiệu cho danh sách theo dõi:", "prefs-misc": "Linh tinh", @@ -3550,6 +3551,7 @@ "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'''", "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)", diff --git a/languages/i18n/vro.json b/languages/i18n/vro.json index c48e26236f..26632abdfe 100644 --- a/languages/i18n/vro.json +++ b/languages/i18n/vro.json @@ -38,7 +38,7 @@ "tog-shownumberswatching": "Näütäq, ku pall'o pruukjit taa lehe perrä kaes", "tog-oldsig": "Parhillanõ alakirotus:", "tog-fancysig": "Pruugiq vikiteksti moodulist alakirotust (ilma automaatsõ lingildä)", - "tog-uselivepreview": "Pruugiq õkvakipõkaehust", + "tog-uselivepreview": "Pruugiq õkvakipõkaehust ilma lehte ümbre laatmalda", "tog-forceeditsummary": "Annaq teedäq, ku olõ-i kirotõt kokkovõtõt", "tog-watchlisthideown": "Näüdäku-i perräkaemisnimekirän mu hindä toimõnduisi", "tog-watchlisthidebots": "Näüdäku-i perräkaemisnimekirän robotidõ toimõnduisi", @@ -150,13 +150,7 @@ "anontalk": "Seo puutri võrgoaadrõsi arotus", "navigation": "Juhtminõ", "and": " ja", - "qbfind": "Otsiq", - "qbbrowse": "Kaeq", - "qbedit": "Toimõndaq", - "qbpageoptions": "Leheküle säädmine", - "qbmyoptions": "Mu säädmiseq", "faq": "Sagõhõhe küsüdüq küsümiseq", - "faqpage": "Project:KKK", "actions": "Tallitusõq", "namespaces": "Nimeruumiq", "variants": "Tõõsõndiq", @@ -171,6 +165,7 @@ "searcharticle": "Mineq", "history": "Artikli aolugu", "history_short": "Aolugu", + "history_small": "aolugu", "updatedmarker": "toimõndõt päält mu perämäst kaemist", "printableversion": "Trükükujo", "permalink": "Püsülink", @@ -181,29 +176,19 @@ "edit-local": "Toimõndaq paigapäälist seletüst", "create": "Luuq leht", "create-local": "Luuq paigapääline seletüs", - "editthispage": "Toimõndaq seod artiklit", - "create-this-page": "Luuq seo leht", "delete": "Kistudaq ärq", - "deletethispage": "Kistudaq seo artikli ärq", - "undeletethispage": "Tiiq seo leht tagasi", "undelete_short": "Võtaq tagasi {{PLURAL:$1|üts muutminõ|$1 muutmist}}", "viewdeleted_short": "Kaeq {{PLURAL:$1|ütte|$1}} kistutõdut redaktsiooni", "protect": "Kaidsaq", "protect_change": "muudaq", - "protectthispage": "Kaidsaq seod artiklit", "unprotect": "Muudaq kaidsõt", - "unprotectthispage": "Muudaq seo leheküle kaidsõt", "newpage": "Vahtsõnõ artikli", - "talkpage": "Seo artikli arotus", "talkpagelinktext": "Arotus", "specialpage": "Tallituslehekülg", "personaltools": "Erätüüriistaq", - "articlepage": "Artiklilehekülg", "talk": "Arotus", "views": "Kaemisõq", "toolbox": "Tüüriistaq", - "userpage": "Pruukjalehekülg", - "projectpage": "Tallituslehekülg", "imagepage": "Näütäq teedüstülehte", "mediawikipage": "Näütäq sõnomilehekülge", "templatepage": "Näütäq näüdüselehekülge", @@ -236,6 +221,7 @@ "disclaimers": "Hoiatuisi", "disclaimerpage": "Project:Üledseq hoiatusõq", "edithelp": "Toimõndamisoppus", + "helppage-top-gethelp": "Abi", "mainpage": "Pääleht", "mainpage-description": "Pääleht", "policy-url": "Project:Säädüseq", @@ -337,7 +323,7 @@ "actionthrottled": "Tallitusõ kibõhus piirõt", "actionthrottledtext": "Taa tallitusõ mitmit kõrdo tegemine om prahipandjidõ peräst ärq keelet. Olõt taad lühkü ao seen pall'o hulga tennüq. Prooviq veidükese ao peräst vahtsõst.", "protectedpagetext": "Taa lehekülg om kirotuskaidsõt, taad saa-ai muutaq.", - "viewsourcetext": "Võit kaiaq ja kopidaq taa lehe lättekoodi:", + "viewsourcetext": "Võit kaiaq ja kopidaq taa lehe lättekoodi.", "viewyourtext": "Saat kaiaq ja kopidaq noidõ muutmiisi lätteteksti, miä sa seo lehe pääle '''esiq''' tennüq olõt:", "protectedinterface": "Taa lehe pääl om tarkvara pruukjapalgõ tekst. Leht om lukku pant, et taad saasi-i ärq ts'urkiq. \nKu tahat tetäq ümbrepandmiisi (midä pruukvaq kõik vikiq) pruugiq tuus MediaWiki ümbrepandmisõ tüükeskkunda [https://translatewiki.net/ translatewiki.net].", "editinginterface": "Hoiatus: Sa toimõndat tarkvara pruukjapalgõ tekstiga lehte. \nKu siin midä muudat, mõotas tuu pruukjapalõt.", @@ -514,12 +500,12 @@ "accmailtext": "Pruukjalõ '$1' luud johuslinõ salasõna saadõti aadresi pääle $2.\n\nTuud salasõnna saa muutaq ''[[Special:ChangePassword|salasõba muutmisõ lehe pääl]]'' päält vahtsõ nimega sisseminemist.", "newarticle": "(Vahtsõnõ)", "newarticletext": "Taad lehekülge olõ-i viil luud.\nLeheküle luumisõs nakkaq kirotama alanolõvahe kasti (kaeq [$1 oppust]).\nKu sa johtuq siiäq kogõmaldaq, sis klõpsaq võrgokaeja '''Tagasi'''-nuppi.", - "anontalkpagetext": "---- ''Taa om arotusleht nimeldä pruukja kotsilõ, kiä olõ-i loonuq pruukjanimme vai pruugi-i tuud. Tuuperäst tulõ meil pruukja kimmästegemises pruukiq timä puutri võrgoaadrõssit. Taa aadrõs või ollaq mitmõ pruukja pääle ütine. Ku olõt nimeldä pruukja ja lövvät, et taa leheküle pääle kirotõt jutt käü suq kotsilõ, sis olõq hää, [[Special:CreateAccount|luuq konto]] vai [[Special:UserLogin|mineq nimega sisse]], et edespiten segähüisi ärq hoitaq.''", + "anontalkpagetext": "---- ''Taa om arotusleht nimeldä pruukja kotsilõ, kiä olõ-i loonuq pruukjanimme vai pruugi-i tuud. Tuuperäst tulõ meil pruukja kimmästegemises pruukiq timä puutri võrgoaadrõssit. Taa aadrõs või ollaq mitmõ pruukja pääle ütine. Ku olõt nimeldä pruukja ja lövvät, et taa leheküle pääle kirotõt jutt käü-üi suq kotsilõ, sis olõq hää, [[Special:CreateAccount|luuq pruukjanimi]] vai [[Special:UserLogin|mineq nimega sisse]], et edespiten segähüisi ärq hoitaq.''", "noarticletext": "Seo leht om parlaq tühi.\nVõit [[Special:Search/{{PAGENAME}}|otsiq soe lehe nimme]] tõisi lehti päält vai\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} uuriq muutmisnimekirjo] vai [{{fullurl:{{FULLPAGENAME}}|action=edit}} puuduolõva leheküle esiq luvvaq].", "noarticletext-nopermission": "Seo lehe pääl olõ-õi parlaq teksti.\nVõit [[Special:Search/{{PAGENAME}}|otsiq soe lehe nimme]] tõisi lehti päält vai\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} uuriq muutmisnimekirjo], a sul olõ-õi õigust seod lehte alostaq.", "userpage-userdoesnotexist": "Pruukjanimme \"$1\" olõ-i kirjä pant. Kaeq perrä, kas olõt iks kimmäs, et tahat taad lehte toimõndaq.", "userpage-userdoesnotexist-view": "Pruukjanimme \"$1\" olõ-õi kirjä pant.", - "clearyourcache": "'''Panõq tähele:''' perän pästmist piät muutmiisi nägemises uma võrgokaeja vaihõmälo tühäs tegemä. '''Mozillal / Firofoxil / Safaril''' hoiaq all nõstmisnuppi ''Shift'' ja vaodaq ''Reload'' vai ''Ctrl-R'' (Macil ''Command-R''); Konqueroril vaodaq ''Reload'' vai ''F5''. Operal puhastaq vaihõmälo ja võtaq valikust ''Tools → Preferences''. Internet Exploreril hoiaq ''Ctrl'' ja vaodaq ''Refresh'' vai vaodaq ''ctrl-f5''.", + "clearyourcache": "Märgüs: Võimalik, et päält pästmist tulõ muutmiisi nägemises võrgokaeja puhvri tühäs tetäq.\n* Firefox / Safari: Hoiaq all Shift-klahvi ja klõpsaq Laadi uuesti vai vaodaq kas Ctrl-F5 vai Ctrl-R (Macin ⌘-R).\n* Google Chrome: Vaodaq Ctrl-Shift-R (Macin ⌘-Shift-R).\n* Internet Explorer: Hoiaq all Ctrl-klahvi ja klõpsaq Värskenda vai vaodaq Ctrl-F5.\n* Opera: Mineq Menüü → Seaded (Macin Opera → Eelistused) ja sis Privaatsus ja turvalisus → Tühjenda sirvimisandmed → Puhverdatud pildid ja failid.", "usercssyoucanpreview": "'''Nõvvoannõq:''' Pruugiq nuppi 'Näütäq proovikaehust' uma vahtsõ CCS-i vai JavaScripti ülekaemisõs, inne ku taa ärq pästät.", "userjsyoucanpreview": "'''Nõvvoannõq:''' Pruugiq nuppi 'Näütäq proovikaehust' uma vahtsõ CCS-i vai JavaScripti ülekaemisõs, inne ku taa ärq pästät.", "usercsspreview": "'''Seo um CSS-i proovikaehus. Määntsitki muutuisi olõ-i viil pästet.'''", @@ -528,6 +514,7 @@ "updated": "(Värskis tett)", "note": "'''Miildetulõtus:'''", "previewnote": "'''Seo om õnnõ proovikaehus!''' \nSuq tettüq muutmisõq olõ-õi viil pästedüq!", + "continue-editing": "Mineq toimõndamiskasti mano", "previewconflict": "Taa proovikaehus näütäs, kuis ülembädsen toimõtuskastin ollõv tekst' päält pästmist vällä nägemä nakkas.", "session_fail_preview": "'''Annaq andis! Su toimõndust saa-s pästäq, selle et su tüükõrra teedüs om kaoma lännüq. Olõq hää, proomiq viilkõrd. Ku tuust olõ-i kassu, proomiq nii, et läät nime alt vällä ja sis jälq tagasi sisse.'''", "session_fail_preview_html": "'''Annaq andis, mi saa-i tallitaq su toimõndust, selle et toimõnduskõrra teedüs om kaoma lännüq.'''\n\n''Kuna taan vikin om käügin lihtsä HTML, sis om näütämist piiret JavaScript-i ründämiisi kaitsõs.''\n\n'''Ku taa om õigõ toimõnduskatsõq, prooviq viilkõrd. Ku iks tüütä-i, prooviq nime alt vällä minekit ja vahtsõst sissetulõkit.'''", @@ -557,12 +544,13 @@ "hiddencategories": "Seo leht kuulus {{PLURAL:$1|1 käkitühe katõgooriahe|$1 käkitühe katõgooriahe}}:", "nocreatetext": "{{SITENAME}} lupa-i luvvaq vahtsit lehti.\nVõit toimõndaq olõmanolõvit lehti vai [[Special:UserLogin|minnäq nimega sisse]].", "nocreate-loggedin": "Sul olõ-i lupa luvvaq vahtsit {{SITENAME}} lehti.", - "permissionserrors": "Õigusõq ei klapiq", + "permissionserrors": "Puuduliguq õigusõq", "permissionserrorstext": "Sul olõ-i lubat taad tetäq, {{PLURAL:$1|tuuperäst, et|tuuperäst, et}}:", "permissionserrorstext-withaction": "Sul olõ-õi lubat {{lcfirst:$2}} {{PLURAL:$1|järgmädsel põhjusõl|järgmäidsil põhjuisil}}:", "recreate-moveddeleted-warn": "'''Hoiatus: Sa proovit vahtsõst luvvaq lehte, miä om ärq kistutõt.'''\n\nMärgiq perrä, kas tahat taad lehte tõtõstõ luvvaq. \nTan ommaq nätäq seo lehe innembädseq ärqkistutamisõq ja tõistõ paika pandmisõq:", "moveddeleted-notice": "Seo leht om ärq kistutõt.\nTan om lehe kistutamiisi ja tõistõ paika pandmiisi nimekiri.", "edit-conflict": "Samaaignõ toimõndus.", + "content-model-wikitext": "vikitekst", "post-expand-template-inclusion-warning": "'''Hoiatus:''' Pruugitavidõ näüdüsside maht om pall'o suur.\nTuuperäst ossa näüdüssit näüdädä-äi.", "post-expand-template-inclusion-category": "Leheküleq, mil om näüdüsside mahupiir ületet", "post-expand-template-argument-warning": "'''Hoiatus:''' Seo lehe pääl om näüdüs, mil vähämbält üts muutuja om määrät pall'o suurõs.\nSääntseq muutujaq ommaq vaihõlõ jätedüq.", @@ -586,7 +574,7 @@ "page_first": "edimäne leht", "page_last": "viimäne leht", "histlegend": "Märgiq ärq kujoq, midä tahat kõrvo säädiq ja vaodaq võrdõlõmisnuppi.\nSeletüs: (viim) = lahkominegiq viimätsest kujost,\n(minev) = lahkominegiq minevädsest kujost, ts = väiku (tsill'okõnõ) muutminõ", - "history-fieldset-title": "Kaeq muutmiisi aoluku", + "history-fieldset-title": "Otsiq muutmisversiuunõ", "history-show-deleted": "Õnnõ kistutõduq", "histfirst": "Kõgõ vanõmbaq", "histlast": "Kõgõ vahtsõmbaq", @@ -632,13 +620,16 @@ "mergehistory-list": "Liidetäv muutmiisi aolugu", "mergehistory-merge": "Järgmädseq lehe [[:$1]] muutmisõq või mano pandaq lehe [[:$2]] muutmisaolukku. Võit valliq kujo, minkast vahtsõmbit kujjõ kokko ei pandaq, a võrgokaeja linke pruukminõ kaotas taa teedüse ärq.", "mergehistory-go": "Näütäq kokkopantavit muutuisi", + "mergelog": "Kokkopanmislogi", "revertmerge": "Lüüq jälki lahko", "history-title": "Lehekülje \"$1\" muutmiisi aolugu", "difference-title": "Lahkominek lehe \"$1\" kujjõ vaihõl", "lineno": "Rida $1:", "compareselectedversions": "Võrdõlõq valituid kujjõ", "editundo": "võtaq tagasi", + "diff-empty": "(olõ-õi vaiht)", "diff-multi-sameuser": "(näüdädä-äi sama pruukja {{PLURAL:$1|ütte|$1}} vaihõpäälist kujjo)", + "diff-multi-otherusers": "(näüdädä-äi {{PLURAL:$2|üte tõõsõ|$2}} pruukja {{PLURAL:$1|ütte|$1}} vaihõpäälset versiuuni)", "searchresults": "Otsmisõ tulõmiq", "searchresults-title": "Otsmisõ \"$1\" tulõmiq", "titlematches": "Artiklipäälkir'ost löüt", @@ -664,6 +655,7 @@ "search-result-category-size": "{{PLURAL:$1|1 lehekülg|$1 lehekülge}} ({{PLURAL:$2|1 alambkatõgooria|$2 alambkatõgooriat}}, {{PLURAL:$3|1 fail|$3 faili}})", "search-redirect": "(ümbresaatminõ lehelt $1)", "search-section": "(alljago $1)", + "search-file-match": "(vastas faili sisulõ)", "search-suggest": "Kas mõtlit: $1", "search-interwiki-caption": "Sõsarprojektiq", "search-interwiki-default": "$1 tulõmiq:", @@ -786,11 +778,13 @@ "rightslog": "Pruukmisõiguisi muutmisõ nimekiri", "rightslogtext": "Taa om pruukmisõiguisi muutmiisi nimekiri.", "action-edit": "seod lehte toimõndaq", + "action-createaccount": "Seo pruukjanime luuminõ", "nchanges": "$1 {{PLURAL:$1|muutminõ|muutmiisi}}", "enhancedrc-history": "aolugu", "recentchanges": "Viimädseq muutmisõq", "recentchanges-legend": "Viimätside muutmiisi säädmine", "recentchanges-summary": "Kaeq seo lehe päält viimätsit muutmiisi.", + "recentchanges-noresult": "Seo ao seen olõ-õi tett naidõ tunnussidõ perrä muutmiisi.", "recentchanges-feed-description": "Kaeq seo lehe pääl {{SITENAME}} viimätsit muutmiisi.", "recentchanges-label-newpage": "Seo muutminõ lõi vahtsõ leheküle", "recentchanges-label-minor": "Taa om väiku parandus", @@ -799,7 +793,7 @@ "recentchanges-label-plusminus": "Lehe suurusõ muutus baidõn", "recentchanges-legend-heading": "Seletüs:", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (kaeq ka [[Special:NewPages|vahtsidõ lehti nimekirjä]])", - "rcnotefrom": "Tan ommaq muutmisõq kuupääväst '''$2''' pääle (näüdätäs kooniq '''$1''' muutmist).", + "rcnotefrom": "Tan {{PLURAL:$5|om muutminõ| ommaq muutmisõq}} kuupääväst $3, kell $4 (näüdätäs kooniq $1 muutmist)", "rclistfrom": "Näütäq muutmiisi kuupääväst $3 $2 pääle", "rcshowhideminor": "$1 väikuq parandusõq", "rcshowhideminor-show": "Näütäq", @@ -808,6 +802,7 @@ "rcshowhidebots-show": "Näütäq", "rcshowhidebots-hide": "Käkiq ärq", "rcshowhideliu": "$1 nimega pruukjat", + "rcshowhideliu-show": "Näütäq", "rcshowhideliu-hide": "Käkiq ärq", "rcshowhideanons": "$1 nimeldä pruukjaq", "rcshowhideanons-show": "Näütäq", @@ -830,10 +825,11 @@ "rc-change-size-new": "$1 {{PLURAL:$1|bait|baiti}} peräst muutmist", "rc-enhanced-expand": "Näütäq ütsikasjo", "rc-enhanced-hide": "Käkiq ütsikas'aq ärq", + "rc-old-title": "alostõt päälkirä \"$1\" all", "recentchangeslinked": "Siiäq putvaq muutmisõq", "recentchangeslinked-feed": "Siiäq putvaq muutmisõq", "recentchangeslinked-toolbox": "Siiäq putvaq muutmisõq", - "recentchangeslinked-title": "Muutusõq noidõ lehti pääl, kohe näüdätäs lähe päält \"$1\"", + "recentchangeslinked-title": "Muutusõq noidõ lehti pääl, kohe näüdätäs lehe päält \"$1\"", "recentchangeslinked-summary": "Taan nimekirän ommaq noidõ lehti muutmisõq, mink pääle näütäs seo lehe päält linke. Naad leheq ommaq [[Special:Watchlist|perräkaemisnimekirän]] märgidüq '''paksu kiräga'''.", "recentchangeslinked-page": "Lehe nimi:", "recentchangeslinked-to": "Näütäq muutmiisi noidõ lehti pääl, kon om näütämiisi seo lehe pääle", @@ -912,15 +908,19 @@ "filehist-datetime": "Kuupäiv/Kelläaig", "filehist-thumb": "Väiku pilt", "filehist-thumbtext": "Väiku pilt $1 kujolõ", + "filehist-nothumb": "Väikutpilti olõ-õi", "filehist-user": "Pruukja", "filehist-dimensions": "Suurus", "filehist-filesize": "Teedüstü suurus", "filehist-comment": "Seletüs:", "imagelinks": "Teedüstüpruukminõ", "linkstoimage": "Taa pildi pääle {{PLURAL:$1|näütäs lehekülg|näütäseq leheküleq}}:", + "linkstoimage-more": "Se teedüstü pääle näütäs inämb ku {{PLURAL:$1|üts lehekülg|$1 lehekülge}}.\nJärgmädsen nimekirän om näüdät õnnõ {{PLURAL:$1|edimäne näütäv lehekülg|edimädseq $1 näütävät lehekülge}}.\nKaiaq saa ka [[Special:WhatLinksHere/$2|tervet nimekirjä]].", "nolinkstoimage": "Taa pildi pääle näütä-i ütski lehekülg.", + "linkstoimage-redirect": "$1 (teedüstü ümbresaatminõ) $2", "sharedupload": "Seo teedüstü om peri lättest $1 ni taad võivaq pruukiq ka tõõsõq vikiq.", "sharedupload-desc-here": "Seo om jaet teedüstü lättest $1 ja seod saa pruukiq ka tõisin projekten. Teedüstü [$2 seletüs] om ant allpuul.", + "filepage-nofile": "Sääntse nimega teedüstüt olõ-õi", "uploadnewversion-linktext": "Laadiq taa teedüstü vahtsõnõ kujo", "upload-disallowed-here": "Sa ei saaq seod faili üle kirotaq.", "filerevert": "Võtaq tagasi $1", @@ -962,6 +962,7 @@ "statistics-users-active-desc": "Pruukjaq, kiä ommaq tan midägi toimõndanuq {{PLURAL:$1|viimädse päävä|viimädse $1 päävä}} seen.", "doubleredirects": "Katõkõrdsõq ümbresaatmisõq", "doubleredirectstext": "Egä ria pääl om ärq tuud edimäne ja tõõnõ ümbresaatmisleht ja niisama tõõsõ ümbresaatmislehe link, miä näütäs hariligult kotusõ pääle, kohe edimäne ümbersaatmisleht pidänüq õkva näütämä.", + "double-redirect-fixer": "Ümbresaatmiisi parandaja", "brokenredirects": "Vigadsõq ümbresaatmisõq", "brokenredirectstext": "Naaq ümbresaatmisõq näütäseq lehti pääle, midä olõ-i olõman:", "brokenredirects-edit": "toimõndaq", @@ -1016,11 +1017,11 @@ "booksources-search-legend": "Otsiq raamatut", "booksources-search": "Otsiq", "booksources-text": "Tan om linke lehekülile, kon müvväs raamatit vai andas raamatidõ kotsilõ teedüst.", - "specialloguserlabel": "Pruukja:", - "speciallogtitlelabel": "Päälkiri:", + "specialloguserlabel": "Tekij:", + "speciallogtitlelabel": "Objekt (päälkiri vai {{ns:user}}:pruukjanimi):", "log": "Muutmisnimekiri", - "all-logs-page": "Kõik muutmisõq", - "alllogstext": "{{SITENAME}} kõiki muutmiisi - kistutamiisi, kaitsmiisi, kinniqpidämiisi ja kõrraldamiisi ütine nimekiri. Võit valliq ka eräle muutmistüübi, pruukjanime vai lehe päälkirä perrä.", + "all-logs-page": "Kõik avaliguq logiq", + "alllogstext": "Seo om {{GRAMMAR:genitive|{{SITENAME}}}} kõiki olõmanolõvidõ lokõ ütisnäüt.\nValigu kitsõndamisõs valiq logitüüp, kirodaq pruukjanimi (nõstutundlik) vai huvvipakva leheküle päälkiri (kah nõstutundlik).", "logempty": "Muutmisnimekirän olõ-i sääntsit kiräkotussit.", "log-title-wildcard": "Otsiq päälkirjo, miä alostasõq taa tekstiga", "allpages": "Kõik artikliq", @@ -1034,6 +1035,7 @@ "allpagesprefix": "Näütäq lehti, mink alostusõn om:", "allpagesbadtitle": "Taa päälkiri oll' viganõ vai vikidevaihõlidsõ edejakuga. Tan või ollaq märke, midä tohe-i päälkir'on pruukiq.", "allpages-bad-ns": "{{SITENAME}}n olõ-i nimeruumi \"$1\".", + "allpages-hide-redirects": "Käkiq ümbresaatmisõq ärq", "categories": "Katõgooriaq", "categoriespagetext": "Seon vikin ommaq sääntseq katõgooriaq.\n[[Special:UnusedCategories|Unused categories]] are not shown here.\nAlso see [[Special:WantedCategories|wanted categories]].", "linksearch": "Välislingiq", @@ -1060,6 +1062,7 @@ "emailccsubject": "Kopi su kiräst aadrõsi pääle $1: $2", "emailsent": "E-post saadõt", "emailsenttext": "Sõnnom saadõt.", + "usermessage-editor": "Tallitusteedüsside edesiandja", "watchlist": "Perräkaemisnimekiri", "mywatchlist": "Perräkaemisnimekiri", "watchlistfor2": "Pruukja $1 $2 jaos", @@ -1075,8 +1078,8 @@ "notanarticle": "Olõ-i artikli", "watchlist-details": "Perräkaemisnimekirän om {{PLURAL:$1|$1 leht|$1 lehte}}, rehkendämäldä arotuslehti.", "wlheader-enotif": "E-postiga teedäqandmisõq ommaq käügin.", - "wlheader-showupdated": "Leheq, midä om muudõt päält su viimäst käümist, ommaq '''paksun kirän'''", - "wlnote": "Tan om '''$1''' {{PLURAL:$1|muutminõ|muutmist}} viimädse '''$2''' tunni ao seen.", + "wlheader-showupdated": "Leheq, midä om muudõt päält su viimäst käümist, ommaq '''paksun kirän'''.", + "wlnote": "Tan om {{PLURAL:$1|viimäne muutminõ|viimädseq $1 muutmist}} viimädse {{PLURAL:$2|tunni|$2 tunni}} joosul saisuga $3, kell $4.", "wlshowlast": "Näütäq viimädseq $1 tunni $2 päivä", "watchlist-options": "Perräkaemisnimekirä säädmine", "watching": "Pandas perräkaemisnimekirjä...", @@ -1198,6 +1201,7 @@ "sp-contributions-search": "Otsiq muutmiisi", "sp-contributions-username": "Puutri võrgoaadrõs vai pruukjanimi:", "sp-contributions-toponly": "Näütäq õnnõ kõgõ vahtsõmbit toimõnduisi", + "sp-contributions-newonly": "Näütäq õnnõ vahtsidõ lehekülgiga alostamist", "sp-contributions-submit": "Otsiq", "whatlinkshere": "Siiäq näütäjäq lingiq", "whatlinkshere-title": "Leheq, miä näütäseq lehe \"$1\" pääle", @@ -1259,6 +1263,7 @@ "autoblocker": "Olõt automaatsõhe kinniq peet, selle et jaat puutri võrgoaadrõssit pruukjaga $1. Kinniqpidämise põhjus: $2.", "blocklogpage": "Kinniqpidämiisi nimekiri", "blocklogentry": "pidi kinniq pruukja vai puutri võrgoaadrõsi \"[[$1]]\". Kinniqpidämise tähtaig $2 $3", + "reblock-logentry": "muut' pruukja vai puutri võrgoaadrõsi [[$1]] kinniqpidämise säädmiisi. Kinniqpidämise lõpptähtaig: $2. Põhjus: $3", "blocklogtext": "Taa om kinniqpidämiisi ja naidõ maahavõtmiisi nimekiri. Automaatsõhe kinniqpeetüisi puutridõ võrgoaadrõssiid tan näüdätä-i, noid kaeq [[Special:BlockList|puutridõ võrgoaadrõssidõ kinniqpidämise nimekiräst]].", "unblocklogentry": "lõpõt' pruukja $1 kinniqpidämise ärq", "block-log-flags-anononly": "õnnõ nimeldä pruukjaq", @@ -1391,7 +1396,7 @@ "tooltip-feed-rss": "Taa lehe RSS-kujo", "tooltip-feed-atom": "Taa lehe Atom-kujo", "tooltip-t-contributions": "Näütäq {{GENDER:$1|seo pruukja}} toimõnduisi nimekirjä", - "tooltip-t-emailuser": "Saadaq taalõ pruukjalõ e-kiri", + "tooltip-t-emailuser": "Saadaq {{GENDER:$1|taalõ pruukjalõ}} e-kiri", "tooltip-t-upload": "Laadiq üles teedüstüid", "tooltip-t-specialpages": "Näütäq tallituslehekülgi", "tooltip-t-print": "Taa lehe trükükujo", @@ -1434,7 +1439,39 @@ "spam_reverting": "Tagasi pööret viimädse kujo pääle, koh olõ-i linke lehele $1", "spam_blanking": "Kõigin kujõn oll' linke lehele $1. Leht tühäs tett.", "simpleantispam-label": "Rämpspostikontroll.\nÄrq täütkuq seod väljä!", + "pageinfo-title": "Teedüs leheküle \"$1\" kotsilõ", + "pageinfo-header-basic": "Põhiteedüs", + "pageinfo-header-edits": "Toimõndamisaolugu", + "pageinfo-header-restrictions": "Leheküle kaidsõq", + "pageinfo-header-properties": "Leheküle umahusõq", + "pageinfo-display-title": "Lehe päälkiri", + "pageinfo-default-sort": "Vaikimiisi sortmisõ võti", + "pageinfo-length": "Leheküle pikkus (baidõn)", + "pageinfo-article-id": "Leheküle tunnusnummõr", + "pageinfo-language": "Leheküle sisu kiil", + "pageinfo-content-model": "Leheküle sisumutõl", + "pageinfo-robot-policy": "Robodindekseering", + "pageinfo-robot-index": "Lubat", + "pageinfo-robot-noindex": "Keelet", + "pageinfo-watchers": "Leheküle perräkaejidõ arv", + "pageinfo-few-watchers": "Alla {{PLURAL:$1|üte perräkaeja|$1 perräkaeja}}", + "pageinfo-redirects-name": "Seolõ lehekülele ümbresaadõtuid lehekülgi", + "pageinfo-subpages-name": "Seo leheküle alamblehekülgi", + "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|ümbresaatminõ|ümbresaatmist}}; $3 {{PLURAL:$3|mitteümbresaatminõ|mitteümbresaatmist}})", + "pageinfo-firstuser": "Leheküle alostaja", + "pageinfo-firsttime": "Leheküle alostusaig", + "pageinfo-lastuser": "Viimäne toimõndaja", + "pageinfo-lasttime": "Viimädse toimõndamisõ aig", + "pageinfo-edits": "Toimõnduisi kokko", + "pageinfo-authors": "Viimätside erälde autoridõ arv", + "pageinfo-recent-edits": "Viimätside toimõnduisi arv (viimädse $1 joosul)", + "pageinfo-recent-authors": "Viimätside erälde toimõndajidõ arv", + "pageinfo-magic-words": "{{PLURAL:$1|Võlusõna|Võlusõnaq}} ($1)", + "pageinfo-hidden-categories": "{{PLURAL:$1|Käkit katõgooria|Käkitüt katõgooriat}} ($1)", + "pageinfo-templates": "Pruugiduq {{PLURAL:$1|näüdüs|näüdüseq}} ($1)", "pageinfo-toolboxlink": "Leheküle andmõq", + "pageinfo-contentpage": "Rehkendedäs sisuleheküles", + "pageinfo-contentpage-yes": "Jah", "markaspatrolleddiff": "Märgiq ülekaetus", "markaspatrolledtext": "Märgiq toimõndus ülekaetus", "markedaspatrolled": "Märgit ülekaetus", @@ -1452,8 +1489,10 @@ "mediawarning": "'''Kaeq ette''': Taan teedüstün või ollaq sisen ohtlik kuud, miä või su programmilõ vika tetäq.", "imagemaxsize": "Pildi seletüslehe pääl näütämise suuruspiir:", "thumbsize": "Väikupildi suurus:", + "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|lehekülg|lehekülge}}", "file-info": "$1, MIME-tüüp: $2", "file-info-size": "$1 × $2 pikslit, $3, MIME-tüüp: $4", + "file-info-size-pages": "$1 × $2 pikslit, teedüstü suurus: $3, MIME tüüp: $4, $5 {{PLURAL:$5|lehekülg|lehekülge}}", "file-nohires": "Taast terävämpä pilti olõ-i saiaq.", "svg-long-desc": "SVG-teedüstü, põhisuurus $1 × $2 pikslit, teedüstü suurus $3", "show-big-image": "Algteedüstü", @@ -1710,6 +1749,7 @@ "imgmultipageprev": "← mineväne leht", "imgmultipagenext": "järgmäne leht →", "imgmultigo": "Mineq!", + "imgmultigoto": "Mineq lehekülele $1", "ascending_abbrev": "ülespoolõ", "descending_abbrev": "allapoolõ", "table_pager_next": "Järgmäne leht", @@ -1733,6 +1773,7 @@ "watchlistedit-raw-done": "Perräkaemisniekiri om ärq vahtsõndõt.", "watchlistedit-raw-added": "Mano pant {{PLURAL:$1|1 päälkiri|$1 päälkirjä}}:", "watchlistedit-raw-removed": "Ärq kistutõt {{PLURAL:$1|1 päälkiri|$1 päälkirjä}}:", + "watchlisttools-clear": "Tiiq perräkaemisnimekiri tühäs", "watchlisttools-view": "Näütäq muutmiisi", "watchlisttools-edit": "Kaeq ja toimõndaq perräkaemisnimekirjä", "watchlisttools-raw": "Toimõndaq lätteteedüstüt", @@ -1741,10 +1782,18 @@ "version": "Kujo", "version-version": "($1)", "version-software-version": "Kujo", + "redirect": "Ümbresaatminõ teedüstü, pruukja, leheküle, versiooni vai loginumbri perrä", + "redirect-summary": "Seo erälehekülg saat ümbre faili (näüdät failinimi), leheküle (näüdät versiooni vai leheküle tunnus), pruukjalehe (näüdät pruukja numbritunnus) vai logisissekandõ (näüdät logitunnus) mano. Pruukminõ: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]] või [[{{#Special:Redirect}}/logid/186]].", + "redirect-submit": "Mineq", + "redirect-lookup": "Lövväq:", + "redirect-value": "Väärtüs:", + "redirect-user": "Pruukja tunnusnummõr", + "redirect-page": "Leheküle tunnusnummõr", + "redirect-revision": "Leheküle versiuun", + "redirect-file": "Teedüstü nimi", "fileduplicatesearch-filename": "Teedüstünimi:", "fileduplicatesearch-submit": "Otsiq", "specialpages": "Tallitusleheküleq", - "specialpages-note": "* Hariliguq tallitusleheq.\n* Piiredüq tallitusleheq.", "specialpages-group-maintenance": "Kõrranpidämisteedüseq", "specialpages-group-other": "Muuq tallitusleheq", "specialpages-group-login": "Nimega sisseminek / Pruukjanime luuminõ", @@ -1759,10 +1808,23 @@ "external_image_whitelist": " #Jätäq seo rida muutmalda kujo pääle
\n#Panõq regulaaravaldusõ osaq (õnnõ //-märke vaihõl ollõv jago) allapoolõ\n#Naaq pandasõq vastama vikivälitside pilte internetiaadrõssidõga\n#Nuuq, miä vastasõq, näüdätäseq ku pildiq, muido näüdätäs õnnõ pildi link\n#Märgiga # päälenakkajaq riaq ommaq kommõntaariq\n#Seo tii-i vaiht suuril ja väikeisil tähil\n\n#Panõq kõik regulaaravaldusq osaq seo joonõ kotsilõ. Jätäq seo rida muutmalda
", "tag-filter": "[[Special:Tags|Märkmisfiltri]]:", "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Märgüs|Märgüseq}}]]: $2)", + "tags-active-yes": "Jah", + "tags-active-no": "Ei", + "tags-hitcount": "$1 {{PLURAL:$1|muutminõ|muutmiisi}}", "logentry-delete-delete": "$1 {{GENDER:$2|kistut' ärq}} lehe $3", + "logentry-delete-restore": "$1 {{GENDER:$2|tekk' tagasi}} leheküle $3 ($4)", + "logentry-delete-revision": "$1 {{GENDER:$2|muut'}} lehekülel $3 {{PLURAL:$5|üte|$5}} muutmisõ nättävüst: $4", + "revdelete-content-hid": "sisu ärq käkit", "logentry-move-move": "$1 {{GENDER:$2|pand'}} lehe $3 päälkirä $4 ala", + "logentry-move-move-noredirect": "$1 {{GENDER:$2|nõst'}} leheküle $3 päälkirä $4 ala ümbresaatmist maaha jätmäldä", + "logentry-move-move_redir": "$1 {{GENDER:$2|nõst'}} leheküle $3 ümbresaatmisõ $4 asõmalõ", + "logentry-patrol-patrol-auto": "$1 {{GENDER:$2|märke}} automaatsõhe leheküle $3 versiooni $4 ülekaetus", "logentry-newusers-create": "{{GENDER:$2|Luud}} pruukjakonto $1", + "logentry-newusers-autocreate": "Pruukjanimi $1 {{GENDER:$2|luudi}} automaatsõhe", "logentry-upload-upload": "$1 {{GENDER:$2|laatõ üles}} faili $3", + "logentry-upload-overwrite": "$1 {{GENDER:$2|laat' üles}} vahtsõ kujo failist $3", "rightsnone": "(olõ-i õiguisi)", - "searchsuggest-search": "Otsminõ" + "searchsuggest-search": "Otsminõ {{GRAMMAR:elative|{{SITENAME}}}}", + "duration-days": "$1 {{PLURAL:$1|päiv|päivä}}", + "randomrootpage": "Johuslinõ juurlehekülg" } 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 d50316671f..986f6d3d3d 100644 --- a/languages/i18n/yi.json +++ b/languages/i18n/yi.json @@ -49,7 +49,7 @@ "tog-shownumberswatching": "ווייזן דעם נומער פון בלאט אויפֿפאסערס", "tog-oldsig": "אייער איצטיגער אונטערשריפֿט:", "tog-fancysig": "באַהאַנדלן אונטערשריפט אַלס וויקיטעקסט (אָן אויטאמאטישן לינק)", - "tog-uselivepreview": "באניצן זיך מיט גיכער פאראויסדיגער ווייזונג", + "tog-uselivepreview": "װייזן פאראויסדיגער ווייזונגען אָן װידערלאָדן דעם בלאַט", "tog-forceeditsummary": "ווארן מיך ווען איך לייג א ליידיג קורץ ווארט ענדערונג", "tog-watchlisthideown": "באהאלט מיינע ענדערונגען פון דער אויפפאסן ליסטע", "tog-watchlisthidebots": "באהאלט באט עדיטס פון אויפפאסן ליסטע", @@ -693,8 +693,8 @@ "permissionserrorstext": "איר זענט נישט ערלויבט צו טון דאס, פֿאַר {{PLURAL:$1|דער פֿאלגנדער סיבה|די פֿאלגנדע סיבות}}:", "permissionserrorstext-withaction": "איר זענט נישט ערלויבט צו $2, וועגן {{PLURAL:$1|דער פֿאלגנדער סיבה| די פֿאלגנדע סיבות}}:", "recreate-moveddeleted-warn": "'''ווארענונג: איר שאפט א נייעם בלאט וואס איז שוין איינמאל געווארן אויסגעמעקט.'''\n\nאיר זאלט איבערטראכטן צי עס פאַסט רעדאַקטירן דעם בלאַט ווײַטער.\nדי אויסמעקן און באַוועגן לאגביכער ווערן געוויזן דא:", - "moveddeleted-notice": "דער בלאט איז געווארן אויסגעמעקט.\nדי אויסמעקן און באַוועגן לאגביכער פונעם בלאט ווערן געוויזן דא אונטן.", - "moveddeleted-notice-recent": "ליידער האט מען דעם בלאט לעצטנס אויסגעמעקט (אינערהאלב די לעצטע 24 שעה).\nדי אויסמעקונג און באוועגונג אינפארמאציע פארן בלאט ווערן פארזארגט אונטן.", + "moveddeleted-notice": "דער בלאט איז געווארן אויסגעמעקט.\nדי אויסמעקן, שיצן און באַוועגן לאגביכער פונעם בלאט ווערן געוויזן דא אונטן.", + "moveddeleted-notice-recent": "ליידער האט מען דעם בלאט לעצטנס אויסגעמעקט (אינערהאלב די לעצטע 24 שעה).\nדי אויסמעקן, שיצן און באוועגן אינפארמאציע פארן בלאט ווערן פארזארגט אונטן.", "log-fulllog": "באַקוקן פֿולן לאגבוך", "edit-hook-aborted": "רעדאַקטירונג אַנולירט דורך Hook.\nנישטא קיין הסבר.", "edit-gone-missing": "נישט מעגלעך צו דערהיינטיגן דעם בלאט.\nס'ווייזט אויס אז ער איז אויסגעמעקט.", @@ -858,6 +858,7 @@ "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 עקזיסטירט נישט.", @@ -954,7 +955,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": "פֿאַרשידנס", @@ -1254,11 +1255,12 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (זעט אויך [[Special:NewPages|די רשימה פון נייע בלעטער]])", "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "ווייזן", - "rcfilters-legend-heading": "ליסטער פון ראשי תיבות:", + "rcfilters-legend-heading": "ליסטע פון ראשי תיבות:", + "rcfilters-other-review-tools": "אנדערע רעצענזיע ווערקצייג", "rcfilters-activefilters": "אַקטיווע פילטערס", "rcfilters-advancedfilters": "פֿארגעשריטענע פֿילטערס", "rcfilters-limit-title": "ענדערונגען צו ווייזן", - "rcfilters-limit-shownum": "ווייזן די לעצטע $1 ענדערונגען", + "rcfilters-limit-shownum": "ווייזן די לעצטע {{PLURAL:$1|ענדערונג|$1 ענדערונגען}}", "rcfilters-days-title": "לעצטיקע טעג", "rcfilters-hours-title": "לעצטיקע שעה׳ן", "rcfilters-days-show-days": "$1 {{PLURAL:$1|טאג|טעג}}", @@ -1297,6 +1299,7 @@ "rcfilters-filter-minor-label": "מינערדיקע רעדאַקטירונגען", "rcfilters-filter-watchlist-watched-label": "אויף דער אויפֿפאַסונג ליסטע", "rcfilters-filter-watchlist-notwatched-label": "נישט אויף דער אויפֿפאַסונג ליסטע", + "rcfilters-filtergroup-changetype": "טיפ ענדערונג", "rcfilters-filter-pageedits-label": "בלאט רעדאקטירונגען", "rcfilters-filter-newpages-label": "בלאַט־שאַפֿונגען", "rcfilters-filter-categorization-label": "קאטעגאריע־ענדערונגען", @@ -2338,7 +2341,7 @@ "import-nonewrevisions": "קיין רעוויזיעס נישט אימפארטירט (אדער אלע שוין דא, אדער איבערגעהיפט צוליב גרײַזן).", "xml-error-string": "$1 בײַ שורה $2, זייל $3 (בייט $4): $5", "import-upload": "אַרויפֿלאָדן XML דאַטן", - "import-token-mismatch": "פארלוסט פון סעסיע דאטן. \n\nקען זיין אז איר זענען געווארן ארויסלאגירט\nביטע פרובירט נאכאמאל. \n\nאויב ס'ארבעט נאך אלס ניט, פרובירט [[Special:UserLogout|ארויסלאגירן]] און זיך צוריק אריינלאגירן.", + "import-token-mismatch": "פארלוסט פון סעסיע דאטן. \n\nקען זיין אז איר זענט געווארן ארויסלאגירט. '''ביטע פרובירט נאכאמאל'''. \nאויב ס'ארבעט נאך אלס ניט, פרובירט [[Special:UserLogout|ארויסלאגירן]] און זיך צוריק אריינלאגירן.", "import-invalid-interwiki": "נישט מעגלעך צו אימפארטירן פון ספעציפֿירטער וויקי.", "import-error-edit": "דעם בלאט \"$1\" קען מען נישט אימפארטירן ווייל איר האט נישט די רעכט אים צו רעדאקטירן.", "import-error-create": "דעם בלאט \"$1\" האט מען נישט אימפארטירט ווייל איר האט נישט די רעכט צו שאפן אים.", @@ -3070,6 +3073,7 @@ "compare-invalid-title": "דעם טיטל איר האט ספעציפֿירט איז אומגילטיק.", "compare-title-not-exists": "דעם טיטל וואס איר האט ספעציפֿירט עקזיסטירט נישט", "compare-revision-not-exists": "די רעוויזיע וואס איר האט ספעציפֿירט עקזיסטירט נישט.", + "diff-form": "א '''פארעם'''", "dberr-problems": "אנטשולדיגט! דער דאזיקער סייט האט טעכנישע פראבלעמען.", "dberr-again": "וואַרט א פאָר מינוט און לאָדנט אָן ווידער.", "dberr-info": "(קען נישט צוקומען צו דער דאַטנבאַזע: $1)", diff --git a/languages/i18n/zh-hans.json b/languages/i18n/zh-hans.json index 3c01d14398..eed8eec0c6 100644 --- a/languages/i18n/zh-hans.json +++ b/languages/i18n/zh-hans.json @@ -134,6 +134,7 @@ "tog-watchlisthideminor": "隐藏监视列表中的小编辑", "tog-watchlisthideliu": "隐藏监视列表中的登录用户的编辑", "tog-watchlistreloadautomatically": "当一条过滤器规则被更改时,自动重新加载监视列表(需要JavaScript)", + "tog-watchlistunwatchlinks": "添加监视列表条目的直接(取消)监视链接(需要JavaScript才能打开功能)", "tog-watchlisthideanons": "隐藏监视列表中的匿名用户的编辑", "tog-watchlisthidepatrolled": "隐藏监视列表中的已巡查编辑", "tog-watchlisthidecategorization": "隐藏对页面的分类", @@ -785,8 +786,8 @@ "permissionserrorstext-withaction": "因为以下{{PLURAL:$1|原因}},您没有权限$2:", "contentmodelediterror": "您不能编辑此修订版本,因为它的内容模型是$1,这与当前页面$2的内容模型不同。", "recreate-moveddeleted-warn": "警告:您正在重新创建曾经被删除的页面。\n\n您应该考虑继续编辑本页是否合适。这里提供本页的删除和移动日志以供参考:", - "moveddeleted-notice": "本页面已被删除。下面提供本页的删除和移动日志以供参考。", - "moveddeleted-notice-recent": "抱歉,此页面刚刚被删除(在最近24小时内)。\n页面的删除和移动日志在下方提供以供参考。", + "moveddeleted-notice": "本页面已被删除。下面提供本页的删除、保护和移动日志以供参考。", + "moveddeleted-notice-recent": "对不起,此页面刚刚被删除(在最近24小时内)。页面的删除、保护和移动日志在下方提供以供参考。", "log-fulllog": "查看完整日志", "edit-hook-aborted": "编辑被hook指令取消。\n无解释。", "edit-gone-missing": "不能更新页面。\n它可能刚刚被删除。", @@ -1054,7 +1055,7 @@ "prefs-editwatchlist-clear": "清空您的监视列表", "prefs-watchlist-days": "监视列表中显示的天数:", "prefs-watchlist-days-max": "最多$1天", - "prefs-watchlist-edits": "在扩展监视列表中显示的更改的最大数目:", + "prefs-watchlist-edits": "在监视列表中显示的更改的最大数目:", "prefs-watchlist-edits-max": "最大数目:1000", "prefs-watchlist-token": "监视列表密钥:", "prefs-misc": "其他", @@ -1370,10 +1371,11 @@ "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-other-review-tools": "其他复核工具", "rcfilters-group-results-by-page": "按页面分组结果", - "rcfilters-grouping-title": "正在分组", + "rcfilters-grouping-title": "分组", "rcfilters-activefilters": "激活的过滤器", "rcfilters-advancedfilters": "高级过滤器", "rcfilters-limit-title": "要显示的更改", @@ -1382,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": "要保存您的过滤器设置并供日后再利用,点击下方激活的过滤器区域内的书签图标。", @@ -1398,8 +1401,7 @@ "rcfilters-savedqueries-add-new-title": "保存当前过滤器设置", "rcfilters-restore-default-filters": "恢复默认过滤器", "rcfilters-clear-all-filters": "清空所有过滤器", - "rcfilters-show-new-changes": "显示新更改", - "rcfilters-previous-changes-label": "之前查看过的更改", + "rcfilters-show-new-changes": "显示最新更改", "rcfilters-search-placeholder": "过滤器最近更改(浏览或开始输入)", "rcfilters-invalid-filter": "无效过滤器", "rcfilters-empty-filter": "没有激活的过滤器。已显示所有贡献。", @@ -1412,7 +1414,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": "您自己的贡献。", @@ -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,7 @@ "rcfilters-liveupdates-button": "实时更新", "rcfilters-liveupdates-button-title-on": "关闭实时更新", "rcfilters-liveupdates-button-title-off": "显示新更改(如有)", + "rcfilters-watchlist-markSeen-button": "标记所有更改为已查看", "rcnotefrom": "下面{{PLURAL:$5|是}}$3 $4之后的更改(最多显示$1个)。", "rclistfromreset": "重置时间选择", "rclistfrom": "显示$3 $2之后的新更改", @@ -2664,7 +2672,7 @@ "import-mapping-subpage": "作为以下页面的子页面导入:", "import-upload-filename": "文件名:", "import-comment": "注释:", - "importtext": "请使用[[Special:Export|导出功能]]从源 wiki 导出文件,\n保存到您的电脑并上传到这里。", + "importtext": "请使用[[Special:Export|导出功能]]从源wiki导出文件,保存到您的电脑并上传到这里。", "importstart": "正在导入页面...", "import-revision-count": "$1个版本", "importnopages": "没有导入的页面。", @@ -2684,7 +2692,7 @@ "import-nonewrevisions": "没有导入版本(所有都已存在或因错误跳过)。", "xml-error-string": "$1于行$2,列$3($4字节):$5", "import-upload": "上传XML数据", - "import-token-mismatch": "会话数据丢失。\n\n您可能已经退出。请核实您是否仍在登录,并重试。如果仍然不能工作,尝试[[Special:UserLogout|退出]]并重新登录,并检查您的浏览器是否允许来自该网站的cookie。", + "import-token-mismatch": "会话数据丢失。\n\n您可能已经退出。'''请核实您是否仍在登录,并重试'''。如果仍然不能工作,尝试[[Special:UserLogout|退出]]并重新登录,并检查您的浏览器是否允许来自该网站的cookie。", "import-invalid-interwiki": "不能从指定的wiki导入。", "import-error-edit": "页面“$1”未导入,因为您不被允许编辑它。", "import-error-create": "页面“$1”未导入,因为您不被允许创建它。", @@ -2713,7 +2721,7 @@ "tooltip-pt-anoncontribs": "来自此IP地址的编辑列表", "tooltip-pt-login": "我们鼓励您登录;然而,这不是强制性的", "tooltip-pt-login-private": "您需要登录以使用此wiki", - "tooltip-pt-logout": "退出登录", + "tooltip-pt-logout": "退出", "tooltip-pt-createaccount": "建议您创建一个账户并登录,但这不是强制的", "tooltip-ca-talk": "关于内容页面的讨论", "tooltip-ca-edit": "编辑本页", @@ -2902,10 +2910,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": "新文件图库", @@ -3598,6 +3606,13 @@ "compare-invalid-title": "您指定的标题无效。", "compare-title-not-exists": "您指定的标题不存在。", "compare-revision-not-exists": "指定的版本不存在。", + "diff-form": "差异", + "diff-form-oldid": "旧修订版本ID(可选)", + "diff-form-revid": "差异的修订版本ID", + "diff-form-submit": "显示差异", + "permanentlink": "固定链接", + "permanentlink-revid": "修订版本ID", + "permanentlink-submit": "前往修订版本", "dberr-problems": "抱歉!本网站出现了一些技术问题。", "dberr-again": "请等待几分钟后重试。", "dberr-info": "(无法访问数据库:$1)", @@ -3764,7 +3779,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 933567b219..2e0a247745 100644 --- a/languages/i18n/zh-hant.json +++ b/languages/i18n/zh-hant.json @@ -303,7 +303,7 @@ "poolcounter-usage-error": "用法錯誤:$1", "aboutsite": "關於 {{SITENAME}}", "aboutpage": "Project:關於", - "copyright": "除非另有註明,否則頁面內容均以 $1 條款授權。", + "copyright": "除非另有註明,否則所有內容皆以 $1 條款授權。", "copyrightpage": "{{ns:project}}:版權", "currentevents": "新聞動態", "currentevents-url": "Project:Current events", @@ -775,7 +775,7 @@ "permissionserrorstext-withaction": "由於下列{{PLURAL:$1|原因}},您沒有權限進行 $2 的動作:", "contentmodelediterror": "您無法編輯此修訂,因此修訂使用的內容模型為 $1 與目前使用的頁面內容模型 $2 不同。", "recreate-moveddeleted-warn": "警告:您正重新建立先前已刪除的頁面。\n\n您應考慮是否繼續編輯此頁。\n在此提供刪除與移動日誌方便作為參考:", - "moveddeleted-notice": "此頁面已刪除。\n下方提供此頁面的刪除和移動日誌以便參考。", + "moveddeleted-notice": "此頁面已刪除。\n下方提供此頁面的刪除、保護和移動日誌以便參考。", "moveddeleted-notice-recent": "抱歉,此頁面最近被刪除 (24 小時內)。\n以下提供此頁面的刪除與移動日誌做為參考。", "log-fulllog": "檢視完整日誌", "edit-hook-aborted": "編輯已被 Hook 中止。\n且未回應無任何說明。", @@ -1360,6 +1360,7 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (請參考[[Special:NewPages|新頁面]])", "recentchanges-legend-plusminus": "(±123)", "recentchanges-submit": "顯示", + "rcfilters-grouping-title": "分組", "rcfilters-activefilters": "使用中的過濾條件", "rcfilters-advancedfilters": "進階查詢條件", "rcfilters-quickfilters": "儲存的查詢條件", @@ -1377,6 +1378,7 @@ "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": "沒有使用中的過濾條件。已顯示所有的貢獻。", @@ -2132,7 +2134,7 @@ "watchlist-details": "您的監視清單上共有 $1 個頁面 (不包含對話頁面)。", "wlheader-enotif": "已開啟電子郵件通知功能。", "wlheader-showupdated": "在您最後一次檢視過後修改的頁面會以 粗體 顯示。", - "wlnote": "以下為自 $3 $4 之後的 $2 小時內所做的 $1 次變更。", + "wlnote": "以下為自 $3 $4 之前的 $2 小時內所做的 $1 次變更。", "wlshowlast": "顯示最近 $1 小時 $2 天", "watchlist-hide": "隱藏", "watchlist-submit": "顯示", @@ -2645,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\",無法匯入。", @@ -3290,7 +3292,7 @@ "confirm-purge-title": "清除此頁快取", "confirm_purge_button": "確定", "confirm-purge-top": "要清除此頁面的快取嗎?", - "confirm-purge-bottom": "刷新頁面會清空頁面的快取記錄並強制顯示最近的頁面修訂。", + "confirm-purge-bottom": "清除頁面會清除快取紀錄並強制顯示最近的頁面修訂。", "confirm-watch-button": "確定", "confirm-watch-top": "新增此頁面至您的監視清單?", "confirm-unwatch-button": "確定", @@ -3546,6 +3548,7 @@ "compare-invalid-title": "您所指定的標題無效。", "compare-title-not-exists": "您所指定的標題不存在。", "compare-revision-not-exists": "您所指定的修訂不存在。", + "diff-form": "表", "dberr-problems": "抱歉!這個網站出現了一些技術上的問題。", "dberr-again": "請稍後數分鐘後再試。", "dberr-info": "(無法存取資料庫:$1)", diff --git a/languages/messages/MessagesKm.php b/languages/messages/MessagesKm.php index 967224fec9..299beb8f25 100644 --- a/languages/messages/MessagesKm.php +++ b/languages/messages/MessagesKm.php @@ -88,7 +88,7 @@ $defaultDateFormat = 'km'; $dateFormats = [ 'km time' => 'ម៉ោងH:i', 'km date' => 'l ទីd F ឆ្នាំY', - 'km both' => 'ម៉ោងH:i l ទីd F ឆ្នាំY', + 'km both' => 'ម៉ោងH:i l ទីd F ឆ្នាំY', ]; $specialPageAliases = [ 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 @@ +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/hhvm/makeRepo.php b/maintenance/hhvm/makeRepo.php index 2a102b2486..c1aa082039 100644 --- a/maintenance/hhvm/makeRepo.php +++ b/maintenance/hhvm/makeRepo.php @@ -95,7 +95,7 @@ class HHVMMakeRepo extends Maintenance { print "Found " . count( $files ) . " files in " . count( $dirs ) . " directories\n"; - $tmpDir = wfTempDir() . '/mw-make-repo' . mt_rand( 0, 1<<31 ); + $tmpDir = wfTempDir() . '/mw-make-repo' . mt_rand( 0, 1 << 31 ); if ( !mkdir( $tmpDir ) ) { $this->error( 'Unable to create temporary directory', 1 ); } 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/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/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/refreshLinks.php b/maintenance/refreshLinks.php index 578a226c91..b099aff44f 100644 --- a/maintenance/refreshLinks.php +++ b/maintenance/refreshLinks.php @@ -448,7 +448,7 @@ class RefreshLinks extends Maintenance { do { $finalConds = $conds; $timestamp = $dbr->addQuotes( $timestamp ); - $finalConds []= + $finalConds [] = "(cl_timestamp > $timestamp OR (cl_timestamp = $timestamp AND cl_from > $lastId))"; $res = $dbr->select( [ 'page', 'categorylinks' ], [ 'page_id', 'cl_timestamp' ], 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-ip_changes.sql b/maintenance/sqlite/archives/patch-ip_changes.sql new file mode 100644 index 0000000000..5f05672e84 --- /dev/null +++ b/maintenance/sqlite/archives/patch-ip_changes.sql @@ -0,0 +1,23 @@ +-- +-- Every time an edit by a logged out user is saved, +-- a row is created in ip_changes. This stores +-- the IP as a hex representation so that we can more +-- easily find edits within an IP range. +-- +CREATE TABLE /*_*/ip_changes ( + -- Foreign key to the revision table, also serves as the unique primary key + ipc_rev_id int unsigned NOT NULL PRIMARY KEY DEFAULT '0', + + -- The timestamp of the revision + ipc_rev_timestamp binary(14) NOT NULL DEFAULT '', + + -- Hex representation of the IP address, as returned by IP::toHex() + -- For IPv4 it will resemble: ABCD1234 + -- For IPv6: v6-ABCD1234000000000000000000000000 + -- BETWEEN is then used to identify revisions within a given range + ipc_hex varbinary(35) NOT NULL DEFAULT '' + +) /*$wgDBTableOptions*/; + +CREATE INDEX /*i*/ipc_rev_timestamp ON /*_*/ip_changes (ipc_rev_timestamp); +CREATE INDEX /*i*/ipc_hex_time ON /*_*/ip_changes (ipc_hex,ipc_rev_timestamp); 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-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-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 14f69324f7..d6ef40c73b 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,47 @@ 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 +-- the IP as a hex representation so that we can more +-- easily find edits within an IP range. +-- +CREATE TABLE /*_*/ip_changes ( + -- Foreign key to the revision table, also serves as the unique primary key + ipc_rev_id int unsigned NOT NULL PRIMARY KEY DEFAULT '0', + + -- The timestamp of the revision + ipc_rev_timestamp binary(14) NOT NULL DEFAULT '', + + -- Hex representation of the IP address, as returned by IP::toHex() + -- For IPv4 it will resemble: ABCD1234 + -- For IPv6: v6-ABCD1234000000000000000000000000 + -- BETWEEN is then used to identify revisions within a given range + ipc_hex varbinary(35) NOT NULL DEFAULT '' + +) /*$wgDBTableOptions*/; + +CREATE INDEX /*i*/ipc_rev_timestamp ON /*_*/ip_changes (ipc_rev_timestamp); +CREATE INDEX /*i*/ipc_hex_time ON /*_*/ip_changes (ipc_hex,ipc_rev_timestamp); + -- -- Holds text of individual page revisions. -- @@ -451,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. @@ -472,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 '', @@ -552,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); @@ -579,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); @@ -606,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); @@ -661,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 @@ -763,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); @@ -784,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); @@ -803,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, @@ -828,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. @@ -851,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. @@ -959,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, @@ -984,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. @@ -1003,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 '', @@ -1051,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, @@ -1062,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 '', @@ -1160,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 @@ -1357,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. @@ -1391,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, @@ -1436,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); @@ -1490,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 ( @@ -1568,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 @@ -1662,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 d2e4fcc5f0..4c5266e419 100644 --- a/phpcs.xml +++ b/phpcs.xml @@ -2,20 +2,15 @@ - - - - - + + - - - - - + + + @@ -43,7 +38,6 @@ */includes/StubObject.php . - ^extensions/ diff --git a/profileinfo.php b/profileinfo.php index 466f26aaec..83ae1935df 100644 --- a/profileinfo.php +++ b/profileinfo.php @@ -150,7 +150,7 @@ if ( !$wgEnableProfileInfo ) { exit( 1 ); } -$dbr = wfGetDB( DB_SLAVE ); +$dbr = wfGetDB( DB_REPLICA ); if ( !$dbr->tableExists( 'profiling' ) ) { echo '

No profiling table exists, so we can\'t show you anything.

' diff --git a/resources/Resources.php b/resources/Resources.php index d8ab7d7a45..7a95da81f1 100644 --- a/resources/Resources.php +++ b/resources/Resources.php @@ -301,10 +301,6 @@ return [ 'scripts' => 'resources/src/jquery/jquery.mw-jump.js', 'targets' => [ 'desktop', 'mobile' ], ], - 'jquery.mwExtension' => [ - 'scripts' => 'resources/src/jquery/jquery.mwExtension.js', - 'targets' => [ 'desktop', 'mobile' ], - ], 'jquery.placeholder' => [ 'deprecated' => 'Use of "jquery.placeholder" is deprecated since MediaWiki 1.29.0', @@ -1060,6 +1056,7 @@ return [ 'targets' => [ 'desktop', 'mobile' ], ], 'mediawiki.hlist' => [ + 'targets' => [ 'desktop', 'mobile' ], 'styles' => [ 'resources/src/mediawiki/mediawiki.hlist-allskins.less', ], @@ -1425,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', @@ -1453,6 +1450,7 @@ return [ 'mediawiki.diff.styles', 'mediawiki.util', 'mediawiki.jqueryMsg', + 'oojs-ui-core', ], 'messages' => [ // Keep the uses message keys in sync with EditPage#setHeaders @@ -1751,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', @@ -1798,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', ], @@ -1825,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' => [ @@ -1834,6 +1843,7 @@ return [ ], ], 'messages' => [ + 'rcfilters-tag-remove', 'rcfilters-activefilters', 'rcfilters-advancedfilters', 'rcfilters-group-results-by-page', @@ -1844,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', @@ -1861,7 +1872,6 @@ return [ 'rcfilters-restore-default-filters', 'rcfilters-clear-all-filters', 'rcfilters-show-new-changes', - 'rcfilters-previous-changes-label', 'rcfilters-search-placeholder', 'rcfilters-invalid-filter', 'rcfilters-empty-filter', @@ -1889,6 +1899,8 @@ return [ 'rcfilters-liveupdates-button', 'rcfilters-liveupdates-button-title-on', 'rcfilters-liveupdates-button-title-off', + 'rcfilters-watchlist-markSeen-button', + 'rcfilters-watchlist-editWatchlist-button', 'rcfilters-other-review-tools', 'blanknamespace', 'namespaces', @@ -2180,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' => [ @@ -2217,11 +2230,27 @@ return [ ], 'mediawiki.special.watchlist' => [ 'scripts' => 'resources/src/mediawiki.special/mediawiki.special.watchlist.js', + 'messages' => [ + 'addedwatchtext', + 'addedwatchtext-talk', + 'removedwatchtext', + 'removedwatchtext-talk', + 'tooltip-ca-watch', + 'tooltip-ca-unwatch', + 'watchlist-unwatch', + 'watchlist-unwatch-undo', + ], 'dependencies' => [ - 'mediawiki.api', + 'mediawiki.api.watch', + 'mediawiki.jqueryMsg', + 'mediawiki.Title', + 'mediawiki.util', 'oojs-ui-core', 'user.options', - ] + ], + ], + 'mediawiki.special.watchlist.styles' => [ + 'styles' => 'resources/src/mediawiki.special/mediawiki.special.watchlist.css', ], 'mediawiki.special.version' => [ 'styles' => 'resources/src/mediawiki.special/mediawiki.special.version.css', @@ -2679,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/html5shiv/html5shiv.js b/resources/lib/html5shiv/html5shiv.js new file mode 100644 index 0000000000..45ea723dd5 --- /dev/null +++ b/resources/lib/html5shiv/html5shiv.js @@ -0,0 +1,326 @@ +/** +* @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed +*/ +;(function(window, document) { +/*jshint evil:true */ + /** version */ + var version = '3.7.3'; + + /** Preset options */ + var options = window.html5 || {}; + + /** Used to skip problem elements */ + var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i; + + /** Not all elements can be cloned in IE **/ + var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i; + + /** Detect whether the browser supports default html5 styles */ + var supportsHtml5Styles; + + /** Name of the expando, to work with multiple documents or to re-shiv one document */ + var expando = '_html5shiv'; + + /** The id for the the documents expando */ + var expanID = 0; + + /** Cached data for each document */ + var expandoData = {}; + + /** Detect whether the browser supports unknown elements */ + var supportsUnknownElements; + + (function() { + try { + var a = document.createElement('a'); + a.innerHTML = ''; + //if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles + supportsHtml5Styles = ('hidden' in a); + + supportsUnknownElements = a.childNodes.length == 1 || (function() { + // assign a false positive if unable to shiv + (document.createElement)('a'); + var frag = document.createDocumentFragment(); + return ( + typeof frag.cloneNode == 'undefined' || + typeof frag.createDocumentFragment == 'undefined' || + typeof frag.createElement == 'undefined' + ); + }()); + } catch(e) { + // assign a false positive if detection fails => unable to shiv + supportsHtml5Styles = true; + supportsUnknownElements = true; + } + + }()); + + /*--------------------------------------------------------------------------*/ + + /** + * Creates a style sheet with the given CSS text and adds it to the document. + * @private + * @param {Document} ownerDocument The document. + * @param {String} cssText The CSS text. + * @returns {StyleSheet} The style element. + */ + function addStyleSheet(ownerDocument, cssText) { + var p = ownerDocument.createElement('p'), + parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement; + + p.innerHTML = 'x'; + return parent.insertBefore(p.lastChild, parent.firstChild); + } + + /** + * Returns the value of `html5.elements` as an array. + * @private + * @returns {Array} An array of shived element node names. + */ + function getElements() { + var elements = html5.elements; + return typeof elements == 'string' ? elements.split(' ') : elements; + } + + /** + * Extends the built-in list of html5 elements + * @memberOf html5 + * @param {String|Array} newElements whitespace separated list or array of new element names to shiv + * @param {Document} ownerDocument The context document. + */ + function addElements(newElements, ownerDocument) { + var elements = html5.elements; + if(typeof elements != 'string'){ + elements = elements.join(' '); + } + if(typeof newElements != 'string'){ + newElements = newElements.join(' '); + } + html5.elements = elements +' '+ newElements; + shivDocument(ownerDocument); + } + + /** + * Returns the data associated to the given document + * @private + * @param {Document} ownerDocument The document. + * @returns {Object} An object of data. + */ + function getExpandoData(ownerDocument) { + var data = expandoData[ownerDocument[expando]]; + if (!data) { + data = {}; + expanID++; + ownerDocument[expando] = expanID; + expandoData[expanID] = data; + } + return data; + } + + /** + * returns a shived element for the given nodeName and document + * @memberOf html5 + * @param {String} nodeName name of the element + * @param {Document|DocumentFragment} ownerDocument The context document. + * @returns {Object} The shived element. + */ + function createElement(nodeName, ownerDocument, data){ + if (!ownerDocument) { + ownerDocument = document; + } + if(supportsUnknownElements){ + return ownerDocument.createElement(nodeName); + } + if (!data) { + data = getExpandoData(ownerDocument); + } + var node; + + if (data.cache[nodeName]) { + node = data.cache[nodeName].cloneNode(); + } else if (saveClones.test(nodeName)) { + node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode(); + } else { + node = data.createElem(nodeName); + } + + // Avoid adding some elements to fragments in IE < 9 because + // * Attributes like `name` or `type` cannot be set/changed once an element + // is inserted into a document/fragment + // * Link elements with `src` attributes that are inaccessible, as with + // a 403 response, will cause the tab/window to crash + // * Script elements appended to fragments will execute when their `src` + // or `text` property is set + return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node; + } + + /** + * returns a shived DocumentFragment for the given document + * @memberOf html5 + * @param {Document} ownerDocument The context document. + * @returns {Object} The shived DocumentFragment. + */ + function createDocumentFragment(ownerDocument, data){ + if (!ownerDocument) { + ownerDocument = document; + } + if(supportsUnknownElements){ + return ownerDocument.createDocumentFragment(); + } + data = data || getExpandoData(ownerDocument); + var clone = data.frag.cloneNode(), + i = 0, + elems = getElements(), + l = elems.length; + for(;i",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.3",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b),"object"==typeof module&&module.exports&&(module.exports=t)}("undefined"!=typeof window?window:this,document); \ No newline at end of file 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/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/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..caee378b61 --- /dev/null +++ b/resources/lib/oojs-ui/i18n/kab.json @@ -0,0 +1,21 @@ +{ + "@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-dialog-message-accept": "IH", + "ooui-dialog-message-reject": "Sefsex", + "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/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/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/qqq.json b/resources/lib/oojs-ui/i18n/qqq.json index 1a096efc8e..270cfe9617 100644 --- a/resources/lib/oojs-ui/i18n/qqq.json +++ b/resources/lib/oojs-ui/i18n/qqq.json @@ -26,6 +26,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", "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/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/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/oojs-ui-apex.js b/resources/lib/oojs-ui/oojs-ui-apex.js index 0253ff5a0a..6113b982f9 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.22.5 * 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-01T23:45:14Z + * Date: 2017-08-22T21:37:37Z */ ( 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 5a49a2d37c..b411b73224 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.22.5 * 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-01T20:24:44Z + * Date: 2017-08-22T21:37:41Z */ .oo-ui-element-hidden { display: none !important; diff --git a/resources/lib/oojs-ui/oojs-ui-core-wikimediaui.css b/resources/lib/oojs-ui/oojs-ui-core-wikimediaui.css index d7b142919e..9e627851bb 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.22.5 * 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-01T20:24:44Z + * Date: 2017-08-22T21:37:41Z */ /** * WikimediaUI Base v0.9.2 @@ -297,7 +297,7 @@ .oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button { background-color: #c8ccd1; color: #fff; - border-color: #72777d; + border-color: #c8ccd1; } .oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button { background-color: #f8f9fa; @@ -1176,11 +1176,7 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { } .oo-ui-checkboxInputWidget [type='checkbox']:disabled + span { background-color: #c8ccd1; - border-color: #72777d; -} -.oo-ui-checkboxInputWidget [type='checkbox']:disabled:hover + span { - background-color: #c8ccd1; - border-color: #72777d; + border-color: #c8ccd1; } .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox'] { cursor: pointer; @@ -1191,41 +1187,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']:active + span, -.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:active:focus + span { +.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:hover + span { + border-color: #36c; +} +.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:active + span { background-color: #2a4b8d; border-color: #2a4b8d; box-shadow: inset 0 0 0 1px #2a4b8d; } -.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']: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; } @@ -1316,7 +1307,7 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { .oo-ui-dropdownInputWidget.oo-ui-widget-disabled select { background-color: #eaecf0; color: #72777d; - border-color: #72777d; + border-color: #c8ccd1; } .oo-ui-radioInputWidget { position: relative; @@ -1366,7 +1357,7 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { } .oo-ui-radioInputWidget [type='radio']:disabled + span { background-color: #c8ccd1; - border-color: #72777d; + border-color: #c8ccd1; } .oo-ui-radioInputWidget [type='radio']:disabled:checked + span { background-color: #fff; @@ -1390,22 +1381,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; } @@ -1607,7 +1595,7 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { -webkit-text-fill-color: #72777d; color: #72777d; text-shadow: 0 1px 1px #fff; - border-color: #72777d; + border-color: #c8ccd1; } .oo-ui-textInputWidget.oo-ui-widget-disabled .oo-ui-iconElement-icon, .oo-ui-textInputWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator { @@ -1792,7 +1780,7 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { .oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-dropdownWidget-handle { color: #72777d; text-shadow: 0 1px 1px #fff; - border-color: #72777d; + border-color: #c8ccd1; background-color: #eaecf0; } .oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-dropdownWidget-handle:focus { diff --git a/resources/lib/oojs-ui/oojs-ui-core.js b/resources/lib/oojs-ui/oojs-ui-core.js index 4300e8866c..fd238fff45 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.22.5 * 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-01T23:45:14Z + * Date: 2017-08-22T21:37:37Z */ ( 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!' ); @@ -796,7 +798,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 +2681,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 +2850,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 +4836,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 +4852,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 @@ -6363,7 +6365,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*$'; } @@ -7054,9 +7056,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 ); @@ -8372,7 +8374,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 +9590,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..bd26e285ef 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 `